| ▲ | grantseltzer 12 hours ago | |
I've played with bpf iterators and wrote a post about them [1]. The benefit of iterating over tasks instead of scanning procfs is a pretty astounding performance difference: > I ran benchmarks on current code in the datadog-agent which reads the relevant data from procfs as described at the beginning of this post. I then implemented benchmarks for capturing the same data with bpf. The performance results were a major improvement. > On a linux system with around 250 Procs it took the procfs implemention 5.45 ms vs 75.6 us for bpf (bpf is ~72x faster). On a linux system with around 10,000 Procs it took the procfs implemention ~296us vs 3ms for bpf (bpf is ~100x faster). | ||
| ▲ | tanelpoder 9 hours ago | parent | next [-] | |
And with eBPF iterators you can bail out early and move to next if you see a non-interesting item (or one that should be filtered out) instead of emitting textual data of all items and later grepping/filtering things out in post-processing. I use early bailout a lot (in 0x.tools xcapture) when iterating through all threads in a system and determining which ones are “active” or interesting | ||
| ▲ | rfl890 4 hours ago | parent | prev | next [-] | |
It took less time for 10,000 processes? Maybe you made a typo | ||
| ▲ | stefan_ 9 hours ago | parent | prev [-] | |
procfs and "everything is a file" is up there with fork on the "terrible useless technology that is undeservedly revered". | ||