2
0
mirror of https://github.com/checkpoint-restore/criu synced 2025-08-31 06:15:24 +00:00

stats: Add writing-memory-image timing

Dumping memory is draining it from parasite, for pre-dump
this time would be reasonably small. _Writing_ the memory
would occur _after_ tasks unseize and resume.

Signed-off-by: Pavel Emelyanov <xemul@parallels.com>
This commit is contained in:
Pavel Emelyanov
2013-05-14 11:52:45 +04:00
parent 1b54484537
commit 094330c33b
4 changed files with 6 additions and 1 deletions

View File

@@ -6,6 +6,7 @@ enum {
TIME_FREEZING, TIME_FREEZING,
TIME_FROZEN, TIME_FROZEN,
TIME_MEMDUMP, TIME_MEMDUMP,
TIME_MEMWRITE,
TIME_NR_STATS, TIME_NR_STATS,
}; };

2
mem.c
View File

@@ -358,6 +358,7 @@ static int __parasite_dump_pages_seized(struct parasite_ctl *ctl,
args->off += args->nr_segs; args->off += args->nr_segs;
} }
timing_start(TIME_MEMWRITE);
ret = open_page_xfer(&xfer, CR_FD_PAGEMAP, ctl->pid.virt); ret = open_page_xfer(&xfer, CR_FD_PAGEMAP, ctl->pid.virt);
if (ret < 0) if (ret < 0)
goto out_pp; goto out_pp;
@@ -365,6 +366,7 @@ static int __parasite_dump_pages_seized(struct parasite_ctl *ctl,
ret = page_xfer_dump_pages(&xfer, pp, 0); ret = page_xfer_dump_pages(&xfer, pp, 0);
xfer.close(&xfer); xfer.close(&xfer);
timing_stop(TIME_MEMWRITE);
task_reset_dirty_track(ctl->pid.real); task_reset_dirty_track(ctl->pid.real);
out_pp: out_pp:
destroy_page_pipe(pp); destroy_page_pipe(pp);

View File

@@ -3,6 +3,7 @@ message dump_stats_entry {
required uint32 freezing_time = 1; required uint32 freezing_time = 1;
required uint32 frozen_time = 2; required uint32 frozen_time = 2;
required uint32 memdump_time = 3; required uint32 memdump_time = 3;
required uint32 memwrite_time = 4;
} }
message stats_entry { message stats_entry {

View File

@@ -46,7 +46,7 @@ void timing_stop(int t)
void show_stats(int fd) void show_stats(int fd)
{ {
do_pb_show_plain(fd, PB_STATS, 1, NULL, "1.1:%u 1.2:%u 1.3:%u"); do_pb_show_plain(fd, PB_STATS, 1, NULL, "1.1:%u 1.2:%u 1.3:%u 1.4:%u");
} }
static void encode_time(int t, u_int32_t *to) static void encode_time(int t, u_int32_t *to)
@@ -68,6 +68,7 @@ void write_stats(int what)
encode_time(TIME_FREEZING, &dstats.freezing_time); encode_time(TIME_FREEZING, &dstats.freezing_time);
encode_time(TIME_FROZEN, &dstats.frozen_time); encode_time(TIME_FROZEN, &dstats.frozen_time);
encode_time(TIME_MEMDUMP, &dstats.memdump_time); encode_time(TIME_MEMDUMP, &dstats.memdump_time);
encode_time(TIME_MEMWRITE, &dstats.memwrite_time);
name = "dump"; name = "dump";
} else } else