Commit cee5e817 authored by Pavel Emelyanov's avatar Pavel Emelyanov

dump: Collect more stats about pages being dumped

Dumped pages are those taken to the image
Skipped pages are those, sitting in RAM, but left there (file shared pages)
Total is the total amount of pages that fit into vmarea
Signed-off-by: 's avatarPavel Emelyanov <xemul@parallels.com>
parent 4ec76b28
......@@ -61,6 +61,8 @@ struct parasite_dump_pages_args {
struct vma_entry vma_entry;
unsigned long nrpages_dumped; /* how many pages are dumped */
unsigned long nrpages_skipped;
unsigned long nrpages_total;
};
/*
......
......@@ -470,7 +470,7 @@ int parasite_dump_pages_seized(struct parasite_ctl *ctl, struct list_head *vma_a
{
struct parasite_dump_pages_args parasite_dumppages = { };
parasite_status_t *st = &parasite_dumppages.status;
unsigned long nrpages_dumped = 0;
unsigned long nrpages_dumped = 0, nrpages_skipped = 0, nrpages_total = 0;
struct vma_area *vma_area;
int ret = -1;
......@@ -509,7 +509,6 @@ int parasite_dump_pages_seized(struct parasite_ctl *ctl, struct list_head *vma_a
if (vma_area_is(vma_area, VMA_ANON_SHARED))
continue;
pr_info_vma(vma_area);
parasite_dumppages.vma_entry = vma_area->vma;
if (!vma_area_is(vma_area, VMA_ANON_PRIVATE) &&
......@@ -529,14 +528,22 @@ int parasite_dump_pages_seized(struct parasite_ctl *ctl, struct list_head *vma_a
goto out;
}
pr_info(" (dumped: %16li pages)\n", parasite_dumppages.nrpages_dumped);
pr_info("vma %lx-%lx dumped: %lu pages %lu skipped %lu total\n",
vma_area->vma.start, vma_area->vma.end,
parasite_dumppages.nrpages_dumped,
parasite_dumppages.nrpages_skipped,
parasite_dumppages.nrpages_total);
nrpages_dumped += parasite_dumppages.nrpages_dumped;
nrpages_skipped += parasite_dumppages.nrpages_skipped;
nrpages_total += parasite_dumppages.nrpages_total;
}
parasite_execute(PARASITE_CMD_DUMPPAGES_FINI, ctl, NULL, 0);
pr_info("\n");
pr_info("Summary: %16li pages dumped\n", nrpages_dumped);
pr_info("Summary: %lu dumped %lu skipped %lu total\n",
nrpages_dumped, nrpages_skipped, nrpages_total);
ret = 0;
out:
......
......@@ -141,12 +141,14 @@ static int dump_pages(struct parasite_dump_pages_args *args)
int ret = -1, fd;
args->nrpages_dumped = 0;
args->nrpages_skipped = 0;
prot_old = prot_new = 0;
fd = fd_pages;
length = args->vma_entry.end - args->vma_entry.start;
nrpages = length / PAGE_SIZE;
args->nrpages_total = nrpages;
/*
* brk should allow us to handle up to 128M of memory,
......@@ -208,7 +210,8 @@ static int dump_pages(struct parasite_dump_pages_args *args)
}
args->nrpages_dumped++;
}
} else if (map[pfn] & PAGE_RSS)
args->nrpages_skipped++;
}
/*
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment