LINUX.ORG.RU

Запретить системе вытеснять приложения в своп


0

2

Собственно, сабж.

gaga@ubuntu:~$ free -m
             total       used       free     shared    buffers    cached
Mem:          1002        986         15          0          0        96
-/+ buffers/cache:        889        113
Swap:         1600        426       1174
При свбодных 100 мб половина страниц приложений вытеснена на диск. Как запретить творить такое до полного исчерпания памяти?

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

Я слышал, что ядро с -ck патчами ведет себя так, но нет ли настроек в дефолтном ядре или еще где? vm.swappiness установлен в 0.


Ответ на: комментарий от ciiccii

у меня swappiness и так нулевой, я об этом написал. он вообще никакого видимого эффекта не оказывает, разве только чуть помедленней это происходит, но в целом один хрен.

gaga
() автор топика

Но меня реально достало наблюдать выколупывание из свопа всякой херни по 10 секунд, когда я нажимаю мышкой на менюшке, которой не пользовался больше 30 мин

Вот именно поэтому я не юзаю своп вообще. И ядро собрано без него. Зачем такой своп если он делает работу за компом просто невыносимым? Ядро с ck патчами в плане свопа ЕМНИП ведет себя также. Попробуй собрать ядро без свопа и посмотри на самом ли деле он тебе нужен.

partyzan ★★★
()
Ответ на: комментарий от partyzan

Для начала можно swapoff -a скомандовать, а по результатам уже в ядро лезть.

Lonli-Lokli ★★
()
Ответ на: комментарий от partyzan

> Попробуй собрать ядро без свопа и посмотри на самом ли деле он тебе нужен.

зачем? [code] # swapoff [/code] и сразу оценишь... а вообще у меня свопинесс в нуле и свопом никто не пользуется... правда у меня даже на нетбуке памяти больше 3-х гигов :)

Theli
()
Ответ на: комментарий от partyzan

ну совсем отключать своп в моем случае при том, что современный говнософт требует столько памяти не правильно, по-моему. Поэтому и хочется оставить его на крайний случай, но не более того.

gaga
() автор топика
Ответ на: комментарий от gaga

>что современный говнософт требует столько памяти

Давай по существу. Я вот даже на нетбуке с 1(один)Гб памяти никогда не мог забить ее полностью. Что ты такое запускаешь там?

//Постоянно запущен Хромиум с 5 вкладками, почтовик, Vacuum IM или QutIM, файл манагер, терминал, DeadBeef. Все это съедает максимум 500Мб. Это и то при условии что кэш браузера в ОЗУ.

partyzan ★★★
()
Ответ на: комментарий от partyzan

ну я юзаю убунту. nuff said. и к существу это не относится, потому что происходит так при любом расходе памяти, когда ее меньше половины, что у меня почти всегда.

gaga
() автор топика

ИМХО, у вас и так всё очень хорошо. Без дискового кеша вобще можно получить ещё большие тормоза. Лучше уменьшайте потребление памяти.

Как запретить творить такое до полного исчерпания памяти?

А может у вас переодически и наступает полное исчерапание ОЗУ. И страницы скидываются в swap, а без необходимости он от туда не возмутся. И вобще, всего свободно 100 Мбайт, а в свопе 400 Мбайт. И даже если вытащить 100, то в свопе останется 300 Мбайт, где гарантия того, что менюшка не будет в этих 300 Мбайт. И вобще, вы точно уверены, что менюшка не обращается к файлам на диске, не запускает процесс?

Можете попробовать vm.vfs_cache_pressure=1000 или ещё больше.

mky ★★★★★
()
Ответ на: комментарий от partyzan

>Я вот даже на нетбуке с 1(один)Гб памяти никогда не мог забить ее полностью. Что ты такое запускаешь там?

Нетбук. 1Gb RAM. Работало всё нормально, кроме случая, когда DJVU, PDF открываешь в okular`е. Система замораживалась на пять-десять минут. Абсолютно не реагировала ни на нажатия клавиатуры, ни на мышку (кроме sysrq). Открываешь, листаешь, до серединки документа доходишь - раз - замерло всё и индикатор винчестера горит непрерывно. Оказалось, в fstab своп не подключен. После включения всё стало нормально.

lleshy ★★
()
Ответ на: комментарий от mky

дык я и не хочу отключать дисковый кеш, я хочу запретить в угоду ему использовать память приложений. Даже если у меня и правда исчерпывается память (что точно происходит не часто, т.к. у меня на втором мониторе постоянно октрыты top, iotop и проч) и менюшка из-за этого выгружается в на диск, то в таком случае это не должно повторяться регулярно.

В свопе 400М именно потому, что туда вытесняется все что ни попадя. По моим представлениям такого не должно быть и я пытаюсь выяснить, как это исправить.

И вобще, вы точно уверены, что менюшка не обращается к файлам на диске, не запускает процесс?

Не уверен, но это маловероятно. Т.ч. наблюдается такой эффект: все время открыто окно браузера, бывает что сутками висит на одном месте. Потому двигаю его мышкой в сторону и обратно, при этом то место рабочего стола, над которым я его переместил и вернул, остается либо черным, либо в артефактах от окна. При этом в iotop видно, что иксы читают диск, который сильно хрустит. Постепенно пространство замещается фоновой картинкой и диск успокаивается. Больше всего это похоже именно на доставание из свопа обоины и чего там еще нужно для из отрисовки.

gaga
() автор топика
Ответ на: комментарий от partyzan

>KDE? Сочуствую. partyzan * (25.01.2011 23:05:15)

Не. KDE как раз летает и даёт способы эффективного использования рабочего стола на куцем экране нетбука.

Проблема была (была) именно в PDF и DJVU. Маленький, мегабайт до 5 файл - проблем то небыло. Вот когда скан книжки, или журнала открываешь, мегабайтов 20 - тогда проблемы возникали с памятью.

lleshy ★★
()
Ответ на: комментарий от lleshy

awesome --- куда более эффективное использование куцего экрана нетбука). никогда (кроме процесса компилирования --- гента :3) не выходил из 300-400 МБ

do0dlez ★★
()
Ответ на: комментарий от do0dlez

по-моему так если десктоп после загрузки занимает больше 100мб памяти, то это тревожный звоночек (который прозвенел 10 лет назад, лол).

gaga
() автор топика
Ответ на: комментарий от lleshy

Не. KDE как раз летает и даёт способы эффективного

использования рабочего стола на куцем экране нетбука.

Это где такие молитвы раздают?

Уж не наличиие ли переключателя plasma netbook mode создает впечатление того что KDE готов для нетбука?

partyzan ★★★
()
Ответ на: комментарий от do0dlez

Блин, все руки не доходят сделать так же. Завидую.
Но мы отклонились от темы. Как запретить этот долбаный своп?)

gaga
() автор топика

Добавь памяти или избавляйся от «прожорливых» приложений. Если ты забьёшь последние 100 мегабайт - лучше не станет.

shoewreck
()

>При свбодных 100 мб...
хде ты нашёл СВОБОДНЫЕ 100 метров? о_О

megabaks ★★★★
()
Ответ на: комментарий от gaga

>я хочу запретить в угоду ему использовать память приложений

Ну выше я привёл параметр. Он должен «отжать» память у кеша метаданных ФС. Но, дисковая подсистема может начать сильно залипать, т.к. при чтение файла будут читаться не только его блоки данных, но и метаданные (информация о том, где лежат эти блоки).

ЕМНИП, iotop как раз показывет дисковые операции чтения/записи файлов, а не активность swap. Посмотрите vmstat на предмет активности swap в момент тормозов.

mky ★★★★★
()

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

unC0Rr ★★★★★
()
Ответ на: комментарий от mky

Дык на моем выводе free видно, что под кэш используется всего 100Мб, а в своп вытеснено 400. В том-то и дело, что памяти на самом деле хватает и под кеш и под приложения, а она все равно свопится. Мне кажется, что тут и без отжатия можно что-то сделать.
(еще раз повторюсь, что я практически уверен, что реального исчерпания памяти под проги почти не происходит, по крайней мере это точно происходит значительно реже, чем возникают эти тормоза)

Посмотрите vmstat на предмет активности swap в момент тормозов

Кстати, а какой есть способ продвинутого мониторинга использования диска? Потому что в момент тормозов система просто висит, картинка не обновляется, соответственно top, vmstat и iotop я вижу только когда тормоза уже закончились.
Попробую выставить vfs_cache_pressure, отпишусь о результатах.

gaga
() автор топика
Ответ на: комментарий от mky

>ЕМНИП, iotop как раз показывет дисковые операции чтения/записи файлов, а не активность swap

swap он тоже показывает
TID PRIO USER DISK READ DISK WRITE SWAPIN IO> COMMAND

redgremlin ★★★★★
()

>При свбодных 100 мб половина страниц приложений вытеснена на диск. Как запретить творить такое до полного исчерпания памяти?

Свободная память у тебя кончилась 300 метров назад.

redgremlin ★★★★★
()
Ответ на: комментарий от redgremlin

На сколько я понимаю вывод free из моего поста
used - это сколько требуется под приложение + кэш и прочие системные вещи.
swap - сколько вытеснено на диск, входит в used.
сached - сколько занято под кеш ФС.
Т.е. в used входят те же страницы, что и в swap, они считаются и там и там. Поэтому всего мне требуется 889Мб под приложения и 96Мб под кеш, что укладывается в 1002Мб. Все, больше не надо, остальное вытеснено в своп по неведомым причинам, и я хочу от этого избавиться.
Где я не прав?

gaga
() автор топика
Ответ на: комментарий от gaga

>Где я не прав?

Строчка Mem - это данные по физической памяти (Total - сколько максимально доступно приложениям (Физическая память минус память ядра), used - всего использовано, cached - в том числе под дисковый кэш, free - свободно), вторая строчка - данные по физпамяти без учета кэша (used - использовано приложениями, free - свободно для приложений), третья - данные по свопу. Т.е. у тебя приложения откушали 1315М (889 физ + 426 свопа), 96М физ система отдала под дисковый кэш, 15М физ осталось как НЗ.

redgremlin ★★★★★
()
Ответ на: комментарий от redgremlin

Гм, в принципе логика в этом есть. Может кто-нибудь еще высказаться, как надо считать?
(если это правда и приложения реально жрут 1315М, то это пиздец)

gaga
() автор топика
Ответ на: комментарий от redgremlin

Показывает? Я просто точно не знаю.

Вот «SWAPIN» это время проведённое приложением в ожидании страницы из свопа. А «DISK READ» это, если я правильно понял исходники struct taskstats->read_bytes, тоже самое, что struct task_io_accounting->read_bytes, что доступно через /proc/PID/io.

Описание, ИМХО, расплывчатое (Documentation/filesystems/proc.txt)

read_bytes ---------- I/O counter: bytes read Attempt to count the number of bytes which this process really did cause to be fetched from the storage layer. Done at the submit_bio() level, so it is accurate for block-backed filesystems.

И, лично мне, не понятно, входит ли сюда чтение страниц из swap'а.

mky ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.