Ich hatte hier ein ähnliches Problem, bei 4 GB RAM und mehreren offenen Tabs hat der Firefox den Hauptspeicher rasant verschlungen, der OOM-Killer wurde aus mir unerklärlichen Gründen nie aktiv. Die Kunst lag darin den Fehler überhaupt erst einmal zu lokalisieren, denn wenn plötzlich und ohne Vorwarnung das System stehen bleibt sitzt man ratlos vor dem Rechner. Ich hatte etwa wochenlang den Kernel im Verdacht, auf den RAM bin ich zunächst nicht gekommen.
Ich habe mir zunächst beholfen, indem ich ein einfaches Skript habe laufen lassen, welches die Arbeitsspeicherbelegung aus
/proc/meminfo ausliest und ab einem kritischen Level dann Aktionen ausführt wie etwa mittels
ps die speicherhungristen Prozesse anzeigen lassen. Dadurch konnte ich den Fehler lokalisieren (Firefox), aber die ständig aufploppenden Fenster wurden dann nervig. Ich bin dann später auf akustische Warnungen übergegangen und hab mir mittels
festival vom System Warnmeldungen vorlesen lassen. Bei Interesse kann ich beide Varianten hier noch einstellen.
Die Lösung besteht aber darin dem System zusätzlichen Speicher zu gönnen, entweder in Form von RAM oder Swap. Da ich bereits den maximalen Ausbau an RAM habe, kam ein Aufrüsten nicht in Frage. Blieb also nur Swap, doch auch hier wollte ich nicht, dass das System dauerhaft Daten auf meine SSD auslagert. Zufällig bin ich dann auf das Kernelmodul zram gestoßen. Mittels zram ist es möglich einen Teil des RAM als komprimierte Ramdisk zu verwenden. Was zunächst kontraproduktiv erscheint (warum sollte man den knappen RAM zusätzlich verknappen?), wird bei näherer Betrachtung interessant: Durch die effizienten Algorithmen von zram wird ein Kompressionsverhältnis von bis zu 2:1 erreicht (lt. [1], persönlich komme ich auf noch höhere Werte), was bedeutet, dass eine 1 GB Ramdisk im Speicher effektiv 2 GB Daten fassen kann. Wenn man nun auf dieser Ramdisk einen Swapspeicher ablegt, kann man die Vorteile einer Ramdisk (Geschwindigkeit) mit dem eines Swaps (Speichererweiterung) verbinden und bekommt so mehr Speicherreserven auch auf bereits betagten Systemen. Der Nachteil an dieser Lösung ist, man erkauft sich diese Erweiterung mit zusätzlicher Rechenleistung, da jedes MB welches im Swap landet vom Prozessor ge- bzw. entpackt werden muss. Ich habe hier ein Dualcoresystem und merke das Auslagern in den Swap lediglich durch das Anspringen des CPU-Lüfters, sonst kann ich keine Verzögerungen feststellen. Bei zram kannst du entweder etwas eigenes basteln ([1], [2]) oder du verwendest das bereits in Debian enthaltene Paket
zram-tools, welches bereits alles vorbereitet hat und du es nur entsprechend deiner Wünsche konfigurieren musst.
[1]
https://docs.kernel.org/admin-guide/blockdev/zram.html
[2]
https://wiki.gentoo.org/wiki/Zram