LINUX.ORG.RU

Ядро не выдает память

 ,


0

1

Проблема такая

Есть программа, которой требуется, допустим, 400 MiB оперативки.

free выдает следующее:

             total       used       free     shared    buffers     cached
Mem:          1.0G       654M       345M         0B        19M       253M
-/+ buffers/cache:       381M       619M
Swap:         1.0G       400K       1.0G

Теоретически, процесс их может получить, и даже больше, но выпадает с OOM, просто после malloc'a, когда по идее, он реальной памяти не получит, только виртуальную (ту, что в колонке VIRT top'а, а не RES).

Кроме того, падают тяжелые процессы (например, хромиум, если открыть много вкладок).

В ulimits стоит virtual memory — unlimited.

Куда копать?

Ответ на: комментарий от post-factum
sqrt@laptop ~ $ sudo sysctl -a | grep overcommit
[sudo] password for sqrt: 
vm.overcommit_memory = 2
vm.overcommit_ratio = 50
vm.nr_overcommit_hugepages = 0

Кажется, я с vm.overcommit_memory играл, когда появились подозрения на 12309

squareroot ★★★★
() автор топика
Ответ на: комментарий от tyakos

В том-то и дело, что до свопа не доходит, даже половина RAM свободна

squareroot ★★★★
() автор топика
Ответ на: комментарий от post-factum

Убрал его из sysctl, рестартнулся, overcommit стал дефолтным 0, теперь полтора гига виртуальной запросто аллочится. Спасибо, что указали, где искать!

squareroot ★★★★
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.