Bei meinen
Kernelforschungen was dirty_ratio und dirty_background_ratio angeht bin ich darauf gestossen, dass der Dirty-Cache nicht der Bestandteil des normalen Caches (/proc/meminfo -> Cached) ist sondern sich aus NR_FREE_PAGES sowie aus dem aktiven File-Cache (Zeug was gebraucht wird) und inaktivem File-Cache (was früher oder später aus dem Read-Cache herausfliegt) zusammensetzt.
Eine grobe Näherung gibt das Tool "free": Der Dirty-Cache wird zuerst aus dem Pool in der Spalte "free" gebildet. Wird mehr Dirty-Cache fürs Schreiben verlangt, werden aus dem Wert der Spalte "cached" alle veralteten Lesepuffer recycled und wenn das nicht mehr reicht kommt der aktive File-Cache ran. Es gibt bei "free" noch die Spalte "buffers", da hab ich im Kernel nicht gefunden wie das beim Dirty-Cache verwendet wird.
Da sich die Prozent-Parameter vm.dirty_ratio und vm.background_ratio auf die Kernelfunktion dirtyable_memory() beziehen und der Wert von dirtyable_memory() nirgendwo nach /proc/sonstwas geschrieben wird UND leider der Output von "free" unter Last recht kräftig von dirtyable_memory() abweicht hab ich die Kernelfunktion halt in Bash nachprogrammiert denn die wichtigsten Werte landen alle in /proc/meminfo und /proc/vmstat
Aktielles cachestats script:
38429
Nächster Schritt ist es die Funktionalität von get_dirty_limits nachzubauen damit das Script auch mit dirty_ratio und dirty_background_ratio umgehen kann.
Denn die ganzen %-Angaben für Dirty sind im modernen Serverbetrieb völlig für die Füsse.