LINUX.ORG.RU
решено ФорумAdmin

Linux ate my ram!


0

3

Debian 6.0.1 Проблема замечена и локализована после массового геноцида oom в присутствии сотен мегабайт кешей.

root@aidaho-laptop:/home/aidaho# uname -a
Linux aidaho-laptop 2.6.32-5-686 #1 SMP Tue Mar 8 21:36:00 UTC 2011 i686 GNU/Linux
root@aidaho-laptop:/home/aidaho# uptime
 10:40:16 up 64 days, 27 min,  1 user,  load average: 0.11, 0.07, 0.06
root@aidaho-laptop:/home/aidaho# cat /proc/meminfo&&sync&&echo 3 > /proc/sys/vm/drop_caches&&echo " "&&cat /proc/meminfo
MemTotal:        2066272 kB
MemFree:          515416 kB
Buffers:            7516 kB
Cached:           370636 kB
SwapCached:            0 kB
Active:           850204 kB
Inactive:         559092 kB
Active(anon):     829344 kB
Inactive(anon):   526696 kB
Active(file):      20860 kB
Inactive(file):    32396 kB
Unevictable:           4 kB
Mlocked:               4 kB
HighTotal:       1183368 kB
HighFree:         296432 kB
LowTotal:         882904 kB
LowFree:          218984 kB
SwapTotal:             0 kB
SwapFree:              0 kB
Dirty:                44 kB
Writeback:             0 kB
AnonPages:       1031148 kB
Mapped:            46364 kB
Shmem:            324956 kB
Slab:             119340 kB
SReclaimable:      13180 kB
SUnreclaim:       106160 kB
KernelStack:        2376 kB
PageTables:         4784 kB
NFS_Unstable:          0 kB
Bounce:                0 kB
WritebackTmp:          0 kB
CommitLimit:     2066272 kB
Committed_AS:    1870380 kB
VmallocTotal:     122880 kB
VmallocUsed:       15604 kB
VmallocChunk:      31056 kB
HardwareCorrupted:     0 kB
HugePages_Total:       0
HugePages_Free:        0
HugePages_Rsvd:        0
HugePages_Surp:        0
Hugepagesize:       4096 kB
DirectMap4k:       28664 kB
DirectMap4M:      876544 kB

MemTotal:        2066272 kB
MemFree:          523912 kB
Buffers:            1200 kB
Cached:           368836 kB
SwapCached:            0 kB
Active:           848000 kB
Inactive:         553228 kB
Active(anon):     829396 kB
Inactive(anon):   526716 kB
Active(file):      18604 kB
Inactive(file):    26512 kB
Unevictable:           4 kB
Mlocked:               4 kB
HighTotal:       1183368 kB
HighFree:         298292 kB
LowTotal:         882904 kB
LowFree:          225620 kB
SwapTotal:             0 kB
SwapFree:              0 kB
Dirty:                 0 kB
Writeback:             4 kB
AnonPages:       1031144 kB
Mapped:            46476 kB
Shmem:            324980 kB
Slab:             118984 kB
SReclaimable:      12824 kB
SUnreclaim:       106160 kB
KernelStack:        2384 kB
PageTables:         4804 kB
NFS_Unstable:          0 kB
Bounce:                0 kB
WritebackTmp:          0 kB
CommitLimit:     2066272 kB
Committed_AS:    1870312 kB
VmallocTotal:     122880 kB
VmallocUsed:       15604 kB
VmallocChunk:      31056 kB
HardwareCorrupted:     0 kB
HugePages_Total:       0
HugePages_Free:        0
HugePages_Rsvd:        0
HugePages_Surp:        0
Hugepagesize:       4096 kB
DirectMap4k:       28664 kB
DirectMap4M:      876544 kB
В сухом остатке: 368836 kB кеша, полного чистых страниц, не желающего покидать память. Вчера, кстати, было больше. За ночь часть куда-то испарилась. Криминала не замечаю, где искать причину?

fix: убрал вывод free.

★★★★★

Последнее исправление: aidaho (всего исправлений: 1)

Странно. Попробуй sysctl -w vm.swappiness=0, хотя это вряд-ли поможет. Может в момент срабатывания OOM-killer было резкое повышения использования памяти?

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

>Попробуй
Свопа же нет.

Может в момент срабатывания OOM-killer было резкое повышения использования памяти?

«Резкое», это как?

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

свопа добавь... посмотри, что будет ;) где-то проскакивало о не особо адекватном поведении, когда свопа нет вообще. ..

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

>`free -m` после сброса кеша что говорит?

Вверху же детализация. Говорит что Cached: 368836 kB

В логах что есть?

Ничего.

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

>свопа добавь... посмотри, что будет ;)

Интерес представляет выяснение причин а не маскирование симптомов.

aidaho ★★★★★
() автор топика

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

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

Вообще надо начать с того, что drop_caches не срабатывает. Скорее всего проблема в какой-нибудь tmpfs смонтированой на которой и лежат эти 369Мб.

Вот пример:

~ # free -m
             total       used       free     shared    buffers     cached
Mem:          7985        522       7463          0          1         15
-/+ buffers/cache:        505       7480
Swap:         8191          0       8191

~ # dd if=/dev/zero of=/dev/shm/test bs=1M count=500
500+0 records in
500+0 records out
524288000 bytes (524 MB) copied, 0.190143 s, 2.8 GB/s

~ # free -m
             total       used       free     shared    buffers     cached
Mem:          7985       1033       6951          0          1        515
-/+ buffers/cache:        516       7468
Swap:         8191          0       8191

~ # echo 3 > /proc/sys/vm/drop_caches
~ # free -m
             total       used       free     shared    buffers     cached
Mem:          7985        981       7004          0          0        514
-/+ buffers/cache:        465       7519
Swap:         8191          0       8191

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

Линукс, такой линукс. Я уже с udev-ом намучился жить без оптического привода. При любом изменении (например, вставлении флэшки) начинает опрашивать несуществующий привод, при этом загружая одно ядро на 100% секунд на 20. Теперь оказывается и без свопа линукс не торт.

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

Вообще надо начать с того, что drop_caches не срабатывает.

Срабатывает, но оставляет очень большой «несгораемый остаток»

Скорее всего проблема в какой-нибудь tmpfs

tmpfs присутствует, но там только 16M занято:

root@aidaho-laptop:/home/aidaho# df -h
Файловая система      Разм  Исп  Дост  Исп% смонтирована на
/dev/sda3             3,7G  3,4G  128M  97% /
tmpfs                1009M  8,0K 1009M   1% /lib/init/rw
udev                 1005M  248K 1005M   1% /dev
tmpfs                1009M     0 1009M   0% /dev/shm
/dev/sda1              45M   14M   29M  32% /boot
/dev/sdb1             7,4G  4,4G  3,1G  59% /home
tmpfs                 200M   16M  185M   8% /tmp
tmpfs                 1,0M     0  1,0M   0% /var/lock
tmpfs                 5,0M  112K  4,9M   3% /var/run
/dev/sdc1             7,4G  1,7G  5,4G  24% /media/SD.card

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

Ядро 2.6.38.6. Дистр Arch x86_64, но похожие проблему гугляться и на Ubuntu, и на Арче, возможно и еще где-то. Решил проблему с udev-ом только блэклистом модуля cdrom.

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

Я тоже жил отлично, так как комп двухядерный, а за загрузкой цпу я все время не слежу. Поэтому о проблеме как таковой узнал совсем недавно. С памятью аналогичная ситуация, ее у меня 4 Гб, поэтому считать жалкие мегабайты никогда не пробовал.

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

ну вот то же самое)памяти достаточно и не играю в перфекционистов

aptyp ★★★★
()

торренты прибить не пробовал?

echo 3 > /proc/sys/vm/drop_caches

This is a non-destructive operation and will only free things that are [b]completely unused[/b]

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

Спасибо, изучу. Вариант с отключением oom без свопа опасен — можно панику словить, но буду иметь ввиду.

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

Могу ошибаться, но возможно там хранятся какие-то важные данные (кеш метаданных фс например), раз оно не спешит их особождать.
А вообще надо бы спросить у разработчиков ядра.

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

Погуглил я там-сям по интернетам: действительно, не я первый, не я и последний. Проблем, с подобной друг-другу симптоматикой как минимум две (подозреваю, что три). В первом случае заканчивается lowmem, пути решения очевидны. Ко второму относится и мой. Намеков на причины в интернетах найти не удалось. Своя версия: oom стартует уместно, потому что освободить память не представляется возможным. А вот почему — вопрос сложный. Нужно рыть документацию и багзиллу ядра, а желания нет.

Выключать oom, кстати, можно только на ядрах с rhel'овскими патчами. Почётную роль костыля доверил демону swapspace.

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

Боюсь, что скорее нужно рыть исходники ядра. Иначе вобще не понять каким образом получить MemTotal из остальных полей в файле /proc/meminfo. И не понятно, какие данные могут быть в Cached.

Я на разных работающих системах попробовал «echo 3 > /proc/sys/vm/drop_caches» и в лучшем случае получил Cached порядка 30 Мбайт (при 1 Гб ОЗУ и полном простое системы).

mky ★★★★★
()
19 ноября 2011 г.
Ответ на: комментарий от mky

Бампну старый тред полезной информацией:
Проблема оказалась в ntfs-3g. При наличии невыясненных пока условий он жрёт память не освобождая занятое под кеши. Сейчас кажется даже странно, почему я сразу не заподозрил модули фс.

Получается, что юзеры, имеющие доступ к /dev/fuse могут легко завалить машину сея хаос с помощью oom, или, если на машине есть свап — загнать её в такой iowait, что проще ткнуть резет.

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

Не так просто: ntfs-3g был в ответе за часть недропаемых кешей, остальное оказалось на совести видеодрайвера intel.

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