This is the mail archive of the systemtap@sourceware.org mailing list for the systemtap project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: new static user probe types


The performance for the respective static probe types, for a test program that invokes a static user probe in a loop 1,000,000 times, is:
kprobe 1.61user 4.73system
utrace 1.38user 22.02system
uprobe 1.24user 11.30system


It ended up that the guard statements in the probes were too permissive; fixing this and doing some guard statement performance tweaks yields:
kprobe 1.65user 3.78system
utrace 1.19user 6.03system
uprobe 1.24user 11.30system


The guard statements this experiments is using look like:
kprobe:
if ((task_tid(task_current())) != (_utrace_syscall_arg(1))) next # current task?
if ((pointer_arg(1)) != (_stp_probe_name_test)) { # probe name ptr differs from saved?
if ((user_int(pointer_arg(1))) != (1953719668)) next # check first word of probe name
if ((user_string(pointer_arg(1))) != ("test")) next # check string if all else fails
}
(_stp_probe_name_test) = (pointer_arg(1)) # remember saved probe name ptr


utrace:
if ((_utrace_syscall_nr()) != (48813)) next # is this the fake sdt "syscall"
if ((pointer_arg(1)... # as above


Running oprofile:
kprobe old 27% strlcpy 11% int3
         exp 13% __ticket_spin_lock 10% int3
utrace old  25% search_extable 18% page_fault 16% strlcpy
        exp  43% start_callback 5% system_call


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]