5

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

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

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

1 ответ1

7

Насколько я знаю, вы не можете контролировать, какие части системы виртуальной памяти (например, 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 того же размера, что и оперативная память.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .