Это на машине Hyper-V. Я установил минимальную RAM на 512 и максимальную на 2048. На хост-машине более чем достаточно RAM.
Есть ли у Linux проблема с динамической оперативной памятью на Hyper-V? Кажется, я не могу понять, почему у нас проблемы с памятью.
РЕДАКТИРОВАТЬ: Я также просто отключил динамическую оперативную память и установил минимальное / стартовое значение до 2048 МБ. По-прежнему вылетает из-за нехватки памяти.
РЕДАКТИРОВАТЬ:
[root@localhost ~]# free -m
total used free shared buffers cached
Mem: 1869 1240 629 0 27 1049
-/+ buffers/cache: 162 1706
Swap: 991 6 985
Это во время компиляции. Я отправлю сообщение о неудаче. В прошлый раз, когда я сделал это, в системе все еще было достаточно свободной оперативной памяти после сбоя.
PS: Я заметил, что если я попробую использовать make -j
при использовании большего количества процессоров (12) компиляция завершится почти мгновенно.
Вот пример выделенного 4 ГБ с использованием опции make -j. Компиляция вылетела сразу после make -j
.
EDIT3: я наконец смог скомпилировать ядро без использования опции -j, но почему Hyper-V выдает мне такие ошибки памяти, как это странно. Все еще занимаюсь отладкой.
make -j
(без аргументов -j
) не имеет верхнего предела количества запускаемых команд. Он распараллеливает насколько это возможно, а не только до количества ядер (как предполагает вопрос).
make -j 12
(или, может быть, меньше 12, в зависимости от того, насколько голоден каждый процесс), вероятно, более разумная команда в вашей ситуации.
Из man 1 make
:
-j [jobs], --jobs[=jobs]
Specifies the number of jobs (commands) to run simultaneously. If
there is more than one -j option, the last one is effective. If
the -j option is given without an argument, make will not limit
the number of jobs that can run simultaneously.