Своп Линукса и кэш(и) Мозиллы
4296
12
Сделал своп в 2 раза больше памяти, как положено. А кэш браузера пишется в своп или отдельно? Проблема такая. Привык, сидя в Ленте.ру, сначала открыть 50 окон, а потом их просматривать, как Вашингтон маневрирует или есть ли G-точка у женщин. Но Мозилла через пару десятков окон становится оооочень задумчивым.
Увеличить кэш? А их сколько, 1 или 2? В "Центре управления" компьютера кэш= 5 МБ, а в настройках Мозиллы кэш=50 МБ. Это разные кэши?
Дальше арифметика. Одна страница 8, пусть 10 МБ. Итого надо 500 МБ. Если кэш в свопе, увеличить своп? На 500 или на 2х500?
Бимс
Вы не понимаете что такое своп и кэш, а так же зачем приложению память и как она получается. В Вашем случае решением будет увеличение оперативной памяти.
Mad_Dollar
А так ли уж обязательно понимать? У чёрного ящика есть параметры. Если их немного, простым тыком можно подобрать оптимум. Вот только сейчас убедился, что поставив оба значения кэша = 500 МБ, задумчивость не устранить. Вот я и спрашиваю понимающих, а своп поможет? Увеличить память? Позвольте не согласиться, что это единственное решение. Когда я сидел на предыдущей Мандриве2007, у меня вообще и мыслей не возникало о разных там свопах и кэшах, всё летало. Единственно, мне казалось, что Мозилла чуть медленнее закачивает 50 окон, чем мною установленная Опера.
Дальше: научу Мандриву ставить и обновлять не только со своего сайта, пока сопротивляется. Поставлю Оперу. Не поможет - удлиню своп вдвое. Не поможет - вернусь к Мандриве2007. Но покупать ДДР 1 ГБ, которая дороже ДДР2, не вижу смысла.
Бимс
Эх... Своп - это применительно к вашей ситуации страницы памяти, в данный момент не используемые процессами, и "сброшенные" ОС на диск для высвобождения памяти реальной для других приложений. Так же помните - код может выполняться только в оперативной памяти, и любые данные, которые он читает/пишет в память/из памяти должны находится в физическом адресном пространстве (то есть не в свопе). Приложение в смысле именно приложения, а не демона/драйвера вообще не озабачивается размером свопа она получает память по запросу через системную функцию ОС, и ОС всегда рпедоставляет ей не виртуальную память. Чем больше потоков/процессов запущенно - тем больше система использует сброс страниц на диск и их восстановление. Если системе не хватает размера своп-раздела, система просто отказывает приложениям/потокам в выделении памяти, что чаще всего приводит к их завершению, либо некорректной работе, в частности приложение может сообщать о том, что не может выполнить некий функционал в связи с отсутствием свободной памяти.

Теперь далее. Кэш Мозиллы/Оперы - некое место, куда Мозилла/Опера (далее просто Мозилла) складывает недавно полученные объекты. Точнее запрос GET предваряется запросом HEAD /* если вам это что-то скажет конечно */, то есть браузер прежде чем запросить страницу/картинку/другой_объект из сети спрашивает о времени его последней модификации, и потом сравнивает с тем, есть ли у него такой же объект (не старше чем есть в сети) в кэше, то есть в особой папочке на диске. Если объект найден в кэше - он не запрашивается из сети, а берется с диска (что существенно быстрее для любых каналов связи применительно к конечному пользователю). Таким образом экономия времени/трафика происходит существенная только тогда, когда вы ходите на один и тот же ресурс, в котором не меняется графическое наполнение, набор скриптов, большая часть слоев и стилей, да и то - при условии грамотного оптимального написания сайта. Объекты в кэшэ хранятся по принципу очереди - самый новый "замещает, выталкивает" самого старого.

Теперь скажите мне, каким образом размер свопа повлияет на быстродействие, так же как и размер кэша? Как вариант, что на прошлом браузере все летало - только лишь в том, что память приложением начала использоваться более/менее рационально. В частности, если разработчики поставили для себя стандартом эндюзера наличие у него двух ГБ - то и память может запрашиваться у системы бОльшими блоками, снижая затраты процессорного времени на ее выделение/высвобождение, что ускоряет общую работу "кода" на системах с бОльшим количеством физически представленной ОП, но будет меннее рационально/продуктивно на системах с меньшим ее количеством. Я удовлетворил Ваше любопытство?
Mad_Dollar
Ах, мне, право же, стало неудобно за то, что вынудил вас так напрягаться. Да и не нужен мне такой глубокий уровень знаний. Сказали бы просто "своп не поможет" и добавили бы для особой убедительности "век воли не видать", и я бы специалисту поверил. Спасибо.
Совет удлинить память я запомню.
Бимс
=) Просто это к вопросу о том, что есть черный ящик и некое количество настроек - видимо вы не те тумблеры пытались крутить )))) Кстати ремонт/модернизация чего-либо методом научного тыка способствует исключительно увеличению знаний, но не есть есть оптимальное решение проблемы =)

А так - пользуйтесь. Либо откатитесь на старую мандриву, либо уж память докупите:улыб:
Mad_Dollar
Вы таки будете смеяться, но увеличение свопа с 1,5 до 2,2 ГБ резко помогло. Скорость закачки 50 окон Мозиллой стала вполне комфортной, тормозов не заметил.
Мой дистриб Мандрива 2008 фри требует минимум 256 МБ памяти, рекомендуемая 512 МБ, столько у меня и есть.
Оперу так и не смог установить, говорит, "из-за неудовлетворённости libstdc++". Блин, а у прошлой Мандр2007, выходит, такая удовлетворённость была. Впрочем, это отдельная песня. Спасибо за советы.
Бимс
=) я правда тогда ничего не понимаю:улыб:
Mad_Dollar
Сейчас ещё раз проверил, 50 окон - всё летает. Получается, рекомендация своп=память х 2 годится только для работы самой операционки, а ежели ещё что-то пашет, множитель нужно увеличивать. Запомним. Сейчас у меня своп= 3 ГБ=6х500
Бимс
а Вы посмотрите вывод команды

cat /proc/meminfo

когда у вас запущена Mozilla и открыто 50 окон.

кэш браузера и своп не имеют никакого отношение к друг другу. Просто в Вашем случае есть процесс -- запущенные браузер Mozilla FireFox и есть его потомки -- открытые 50 вкладок (окон). Так вот, оперативной памяти банально не хватает, чтобы это все держать активным, и часть потомков выгружается в своп. Не кэш браузера, а процессы! :1: Вы же не одновременно все 50 окон рассматриваете.
Можно сказать, что для разработчиков Ваш случай немного нетривиальный ... возможно они предполагают что одновременно работать с таким количеством окон -- нонсенс. :-)))
Ну а то, что Вы нашли простой выход -- это только плюс.
marselAlex
Может, выход я и нашёл, но ошибся в 50 раз, бывает. Посчитал трафик после полной загрузки окон, 11 МБ, какие там 500, бредовая цифра.
Бимс
Что интересно, при автоматической разметке диска Мандрива сделала своп 3,8 ГБ, т.е. гораздо больше, чем память Х2.
Бимс
Подкачка + то, что сбрасывается в своп во время процедуры "засыпания".