This is the mail archive of the systemtap@sources.redhat.com 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: [RFC] Design + prototype: Multiple handler sets per probe address


Ananth N Mavinakayanahalli wrote:
Hi,

Here is a design to support "Mulitple handler sets per address". I have also put in the i386 implementation based on this design.

Some notes:

- The interfaces to register, unregister, define handlers all remain
the same.
- A kprobe and jprobe cannot co-exist at the same location. (Ideas are welcome on how to support this).


I have minimally tested the patch and it works(tm).

Please let me know your thoughts on the design. I'd also appreciate if you could test the patch (diffed against 2.6.12-rc1-mm3) and provide feedback.


Thanks, Ananth


I have been working on some simple testing to exercises the multiple probes. It checks to make sure that probes are inserted and deleted as expected. It has three probes at location.

I appologize for the verbose output. I have also attached output of the test results. There are some warning about allocating sleeping function.

It appears to be inserting and removing probes as expected.

It seems like it would be useful to have unregister_kprobe() return whether the operation was successful or not. Be able to catch cases were code attempts to remove a probe twice.

-Will

Attachment: kprobe_multi.tar.gz
Description: Unix tar archive

Apr  1 16:55:37 slingshot kernel: Starting multiple probe test
Apr  1 16:55:37 slingshot kernel: kprobe start 4598638287747, stop 4598638288082
Apr  1 16:55:37 slingshot kernel: kprobe overhead count 10, number of cycles 335
Apr  1 16:55:37 slingshot kernel: kprobe overhead of 33 cycles per iteration
Apr  1 16:55:37 slingshot kernel: kprobe start 4598638357393, stop 4598638357520
Apr  1 16:55:37 slingshot kernel: kprobe overhead count 10, number of cycles 127
Apr  1 16:55:37 slingshot kernel: kprobe overhead of 12 cycles per iteration
Apr  1 16:55:37 slingshot kernel: kprobe start 4598638423362, stop 4598638423447
Apr  1 16:55:37 slingshot kernel: kprobe overhead count 10, number of cycles 85
Apr  1 16:55:37 slingshot kernel: kprobe overhead of 8 cycles per iteration
Apr  1 16:55:37 slingshot kernel: kprobe start 4598638489422, stop 4598638489525
Apr  1 16:55:37 slingshot kernel: kprobe overhead count 10, number of cycles 103
Apr  1 16:55:37 slingshot kernel: kprobe overhead of 10 cycles per iteration
Apr  1 16:55:37 slingshot kernel: kprobe start 4598638556287, stop 4598638556361
Apr  1 16:55:37 slingshot kernel: kprobe overhead count 10, number of cycles 74
Apr  1 16:55:37 slingshot kernel: kprobe overhead of 7 cycles per iteration
Apr  1 16:55:37 slingshot kernel: kprobe start 4598638621687, stop 4598638621761
Apr  1 16:55:37 slingshot kernel: kprobe overhead count 10, number of cycles 74
Apr  1 16:55:37 slingshot kernel: kprobe overhead of 7 cycles per iteration
Apr  1 16:55:37 slingshot kernel: PASSED: for 0
Apr  1 16:55:37 slingshot kernel: Debug: sleeping function called from invalid context at mm/slab.c:2096
Apr  1 16:55:37 slingshot kernel: in_atomic():0, irqs_disabled():1
Apr  1 16:55:37 slingshot kernel:  [<c0122794>] __might_sleep+0xa4/0xc0
Apr  1 16:55:37 slingshot kernel:  [<c01550c3>] __kmalloc+0xc3/0xd0
Apr  1 16:55:37 slingshot kernel:  [<c0155264>] kcalloc+0x34/0x70
Apr  1 16:55:37 slingshot kernel:  [<c014919b>] register_kprobe+0xbb/0x140
Apr  1 16:55:37 slingshot kernel:  [<e0946367>] init_module+0x217/0x250 [kprobe_multi]
Apr  1 16:55:37 slingshot kernel:  [<c0141f75>] sys_init_module+0x145/0x200
Apr  1 16:55:37 slingshot kernel:  [<c01041bf>] sysenter_past_esp+0x54/0x75
Apr  1 16:55:37 slingshot kernel: kprobe start 4598639025089, stop 4598639040308
Apr  1 16:55:38 slingshot kernel: kprobe overhead count 10, number of cycles 15219
Apr  1 16:55:38 slingshot kernel: kprobe overhead of 1521 cycles per iteration
Apr  1 16:55:38 slingshot kernel: kprobe start 4598639108235, stop 4598639117436
Apr  1 16:55:38 slingshot kernel: kprobe overhead count 10, number of cycles 9201
Apr  1 16:55:38 slingshot kernel: kprobe overhead of 920 cycles per iteration
Apr  1 16:55:38 slingshot kernel: kprobe start 4598639184487, stop 4598639193581
Apr  1 16:55:38 slingshot kernel: kprobe overhead count 10, number of cycles 9094
Apr  1 16:55:38 slingshot kernel: kprobe overhead of 909 cycles per iteration
Apr  1 16:55:38 slingshot kernel: kprobe start 4598639261480, stop 4598639262100
Apr  1 16:55:38 slingshot kernel: kprobe overhead count 10, number of cycles 620
Apr  1 16:55:38 slingshot kernel: kprobe overhead of 62 cycles per iteration
Apr  1 16:55:38 slingshot kernel: kprobe start 4598639328587, stop 4598639328676
Apr  1 16:55:38 slingshot kernel: kprobe overhead count 10, number of cycles 89
Apr  1 16:55:38 slingshot kernel: kprobe overhead of 8 cycles per iteration
Apr  1 16:55:38 slingshot kernel: kprobe start 4598639394662, stop 4598639394736
Apr  1 16:55:38 slingshot kernel: kprobe overhead count 10, number of cycles 74
Apr  1 16:55:38 slingshot kernel: kprobe overhead of 7 cycles per iteration
Apr  1 16:55:38 slingshot kernel: PASSED: for 1
Apr  1 16:55:38 slingshot kernel: kprobe start 4598639487780, stop 4598639498446
Apr  1 16:55:38 slingshot kernel: kprobe overhead count 10, number of cycles 10666
Apr  1 16:55:38 slingshot kernel: kprobe overhead of 1066 cycles per iteration
Apr  1 16:55:38 slingshot kernel: kprobe start 4598639565637, stop 4598639574764
Apr  1 16:55:38 slingshot kernel: kprobe overhead count 10, number of cycles 9127
Apr  1 16:55:38 slingshot kernel: kprobe overhead of 912 cycles per iteration
Apr  1 16:55:38 slingshot kernel: kprobe start 4598639641262, stop 4598639650380
Apr  1 16:55:38 slingshot kernel: kprobe overhead count 10, number of cycles 9118
Apr  1 16:55:38 slingshot kernel: kprobe overhead of 911 cycles per iteration
Apr  1 16:55:38 slingshot kernel: kprobe start 4598639719949, stop 4598639720575
Apr  1 16:55:38 slingshot kernel: kprobe overhead count 10, number of cycles 626
Apr  1 16:55:38 slingshot kernel: kprobe overhead of 62 cycles per iteration
Apr  1 16:55:38 slingshot kernel: kprobe start 4598639879712, stop 4598639879878
Apr  1 16:55:38 slingshot kernel: kprobe overhead count 10, number of cycles 166
Apr  1 16:55:38 slingshot kernel: kprobe overhead of 16 cycles per iteration
Apr  1 16:55:38 slingshot kernel: kprobe start 4598639946037, stop 4598639946111
Apr  1 16:55:38 slingshot kernel: kprobe overhead count 10, number of cycles 74
Apr  1 16:55:38 slingshot kernel: kprobe overhead of 7 cycles per iteration
Apr  1 16:55:38 slingshot kernel: PASSED: for 2
Apr  1 16:55:38 slingshot kernel: kprobe start 4598640028491, stop 4598640040217
Apr  1 16:55:38 slingshot kernel: kprobe overhead count 10, number of cycles 11726
Apr  1 16:55:38 slingshot kernel: kprobe overhead of 1172 cycles per iteration
Apr  1 16:55:38 slingshot kernel: kprobe start 4598640107562, stop 4598640117435
Apr  1 16:55:38 slingshot kernel: kprobe overhead count 10, number of cycles 9873
Apr  1 16:55:38 slingshot kernel: kprobe overhead of 987 cycles per iteration
Apr  1 16:55:38 slingshot kernel: kprobe start 4598640184162, stop 4598640194051
Apr  1 16:55:38 slingshot kernel: kprobe overhead count 10, number of cycles 9889
Apr  1 16:55:38 slingshot kernel: kprobe overhead of 988 cycles per iteration
Apr  1 16:55:38 slingshot kernel: kprobe start 4598640261790, stop 4598640262365
Apr  1 16:55:38 slingshot kernel: kprobe overhead count 10, number of cycles 575
Apr  1 16:55:38 slingshot kernel: kprobe overhead of 57 cycles per iteration
Apr  1 16:55:38 slingshot kernel: kprobe start 4598640330162, stop 4598640330236
Apr  1 16:55:38 slingshot kernel: kprobe overhead count 10, number of cycles 74
Apr  1 16:55:38 slingshot kernel: kprobe overhead of 7 cycles per iteration
Apr  1 16:55:38 slingshot kernel: kprobe start 4598640395737, stop 4598640395811
Apr  1 16:55:38 slingshot kernel: kprobe overhead count 10, number of cycles 74
Apr  1 16:55:38 slingshot kernel: kprobe overhead of 7 cycles per iteration
Apr  1 16:55:38 slingshot kernel: PASSED: for 3
Apr  1 16:55:38 slingshot kernel: kprobe start 4598640476821, stop 4598640487272
Apr  1 16:55:38 slingshot kernel: kprobe overhead count 10, number of cycles 10451
Apr  1 16:55:38 slingshot kernel: kprobe overhead of 1045 cycles per iteration
Apr  1 16:55:38 slingshot kernel: kprobe start 4598640554637, stop 4598640563709
Apr  1 16:55:38 slingshot kernel: kprobe overhead count 10, number of cycles 9072
Apr  1 16:55:38 slingshot kernel: kprobe overhead of 907 cycles per iteration
Apr  1 16:55:38 slingshot kernel: kprobe start 4598640630987, stop 4598640640068
Apr  1 16:55:38 slingshot kernel: kprobe overhead count 10, number of cycles 9081
Apr  1 16:55:38 slingshot kernel: kprobe overhead of 908 cycles per iteration
Apr  1 16:55:38 slingshot kernel: kprobe start 4598640707600, stop 4598640708178
Apr  1 16:55:38 slingshot kernel: kprobe overhead count 10, number of cycles 578
Apr  1 16:55:38 slingshot kernel: kprobe overhead of 57 cycles per iteration
Apr  1 16:55:38 slingshot kernel: kprobe start 4598640775337, stop 4598640775411
Apr  1 16:55:38 slingshot kernel: kprobe overhead count 10, number of cycles 74
Apr  1 16:55:38 slingshot kernel: kprobe overhead of 7 cycles per iteration
Apr  1 16:55:38 slingshot kernel: kprobe start 4598640842812, stop 4598640842886
Apr  1 16:55:38 slingshot kernel: kprobe overhead count 10, number of cycles 74
Apr  1 16:55:38 slingshot kernel: kprobe overhead of 7 cycles per iteration
Apr  1 16:55:38 slingshot kernel: PASSED: for 4
Apr  1 16:55:38 slingshot kernel: kprobe start 4598640924187, stop 4598640935382
Apr  1 16:55:38 slingshot kernel: kprobe overhead count 10, number of cycles 11195
Apr  1 16:55:38 slingshot kernel: kprobe overhead of 1119 cycles per iteration
Apr  1 16:55:38 slingshot kernel: kprobe start 4598641005512, stop 4598641015386
Apr  1 16:55:38 slingshot kernel: kprobe overhead count 10, number of cycles 9874
Apr  1 16:55:38 slingshot kernel: kprobe overhead of 987 cycles per iteration
Apr  1 16:55:38 slingshot kernel: kprobe start 4598641081787, stop 4598641091671
Apr  1 16:55:38 slingshot kernel: kprobe overhead count 10, number of cycles 9884
Apr  1 16:55:38 slingshot kernel: kprobe overhead of 988 cycles per iteration
Apr  1 16:55:38 slingshot kernel: kprobe start 4598641168891, stop 4598641169478
Apr  1 16:55:38 slingshot kernel: kprobe overhead count 10, number of cycles 587
Apr  1 16:55:38 slingshot kernel: kprobe overhead of 58 cycles per iteration
Apr  1 16:55:38 slingshot kernel: kprobe start 4598641237062, stop 4598641237136
Apr  1 16:55:38 slingshot kernel: kprobe overhead count 10, number of cycles 74
Apr  1 16:55:38 slingshot kernel: kprobe overhead of 7 cycles per iteration
Apr  1 16:55:38 slingshot kernel: kprobe start 4598641302687, stop 4598641302761
Apr  1 16:55:38 slingshot kernel: kprobe overhead count 10, number of cycles 74
Apr  1 16:55:38 slingshot kernel: kprobe overhead of 7 cycles per iteration
Apr  1 16:55:38 slingshot kernel: PASSED: for 5
Apr  1 16:55:38 slingshot kernel: kprobe start 4598641386144, stop 4598641397361
Apr  1 16:55:38 slingshot kernel: kprobe overhead count 10, number of cycles 11217
Apr  1 16:55:38 slingshot kernel: kprobe overhead of 1121 cycles per iteration
Apr  1 16:55:38 slingshot kernel: kprobe start 4598641475685, stop 4598641485777
Apr  1 16:55:38 slingshot kernel: kprobe overhead count 10, number of cycles 10092
Apr  1 16:55:38 slingshot kernel: kprobe overhead of 1009 cycles per iteration
Apr  1 16:55:38 slingshot kernel: kprobe start 4598641553087, stop 4598641562980
Apr  1 16:55:38 slingshot kernel: kprobe overhead count 10, number of cycles 9893
Apr  1 16:55:38 slingshot kernel: kprobe overhead of 989 cycles per iteration
Apr  1 16:55:38 slingshot kernel: kprobe start 4598641630651, stop 4598641631253
Apr  1 16:55:38 slingshot kernel: kprobe overhead count 10, number of cycles 602
Apr  1 16:55:38 slingshot kernel: kprobe overhead of 60 cycles per iteration
Apr  1 16:55:38 slingshot kernel: kprobe start 4598641698612, stop 4598641698686
Apr  1 16:55:38 slingshot kernel: kprobe overhead count 10, number of cycles 74
Apr  1 16:55:38 slingshot kernel: kprobe overhead of 7 cycles per iteration
Apr  1 16:55:38 slingshot kernel: kprobe start 4598641764137, stop 4598641764211
Apr  1 16:55:38 slingshot kernel: kprobe overhead count 10, number of cycles 74
Apr  1 16:55:38 slingshot kernel: kprobe overhead of 7 cycles per iteration
Apr  1 16:55:38 slingshot kernel: PASSED: for 6
Apr  1 16:55:38 slingshot kernel: kprobe start 4598641846942, stop 4598641859837
Apr  1 16:55:38 slingshot kernel: kprobe overhead count 10, number of cycles 12895
Apr  1 16:55:38 slingshot kernel: kprobe overhead of 1289 cycles per iteration
Apr  1 16:55:38 slingshot kernel: kprobe start 4598641927237, stop 4598641937642
Apr  1 16:55:38 slingshot kernel: kprobe overhead count 10, number of cycles 10405
Apr  1 16:55:38 slingshot kernel: kprobe overhead of 1040 cycles per iteration
Apr  1 16:55:38 slingshot kernel: kprobe start 4598642004787, stop 4598642015191
Apr  1 16:55:38 slingshot kernel: kprobe overhead count 10, number of cycles 10404
Apr  1 16:55:38 slingshot kernel: kprobe overhead of 1040 cycles per iteration
Apr  1 16:55:38 slingshot kernel: kprobe start 4598642083495, stop 4598642084103
Apr  1 16:55:38 slingshot kernel: kprobe overhead count 10, number of cycles 608
Apr  1 16:55:38 slingshot kernel: kprobe overhead of 60 cycles per iteration
Apr  1 16:55:38 slingshot kernel: kprobe start 4598642151762, stop 4598642151836
Apr  1 16:55:38 slingshot kernel: kprobe overhead count 10, number of cycles 74
Apr  1 16:55:38 slingshot kernel: kprobe overhead of 7 cycles per iteration
Apr  1 16:55:38 slingshot kernel: kprobe start 4598642217212, stop 4598642217286
Apr  1 16:55:38 slingshot kernel: kprobe overhead count 10, number of cycles 74
Apr  1 16:55:38 slingshot kernel: kprobe overhead of 7 cycles per iteration
Apr  1 16:55:38 slingshot kernel: PASSED: for 7

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