Re: [Ksummit-2010-discuss] checkpoint-restart: naked patch

From: Matt Helsley
Date: Fri Nov 05 2010 - 21:16:38 EST


On Fri, Nov 05, 2010 at 01:17:03PM -0400, Gene Cooperman wrote:
> On Fri, Nov 05, 2010 at 04:57:33AM -0700, Luck, Tony wrote:
> > > Oren noted that sometimes it's important to stop the process only
> > > for a few milliseconds while one checkpoints. In DMTCP, we do that
> > > by configuring with --enable-forked-checkpointing. This causes us
> > > to fork a child process taking advantage of copy-on-write and then
> > > checkpoint the memory pages of the child while the parent continues
> > > to execute.
> >
> > Interesting ... but while the process is only stopped for the duration
> > of the fork, it may be taking COW faults on almost every page it
> > touches. I think this will not work well for large HPC applications
> > that allocate most of physical memory as anonymous pages for the
> > application. It may even result in an OOM kill if you don't complete
> > the checkpoint of the child and have it exit in a timely manner.
> >
> > -Tony
> >
>
> I agree with you that forked checkpointing is probably not what you
> want in the middle of an HPC computation. But isn't that part of
> the nature of COW? Whether the COW is invoked within the kernel,
> or from outside the kernel via fork --- in either case, when you have
> mostly dirty pages, you will have to copy most of the pages.

The current linux-cr approach to handling [dirty] pages doesn't use COW.
The tasks are frozen using the cgroup freezer and thus unable to modify
the pages. So we don't have to mess with page tables nor do we pay
any extra overhead for page faults.

If we ever implement thawed checkpointing -- checkpointing while
the task isn't frozen -- then we'd probably use COW and see
the same faults. The difference then would be that in-kernel we
wouldn't have one extra task per mm being checkpointed.

Cheers,
-Matt Helsley
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/