From 4b537ee80a028bf0e002045ba0d1db85e1197df4 Mon Sep 17 00:00:00 2001 From: Paul Buetow Date: Wed, 12 Mar 2025 23:22:58 +0200 Subject: add sample --- README.md | 8 +- assets/ior-by-count-flamegraph.svg | 7134 ++++++++++++++++++++++++++++++++++++ 2 files changed, 7139 insertions(+), 3 deletions(-) create mode 100644 assets/ior-by-count-flamegraph.svg diff --git a/README.md b/README.md index 3e26422..66a05c9 100644 --- a/README.md +++ b/README.md @@ -2,9 +2,11 @@ -I/O Riot NG is an experiments with BPF. This program traces for synchronous I/O syscalls and then analyses the time taken for each of those syscalls. - -Maybe a spiritual successor of one of my previous projects, I/O Riot https://codeberg.org/snonux/ioriot, the latter was based on SystemTap and C. The NG is based on Go, C and BPF (via libbpfgo). +I/O Riot NG is an experiments with BPF. This program traces for synchronous I/O syscalls and then analyses the time taken for each of those syscalls. This is especially useful for drawing FlameGraphs like these: + + + +Maybe this is a spiritual successor of one of my previous projects, I/O Riot https://codeberg.org/snonux/ioriot, the latter was based on SystemTap and C. The NG is based on Go, C and BPF (via libbpfgo). ## Fedora diff --git a/assets/ior-by-count-flamegraph.svg b/assets/ior-by-count-flamegraph.svg new file mode 100644 index 0000000..a565939 --- /dev/null +++ b/assets/ior-by-count-flamegraph.svg @@ -0,0 +1,7134 @@ + + + + + + + + + + + + + + +I/O Syscall Count + +Reset Zoom +Search +ic + + + +syscall`enter_newfstatat (219 samples, 0.02%) + + + +/24.08 (116 samples, 0.01%) + + + +syscall`enter_read (136 samples, 0.01%) + + + +/fd (148 samples, 0.01%) + + + +syscall`enter_fcntl (1,106 samples, 0.09%) + + + +syscall`enter_close (245 samples, 0.02%) + + + +syscall`enter_fcntl (356 samples, 0.03%) + + + +/a1 (287 samples, 0.02%) + + + +/9b (240 samples, 0.02%) + + + +syscall`enter_write (435 samples, 0.04%) + + + +syscall`enter_newfstatat (250 samples, 0.02%) + + + +/telemetry (1,842 samples, 0.15%) + + + +/fd (2,472 samples, 0.20%) + + + +syscall`enter_openat (282 samples, 0.02%) + + + +syscall`enter_newfstatat (263 samples, 0.02%) + + + +/05 (283 samples, 0.02%) + + + +syscall`enter_newfstatat (236 samples, 0.02%) + + + +syscall`enter_statx (411 samples, 0.03%) + + + +syscall`enter_read (108 samples, 0.01%) + + + +/fd (264 samples, 0.02%) + + + +syscall`enter_newfstatat (2,411 samples, 0.20%) + + + +syscall`enter_newfstatat (139 samples, 0.01%) + + + +/0f (303 samples, 0.02%) + + + +/fe (248 samples, 0.02%) + + + +/cpu (220 samples, 0.02%) + + + +syscall`enter_close (276 samples, 0.02%) + + + +syscall`enter_newfstatat (228 samples, 0.02%) + + + +syscall`enter_statx (1,874 samples, 0.15%) + + + +syscall`enter_close (201 samples, 0.02%) + + + +/1c (259 samples, 0.02%) + + + +/user.slice (65,871 samples, 5.40%) +/user... + + +syscall`enter_ioctl (286 samples, 0.02%) + + + +syscall`enter_readlinkat (161 samples, 0.01%) + + + +syscall`enter_readlinkat (120 samples, 0.01%) + + + +/1d (239 samples, 0.02%) + + + +/5.9 (437 samples, 0.04%) + + + +/02 (240 samples, 0.02%) + + + +/flatpak (5,162 samples, 0.42%) + + + +/org.kde.Platform.Locale (136 samples, 0.01%) + + + +/23.08 (172 samples, 0.01%) + + + +/app-dbus\x2d:1.2\x2dorg.freedesktop.problems.applet.slice (1,776 samples, 0.15%) + + + +/252750 (439 samples, 0.04%) + + + +syscall`enter_write (899 samples, 0.07%) + + + +/user-0.slice (1,702 samples, 0.14%) + + + +syscall`enter_newfstatat (229 samples, 0.02%) + + + +syscall`enter_openat (288 samples, 0.02%) + + + +/gconv (316 samples, 0.03%) + + + +syscall`enter_openat (129 samples, 0.01%) + + + +/repodata (20,620 samples, 1.69%) + + + +/dnf (13,724 samples, 1.12%) + + + +/bin (6,742 samples, 0.55%) + + + +syscall`enter_newfstat (815 samples, 0.07%) + + + +/systemd-hostnamed.service (140 samples, 0.01%) + + + +syscall`enter_read (572 samples, 0.05%) + + + +/d1 (265 samples, 0.02%) + + + +/5023 (164 samples, 0.01%) + + + +/c2 (223 samples, 0.02%) + + + +syscall`enter_newfstatat (204 samples, 0.02%) + + + +syscall`enter_openat (137 samples, 0.01%) + + + +syscall`enter_openat (288 samples, 0.02%) + + + +/app-dbus\x2d:1.2\x2dorg.gnome.Shell.Screencast.slice (1,741 samples, 0.14%) + + + +/f2 (243 samples, 0.02%) + + + +syscall`enter_readlinkat (20,169 samples, 1.65%) + + + +syscall`enter_newfstatat (230 samples, 0.02%) + + + +syscall`enter_close (244 samples, 0.02%) + + + +/1656149 (113 samples, 0.01%) + + + +/41 (222 samples, 0.02%) + + + +/queries (1,326 samples, 0.11%) + + + +syscall`enter_newfstatat (226 samples, 0.02%) + + + +syscall`enter_readlinkat (2,472 samples, 0.20%) + + + +/6f (256 samples, 0.02%) + + + +/x86_64 (172 samples, 0.01%) + + + +syscall`enter_newfstatat (203 samples, 0.02%) + + + +syscall`enter_ioctl (282 samples, 0.02%) + + + +syscall`enter_read (574 samples, 0.05%) + + + +syscall`enter_read (569 samples, 0.05%) + + + +/icons (961 samples, 0.08%) + + + +/functions (421 samples, 0.03%) + + + +syscall`enter_newfstatat (289 samples, 0.02%) + + + +/fd (132 samples, 0.01%) + + + +syscall`enter_newfstatat (222 samples, 0.02%) + + + +syscall`enter_newfstat (336 samples, 0.03%) + + + +syscall`enter_newfstatat (244 samples, 0.02%) + + + +syscall`enter_newfstatat (219 samples, 0.02%) + + + +/6018 (8,181 samples, 0.67%) + + + +/1532717 (354 samples, 0.03%) + + + +/4744 (116 samples, 0.01%) + + + +syscall`enter_fcntl (136 samples, 0.01%) + + + +/appstream (212 samples, 0.02%) + + + +syscall`enter_getdents64 (107 samples, 0.01%) + + + +/23.08 (150 samples, 0.01%) + + + +syscall`enter_close (891 samples, 0.07%) + + + +syscall`enter_newfstat (189 samples, 0.02%) + + + +syscall`enter_newfstatat (282 samples, 0.02%) + + + +syscall`enter_newfstatat (104 samples, 0.01%) + + + +syscall`enter_newfstat (201 samples, 0.02%) + + + +/4d (186 samples, 0.02%) + + + +syscall`enter_newfstatat (178 samples, 0.01%) + + + +syscall`enter_openat (283 samples, 0.02%) + + + +/x86_64 (242 samples, 0.02%) + + + +syscall`enter_newfstatat (348 samples, 0.03%) + + + +/gopls (64,648 samples, 5.30%) +/gopls + + +syscall`enter_pread64 (10,437 samples, 0.86%) + + + +/.task (254 samples, 0.02%) + + + +syscall`enter_close (1,809 samples, 0.15%) + + + +/0b (198 samples, 0.02%) + + + +/bits (119 samples, 0.01%) + + + +syscall`enter_newfstatat (255 samples, 0.02%) + + + +/site-packages (319 samples, 0.03%) + + + +dev (38,470 samples, 3.15%) +dev + + +syscall`enter_newfstatat (231 samples, 0.02%) + + + +/profile.d (302 samples, 0.02%) + + + +usr (170,671 samples, 13.99%) +usr + + +/org.gnome.Platform.Locale (293 samples, 0.02%) + + + +syscall`enter_newfstatat (262 samples, 0.02%) + + + +/runtime (9,225 samples, 0.76%) + + + +syscall`enter_read (720 samples, 0.06%) + + + +/x86_64 (136 samples, 0.01%) + + + +syscall`enter_newfstatat (135 samples, 0.01%) + + + +/f3 (199 samples, 0.02%) + + + +syscall`enter_read (569 samples, 0.05%) + + + +/app-dbus\x2d:1.21\x2dorg.a11y.atspi.Registry.slice (1,739 samples, 0.14%) + + + +syscall`enter_ioctl (288 samples, 0.02%) + + + +/2d (211 samples, 0.02%) + + + +syscall`enter_readlinkat (131 samples, 0.01%) + + + +syscall`enter_fcntl (582 samples, 0.05%) + + + +syscall`enter_close (125 samples, 0.01%) + + + +/68 (224 samples, 0.02%) + + + +syscall`enter_read (564 samples, 0.05%) + + + +/app-dbus\x2d:1.2\x2dcom.intel.dleyna\x5cx2drenderer.slice (1,776 samples, 0.15%) + + + +/Unsplash (126 samples, 0.01%) + + + +syscall`enter_openat (244 samples, 0.02%) + + + +/.ruby-lsp (117 samples, 0.01%) + + + +/app-dbus\x2d:1.2\x2dorg.gnome.Nautilus.slice (1,768 samples, 0.14%) + + + +/2e (235 samples, 0.02%) + + + +syscall`enter_newfstatat (315 samples, 0.03%) + + + +/repodata (98,940 samples, 8.11%) +/repodata + + +syscall`enter_io_uring_enter (1,601 samples, 0.13%) + + + +syscall`enter_readlinkat (153 samples, 0.01%) + + + +syscall`enter_close (288 samples, 0.02%) + + + +syscall`enter_newfstatat (3,316 samples, 0.27%) + + + +/ea (249 samples, 0.02%) + + + +syscall`enter_getdents64 (7,484 samples, 0.61%) + + + +/python3.13 (1,435 samples, 0.12%) + + + +syscall`enter_read (564 samples, 0.05%) + + + +syscall`enter_ioctl (282 samples, 0.02%) + + + +/07 (254 samples, 0.02%) + + + +/applications (1,270 samples, 0.10%) + + + +syscall`enter_openat (288 samples, 0.02%) + + + +syscall`enter_readlinkat (13,695 samples, 1.12%) + + + +/b5 (225 samples, 0.02%) + + + +syscall`enter_newfstatat (265 samples, 0.02%) + + + +internalgenerated (264 samples, 0.02%) + + + +syscall`enter_newfstat (329 samples, 0.03%) + + + +syscall`enter_read (135 samples, 0.01%) + + + +/92 (269 samples, 0.02%) + + + +syscall`enter_newfstat (336 samples, 0.03%) + + + +/85 (212 samples, 0.02%) + + + +syscall`enter_read (572 samples, 0.05%) + + + +syscall`enter_newfstat (336 samples, 0.03%) + + + +/ssh (124 samples, 0.01%) + + + +bin (136 samples, 0.01%) + + + +/01 (243 samples, 0.02%) + + + +/app (125 samples, 0.01%) + + + +syscall`enter_statx (164 samples, 0.01%) + + + +syscall`enter_newfstat (337 samples, 0.03%) + + + +syscall`enter_openat (141 samples, 0.01%) + + + +/256811 (25,144 samples, 2.06%) +/.. + + +/goexperiment (805 samples, 0.07%) + + + +syscall`enter_fcntl (1,013 samples, 0.08%) + + + +/app-dbus\x2d:1.2\x2dorg.freedesktop.portal.IBus.slice (1,775 samples, 0.15%) + + + +/f0 (227 samples, 0.02%) + + + +syscall`enter_newfstatat (222 samples, 0.02%) + + + +/08 (247 samples, 0.02%) + + + +/bytealg (574 samples, 0.05%) + + + +/fedora-41-x86_64 (98,986 samples, 8.11%) +/fedora-41-.. + + +/gvfs (118 samples, 0.01%) + + + +syscall`enter_readlinkat (584 samples, 0.05%) + + + +/PNP0A08:00 (147 samples, 0.01%) + + + +refsremotes (1,190 samples, 0.10%) + + + +syscall`enter_newfstat (138 samples, 0.01%) + + + +/fd (123 samples, 0.01%) + + + +/c3 (258 samples, 0.02%) + + + +/5.15-24.08 (110 samples, 0.01%) + + + +syscall`enter_newfstatat (262 samples, 0.02%) + + + +/4602 (118 samples, 0.01%) + + + +/PNP0C09:00 (147 samples, 0.01%) + + + +syscall`enter_newfstatat (228 samples, 0.02%) + + + +syscall`enter_fcntl (535 samples, 0.04%) + + + +/runtime (343 samples, 0.03%) + + + +syscall`enter_newfstat (329 samples, 0.03%) + + + +/go (1,866 samples, 0.15%) + + + +/8d (249 samples, 0.02%) + + + +/95 (207 samples, 0.02%) + + + +/fd (141 samples, 0.01%) + + + +syscall`enter_read (142 samples, 0.01%) + + + +/users (291 samples, 0.02%) + + + +/99 (263 samples, 0.02%) + + + +/self (7,593 samples, 0.62%) + + + +syscall`enter_newfstatat (246 samples, 0.02%) + + + +syscall`enter_newfstatat (198 samples, 0.02%) + + + +/app-dbus\x2d:1.2\x2dorg.gnome.Shell.Notifications.slice (1,767 samples, 0.14%) + + + +syscall`enter_ioctl (281 samples, 0.02%) + + + +syscall`enter_newfstat (189 samples, 0.02%) + + + +syscall`enter_newfstatat (771 samples, 0.06%) + + + +syscall`enter_openat (182 samples, 0.01%) + + + +syscall`enter_openat (310 samples, 0.03%) + + + +/1655698 (1,128 samples, 0.09%) + + + +/fd (312 samples, 0.03%) + + + +/37 (233 samples, 0.02%) + + + +syscall`enter_newfstat (777 samples, 0.06%) + + + +/tracker3 (6,526 samples, 0.53%) + + + +/b8 (202 samples, 0.02%) + + + +/1656481 (280 samples, 0.02%) + + + +syscall`enter_newfstatat (223 samples, 0.02%) + + + +syscall`enter_newfstatat (678 samples, 0.06%) + + + +syscall`enter_statx (126 samples, 0.01%) + + + +syscall`enter_read (621 samples, 0.05%) + + + +syscall`enter_io_uring_enter (193 samples, 0.02%) + + + +/org.freedesktop.Platform.Locale (127 samples, 0.01%) + + + +syscall`enter_newfstatat (245 samples, 0.02%) + + + +syscall`enter_newfstatat (238 samples, 0.02%) + + + +/ca (271 samples, 0.02%) + + + +deployruntime (2,784 samples, 0.23%) + + + +syscall`enter_fcntl (152 samples, 0.01%) + + + +syscall`enter_newfstat (335 samples, 0.03%) + + + +syscall`enter_newfstat (338 samples, 0.03%) + + + +syscall`enter_lseek (174 samples, 0.01%) + + + +/4787 (2,933 samples, 0.24%) + + + +syscall`enter_newfstatat (248 samples, 0.02%) + + + +syscall`enter_unlinkat (128 samples, 0.01%) + + + +/errors (105 samples, 0.01%) + + + +/fd (280 samples, 0.02%) + + + +/x86_64 (132 samples, 0.01%) + + + +syscall`enter_newfstatat (219 samples, 0.02%) + + + +/a5 (248 samples, 0.02%) + + + +/idb (676 samples, 0.06%) + + + +syscall`enter_newfstatat (224 samples, 0.02%) + + + +/db (235 samples, 0.02%) + + + +/.aws (126 samples, 0.01%) + + + +syscall`enter_readlinkat (25,133 samples, 2.06%) +s.. + + +/61 (245 samples, 0.02%) + + + +syscall`enter_ioctl (592 samples, 0.05%) + + + +/fd (4,932 samples, 0.40%) + + + +/debug (250 samples, 0.02%) + + + +syscall`enter_read (20,527 samples, 1.68%) + + + +syscall`enter_newfstatat (281 samples, 0.02%) + + + +/d8 (231 samples, 0.02%) + + + +syscall`enter_newfstatat (275 samples, 0.02%) + + + +/1647032 (790 samples, 0.06%) + + + +/.cache (86,856 samples, 7.12%) +/.cache + + +syscall`enter_newfstat (1,292 samples, 0.11%) + + + +/f6 (244 samples, 0.02%) + + + +/1652716 (115 samples, 0.01%) + + + +/11 (234 samples, 0.02%) + + + +syscall`enter_close (282 samples, 0.02%) + + + +/helix (467 samples, 0.04%) + + + +/2a (805 samples, 0.07%) + + + +/fb (201 samples, 0.02%) + + + +syscall`enter_newfstatat (223 samples, 0.02%) + + +<