trace_fsslower
The trace fsslower gadget streams file operations (open, read, write and fsync) that are slower than a threshold.
Requirements
- Minimum Kernel Version : 5.4
Getting started
Running the gadget:
- kubectl gadget
- ig
$ kubectl gadget run ghcr.io/inspektor-gadget/gadget/trace_fsslower:latest [flags]
$ sudo ig run ghcr.io/inspektor-gadget/gadget/trace_fsslower:latest [flags]
Flags
--min
Minimum latency in µs to trace
Default value: "10000"
--pid
Show only bind events generated by this particular PID
Default value: ""
--filesystem
Filesystem to trace. Possible values are: btrfs, ext4, fuse, nfs, nfts3 or xfs.
Default value: "ext4"
Guide
In this guide you'll deploy an example workload that performs some open(), read() write() and sync() calls and will trace which ones are slower than 1 ms.
Let's start the gadget before running our workload:
- kubectl gadget
- ig
$ kubectl gadget run trace_fsslower:latest --podname test-trace-fsslower --filesystem ext4 --min 1000
K8S.NODE K8S.NAMESPACE K8S.PODNAME K8S.CONTAINERNAME COMM PID TID TID DELTA_US OFFSET SIZE FILE OP
$ sudo ig run trace_fsslower:latest --verify-image=false --filesystem ext4 --min 1000 -c test-trace-fsslower
RUNTIME.CONTAINERNAME COMM PID TID DELTA_… OFFSET SIZE FILE OP
Launch a container that will perform input/output operations:
- kubectl gadget
- ig
$ kubectl run test-trace-fsslower --restart=Never --image=debian -- /bin/sh -c "apt-get update && apt-get install -y git"
pod/test-trace-fsslower created
$ docker run --name test-trace-fsslower -it --rm debian /bin/sh -c "apt-get update && apt-get install -y git"
Get:1 http://deb.debian.org/debian bullseye InRelease [116 kB]
Get:2 http://deb.debian.org/debian-security bullseye-security InRelease [48.4 kB]
...
0 added, 0 removed; done.
Running hooks in /etc/ca-certificates/update.d...
done.
The tool will list the I/O operations that were slower than 1ms:
- kubectl gadget
- ig
$ kubectl gadget run trace_fsslower:latest --podname test-trace-fsslower --filesystem ext4 --min 1000
K8S.NODE K8S.NAMESPACE K8S.PODNAME K8S.CONTAINERNAME COMM PID TID TID DELTA_US OFFSET SIZE FILE OP
minikube default test-trace-fsslower test-trace-fsslower http 60778 60778 60775 5832 3857488 8520 deb.debian.org_… F_WRITE
minikube default test-trace-fsslower test-trace-fsslower http 60778 60778 60775 1387 6647227 1688 deb.debian.org_… F_WRITE
minikube default test-trace-fsslower test-trace-fsslower store 60786 60786 60775 2085 14163567 25817 deb.debian.org_… F_WRITE
minikube default test-trace-fsslower test-trace-fsslower dpkg-preconfigu 60898 60898 60897 3077 0 9223372… #56749 F_FSYNC
minikube default test-trace-fsslower test-trace-fsslower dpkg-preconfigu 60898 60898 60897 2464 0 9223372… #56751 F_FSYNC
minikube default test-trace-fsslower test-trace-fsslower dpkg-preconfigu 60898 60898 60897 3393 0 9223372… config.dat-new F_FSYNC
minikube default test-trace-fsslower test-trace-fsslower dpkg-preconfigu 60898 60898 60897 2077 0 9223372… templates.dat-n… F_FSYNC
minikube default test-trace-fsslower test-trace-fsslower dpkg 60985 60985 60849 3669 0 9223372… triggers F_FSYNC
minikube default test-trace-fsslower test-trace-fsslower dpkg 60985 60985 60849 3031 0 9223372… shlibs F_FSYNC
minikube default test-trace-fsslower test-trace-fsslower dpkg 60985 60985 60849 3348 0 9223372… symbols F_FSYNC
minikube default test-trace-fsslower test-trace-fsslower dpkg 60985 60985 60849 3064 0 9223372… md5sums F_FSYNC
minikube default test-trace-fsslower test-trace-fsslower dpkg 60985 60985 60849 3108 0 9223372… control F_FSYNC
minikube default test-trace-fsslower test-trace-fsslower dpkg 60985 60985 60849 2271 0 9223372… tmp.ci F_FSYNC
minikube default test-trace-fsslower test-trace-fsslower dpkg 60985 60985 60849 1837 0 9223372… tmp.i F_FSYNC
minikube default test-trace-fsslower test-trace-fsslower dpkg 60985 60985 60849 1570 0 9223372… updates F_FSYNC
$ sudo ig run trace_fsslower:latest --verify-image=false --filesystem ext4 --min 1000 -c test-trace-fsslower
RUNTIME.CONTAINERNAME COMM PID TID DELTA_… OFFSET SIZE FILE OP
test-trace-fsslower dpkg-preconf… 204239 204239 1008 0 92233… #38586681 F_FSYNC
test-trace-fsslower dpkg-preconf… 204239 204239 1878 0 92233… #38586683 F_FSYNC
test-trace-fsslower dpkg 204242 204242 3245 0 92233… perl-module… F_FSYNC
test-trace-fsslower dpkg 204242 204242 1517 0 92233… libperl5.36… F_FSYNC
test-trace-fsslower dpkg 204242 204242 1273 0 92233… symbols F_FSYNC
test-trace-fsslower dpkg 204242 204242 1285 0 92233… openssl.lis… F_FSYNC
test-trace-fsslower dpkg 204242 204242 1110 0 92233… ca-certific… F_FSYNC
test-trace-fsslower dpkg 204242 204242 1310 0 92233… tmp.i F_FSYNC
test-trace-fsslower dpkg 204242 204242 6302 0 92233… triggers F_FSYNC
test-trace-fsslower dpkg 204242 204242 1435 0 92233… tmp.i F_FSYNC
test-trace-fsslower dpkg 204242 204242 1042 0 92233… libkrb5supp… F_FSYNC
test-trace-fsslower dpkg 204242 204242 1318 0 92233… md5sums F_FSYNC
test-trace-fsslower dpkg 204242 204242 1032 0 92233… openssh-cli… F_FSYNC
test-trace-fsslower dpkg 204242 204242 1063 0 92233… symbols F_FSYNC
test-trace-fsslower dpkg 204242 204242 2532 0 92233… git.list-new F_FSYNC