LINUX.ORG.RU

Большая часть памяти занята кешами, работает oom_killer, drop_caches не дает эффекта

 , linuxatemyram, ,


1

7

Заметил, что пока я был на работе, oom_killer прикончил Firefox на фоне общей нехватки памяти. Картина примерно следующая:

# free -m
             total       used       free     shared    buffers     cached
Mem:         15891      15711        179          0          3      13136
-/+ buffers/cache:       2571      13320
Swap:            0          0          0
Остановил приложения с активным I/O, сделал sync && echo 3 > /proc/sys/vm/drop_caches, кеши почти не уменьшились, тормоза UI заметны на глаз. Вопрос, в общем-то, очевиден: кто виноват и что делать?

Возможно, эти данные чем-то помогут:

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

Иксы, mesa и DDX.

Пересобирал что-нибудь? Внезапно вспомнил, что у меня где-то полтора года назад на арчике было почти то же самое, когда я занимался ковровой пересборкой всего из -git и допустил где-то ABI mismatch.

intelfx ★★★★★
()

Swap: 0 0 0

Кто тебя научил так делать? Так работать не будет. При 16ГБ физической памяти, правильно сделать swap = 32Гб.

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

10 лет назад это было правильно.

Это правильно и сейчас.

Если у меня 128 памяти, надо 256 под своп выделять?

Да. А в чём проблема?

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

Еще один. Дай ссылку, где английским языком написано, что без свапа линукс не работает и глючит, даже если рамы в 5 раз больше, чем реально используется.

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

Дай ссылку, где английским языком написано

Зачем ссылку, это настолько очевидно, что я сам напишу: -
«Linux without a swap does not work properly.»

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

При 16ГБ физической памяти, правильно сделать swap = 32Гб.

swap == 2*RAM - это рекомендация для NT 15-летней давности, у нее VMM так работал. А для Linux swap == RAM (кроме особых случаев).

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

У него течет что-то. Вместо того, чтобы подставлять ведра, лучше заделать дыру.

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

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

Ну а так оно будет сначала тормознуто работать через своп, а потом точно так же упадет. Это сильно лучше?

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

xtraeft ★★☆☆
()
Последнее исправление: xtraeft (всего исправлений: 1)
Ответ на: комментарий от xtraeft

?

xtraeft> У меня тоже на дебиане оно течет, при любой попытке обращения к миллионам мелких файлов в ext4

Эта фраза как бы подразумевает, что у ТС течет ядро. Никаких (то есть совсем никаких) доводов за это продемонстрировано не было. Вкупе с

xtraeft> при любой попытке обращения к миллионам мелких файлов в ext4

вырисовывается портрет человека совершенно не разбирающегося в предмете. Отсюда сарказм насчет «специалиста».

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

Сам то читал свою ссылку?

The size of your swap should be equal to twice your computer's physical RAM for up to 2 GB of physical RAM. For physical RAM above 2 GB, the size of your swap should be equal to the amount of physical RAM above 2 GB.

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

Когда оно потечёт в своп и потом оом-киллер начнет засвопленные приложения убивать — сильно лучше будет?

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

вырисовывается портрет человека совершенно не разбирающегося в предмете. Отсюда сарказм насчет «специалиста».

Файлы пришлось в БД перенести, к тому же судя по всему, в каком то апдейте ядра починили. Поэтому воспроизвести сейчас не могу.

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

Вообще-то это текущие рекомендации red hat.

https://access.redhat.com/site/documentation/en-US/Red_Hat_Enterprise_Linux/4...

Интересно, я не знал. Но это не текущие рекомендации.

https://access.redhat.com/site/documentation/en-US/Red_Hat_Enterprise_Linux/5...

«4GB to 16GB of RAM a minimum of 4GB of swap space»

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

У urxvt есть проблема — он по C-d не прибивает вкладку. Добавляем сюда скроллбэк буфер в несколько тысяч строк и xft — получаем эмулятор терминала, жрущий память гигабайтами :(

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

Я про это:

The size of your swap should be equal to twice your computer's physical RAM for up to 2 GB of physical RAM

Есть рекомендация swap=ram*2? Есть. Особый случай? Нет.

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

Когда оно потечёт в своп и потом оом-киллер начнет засвопленные приложения убивать — сильно лучше будет?

Не сильно, но лучше. Просто потому, что это будет случаться реже, и будет шанс поймать приложение, которое течет.

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

Но это не текущие рекомендации.

ОК, ты прав. Я перестраховываюсь значит, мне хардов не жалко. Но вообще без свопа жить нельзя и red hat об этом прямо говорит.

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

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

But because the amount of memory in modern systems has increased into the hundreds of gigabytes, it is now recognized that the amount of swap space that a system needs is a function of the memory workload running on that system

Есть рекомендация swap=ram*2? Есть. Особый случай? Нет.

4 шапка в 2005 году вышла, так что я почти угадал с «10 лет».

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

Но вообще без свопа жить нельзя и red hat об этом прямо говорит.

Что-то я просмотрел видимо. Можно цитату?

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

4 шапка в 2005 году вышла, так что я почти угадал с «10 лет».

Ты с главным не угадал: своп до сих пор нужен. Вообще странный спор - в чем проблема пожертвовать несколькими гигабайтами диска в эпоху, когда этих гигабайт сотни?

tailgunner ★★★★★
()
Последнее исправление: tailgunner (всего исправлений: 1)
Ответ на: комментарий от xtraeft

с табличкой для особо тугих.

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

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

Вообще странный спор - в чем проблема пожертвовать несколькими гигабайтами диска в эпоху, когда этих гигабайт сотни?

Я не против свопа. Я против устаревших стереотипов о нем (о x2 размере) и за правильное решение проблемы - утечку таки надо искать.

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

The size of your swap should be equal to twice your computer's physical RAM for up to 2 GB of physical RAM. For physical RAM above 2 GB, the size of your swap should be equal to the amount of physical RAM above 2 GB. The size of your swap should never be less than 32 MB.

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

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

99% что даже с минимальным свопом оно бы и не грохнулось. Ничего искать не надо, пока не выполнены необходимые условия работы ОС. Предпочитаю системный подход и вам советую.

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

На странице о 5-й шапке такого нет, есть только «recommended». Согласись, это совсем менее категорично звучит, чем «жизни нет». Никаких тебе never и should :)

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

Там табличка говорит совсем не о swap == RAM.

О swap == RAM вспоминали два ветерана IT в разговоре друг с другом. Тебе было адресовано другое: «Ты с главным не угадал: своп до сих пор нужен».

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

The size of your swap should be equal to twice your computer's physical RAM for up to 2 GB of physical RAM.

Для систем с <= 2GB оперативной памяти, swap = 2 * RAM.

For physical RAM above 2 GB, the size of your swap should be equal to the amount of physical RAM above 2 GB.

Для систем с > 2GB оперативной памяти, swap = RAM - 2GB.

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

Или опять будешь совать рекомендации 9-летней давности, когда многое было иначе?

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

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

два ветерана IT

Ветеранов уже и поправить нельзя, ссылаясь на тот же источник, что и они? Клево.

Тебе было адресовано другое: «Ты с главным не угадал: своп до сих пор нужен».

Я уже пару раз ответил, что и не спорил с этим.

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

Перевожу доку для уникумов, у которых туго с английским:

because the amount of memory in modern systems has increased into the hundreds of gigabytes, it is now recognized that the amount of swap space that a system needs is a function of the memory workload running on that system.

«В связи с тем, что памяти в современных системах более, чем дофига, количество необходимого свопа сегодня является функцией от загруженности памяти.»
То есть не «в два раза больше, чем RAM» и не «столько же, сколько RAM», не «включить обязательно хотя бы пару ГБ», а «в соответствии с использованием».

However, given that swap space is usually designated at install time, and that it can be difficult to determine beforehand the memory workload of a system, we recommend determining system swap using the following table.

«Учитывая, что размер свопа обычно выбирается при установке, и учитывая, что будущую загрузку памяти в этот момент сложно угадать, мы рекомендуем пользоваться следующей табличкой.»
Не «ядро не будет работать, если сделать по-другому» и не «мы все умрем, если не включить своп». Нет. Если не знаешь, сколько свопа нужно, и нужен ли он вообще, то делай по табличке. Но это если не уверен, что рамы хватит.

Короче говоря, из документации следует, что своп нужно включать, только если предполагается, что RAM может закончиться в штатной ситуации. Количество свопа определяется в зависимости от нагрузки на память. Если штатное использование подразумевает загрузку 2-3 ГБ из 16, своп не нужен.

Если кто-то хочет опровергнуть, я жду ссылок и цитат в духе «Linux kernel cannot work properly without swap space». Подчеркну, что это должны быть ссылки на уважаемые источники, а не идиотский бред в духе «это настолько очевидно, что я сам напишу».

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

Ага, не будем опираться на современные доки от шапки, будем опираться на времена 2.6.9 ведра и компьютеров с 256-1024 Мб памяти.

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

Кстати,

строгие требования

«Unfortunately, deciding on the amount of swap to allocate to Red Hat Enterprise Linux is more of an art than a science, so hard rules are not possible.»

Они сами пишут, что это принципиально не может быть строгим требованием и решать надо в каждом конкретном случае.

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