[Comm] tmpfs использует только оперативную память?

Damir lost404 на gmail.com
Вт Окт 6 12:49:34 UTC 2009


> Это я как раз понял, разницу между виртуальной памятью в данном
> контексте и оперативной.. Я не совсем понял механизм обращения к той
> или иной составляющей виртуальной памяти. То есть при
> использовании /tmp программа будет выедать всю оперативку и только если
> ей не хватит - браться за своп ? Так? Я вот и пытаюсь понять - нельзя
> ли как-то ограничить использование оперативной памяти в пользу свопа,
> чтобы не вся оперативка использовалась..

В своп уходят неиспользуемые нелипкие страницы памяти. Если вы чаще
используете файлы на tmpfs, чем данные какой-то программы, которая
когда-то давно запустилась, отъела память, а теперь сидит и ждет
наступления какого-то события, и к своей памяти не обращается, то ОС
вытолкнет в своп именно данные этой программы, а не файлы в tmpfs.

> А то если укажу, к примеру,
> size=20g, как советует тезка из этого же треда, которых нет в
> реальности
Они в реальности вообще-то есть (там выше рекомендовался своп в 20 гигов).

Размер tmpfs надо определять по необходимости. Но не имеет смысла
выставлять его больше чем размер свободной памяти + размер свободного
свопа при пиковых нагрузках.

Вот у меня например 3 гигабайта оперативки, и я выставил размер tmpfs
в 3G. Та же самая seamonkey собирается целиком на tmpfs, никак не
нагружая дисковую подсистему, с максимальной скоростью. А свопа при
этом 1 гиг, но он не используется, так как памяти хватает. Иногда я
даже делаю sudo swapoff -a чтобы исключить свопирование вообще в целях
экономии ресурса винтов.

> И еще вопрос - общего плана - почему же по умолчанию при инсталляции ОС
> ставится такое значение, а не, скажем, RAM+SWAP?

При инсталляции ОС не выставляется никакого значения (параметр size не
указан), а значит ядро само его выбирает. По умолчанию это половина
физической памяти.


Подробная информация о списке рассылки community