Skip to the content.

dirty rate

原来还分为这几个模式,实在是我没有想到的

/* Dirty tracking enabled because migration is running */
#define GLOBAL_DIRTY_MIGRATION  (1U << 0)

/* Dirty tracking enabled because measuring dirty rate */
#define GLOBAL_DIRTY_DIRTY_RATE (1U << 1)

/* Dirty tracking enabled because dirty limit */
#define GLOBAL_DIRTY_LIMIT      (1U << 2)

#define GLOBAL_DIRTY_MASK  (0x7)

关联的源文件

dirty limit 的方式

有点相关的 set_vcpu_dirty_limit

hmp 有两个对应的命令,非常类似的

qmp shell 按照这个操作

https://wiki.qemu.org/Features/DirtyRateCalc

三种配置方法

calc-dirty-rate calc-time=3 mode=page-sampling sample-pages=1024 # 不会启动 migration thread
calc-dirty-rate calc-time=3 mode=dirty-bitmap
calc-dirty-rate calc-time=3 mode=dirty-ring

使用 query-dirty-rate 来查询

dirty-ring 或者 dirty-bitmap 会构建出来这两个东西:

vcpu_dirty_rate_stat_start

如何理解这个东西?

static void calculate_dirtyrate(struct DirtyRateConfig config)
{
    if (config.mode == DIRTY_RATE_MEASURE_MODE_DIRTY_BITMAP) {
        calculate_dirtyrate_dirty_bitmap(config);
    } else if (config.mode == DIRTY_RATE_MEASURE_MODE_DIRTY_RING) {
        calculate_dirtyrate_dirty_ring(config);
    } else {
        calculate_dirtyrate_sample_vm(config);
    }

    trace_dirtyrate_calculate(DirtyStat.dirty_rate);
}

额外参考

https://www.qemu.org/docs/master/devel/migration/dirty-limit.html

仔细看看

https://blog.csdn.net/huang987246510/article/details/133684028

这个东西我真的是没有想到的

https://www.qemu.org/docs/master/devel/migration/dirty-limit.html

本站所有文章转发 CSDN 将按侵权追究法律责任,其它情况随意。