У меня есть сервер сборки с Ubuntu. И в моем исходном коде есть типичный build.sh
вызов файла make для компиляции исходного кода. Но внезапно сервер рухнул, и я обнаружил следующий лог 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:
Может кто-нибудь сказать, что это значит? Может ли мой локальный build.sh
краш ядра?
решение1
TheУбийца ООМактивируется, когда в системе наблюдается острая нехватка памяти:
Работа linux 'oom killer' заключается в том, чтобы пожертвовать одним или несколькими процессами, чтобы освободить память для системы, когда все остальное не срабатывает. Он также убьет любой процесс, разделяющий то же,
mm_struct
что и выбранный процесс, по очевидным причинам. Любой конкретный лидер процесса может быть защищен от oom killer, если его значение/proc/<pid>/oomadj
установлено на константуOOM_DISABLE
(в настоящее время определяемую как -17).
Что нужно проверить:
- Что-то в вашем скрипте сборки занимает много памяти?
- Есть ли утечки памяти в каком-либо инструменте, который вы используете?
Посмотри наэта статья LWN.