Как заставить Linux явно поменять основную память приостановленного процесса?


7

Я запускаю процесс, mkcromfsтребующий памяти ( ), который потребляет больше памяти, чем у меня есть на моей latop физической памяти, так что он все время выполняет подкачку, подкачку и перегрузку, а loadavg составляет около 2 ( compcacheуже используется с обычным разделом подкачки) , но медленно продвигается вперед (хотя я боюсь, что он, наконец, попытается выделить> 2 ГБ, а сбой истощит 2 дня побоев).

Когда я хочу использовать ноутбук для чего-то другого, я прекращаю процесс, запускаю X-сервер, Firefox и другие программы. Проблема в том, что когда я запускаю Firefox, loadavg переходит на 10, и система перестает отвечать на запросы вообще (долгое время для включения / выключения блокировки шапки, медленное обновление позиции курсора мыши, медленное переключение с X-сервера на консоль Linux, медленный вход в систему) ,

Остановленный по- mkcromfsпрежнему удерживает много памяти (464,8 МБ и медленно падает) и перемещает ее для замены только тогда, когда для какой-либо другой программы требуется больше памяти, что приводит к значительному замедлению.

Как сказать Linux полностью поменять этот процесс (например, я не собираюсь возобновлять его в краткосрочной перспективе), возможно, пробудившись от обмена другими данными? Также будет полезно указать точное устройство подкачки для замены данного процесса (например, mkcromfsпамять в ramzswap бесполезна).

Обновление: сейчас я просто записываю 400-600M данных из /dev/erandomв tmpfsи это mkcromfsсокращается. Есть ли более правильный способ?

Ответы:


1

Вы можете попробовать поиграть с параметром sysctl «swappiness» ... чем выше значение, тем выше вероятность замены. Посмотрите здесь


1
Да, я перехожу swappinessна 100, когда я останавливаюсь, mkcromfsи на 0, когда я запускаю его снова. Не понимаю, как может помочь ulimit.
Ви.

ну, с помощью ulimit вы также можете установить максимальный объем используемой памяти, реальный и / или виртуальный, максимальное время процессора и т. п. ... это может помочь высвободить некоторые ресурсы ...
Мистер Шунц,

1. RLIMIT_AS - не этот, RLIMIT_DATA - не этот, RLIMIT_MEMLOCK - не этот. Который? 2. Есть ли нормальный (без injcode) способ изменить пределы другого процесса? 3. Похоже, что rlimits заставляет процессы возвращать ошибки. Думаю, я хочу быть прозрачным для процесса.
Ви.
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.