Aktualisierung 2012-01-31
Wie in dem Kommentar zu lesen ist, der Wert „cache age“ hat sich in der sysstat Ausgabe selbst überlebt. Es gibt daher von mir auch kein Nagios-Plugin das den cache-age prüfen würde.
Aktuell gibt es aber einige neue Entwürfe zum Monitoring der verschiedenen Caches (System-Buffer, FlashCash, FlexCache).
Ursprünglicher Artikel
Allenthalben hört und liesst man von der Möglichkeit, auf einem NetApp-Filer den Wert cache-age zu überwachen. Folgendes fällt mir dazu ein:
Was ist das Cache-Alter (cache-age)?
Das CLI-Werkzeug sysstat definiert den Wert cache-age so:
The age in minutes of the oldest read-only blocks in the buffer cache. Data in this column indicates how fast read operations are cycling through system memory; when the filer is reading very large files (larger than the machine’s memory size), buffer cache age will be very low.
Kurz zusammengefasst gibt der Wert also ein Alter in Minuten an - je größer um so besser sollte es um die Antwortzeiten für Leseanfragen bestellt sein. Auf die Write-Performance hat das keinen Einfluss.
Was machen wir mit diesem Wert?
Der NetApp System Administration Guide empfiehlt bei einem Absacken der cache-age auf unter 3 Minuten, die Werte für read-ahead auf den betroffenden Volumens anzupassen.
If the file access patterns of your clients are random (nonsequential) and the cache age is less than three, setting minimal read-ahead to ‘on‘ might improve performance.
Bitte diesen Wert der sysstat -x Ausgabe am besten ignorieren.
Weiters ist es in etwa 99,8% aller Fälle absolut Kontraproduktiv, minra=on einzustellen, sofern man mit Data ONTAP 6.5 oder höher arbeitet…
Der Grund dafür ist, das seit dieser Version bedeutend intelligentere Caching Verfahren im Filer benutzt werden, als in herkömmlichen, traditionellen Arrays, in denen (meist, inzwischen auch nicht mehr) nur eine einzige LRU Cache Queue benutzt wird.
Leider ist die Dokumentation in diesem Zusammenhang bereits sehr veraltet, und es befinden sich leider auch noch einige Technical Reports im Umlauf (sollten inzwischen von http://www.netapp.com getilgt sein), die die Empfehlung für minra=on enthalten.
Kurz gesagt, der Wert der von sysstat präsentiert wird, ist das Alter des zuletzt aus dem Cache entfernten Blocks – zum Zeitpunkt wenn die Ausgabe erfolgt. Dies ist anders als die meisten sonstigen Werte kein Mittelwert über das Sampling Intervall, und gibt daher im besten Fall nur eine Momentaufnahme wieder.
Des weiteren wird, wie erwähnt, keine simple (und einfache) LRU queue im Cache mehr verwendet, sondern – wie man in den Counter Manager Objekten „buffercache“ und „ext_cache_obj“ erkennen kann, eine mehrstufige Cache-Hierachie. In diese werden Objekte aufgrund verschiedener Metainformationen einsortiert und können dann auch zwischen den Ebenen des Caches verschoben werden – oder auch gleich wieder verworfen werden. Ein klassisches Beispiel wäre zB ein NDMP backup, in dem Blöcke nur so lange vorgehalten werden (unabhängig vom Füllgrad bzw Auslastung), bis sie einmal ausgeliefert wurden – damit kann das Cache Age während eines Backups auf 0s sinken, obwohl alle Blöcke aus Client Sicht perfekt (aus dem Cache) ausgeliefert werden…
Zusammenfassend:
minra ist (seit 6.5) effektiv immer eine suboptimale Einstellung, unabhängig von der Art der Daten auf dem Volume
Der Wert „cache age“ hat sich, ähnlich wie „CPU“, in der sysstat Ausgabe selbst überlebt. (CPU wird inzwischen – 7.3.2 – wieder aussagekräftiger reportet).