LINUX.ORG.RU
ФорумAdmin

Можно ли сделать автоматическое свопирование выделенного процесса в указанный файл?

 , , ,


0

2

Есть программа прожорливая до памяти. И есть SSD диск. Можно ли сделать, чтобы операционка автоматически выделяла недостающую память на указанном диске для указанного процесса? Скажем программа хочет террабайт памяти, и когда кончается отведенное ограничение на оперативку, начинала расходоваться память диска.

Перемещено hobbit из general

Нельзя.

И логику «расходовать диск вместо оперативки» сделать тоже нельзя, там всё сложнее.

Варианта два: 1) засунь эту прогу в персональную виртуалку и там настрой нужный свап, 2) закодь правильное использование диска в самой проге - этот вариант эффективнее но сложнее.

firkax ★★★★★
()

Только если на прикладном уровне. Потому что своп в подсистеме управления памятью в линухе — это не про процессы, а про страничный обмен, который определённо не привязан к ID процессов.

Infra_HDC ★★★★★
()

Написать собственный манагер памяти и через него ручками всё делать. На самом деле это не так уж и сложно, если известно примерный объём нужной памяти, и как её нужно выделять и когда свопать.

vtVitus ★★★★★
()

В cgroups есть лимиты мягкие и жёсткие по оперативке или свопу для процессов избирательно. Но как сделать чтобы на конкретный диск не знаю, самому любопытно, но думаю что лучше на разные делать всё-же, так быстрее.

drl
()
Ответ на: комментарий от firkax

Так, а зачем по вашему был придуман лимит памяти для процесса в cgrops? Это вот оно самое, на 89% то что ТС описал. На остальные 9% надо подключить демон контроля свопа который будет расширять подкачку до сколько надо. Остаток в 2% это то, что нельзя указать что своп уникален для 1 процесса, но это по сути нахрен не надо.

kirill_rrr ★★★★★
()

Я помню, что во фряхе, например, если приложуха падает, она берет и всю память кладет в специальный файл прямо в домашней папочке. Это еще так бесило, помню, искал как отключить. Наверное в линуксе тоже что-то такое есть.

qount_25
()