Re:Low Latency Optimization: Understanding Pages (Part 1)
by pca006132 on Tuesday November 29, 2022 @09:16AM
(#33787840)
Wondering if there is any guide to programming and accurately measuring low latency stuff. I am working on some low level memory management code and would like to see the latency behavior, but I always get several microseconds of standard deviation (~10%) when I try to benchmark it.
I am pinning the cores, disabled SMT and turbo boost, but haven't tried isolcpu because this has to reboot the computer.
Re:Low Latency Optimization: Understanding Pages (Part 1)
by vgatherps on Tuesday November 29, 2022 @09:44AM
(#33788190)
Really? With Google Bench or Criterion I've gotten pretty good resolution on microbenchmarks
The gold standard (in my experience) for latency measurement is setting up a packet splitting, marking your outbound packets with some hash/id of the inbound packet, taking hardware timestamps of all these on some dedicated host, and putting it all together after the fact. Ultimately packet-in to packet out is all the matters anyways
You can actually get pretty solid internal timestamps (how long did I take to fully process event X) with TSC counters, but you then have a coordinated omissions problem: https://www.programmingtalks.org/talk/how-not-to-measure-lat...
Re:Low Latency Optimization: Understanding Pages (Part 1)
by deadcanard on Tuesday November 29, 2022 @11:47AM
(#33789885)
Have you tried one the link of the article: https://docs.kernel.org/admin-guide/kernel-per-CPU-kthreads....?
Also try running "perf stat -d" on your run and see anything pops out
You can outright install the openonload drivers, preload to intercept epoll, and it literally just works.
Going to efvi can cut out ~1us but that requires specifically targeting efvi, and has more operational / code setup pain. Works on stock Linux all the same though