Управление использованием памяти tmpfs

Любой способ ограничить объем оперативной памяти, используемой tmpfs без ограничения объема подкачки?

В большинстве документов говорится, что tmpfs' size опция ограничит общий размер раздела tmpfs и позже скажет, что это пространство используется как RAM, так и SWAP. А затем говорит, что по умолчанию половина вашего оперативной памяти, потому что, если он использует всю оперативную память, вы получаете фатальные ошибки OOM. Это сбивает с толку.

я бы хотел, чтобы он использовал 1/4 моего барана, но до 3/4 свопа, например.

1 ответ

Решение

Насколько я знаю, вы не можете контролировать, какие части системы виртуальной памяти (например, RAM или swap) используются для tmpfs.

Однако неверно, что создание больших tmpfs приведет к фатальным ошибкам OOM. Вы можете создать tmpfs больше, чем ваш общий объем RAM+SWAP, потому что ни один из них на самом деле не используется, пока вы не поместите файлы в tmpfs.

Когда вы помещаете файлы в tmpfs, они будут использовать память, но только столько, сколько файлы, которые вы помещаете в tmpfs. Если вы не трогаете эти файлы в течение длительного времени, и системе необходимо использовать ОЗУ больше, чем нужно, чтобы хранить их в буферном кеше, эти файлы фактически будут резервироваться из подкачки вместо ОЗУ.

Когда ваши требования к tmpfs станут большой частью ОЗУ, это повлияет на ваш буферный кеш (вещи перестанут кэшироваться в ОЗУ, потому что это необходимо для файлов tmpfs). По мере роста спроса начнется своп. В конце концов, когда у вас нет буферного кеша, используется весь ваш своп, и еще больше запросов на память делается, тогда и только тогда вы начнете получать ошибки OOM.

Так что на самом деле безопасно указывать большие tmpfs для /tmp до тех пор, пока у вас есть приличное количество свопа тоже. Вы говорите, что с вами все будет в порядке, если использовать 25% оперативной памяти и 75% объема подкачки. В этом случае, скажем, у вас обычно есть 1 ГБ ОЗУ и 2 ГБ подкачки. Я бы установил tmpfs на 1G и немного подкачал, скажем, к 3G.

Если ваша система находится под давлением памяти, первое, что произойдет, это то, что редко используемые файлы в /tmp в конечном итоге будет обеспечен подкачки вместо оперативной памяти. Вы не теряете всю свою оперативную память, делая tmpfs того же размера, что и оперативная память.

Другие вопросы по тегам