Предел Размера резидентного набора (RSS) не имеет никакого эффекта

Следующая проблема происходит на машине под управлением Ubuntu 10.04 с 2.6.32-22-универсальным ядром: Установление предела для Размера резидентного набора (RSS) процесса, кажется, не имеет эффекта. Я в настоящее время устанавливал предел в Python со следующим кодом:

import resource
# (100, 100) is the (soft, hard) limit. ~100kb.
resource.setrlimit(resource.RLIMIT_RSS, (100, 100))
memory_sink = ['a']*10000000   # this should fail

Список, memory_sink, успешно выполняется каждый раз. Когда я проверяю использование RSS с вершиной, я могу легко заставить процесс использовать 1 ГБ RAM, что означает, что предел не работает. Разве пределы RSS не работают с этим ядром или дистрибутивом? Если это помогает, ресурс. RLIMIT_NPROC (предел пользовательского процесса) действительно работает.

16
задан BrainCore 15 June 2010 в 08:43
поделиться

1 ответ

Формируем manpage getrlimit:

RLIMIT_RSS
Указывает предел (в страницах) резидентного набора процесса
(количество виртуальных страниц, находящихся в оперативной памяти). Это ограничение
действует только в Linux 2.4.x, x < 30, и влияет только на вызовы
madvise(2) с указанием MADV_WILLNEED.

Похоже, что в ядре Linux 2.6 это просто не поддерживается.

13
ответ дан 30 November 2019 в 16:41
поделиться
Другие вопросы по тегам:

Похожие вопросы: