Gnox hat geschrieben: 14.01.2021 22:29:37
Damit meinst Du, dass Debian nicht so gute Defaults mitbringt für Systeme mit soviel RAM?
Ja. dirty_ratio und dirty_background_ratio willst du eigentlich hoch setzen. vfs_cache_pressure für Desktops runter.
Wenn du mutig bist, kannst du auch dirty_writeback_centisecs und dirty_expire_centisecshoch setzen.
Daneben kann man, wenn man swap hat overcommit_memory auf 2 und overcommit_ratio setzten auf 75 oder so setzen. (Dann läuft der oom-killer defakto nie los. Und das System wird halt lahm und du kannst mit sysresq-Tasten runterfahren.) Oder overcommit_memory auf 1 setzen wenn du wie Lord_Carlos den oom-killer liebst und willst, dass dir Prozesse abgeschossen werden, wenn RAM knapp wird. Die Heuristik (overcommit_memory = 0 ) die Debian mitbringt ist aber auch nicht dumm.
Länglichere Antworten Infos da:
https://unix.stackexchange.com/question ... em-caching
https://engineering.pivotal.io/post/vir ... vercommit/
Gnox hat geschrieben: 14.01.2021 22:29:37
Dann werde ich einen Mittelweg suchen. So ca. 12GB Swap auf dem NVMe, wo auch das Betriebssystem liegt. Dann sollte auch Suspend2Disk laufen, falls ich das in einem Zustand geistiger Umnachtung doch mal benutze.
Wie gesagt: Ich finde das keine schlechte Idee.
Swapfile ist bei Debian wohl kein Thema?
Kann man alles machen. Eigentlich™ sollte das mittlerweile zumindest auf ext4 keinen overhead mehr haben. (Der merkt sich wo das File liegt, sagt dem ext4, dass es das nicht bewegen darf und benutzt es wie ne Partition.) Kenne aber niemand der es nutzt.
Dazu kommt auch noch das der OOM kill der eigentlich unter Linux Prozesse toeten soll wenn ram + swap knap wird, einfach nicht gut funktioniert. Und wenn swap erstmal voll ist und der OOM nicht will, dann kannst du das System vergessen und musst hard reset machen.
Nochmal als Erklärung. NEIN. Die Idee von Linux ist eben das System am Leben zu erhalten. Klassisch: (overcommit_memory auf 2) können halt so lange keine neuen Programme mehr gestartet werden/speicher nutzen, bis ein älterer Prozess sich beendet und seine Ressourcen wieder frei gibt. Du kannst da mit SysResq Tasten manuell entweder alle Prozesse Beenden (e) oder killen (i) oder manuell einen (sinnvollen) per OOM-Killer (f) killen lassen.
Dafür bleibt ein kleiner Teil (overcommit_ratio) des RAMs+SWAP immer frei.
Um das nicht mehr zu müssen gehen moderne Linuxe (overcommit_memory auf 0) aggressiver vor und verschätzen sich aber vor allem bei wenig SWAP gerne mal. Dann läuft der OOM-Killer von selbst los.
Du kannst auch overcommit_memory auf 1 setzen. Dann läuft das System halt mit Vollgas gegen die Wand, bis der
Arzt OOM-Killer kommt.