This is the mail archive of the
systemtap@sourceware.org
mailing list for the systemtap project.
[SYSTEMTAP/PATCH 0/4] RT aware systemtap patch set
- From: Santosh Shukla <sshukla at mvista dot com>
- To: systemtap at sourceware dot org
- Cc: sshukla at mvista dot com
- Date: Tue, 9 Sep 2014 12:38:15 +0530
- Subject: [SYSTEMTAP/PATCH 0/4] RT aware systemtap patch set
- Authentication-results: sourceware.org; auth=none
Hi,
I wanted to run systemtap on -rt kernel version 3.14.12-rt9 and noticed bunch of preemptible
bug_on.This is initial effort to make systemtap rt-aware. Tested on 3.14.12-rt
kernel. Patchset based on stap upstream link [1], build on commit-id [2].
Patchset can work on master branch with little tweak in patch set.
I have also tested this patch set in 3.10.40-rt38 kernel noticed few preemptible
bug_on but those were coming from kernel and no improvement observed in
systemtap side.
Change summary -
- Replaced read lock with rcu_read_lock such that read_lock_irqsave lock substituion is
rcu_read_lock + local_irq_save and for read_unlock_irqsave lock substitution is
local_irq_restore followed bu rcu_read_unlock.
- Replaced write_lock_irqsave/restore with raw_spinlock_irqsave/restore for -rt kernel.
And for non-rt kernel those raw_ lock should get replaced by normal spin_lock.
- Replaced hlist api to rcu type api.
Test script used for testing :
/usr/local/stap/bin/stap -v testsuite/systemtap.examples/network/netdev.stp
/usr/local/stap/bin/stap -v testsuite/systemtap.examples/network/tcpdumplike.stp
Few other test example script used :
cat ../test-indent.stp
probe kernel.function("*@net/socket.c").call
{
printf ("%s -> %s\n", thread_indent(1), probefunc())
}
probe kernel.function("*@net/socket.c").return
{
printf ("%s <- %s\n", thread_indent(-1), probefunc())
}
Like know feedback, comment on patch set. also Does it make sense to maintain
systemtap -rt version in upstream.. do we care?
[1] git://sourceware.org/git/systemtap.git
[2] git checkout 8f0fcd995f7f650a2ee0a94539f90c99e6d19e1d
Santosh Shukla (4):
rt : replace __stp_tf_task_work_list_lock to raw_
rt : replace read write lock with rcu
rt : stp_utrace.c : replace utrace->lock with raw_lock
rt : replace utrace_struct lock to raw lock
runtime/linux/addr-map.c | 16 ++++---
runtime/linux/runtime.h | 2 +-
runtime/linux/task_finder2.c | 14 +++---
runtime/linux/task_finder_map.c | 38 ++++++++-------
runtime/stp_utrace.c | 100 +++++++++++++++++++--------------------
runtime/task_finder_vma.c | 43 +++++++++--------
6 files changed, 112 insertions(+), 101 deletions(-)
--
1.7.9.5