lkml.org 
[lkml]   [2012]   [Apr]   [20]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    /
    Date
    From
    SubjectRe: [RFC 0/6] uprobes: kill uprobes_srcu/uprobe_srcu_id
    On 04/20, Peter Zijlstra wrote:
    >
    > On Mon, 2012-04-16 at 23:47 +0200, Oleg Nesterov wrote:
    > > (And perhaps we can stop right here? I mean how often this can
    > > slow down the debugger which installs int3 in the same mm?)
    > >
    > > Now we need to clear MMF_HAS_UPROBE somehowe, when the last
    > > uprobe goes away. Lets ignore uprobe_map/unmap for simplicity.
    > >
    > > - We add another flag, MMF_UPROBE_RECALC, it is set by
    > > remove_breakpoint().
    > >
    > > - We change handle_swbp(). Ignoring all details it does:
    > >
    > > if (find_uprobe(vaddr))
    > > process_uprobe();
    > > else if (test_bit(MMF_HAS_UPROBE) && test_bit(MMF_UPROBE_RECALC))
    > > recalc_mmf_uprobe_flag();
    > >
    > > where recalc_mmf_uprobe_flag() checks all vmas and either
    > > clears both flags or MMF_UPROBE_RECALC only.
    > >
    > > This is the really slow O(n) path, but it can only happen after
    > > unregister, and only if we hit another non-uprobe breakpoint
    > > in the same mm.
    > >
    > > Something like this. What do you think?
    >
    > I think I can live with the simple set MMF_HAS_UPROBE and leave it at
    > that.

    Sure, I agree.

    A false positive MMF_HAS_UPROBE can only slow down the non-uprobe
    int3 in the same ->mm, I think we can tolerate this.

    > The better optimization seems to be to not install breakpoints
    > when ->filter() excludes the task..

    Ah, this is another story. And I agree this is more important.

    So far I do not understand what we should do. Of course, it would
    be simple to add the filtering when we install the breakpoint but
    I don't think it is that simple, even if we ignore the nasty
    complications with multiple consumers with different filters.

    Say, a user wants to probe /sbin/init only. What if init forks?
    We should remove breakpoints from child->mm somehow.

    And then we also need the filtering in uprobe_mmap() at least.

    But yes, I agree, it would be very nice to do this.

    Oleg.



    \
     
     \ /
      Last update: 2012-04-20 20:41    [W:0.052 / U:0.148 seconds]
    ©2003-2016 Jasper Spaans. hosted at Digital OceanAdvertise on this site