On Fri, 4 Jun 2010, Peter Zijlstra wrote: > On Fri, 2010-06-04 at 11:43 +0200, Peter Zijlstra wrote: > > I still believe containment is a cgroup problem. The freeze/snapshot/resume > > container folks seem to face many of the same problems. Including the > > pending timer one I suspect. Lets solve it there. > > While talking to Thomas about this, we'd probably need a CLOCK_MONOTONIC > namespace to pull this off, so that resumed apps don't see the jump in > absolute time. > > This would also help with locating the relevant timers, since they'd be > on the related timer base. > > The only 'interesting' issue I can see here is that if you create 1000 > CLOCK_MONOTONIC namepaces, we'd need to have a tree of trees in order to > efficiently find the leftmost timer. We can do more clever than that. All CLOCK_MONOTONIC timers can live in the CLOCK_MONOTONIC rbtree, we just need proper annotation, i.e.: struct hrtimer { ktime_t expires; ...... struct list_head namespace; ktime_t base_offset; }; So expires would be on CLOCK_MONOTONIC as seen from the kernel, just the user space interfaces would take the base_offset into account. On freeze we remove the timers from the rbtree (they are easy to find via the namespace list) and on thaw we set the base_offset accordingly and insert them again. So no surprise for user space and no tree of trees to walk through. Thanks, tglx _______________________________________________ linux-pm mailing list linux-pm@xxxxxxxxxxxxxxxxxxxxxxxxxx https://lists.linux-foundation.org/mailman/listinfo/linux-pm