summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorRajasekhar Duddu <rajduddu@linux.vnet.ibm.com>2009-12-21 17:10:54 +0530
committerTim Moore <timoore@redhat.com>2009-12-22 23:44:28 +0100
commit7f24dd744bc6dbef16024c2ec3cbb0ee8e0d4ee5 (patch)
tree49c2f67fc75515aa232b7904ca4e7d50a78b8352
parent75dfa5cb9b3584995f9e634a6e769b8a1576bc0d (diff)
downloadsystemtap-steved-7f24dd744bc6dbef16024c2ec3cbb0ee8e0d4ee5.tar.gz
systemtap-steved-7f24dd744bc6dbef16024c2ec3cbb0ee8e0d4ee5.tar.xz
systemtap-steved-7f24dd744bc6dbef16024c2ec3cbb0ee8e0d4ee5.zip
Tracepoint based tapset for memory subsystem.
-rw-r--r--testsuite/buildok/vm.tracepoints.stp31
-rw-r--r--testsuite/systemtap.examples/memory/vm.tracepoints.meta13
-rw-r--r--testsuite/systemtap.examples/memory/vm.tracepoints.stp18
3 files changed, 62 insertions, 0 deletions
diff --git a/testsuite/buildok/vm.tracepoints.stp b/testsuite/buildok/vm.tracepoints.stp
new file mode 100644
index 00000000..488ca0fc
--- /dev/null
+++ b/testsuite/buildok/vm.tracepoints.stp
@@ -0,0 +1,31 @@
+#! stap -up4
+
+probe vm.kfree {
+ println(name)
+ printf("%-15s %-15p %-15s %-15p \n", execname(), call_site, caller_function, ptr)
+}
+
+probe vm.kmalloc {
+ println(name)
+ printf("%-15s %-15p %-15s %-15p %-15d %-15d %-15d %-15s \n", execname(), call_site, caller_function, ptr, bytes_req, bytes_alloc, gfp_flags, gfp_flag_name)
+}
+
+probe vm.kmem_cache_alloc {
+ println(name)
+ printf("%-15s %-15p %-15s %-15p %-15d %-15d %-15d %-15s \n", execname(), call_site, caller_function, ptr, bytes_req, bytes_alloc, gfp_flags, gfp_flag_name)
+}
+
+probe vm.kmalloc_node {
+ println(name)
+ printf("%-15s %-15p %-15s %-15p %-15d %-15d %-15d %-15s \n", execname(), call_site, caller_function, ptr, bytes_req, bytes_alloc, gfp_flags, gfp_flag_name)
+}
+
+probe vm.kmem_cache_alloc_node {
+ println(name)
+ printf("%-15s %-15p %-15s %-15p %-15d %-15d %-15d %-15s \n", execname(), call_site, caller_function, ptr, bytes_req, bytes_alloc, gfp_flags, gfp_flag_name)
+}
+
+probe vm.kmem_cache_free {
+ println(name)
+ printf("%-15s %-15p %-15s %-15p \n", execname(), call_site, caller_function, ptr)
+}
diff --git a/testsuite/systemtap.examples/memory/vm.tracepoints.meta b/testsuite/systemtap.examples/memory/vm.tracepoints.meta
new file mode 100644
index 00000000..9fdb73f6
--- /dev/null
+++ b/testsuite/systemtap.examples/memory/vm.tracepoints.meta
@@ -0,0 +1,13 @@
+title: Collect slab allocation statistics
+name: vm.tracepoints.stp
+version: 1.0
+author: Rajasekhar
+keywords: memory slab allocator
+subsystem: memory
+status: production
+exit: user-controlled
+output: sorted-list
+scope: system-wide
+description: The script will probe all memory slab/slub allocations and collects information about the size of the object (bytes requested) and user-space process in execution. When run over a period of time, it helps to correlate kernel-space memory consumption owing to user-space processes.
+test_check: stap -p4 vm.tracepoints.stp
+test_installcheck: stap vm.tracepoints.stp -c "sleep 10"
diff --git a/testsuite/systemtap.examples/memory/vm.tracepoints.stp b/testsuite/systemtap.examples/memory/vm.tracepoints.stp
new file mode 100644
index 00000000..07cee6f5
--- /dev/null
+++ b/testsuite/systemtap.examples/memory/vm.tracepoints.stp
@@ -0,0 +1,18 @@
+global slabs
+
+probe vm.kmem_cache_alloc {
+ slabs [execname(), bytes_req]<<<1
+}
+
+probe timer.ms(10000)
+{
+ dummy = "";
+ foreach ([name, bytes] in slabs) {
+ if (dummy != name)
+ printf("\nProcess:%s\n", name);
+ printf("Slab_size:%d\tCount:%d\n", bytes, @count(slabs[name, bytes]));
+ dummy = name;
+ }
+ delete slabs
+ printf("\n-------------------------------------------------------\n\n")
+}