Plötzlich ist Linux so gut wie unbenutzbar und man hat gerade noch genug Zugriff, um auf der Konsole

top

einzugeben. Die Prozessliste zeigt einen Prozess namens khugepaged, der sich 100% der CPU-Power gönnt und somit alle anderen Prozesse in die CPU Unterversorung zwingt.

Wenn einfach nur ein paar Prozesse hängen, das System aber noch bedienbar ist, kann an der Konsole ein

sync && echo 3 > /proc/sys/vm/drop_caches

Abhilfe schaffen.

Die Erwartungen von khugepagedsind mit einem Schlag erfüllt und es verflüchtigt sich.
Alle hängenden Jobs nehmen ihre Arbeit wieder auf, bzw, beenden sich.
Es geht alles weiter wie gewohnt und ohen weitere Möpperei.

Da stellt sich die Frage des generellen Nutzens von khugepaged!

Was ist dieses khugepaged überhaupt und wozu braucht man das?

Speicher wird unter Linux in Seiten (Pages) verwaltet. Diese sind oft relativ klein, was zu vielen getrennten Zugriffen führen kann. Es gibt verschiedene Möglichkeiten entweder größere Speicherseiten vom System erstellen zu lassen (aufwändig) oder transparent einen Prozess prüfen zu lassen, ob man große Speicherbereiche nicht dynamisch zu größeren Seiten zusammenfassen kann. So macht das khugepaged-Daemon.

Mehr und weiterführende Informationen:

Where possible, a kernel process khugepaged will periodically check for large contiguous virtual memory blocks in a process and “collapse” them into a physically contiguous huge page. Also if large memory allocations are requested, a set of huge pages can sometimes be returned. khugepaged can be configured to never collapse certain memory areas, or to only collapse memory areas that have been approved. A nice introduction to transparent huge pages can be found at: https://lwn.net/Articles/423584/.