История изменений
Исправление 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() для процесса.
да, это я уже понял. спасибо