LINUX.ORG.RU

При выделение всей RAM без SWAP, начинает жраться винт. Свопа-то нет!


0

0

Выделяю постепенно всю оперативку. В какой-то момент зажигается светодиод HDD, винт начинает шуршать, мышь не двигается, клава не нажимается, через минуту его отпускает и приложение нормально убивается ("Killed" в консоли) и продолжаем жить дальше.

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


может быть оно в это время корки откладывает?

// wbr

klalafuda ★☆☆
()

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

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

dilmah ★★★★★
()

а \\у меня так и не убивается само, приходится в консоль ползти и убивать, минут на 10 все растягивается

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

так в том и прикол петаешь логин, куришь, пароль, куришь, ищю этот ktorrent, курю, потом kill и дальше уе нормально. Вот если б не знал у кого память течет тогда ребутуть наверно пришлось

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

Я тут emerge boost запускал с make -j 3, так оно вообще захерачивалось не на минутку, а просто на супердолго, я ресет жмахал на системнике - не мог выдержать столько. -j 1 спасло.

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

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

generatorglukoff ★★
()

ОСЛинух не способен вменяемо работать при недостатке оперетивной памяти. Штатный способ избежать проблем - ставить пользователю ограничения по памяти в /etc/security/limits.conf.

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

> Да, но не минуту же заниматься чтением разных замапленных кусков... Зачем столько...

Ну в том и дело: кто-то сожрал всю оперативку, а системе срочно потребовалось для каких-то нужд допустим еще 100k, где взять? выбросить из памяти образ того или иного бинарника задачи, которая не находится на выполнении в данный момент. Все, выбросили, выделили, радуемся. Дошла очередь шедулеру выдать время той задаче, бинарный образ которой только что был вытеснен из оперативки. Pager пытается зачитать его обратно в память, о вот блин, опять не хватает 100k, - выбираем следующую зачаду и вытесняем, а освободившуюся память - на запуск текущей.

Вот так и выходит - каждый task switch производимый планировщиком -- перезагрузка (частичная как минимум) бинарного образа задачи, отправляемой на выполнение, -- ОООЧЕНЬ БОЛЬШИЕ ТОРМОЗА.

Если есть желание сделать TRUE non-swap - размещай всю систему в ram-диске ;)

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

> Если есть желание сделать TRUE non-swap - размещай всю систему в ram-диске

У меня 2Gb RAM. В норме используется около половины. Мой банальный интеллект хочет настроить систему так, чтобы замапленные бинарники не выгружались из памяти при недостатке ресурсов, потому как недостатка ресурсов на самом деле у меня не бывает.

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

>У меня 2Gb RAM. В норме используется около половины.

у меня - четверть на двух гектарах

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


все уже просто правильно работает

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

>> ОСЛинух не способен вменяемо работать при недостатке оперетивной памяти. Штатный способ избежать проблем - ставить пользователю ограничения по памяти в /etc/security/limits.conf.

4.2

если оом киллер считать вменяемым, то

sysctl vm.lowmem_reserve_ratio="8192 4096 4096"

обычно решает проблему тормозов при убиении процесса оом киллером

sergej ★★★★★
()

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

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

> все уже просто правильно работает

Да? А почему же тогда система замирает и начинает бешено читать с диска при недостатке памяти?

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

Тебе все уже написали, подними глаза на сообщение выше своего. Или ты потроллить пришел?

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

> sysctl vm.lowmem_reserve_ratio="8192 4096 4096"
> обычно решает проблему тормозов при убиении процесса оом киллером


Попробовал.
Если систему в критическом положении не трогать, то он весьма ловко прибивает жрущее память приложение. Я попробовал поклацать мышкой по Firefox-у - сессия сдохла где-то в районе работы oom_killer-а , т.е. под конец тормозов меня выкинуло на экран логина.
При форкбомбе oom_killer начинает махать шашкой налево и направо, убивая все подряд, а система все-равно умирает, т.е. кроме ядра ничего не работает.

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

Ну правильно, оом киллеер решил наверное убить иксы.

а для форкбомбы есть /etc/security/limits.conf

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