OOM Killer, verursacht durch Disk-I/O während der Dateiübertragung
Hallo, ich bin Inkompetent.
Einige Tage sind vergangen, seit ich in meinem neuen Zuhause einen günstigen Heimserver eingerichtet habe. Ein Problem, das mich schon länger beunruhigte, ist aufgetreten, obwohl ich viel Speicher habe.
Was ist passiert?
Meine aktuelle Umgebung ist etwas speziell, oder besser gesagt, die Speicherkapazität ist mit 16GB + 8GB etwas unvollständig, aber ich bitte um Ihr Verständnis, da ich sie aus Restbeständen gebaut habe.
Obwohl 24GB RAM heutzutage vielleicht Standard sind, empfinde ich es persönlich als eine ziemlich üppige Ausstattung und dachte, dass kein OOM auftreten würde. Doch dann kam es zu einem OOM, das sich wie eine Rüge vom Linux-Kernel anfühlte.
Anwendungen wie Apache, php-fpm und Redis belegen jeweils nur eine begrenzte Menge an Speicher, aber...
Kopfzerbrechen beim Dateitransfer
Es geschah, als ich versuchte, Dateien per scp von meinem Heimserver, der noch bei meinen Eltern steht, zu holen oder um Bilder zu speichern, indem ich sie mit aria2c auf eine 2TB HDD in einem Rutsch speicherte.
Nun, warum tritt bei diesem Schreibvorgang allein ein OOM auf? Das liegt daran, dass Dateien zuerst im Speicher empfangen und dann in den Speicherbereich geschrieben werden. Für eine Beschleunigung ist es notwendig, sie einmal als Cache im Speicher zu empfangen.
Es scheint, dass das Kopieren von Dateien in der Größenordnung von mehreren hundert GB mitscp -r, insbesondere wenn diese Dateien zufällige I/O-Vorgänge enthalten, wirklich viele Ressourcen verbraucht.
Und da dies nicht als speicherintensive Nutzung pro Prozess zählt, kann es nicht durch Überprüfung mit top für einen einzelnen Prozess identifiziert werden, sondern ist eine Angelegenheit des Linux-Kernels, was die Diagnose ziemlich schwierig macht.
Kurz gesagt, es scheint, dass die Menge der Daten, die aufgrund von I/O-Wartezeiten vorübergehend im Speicher gespeichert werden, nicht mehr mit dem Schreibvorgang mithalten kann, was zu einem Engpass führt.
Änderbare Kernel-Parameter
Als etwas, das der Kernel tun kann, habe ich versucht, Einstellungen wie die Cache-Größe anzupassen, aber ich spüre nicht viel Wirkung.
2.2. VFS-Tuning-Optionen: Forschung und Experimente Red Hat Product Documentation
Memo zur Optimierung von Write I/O durch Ändern der Linux-Page-Cache-Einstellungen - YOMON8.NET
Das Phänomen ist dem dieser Person ähnlich.
OOM Killer invoked due to slow disk I/O - #17 by Whis-key - troubleshooting - Storj Community Forum (official)
Lange nicht mehr das Wort Storj gesehen... obwohl mein kostenloser Speicherplatz einfach gelöscht wurde...
Wer hätte gedacht, dass ich mir wegen Speichermangel allein durch das Schreiben auf die HDD den Kopf zerbrechen würde...
Es ist auch der Teil, wo es oft heißt, dass "Linux optimistisch in Bezug auf RAM ist, Windows pessimistisch". Obwohl die Absicht, den Speicher voll auszunutzen, um die Leistung effizienter zu gestalten, verständlich ist, möchte ich irgendwie dieses Problem lösen, das durch I/O-Wartezeiten verursacht wird.