summaryrefslogtreecommitdiff
path: root/systemtap/ioblock_delay/device.stp
diff options
context:
space:
mode:
Diffstat (limited to 'systemtap/ioblock_delay/device.stp')
-rwxr-xr-xsystemtap/ioblock_delay/device.stp31
1 files changed, 31 insertions, 0 deletions
diff --git a/systemtap/ioblock_delay/device.stp b/systemtap/ioblock_delay/device.stp
new file mode 100755
index 0000000..b9270e5
--- /dev/null
+++ b/systemtap/ioblock_delay/device.stp
@@ -0,0 +1,31 @@
+// size of array equals to max. number of pending requests
+global calls[30000];
+
+probe begin {
+ printf("device,sector,time_ns\n");
+}
+
+probe ioblock.request
+{
+ if (devname == @1) {
+ calls[$bio] = gettimeofday_ns();
+ }
+}
+
+probe ioblock.end
+{
+ if ([$bio] in calls) {
+ time = gettimeofday_ns() - calls[$bio];
+ delete calls[$bio];
+
+ printf("%s,%u,%ld\n",
+ devname, sector, time);
+ }
+}
+
+probe end {
+ foreach ([bio] in calls) {
+ printf("# Lost: %s,%u,%u\n",
+ __bio_devname(bio), @cast(bio, "bio")->bi_sector, calls[bio]);
+ }
+}