lkml.org 
[lkml]   [2010]   [Jun]   [4]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    /
    Date
    From
    SubjectRe: suspend blockers & Android integration
    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


    \
     
     \ /
      Last update: 2010-06-04 12:15    [W:0.022 / U:1.164 seconds]
    ©2003-2016 Jasper Spaans. hosted at Digital OceanAdvertise on this site