Message ID | 20240216224002.1476890-7-hao.xiang@bytedance.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | Introduce multifd zero page checking. | expand |
Hao Xiang <hao.xiang@bytedance.com> writes: > This change extends the MigrationStatus interface to track zero pages > and zero bytes counter. > > Signed-off-by: Hao Xiang <hao.xiang@bytedance.com> > --- > migration/migration-hmp-cmds.c | 4 ++++ > migration/migration.c | 2 ++ > qapi/migration.json | 15 ++++++++++++++- > tests/migration/guestperf/engine.py | 2 ++ > 4 files changed, 22 insertions(+), 1 deletion(-) > > diff --git a/migration/migration-hmp-cmds.c b/migration/migration-hmp-cmds.c > index 7e96ae6ffd..abe035c9f2 100644 > --- a/migration/migration-hmp-cmds.c > +++ b/migration/migration-hmp-cmds.c > @@ -111,6 +111,10 @@ void hmp_info_migrate(Monitor *mon, const QDict *qdict) > info->ram->normal); > monitor_printf(mon, "normal bytes: %" PRIu64 " kbytes\n", > info->ram->normal_bytes >> 10); > + monitor_printf(mon, "zero: %" PRIu64 " pages\n", > + info->ram->zero); > + monitor_printf(mon, "zero bytes: %" PRIu64 " kbytes\n", > + info->ram->zero_bytes >> 10); > monitor_printf(mon, "dirty sync count: %" PRIu64 "\n", > info->ram->dirty_sync_count); > monitor_printf(mon, "page size: %" PRIu64 " kbytes\n", > diff --git a/migration/migration.c b/migration/migration.c > index ab21de2cad..1968ea7075 100644 > --- a/migration/migration.c > +++ b/migration/migration.c > @@ -1112,6 +1112,8 @@ static void populate_ram_info(MigrationInfo *info, MigrationState *s) > info->ram->skipped = 0; > info->ram->normal = stat64_get(&mig_stats.normal_pages); > info->ram->normal_bytes = info->ram->normal * page_size; > + info->ram->zero = stat64_get(&mig_stats.zero_pages); > + info->ram->zero_bytes = info->ram->zero * page_size; > info->ram->mbps = s->mbps; > info->ram->dirty_sync_count = > stat64_get(&mig_stats.dirty_sync_count); > diff --git a/qapi/migration.json b/qapi/migration.json > index e2450b92d4..892875da18 100644 > --- a/qapi/migration.json > +++ b/qapi/migration.json > @@ -63,6 +63,10 @@ > # between 0 and @dirty-sync-count * @multifd-channels. (since > # 7.1) > # > +# @zero: number of zero pages (since 9.0) > +# > +# @zero-bytes: number of zero bytes sent (since 9.0) Awfully terse. How are these two related? Recommend to name the first one @zero-pages. > +# > # Features: > # > # @deprecated: Member @skipped is always zero since 1.5.3 > @@ -81,7 +85,8 @@ > 'multifd-bytes': 'uint64', 'pages-per-second': 'uint64', > 'precopy-bytes': 'uint64', 'downtime-bytes': 'uint64', > 'postcopy-bytes': 'uint64', > - 'dirty-sync-missed-zero-copy': 'uint64' } } > + 'dirty-sync-missed-zero-copy': 'uint64', > + 'zero': 'int', 'zero-bytes': 'int' } } Please use 'size' for byte counts such as @zero-bytes. > > ## > # @XBZRLECacheStats: > @@ -332,6 +337,8 @@ > # "duplicate":123, > # "normal":123, > # "normal-bytes":123456, > +# "zero":123, > +# "zero-bytes":123456, > # "dirty-sync-count":15 > # } > # } > @@ -358,6 +365,8 @@ > # "duplicate":123, > # "normal":123, > # "normal-bytes":123456, > +# "zero":123, > +# "zero-bytes":123456, > # "dirty-sync-count":15 > # } > # } > @@ -379,6 +388,8 @@ > # "duplicate":123, > # "normal":123, > # "normal-bytes":123456, > +# "zero":123, > +# "zero-bytes":123456, > # "dirty-sync-count":15 > # }, > # "disk":{ > @@ -405,6 +416,8 @@ > # "duplicate":10, > # "normal":3333, > # "normal-bytes":3412992, > +# "zero":3333, > +# "zero-bytes":3412992, > # "dirty-sync-count":15 > # }, > # "xbzrle-cache":{ > diff --git a/tests/migration/guestperf/engine.py b/tests/migration/guestperf/engine.py > index 608d7270f6..75315b99b7 100644 > --- a/tests/migration/guestperf/engine.py > +++ b/tests/migration/guestperf/engine.py > @@ -92,6 +92,8 @@ def _migrate_progress(self, vm): > info["ram"].get("skipped", 0), > info["ram"].get("normal", 0), > info["ram"].get("normal-bytes", 0), > + info["ram"].get("zero", 0); > + info["ram"].get("zero-bytes", 0); > info["ram"].get("dirty-pages-rate", 0), > info["ram"].get("mbps", 0), > info["ram"].get("dirty-sync-count", 0)
diff --git a/migration/migration-hmp-cmds.c b/migration/migration-hmp-cmds.c index 7e96ae6ffd..abe035c9f2 100644 --- a/migration/migration-hmp-cmds.c +++ b/migration/migration-hmp-cmds.c @@ -111,6 +111,10 @@ void hmp_info_migrate(Monitor *mon, const QDict *qdict) info->ram->normal); monitor_printf(mon, "normal bytes: %" PRIu64 " kbytes\n", info->ram->normal_bytes >> 10); + monitor_printf(mon, "zero: %" PRIu64 " pages\n", + info->ram->zero); + monitor_printf(mon, "zero bytes: %" PRIu64 " kbytes\n", + info->ram->zero_bytes >> 10); monitor_printf(mon, "dirty sync count: %" PRIu64 "\n", info->ram->dirty_sync_count); monitor_printf(mon, "page size: %" PRIu64 " kbytes\n", diff --git a/migration/migration.c b/migration/migration.c index ab21de2cad..1968ea7075 100644 --- a/migration/migration.c +++ b/migration/migration.c @@ -1112,6 +1112,8 @@ static void populate_ram_info(MigrationInfo *info, MigrationState *s) info->ram->skipped = 0; info->ram->normal = stat64_get(&mig_stats.normal_pages); info->ram->normal_bytes = info->ram->normal * page_size; + info->ram->zero = stat64_get(&mig_stats.zero_pages); + info->ram->zero_bytes = info->ram->zero * page_size; info->ram->mbps = s->mbps; info->ram->dirty_sync_count = stat64_get(&mig_stats.dirty_sync_count); diff --git a/qapi/migration.json b/qapi/migration.json index e2450b92d4..892875da18 100644 --- a/qapi/migration.json +++ b/qapi/migration.json @@ -63,6 +63,10 @@ # between 0 and @dirty-sync-count * @multifd-channels. (since # 7.1) # +# @zero: number of zero pages (since 9.0) +# +# @zero-bytes: number of zero bytes sent (since 9.0) +# # Features: # # @deprecated: Member @skipped is always zero since 1.5.3 @@ -81,7 +85,8 @@ 'multifd-bytes': 'uint64', 'pages-per-second': 'uint64', 'precopy-bytes': 'uint64', 'downtime-bytes': 'uint64', 'postcopy-bytes': 'uint64', - 'dirty-sync-missed-zero-copy': 'uint64' } } + 'dirty-sync-missed-zero-copy': 'uint64', + 'zero': 'int', 'zero-bytes': 'int' } } ## # @XBZRLECacheStats: @@ -332,6 +337,8 @@ # "duplicate":123, # "normal":123, # "normal-bytes":123456, +# "zero":123, +# "zero-bytes":123456, # "dirty-sync-count":15 # } # } @@ -358,6 +365,8 @@ # "duplicate":123, # "normal":123, # "normal-bytes":123456, +# "zero":123, +# "zero-bytes":123456, # "dirty-sync-count":15 # } # } @@ -379,6 +388,8 @@ # "duplicate":123, # "normal":123, # "normal-bytes":123456, +# "zero":123, +# "zero-bytes":123456, # "dirty-sync-count":15 # }, # "disk":{ @@ -405,6 +416,8 @@ # "duplicate":10, # "normal":3333, # "normal-bytes":3412992, +# "zero":3333, +# "zero-bytes":3412992, # "dirty-sync-count":15 # }, # "xbzrle-cache":{ diff --git a/tests/migration/guestperf/engine.py b/tests/migration/guestperf/engine.py index 608d7270f6..75315b99b7 100644 --- a/tests/migration/guestperf/engine.py +++ b/tests/migration/guestperf/engine.py @@ -92,6 +92,8 @@ def _migrate_progress(self, vm): info["ram"].get("skipped", 0), info["ram"].get("normal", 0), info["ram"].get("normal-bytes", 0), + info["ram"].get("zero", 0); + info["ram"].get("zero-bytes", 0); info["ram"].get("dirty-pages-rate", 0), info["ram"].get("mbps", 0), info["ram"].get("dirty-sync-count", 0)
This change extends the MigrationStatus interface to track zero pages and zero bytes counter. Signed-off-by: Hao Xiang <hao.xiang@bytedance.com> --- migration/migration-hmp-cmds.c | 4 ++++ migration/migration.c | 2 ++ qapi/migration.json | 15 ++++++++++++++- tests/migration/guestperf/engine.py | 2 ++ 4 files changed, 22 insertions(+), 1 deletion(-)