LINUX.ORG.RU

История изменений

Исправление VLev, (текущая версия) :

Ещё раз повторю: даже при отсутствии свопа система отдаст сколько угодно виртуальной памяти при включенном overcommit'е. То есть вызовы malloc(), mmap() и аналогов завершатся успешно. Далее уже при записи в выделенную виртуальную память, при нехватке физической, в дело вступит OOM-killer.

В данном случае это несущественные детали, поскольку вся аллокированная память тут же начинает использоваться. Тем не менее и этот вопрос изучался отдельно (поскольку кроме обсуждаемого 1) есть ещё 2) и 3) ). Конкретно на этом проблемном кластере первым срабатывает std::bad_alloc. Я его могу перехватить, но дальше ничего полезного, кроме вывода диагностики, сделать не могу.

А вам важно именно количество возвращенной системе памяти?

Важно, чтобы вся (ну или почти вся) аллокированная, использованная и освобождённая после этого память возвращалась в систему. Пусть не сразу (речь о десятках секунд), и после «стимуляции» (на других кластерах в качестве стимуляции помогает костыль new [большой блок]/delete [большой блок]).

интересна статисктика mallinfo() для процесса.

да, это я уже понял. спасибо

Исходная версия VLev, :

Ещё раз повторю: даже при отсутствии свопа система отдаст сколько угодно виртуальной памяти при включенном overcommit'е. То есть вызовы malloc(), mmap() и аналогов завершатся успешно. Далее уже при записи в выделенную виртуальную память, при нехватке физической, в дело вступит OOM-killer.

В данном случае это несущественные детали, поскольку вся аллокированная память тут же начинает использоваться. Тем не менее и этот вопрос изучался отдельно (поскольку кроме обсуждаемого 1) есть ещё 2) и 3) ). Конкретно на этом проблемном кластере первым срабатывает std::bad_alloc. Я его могу перехватить, но дальше ничего полезного, кроме вывода диагностики, сделать не могу.

А вам важно именно количество возвращенной системе памяти?

Важно, чтобы вся (ну или почти вся) аллокированная, использованная и освобождённая после этого память возвращалась в систему. Пусть не сразу (речь о десятках секунд), и со стимуляцией (на других кластерах в качестве стимуляции помогает костыль new [большой блок]/delete [большой блок]).

интересна статисктика mallinfo() для процесса.

да, это я уже понял. спасибо