The article was eventually kind of interesting, although it had so much investigation involved I forgot what I was even reading by the end.
General idea was interesting, and probably something to look at (apparently there's an issue open). Final result was (I think...) that the Least Recently Used (LRU) memory function requires a spinlock to actually swap out memory pages, and there's huge amounts of contention.
"during 3 seconds there were at least 138 threads active. 84% of stacktraces have 'evict_folios' frame according to the flamegraph, so it is very likely that more than 100 threads are constantly trying to do something with the spinlock."
So, basically 100 threads fighting over evict_folio and lru_lock constantly, and at least it seems (although admit eyes started glazing over) they're all fighting over the same memory page regions every time they're trying to lru_lock (initiate a spinlock for memory access releases).
Note: Totally way outside of my standard programming realm, so if somebody has a clearer / better explanation / summary ...
The article was eventually kind of interesting, although it had so much investigation involved I forgot what I was even reading by the end.
General idea was interesting, and probably something to look at (apparently there's an issue open). Final result was (I think...) that the Least Recently Used (LRU) memory function requires a spinlock to actually swap out memory pages, and there's huge amounts of contention.
So, basically 100 threads fighting over evict_folio and lru_lock constantly, and at least it seems (although admit eyes started glazing over) they're all fighting over the same memory page regions every time they're trying to lru_lock (initiate a spinlock for memory access releases).Note: Totally way outside of my standard programming realm, so if somebody has a clearer / better explanation / summary ...