Ich habe einen Build-Server mit Ubuntu. Und in meinem Quellcode wird normalerweise build.sh
die Make-Datei aufgerufen, um den Quellcode zu kompilieren. Aber plötzlich stürzte der Server ab und ich fand das folgende Login syslog
:
Aug 4 13:47:28 VDBS1130 kernel: [2689989.302589] build.sh invoked oom-killer: gfp_mask=0xd0, order=1, oom_adj=0, oom_score_adj=0
Aug 4 13:47:28 VDBS1130 kernel: [2689989.302593] build.sh cpuset=/ mems_allowed=0
Aug 4 13:47:28 VDBS1130 kernel: [2689989.302596] Pid: 8978, comm: build.sh Not tainted 3.2.0-60-generic-pae #91-Ubuntu
Aug 4 13:47:28 VDBS1130 kernel: [2689989.302598] Call Trace:
Kann mir jemand sagen, was das bedeutet? Kann mein lokaler Rechner build.sh
den Kernel zum Absturz bringen?
Antwort1
DerOOM-Killerwird aktiviert, wenn im System ein starker Speichermangel vorliegt:
Es ist die Aufgabe des Linux-„Oom-Killers“, einen oder mehrere Prozesse zu opfern, um Speicher für das System freizugeben, wenn alles andere fehlschlägt.
mm_struct
Aus offensichtlichen Gründen wird er auch alle Prozesse töten, die dasselbe mit dem ausgewählten Prozess gemeinsam haben. Jeder bestimmte Prozessführer kann gegen den Oom-Killer immunisiert werden, wenn sein Wert/proc/<pid>/oomadj
auf die Konstante gesetzt wirdOOM_DISABLE
(derzeit definiert als -17).
Zu überprüfende Punkte:
- Nimmt etwas in Ihrem Build-Skript viel Speicher in Anspruch?
- Gibt es Speicherlecks in einem der von Ihnen verwendeten Tools?
Schauen Sie sich andieser LWN-Artikel.