LINUX.ORG.RU

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


0

0

Con Kolivas выпустил патч, который налету регулирует "подкачку" в подсистеме виртуальной памяти, в зависимости от используемого приложениями процента ОЗУ (при этом размер дискового кэша в счет не принимается). Патч работает по принципу "выделять побольше памяти часто-используемым/текущим приложениям, а приложения, которые используются редко, помещать в подкачку".

>>> Подробности

★★★★★

Проверено: maxcom

Что-то я не понял, так это уже лет десять как есть в ядре ?

Oksiv
()

Глупости какие. Особенно в текущей трактовке.
А чем по вашему Линус занимался? И другие авторы ядер?

Подкачка вообще зачастую не нужна *совсем*. У меня вот уже с полгода система живет себе БЕЗ раздела подкачки. И не жалуется.

Еще бы оный патч на ASMе был написан, чтобы уж ни у кого сомнений не вызывал на тему видовой принадлежности автора...


ЗЫЖ Или я чего не понимаю?

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


>Подкачка вообще зачастую не нужна *совсем*. У меня вот уже с полгода система живет себе БЕЗ раздела подкачки. И не жалуется.

Присоединяюсь. Уже более года, как отказался от подкачки, в т.ч. и на серверах. Опыт положительный. Объемы от 256 до 1000 МБ.
При достаточном ИЗЛИШКЕ ОЗУ существование раздела/файла подкачки весьма спорно.

ANDI ★★
()
Ответ на: комментарий от Sun-ch

Con Kolivas [interview] strikes again, this time with a patch that regulates the VM subsystem's "swappiness" on-the-fly, depending on the percent of RAM being used by applications (it does not take disk cache into account). Con explained the effects of this patch:

"This has the effect of preventing applications from being swapped out if the ram is filling up with cached data. Conversely, if many applications are in ram the swappiness increases which means the application currently in use gets to stay in physical ram while other less used applications are swapped out.

"For desktop enthusiasts this means if you are copying large files around like ISO images or leave your machine unattended for a while it will not swap out your applications. Conversely if the machine has a lot of applications currently loaded it will give the currently running applications preference and swap out the less used ones."

Swappiness is a kernel "knob" (located in /proc/sys/vm/swappiness) used to tweak how much the kernel favors swap over RAM; high swappiness means the kernel will swap out a lot, and low swappiness means the kernel will try not to use swap space.

dotcoder ★★★★★
() автор топика
Ответ на: комментарий от Sun-ch

Меня несколько удивляет другое - неужели в том виде, в котором это описано в новости эта штука уже не включена в ядро. Причём уже давно! И вообще - не мог бы кто-нибудь пояснить разницу между существующим порядком swap и тем, что предлагается?

anonymous
()
Ответ на: комментарий от philon

Не понимаешь.

Представь ситуацию, когда нагрузка балансируется между 2 серверами,

при выходе одного из строя, нагрузка на второй сервер растет

очень быстро. И че делать без свопа?

Sun-ch
()
Ответ на: комментарий от Sun-ch

вешаться. или чинить первый сервер. потому как если оно начнет свопать то всё встанет раком.

а самое главное: нужно было заранее выделить памяти для таких пиковых нагрузок.

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

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

Не разу не видал, чтобы ядро по собственной инициативе убивало

нормальные процессы. Прямо иск. интеллект какой-то, а если оно решит

что пора отдохнуть и остановит процессор :)

Sun-ch
()

Почитали бы.

Всё это сделано зачем:

The vm_swappiness dial in 2.6 was never quite the right setting without me
constantly changing it depending on the workload. If I was copying large
files or encoding video it was best at 0. If I was using lots of applications
it was best much higher. Furthermore it depended on the amount of ram in the
machine I was using. This patch was done just for fun a while back but it
turned out to be quite effectual so I thought I'd make it available for the
wider community to play with. Do whatever you like with it.

То есть, товарищ просто хочет, чтобы склонность системы к "высвапливанью" менялась автоматически, способом, который он предложил.

This has the effect of preventing applications from being swapped out if the ram is filling up with cached data.

For desktop enthusiasts this means if you are copying large files around like ISO images or leave your machine unattended for a while it will not swap out your applications.

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

yakuza
()
Ответ на: комментарий от Sun-ch

> И че делать без свопа?

А чё делать со свопом? Все одно тормозить все будет.
В нормальных системах запас уж не менее двукратного. Безо всяких свопов.
Там где нужен кэш (сквиды какие) на диске - там он есть. А swap - наследие каменного века, когда память была дорогой.

Итак - данный патч предназначен для отстрела лишних процессов в своп, при резком повышении нагрузки?
Тогда я еще раз спрошу - разве ж этого не было еще сделано черте когда?
Именно к этому мое "не понимаю" и относилось.

philon
()
Ответ на: комментарий от yakuza

Вот такой коментарий бы в описание новости надо было ставить.

И что ж теперь - каждый патч на Ядро будем обсуждать? Типа русский филиал LKDG на LORе?

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

Ты не понимаешь принципа работы VM, очереди приоритетов, планировщика

и т.д.

У меня своп используется на 60% при 90М free memory и ничего не

тормозит.

Зачем низкопроритетным задачам висеть в памяти?

Sun-ch
()
Ответ на: комментарий от yakuza

Гм... Интересная мысль... Бывалые линуксоиды, не думая о том, как нормально реализован своп, решили, что он по определению тормозит...
Гм... И лучше его отключить, чем привести в порядок...
ЧУдно...
Я не нашёл ничего лучше "агрессивного" свопа + лимитов...

Shadow ★★★★★
()

Ну раз пошла такая пьянка...
Мож подскажете...
Размер процесса Х (по top колонка SIZE) в процессе работы разрастается с 40М до 200М. После закрытия всех приложений размер его все равно 200М
Подскажите хотя бы где мне рыть чтоб уменьшить этот самый SIZE.
(РХ9,256М)

ttyS0
()
Ответ на: комментарий от ANDI

Если у Вас настолько много ОЗу, то может быть оно так и надо. Но по жизни не раз встречал, что вполне благополучные системы неожиданно начинали поедать ресурсы ведрами. Потом уже можно и ulimit-ов наставить, и каких-нибудь сторожей, но в момент кризиса мечатешь о том, что бы хватило ресурсов на обыкновенный kill. Кроме этого, например Солярка, быстро выдавливает в свап спящие процессы, а освободившуюся память тратит на кеширование. Тоже не плохо. Конечно возможны варианты совсем без свапа, но это исключение, а не правило.

eda
()
Ответ на: комментарий от ttyS0

А смысл? Если процессу нужно 200М то он их берет, другое

дело почему он их не возвращает.

Если поставить лимит, то процесс вывалится с ошибкой out of memory.

Sun-ch
()
Ответ на: комментарий от Sun-ch

Дело в том что на разных машинах ситуация разная
на другой машине жрет меньше (РХ7.3,320М ручками проапдейчены пакеты с РХ9 ) раза в полтора-два
мож где-то есть какие конфиги или в ядре чего...

по такой проблеме трудно составить правильный запрос в гугль :(

ttyS0
()
Ответ на: комментарий от Sun-ch

> Ты не понимаешь принципа работы VM, очереди приоритетов, планировщика

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

> У меня своп используется на 60% при 90М free memory и ничего не

У меня тоже ничего не тормозит. Оперативной памяти особо свободной я не видел. Все тут же занимает дисковый кэш.
Подкачки нет совсем.

> Зачем низкопроритетным задачам висеть в памяти?

А зачем им лежать на диске?
Если эти задачи мне понадобятся, я получу их в кратчайшие сроки. Меня не будет озадачивать шуршание винтов в три часа ночи, когда я, скажем, читаю книгу и ничего с диска/на диск не пишу.
Если будет тормозить из-за недостатка оперативки - докуплю еще. Собственно и собираюсь (на всякий случай), как только гигабайтные плашки DDRок будут у нас стоить так же, как две штуки 512шек.

philon
()
Ответ на: комментарий от Shadow

> не думая о том, как нормально реализован своп, решили, что он по определению тормозит...

Гм. И думаем, что тормозит (а то нет?), и думали как нормально реализовать. Одно другому не мешает.

> Гм... И лучше его отключить, чем привести в порядок...

Порядок это типа идеал? Дак оно в изменяющейся обстановке практически недостижимо. Текущая реализация, конечно, не плоха.

Если есть возможность жить без свапа, то почему бы так и не жить?

> Я не нашёл ничего лучше "агрессивного" свопа + лимитов...

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

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

Ну ладно, каждый ходит по собственному набору граблей :)

Просто надо приучатся все делать правильно.

Думаешь дяди понтуются просто, когда говорят

в сервер нельзя ставить дешевое железо

в сервер нельзя ставить ide диски

и тд.

своп на юниксе должон быть! Точка :)

Sun-ch
()
Ответ на: комментарий от Sun-ch

Своп в системе должен быть по любому.
Хотя у меня на desktop машине его нет :)).
Досталась машина от Oracle девелопера с
Гигом памяти ну я и забил на swap.
Swap позволяет оптимальнее использовать ОЗУ,
высвобождая её для кэша буферов или чего ещё.
MemTotal: 1033688 kB
MemFree: 33992 kB
Buffers: 31816 kB
Cached: 191020 kB
SwapCached: 0 kB
Active: 268804 kB
Inactive: 22704 kB
HighTotal: 131008 kB
HighFree: 1176 kB
LowTotal: 902680 kB
LowFree: 32816 kB
SwapTotal: 0 kB
SwapFree: 0 kB
Dirty: 16 kB
Writeback: 0 kB
Mapped: 120436 kB
Slab: 596332 kB
Committed_AS: 286440 kB
PageTables: 1228 kB
VmallocTotal: 106488 kB
VmallocUsed: 19980 kB
VmallocChunk: 84576 kB

Хотя может включу как только чужеродный NTFS раздел
в бакап снесу :))

anonymous
()
Ответ на: комментарий от philon

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

Вот тогда и не лезь со своими мыслями. Если мне приходится использовать своп - то это мои проблемы и я буду обсуждать их с теми, кто может чем то помочь, а не кричать "я богатый - у меня мозгов до самой толстой жопы!!"

anonymous
()
Ответ на: комментарий от Sun-ch

>в сервер нельзя ставить ide диски
Понятно, что для больших серверов это неприемлимо, но объясни это обоснованно.
>своп на юниксе должон быть! Точка :)
Своп на юниксе никому и ничего не должен. Если негрузка прогнозируемая, то можно и без свопа. Неправильно рассчитанный своп тоже можно переполнить.

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

:)

Понятно, что для больших серверов это неприемлимо, но объясни это обоснованно.

На сервере, скорость дисковой подсистемы гораздо важней

скорости процессора.

IDE дает большую нагрузку на процессор;

Призводители таких дисков, вообще говоря не рассчитывают, что их

изделие будет работать при полной нагрузке годами.

Обычно диски на домашних компьютерах меняют на новые в течении 2-3

лет.

Sun-ch
()

Вот объясните мне - почему под линухом, когда память заканчивается, машина как бы зависает? Причем, процесс, который сожрал всю память, отваливается только спустя 10-15 минут? В это время комп ни на что не реагирует. У меня веб-сервер (red-hat 9) постоянно вис, пока своп не увеличил.

anonymous
()

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

dd if=/dev/zero of=/swapfile bs=1M count=512
mkswap /swapfile
chmod 600 /swapfile
swapon /swapfile

Все! :)

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

Re:

> Все! :)

Именно. Осталось сделать эту фичу автоматической (при резком недостатке памяти) и ваши волосы будут...

PS: Наверняка онанимы назовут это виндоподобием ;-) А по мне так очень неплохой способ подчеркнуть вторичность и в штатном режиме ненужность свопа...

philon
()
Ответ на: Re: от philon

слушай, если ты гигами РАМ разбрасываешься, то чего тогда дисковое пространство жилишь. Своп нужен не пока РАМ дорогой, а пока он дороже чем диск. Сейчас он наверно раз в 100 дороже, нет??

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

Re:

Это не я про дисковое пространство говорил.
Оно, ессно, еще дешевле будет. И измеряется (на домашних машинках) сотнями гиг.

Я про вполне ограниченную дисковую *производительность*, коя не столь прекрасна, как хотелось бы.

philon
()

Чего вы так ругаетесь?
Да, мозги щас дешевые, но никто не мешает на всякий случай сделать 200-600М свапа.
При спрогнозированных нагрузках он использоваться просто не будет,
а в какой-нибудь критической(непредусмотренной) ситуации глядишь и спасет

ttyS0
()
Ответ на: комментарий от Sun-ch

> Не разу не видал, чтобы ядро по собственной инициативе убивало
нормальные процессы.

Так ты много чего тогда не видел ни разу ;) OOM killer эта процедура
называется в ядре линукс. Работает как аварийная защита в случае
нехватки памяти. Позволяет машине продолжать работу даже если какой-то процесс внезапно стал проедать всю память и не был ограничен лимитами.
Своеобразный полицейский.

anonymous
()
Ответ на: комментарий от ttyS0

Re:

> При спрогнозированных нагрузках он использоваться просто не будет,

Или будет. Высвобождая место под дисковые кэши...
Которые, быть может нафик не здались...

philon
()
Ответ на: комментарий от Sun-ch

> в сервер нельзя ставить дешевое железо

Реклама дорого железа? ;) Дорогое == самое надежное? Отвечаешь?

> в сервер нельзя ставить ide диски

А эта чушь откуда взята? Raid на сервере ставится, если ты про
надежность. Только на большом количестве i/o операций выигрывает scsi,
если ты про это. На стандартном internet-сервере i/o не является
критическим местом.

anonymous
()
Ответ на: :) от Sun-ch

> На сервере, скорость дисковой подсистемы гораздо важней
скорости процессора.

Чушь собачья. Что такое "сервер"? Средняя температура по больнице?
На интернет-сервере наиболее важную роль в производительности играет
память. Если есть sql-база данных, то еще и процессор. Диск на самом
последнем месте в списке факторов, определяющих скорость. Я говорю
исключительно из опыта, так много лет этим занимаюсь.

> IDE дает большую нагрузку на процессор;

Насколько она критична отзывается на общую производительность, ты мерял?
5% CPU? 10%? Что за сказки ты рассказываешь, и что у тебя за
процессор стоит на серверах? Наверное самый дорогой в ценах 1994 года ;)

> Призводители таких дисков, вообще говоря не рассчитывают, что их
изделие будет работать при полной нагрузке годами.

RAID

> Обычно диски на домашних компьютерах меняют на новые в течении 2-3
лет.

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

anonymous
()
Ответ на: :) от Sun-ch

Оно то все так, но кажется мне что самое главное это то, что SCSI диску во время
выполнения инструкций (например поиск) не блокируют SCSI шины. Для небольших серверков,
с одним или двумя дисками, без RAID или с RAID 0/1 это совершенно некритично.
С другой стороны старое говно, скажем типа SUN 20/110Mhz со старыми SCSI дисками, по 1/2ГБ отсасывает
по полной программе даже у P2-400, но с новыми IDEшниками. И по скорости ЦПУ кстати тоже.

XCHG
()
Ответ на: Re: от philon

обычный веб-сервер на линуксе 256М свап 600М
свап обычно был заполнен максимум на ~20M
при аптайме где-то 150-200 дней(тот аптайм при котором я на это обращал внимание)

ttyS0
()
Ответ на: комментарий от Sun-ch

swap

> фича называется "агрессивный свопинг"
точно
хорошо описана у Лукидиса и там он хвалит BSD системы (естественно в сравнении с текущим тогда SysV).
реально же что меня всегда здорово напрягало на фришке - отойдёшь чайку налить, вернёшься, оба-на! а твои баши уже в свопе.:(
хотя времена feature полезная - для каких-нибудь периодических процессов.
так что у каждой палки есть 2 конца.:)
между прочим, это хорошо - теперь и в линухе можно будет регулировать поведение 9во фришке раньше было через пересборку, щаз не знаю как).

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

Вот-вот. Наверно, чтобы сильнее тормозило и чтобы под удар рутовую систему поставить.
Может, у него вообще все на одном разделе стоит, а работает под рутом only...

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

да я для примера напиcал. и вобще какая пофиг разница на каком разделе делать? можешь хоть у себя в /home сделать или на рам диске...да хоть на nfs'e если тебе так больше нравится ;)

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

Хотелось бы посмотреть oracle на ide дисках :)) Emc то иной раз посасывает на медленных дисках (7200rpm 180G>) а вы про ide :)). P.S A5200 rulez

anonymous
()
Ответ на: комментарий от Shadow

Так. Правильно ли я понял, что в линуксе можно включить этот самый "агрессивный" своп? Если да, то как? Поиск в Google linux+aggressive+swap ни к чему меня не привел.

anonymous
()

2ALL:

Вы хотя бы серверы обсуждаете насчёт swap? А то мне как-то неприятно стало - у меня Workstation - 256 Mb, KDE3 - среда по умолчанию, swap отсутствует и всё достаточно неплохо работает - по крайней мере больше 128-ми редко занимается программами.Так что по-моему сейчас на рабочей станции совершенно не нужен раздел подкачки (сейчас стд. размер памяти - 512 метров). Есть ли аргументированные возражения? Очень было бы интересно узнать, если есть, то какие.

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

А ты открой в гипме пару псдэшников которые весят 40-80М и я посмотрю как твоя система вывалится :)
Реально если отключить свап гипм пожирает все мозги и потом начинается какая-то затяжная дисковая операция

2Rost
Дык если "какая пофиг разница" то для этого существует специальный раздел, LinuxSwap называется :) Тебе что, жалко 200-600М? :)

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

В последних версиях ядра файловый своп работает почти так же быстро, как
своп на отдельном разделе. До этого _единственным_ преимуществом
своп-раздела перед своп-файлом была исключительно скорость работы.
В плане удобства своп-файл всегда был предпочтительнее, особенно на
домашем компе. Впрочем, и на сервере тоже! Своп-файлов можеть быть
несколько и на разных дисках. Их можно создавать/добавлять динамически
любого нужного размера и подключать в зависимости от расчетной нагрузки
тогда, когда они действительно нужны.

anonymous
()

А куда делся в очередной раз обосравшийся ссаныч? Хотел ему реальными
тестами в евоную харю ткнуть с таблицами загрузки CPU для scsi/ide.

anonymous
()

А вот вопрос на засыпку, если вставлено 4 гига мозгов, то нужен своп или нет?

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

Ну, если у тебя столько мозгов... то и сам додуматься сможешь ;)

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