The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

форумы  помощь  поиск  регистрация  майллист  вход/выход  слежка  RSS
"Linux и оперативная память"
Вариант для распечатки  
Пред. тема | След. тема 
Форум Открытые системы на сервере (Система. проблемы, диагностика / Linux)
Изначальное сообщение [ Отслеживать ]

"Linux и оперативная память"  +/
Сообщение от КуКу (ok) on 04-Дек-12, 14:04 
Добрый день.

Имеем в наличии:

#cat /etc/redhat-release
CentOS release 6.3 (Final)

#free -m
             total       used       free     shared    buffers     cached
Mem:         15936       8704       7232          0          5         88

# cat /proc/meminfo
MemTotal:       16319100 kB
MemFree:         7405756 kB
Buffers:            5556 kB
Cached:            90708 kB
SwapCached:            0 kB
Active:            75088 kB
Inactive:          23212 kB
Active(anon):       7620 kB
Inactive(anon):       56 kB
Active(file):      67468 kB
Inactive(file):    23156 kB
Unevictable:       18228 kB
Mlocked:           18228 kB
SwapTotal:      17407992 kB
SwapFree:       17407992 kB
Dirty:                 4 kB
Writeback:             0 kB
AnonPages:         20352 kB
Mapped:            10572 kB
Shmem:               200 kB
Slab:            8580820 kB
SReclaimable:      42848 kB
SUnreclaim:      8537972 kB
KernelStack:        3584 kB
PageTables:         2648 kB
NFS_Unstable:          0 kB
Bounce:                0 kB
WritebackTmp:          0 kB
CommitLimit:    25567540 kB
Committed_AS:      71736 kB
VmallocTotal:   34359738367 kB
VmallocUsed:      309876 kB
VmallocChunk:   34350788052 kB
HardwareCorrupted:     0 kB
AnonHugePages:         0 kB
HugePages_Total:       0
HugePages_Free:        0
HugePages_Rsvd:        0
HugePages_Surp:        0
Hugepagesize:       2048 kB
DirectMap4k:        6628 kB
DirectMap2M:    16760832 kB

мне не нравится этот пункт    Slab:   8580820 kB, как то подозрительно много памяти выделено. так память начала выделятся после запуска одной виртуалки на виртуалбоке
# rpm -qa Vir*
VirtualBox-4.2-4.2.4_81684_el6-1.x86_64

*******************

рядом точно такой же сервер(по характеристикам, но без виртуалбокса):
Slab:             227016 kB

В ядре есть только один параметр отвечающий за slab:
# sysctl -a | grep slab
vm.min_slab_ratio = 5

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

Подскажите где и что можно почитать, что бы вылечить это.

Ответить | Правка | Cообщить модератору

Оглавление

Сообщения по теме [Сортировка по времени | RSS]


1. "Linux и оперативная память"  +/
Сообщение от Andrey Mitrofanov on 04-Дек-12, 14:51 
> Собственно, вопрос. Когда slab выедает всю память, то ничего нельзя запустить, а
> сервер лечится только перезагрузкой, что не есть правильно.
> Подскажите где и что можно почитать, что бы вылечить это.

Посмотрев по диагонали google://meminfo+slab и /proc/slabinfo на паре подвернувшихся хостов, я думаю, что ничего он не "выест". Мне так почему-то _кажется_.


Cached:       66832232 kB
# name            <active_objs> <num_objs> <objsize> <objperslab> <pagesperslab> :
dentry_cache      16109580 16110024    208   19    1 :

Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору

2. "Linux и оперативная память"  +/
Сообщение от КуКу (ok) on 04-Дек-12, 17:00 
Я рад что у Вас закешировано ~66Гб, но у меня немного друга проблема или укажите где я не понимаю.

MemTotal:       16319100 kB
MemFree:         7405756 kB
*******
Cached:            90708 kB
*******
Slab:            8580820 kB
*******

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

Как можно освободить память из Slab или где его можно настраивать?
sudo sysctl -a | grep slab
vm.min_slab_ratio = 5                   # в процентах, все равно у меня забирает уже >50%

если нужны какето данные, то говорите

Ответить | Правка | ^ к родителю #1 | Наверх | Cообщить модератору

3. "Linux и оперативная память"  +1 +/
Сообщение от Andrey Mitrofanov on 04-Дек-12, 17:08 
> после ребута оно покажет свободной памяти больше 15Гб.

*Смотреть* в /proc/slabinfo и top, кто её занимает.

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

С чего ты взял, что её _надо _освобождать-то?? Оставь, как есть, если не понимаешь.

Я вот не понимаю, и спокоен, как слон.

> если нужны какето данные, то говорите

Нет, спасибо.

Ответить | Правка | ^ к родителю #2 | Наверх | Cообщить модератору

4. "Linux и оперативная память"  +/
Сообщение от КуКу (ok) on 04-Дек-12, 17:40 
>"Я вот не понимаю, и спокоен, как слон."

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

#top -a
top - 15:34:31 up 64 days, 52 min,  1 user,  load average: 0.00, 0.00, 0.00
Tasks: 430 total,   1 running, 429 sleeping,   0 stopped,   0 zombie
Cpu(s):  0.0%us,  0.0%sy,  0.0%ni,100.0%id,  0.0%wa,  0.0%hi,  0.0%si,  0.0%st
Mem:  16319100k total,  9209540k used,  7109560k free,    14100k buffers
Swap: 17407992k total,        0k used, 17407992k free,   359080k cached

  PID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  COMMAND
3398 root      -2   0 52088 7084 5388 S  0.0  0.0  87:24.31 heartbeat
3402 root      -2   0 52004 7000 5360 S  0.0  0.0   2:32.76 heartbeat
3403 root      -2   0 52000 6996 5360 S  0.0  0.0  15:20.63 heartbeat
3404 root      -2   0 52000 6996 5360 S  0.0  0.0  19:09.77 heartbeat
3405 root      -2   0 52000 6996 5360 S  0.0  0.0  14:00.66 heartbeat
3406 root      -2   0 52000 6996 5360 S  0.0  0.0  19:14.71 heartbeat
3407 root      -2   0 52000 6996 5360 S  0.0  0.0  24:19.38 heartbeat
3408 root      -2   0 52000 6996 5360 S  0.0  0.0  14:34.90 heartbeat
11629 root      20   0 95784 3884 2972 S  0.0  0.0   0:00.02 sshd
11675 root      20   0  105m 1992 1516 S  0.0  0.0   0:00.00 bash
1572 root      20   0  243m 1624 1064 S  0.0  0.0   0:00.06 rsyslogd
1945 exim      20   0 91056 1604  724 S  0.0  0.0   0:00.74 exim
11684 root      20   0 15292 1588  992 R  0.3  0.0   0:00.05 top
    1 root      20   0 19228 1552 1280 S  0.0  0.0   0:01.25 init
1608 rpcuser   20   0 23344 1352  900 S  0.0  0.0   0:00.00 rpc.statd
1833 root      20   0 64072 1172  508 S  0.0  0.0   0:00.00 sshd
  696 root      16  -4 10736  928  432 S  0.0  0.0   0:00.07 udevd
1590 rpc       20   0 18972  912  664 S  0.0  0.0   0:03.90 rpcbind
1671 root      20   0 13544  900  736 S  0.0  0.0   7:24.44 lldpad
16622 root      18  -2 10732  824  332 S  0.0  0.0   0:00.00 udevd
1556 root      16  -4 27636  796  564 S  0.0  0.0   0:01.67 auditd
11204 root      18  -2 10732  780  288 S  0.0  0.0   0:00.00 udevd
1968 root      20   0  4060  608  524 S  0.0  0.0   0:00.00 mingetty
1970 root      20   0  4060  608  524 S  0.0  0.0   0:00.00 mingetty
1961 root      20   0  4060  604  524 S  0.0  0.0   0:00.00 mingetty
1963 root      20   0  4060  604  524 S  0.0  0.0   0:00.00 mingetty
3002 root      20   0  4060  604  520 S  0.0  0.0   0:00.00 mingetty
1966 root      20   0  4060  600  524 S  0.0  0.0   0:00.00 mingetty
1650 root      20   0 23088  520  316 S  0.0  0.0   0:00.00 rpc.idmapd
1787 root      20   0  8344  496  380 S  0.0  0.0   0:43.27 fcoemon
    2 root      20   0     0    0    0 S  0.0  0.0   0:00.01 kthreadd
    3 root      RT   0     0    0    0 S  0.0  0.0   0:00.03 migration/0
    4 root      20   0     0    0    0 S  0.0  0.0   0:36.33 ksoftirqd/0

из # cat /proc/slabinfo   показываю строки с самыми большими значениями в поле <objsize>

size-4194304(DMA)      0      0 4194304    1 1024 : tunables    1    1    0 : slabdata      0      0      0
size-4194304           0      0 4194304    1 1024 : tunables    1    1    0 : slabdata      0      0      0
size-2097152(DMA)      0      0 2097152    1  512 : tunables    1    1    0 : slabdata      0      0      0
size-2097152           0      0 2097152    1  512 : tunables    1    1    0 : slabdata      0      0      0
size-1048576(DMA)      0      0 1048576    1  256 : tunables    1    1    0 : slabdata      0      0      0
size-1048576           0      0 1048576    1  256 : tunables    1    1    0 : slabdata      0      0      0
size-524288(DMA)       0      0 524288    1  128 : tunables    1    1    0 : slabdata      0      0      0

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

Ответить | Правка | ^ к родителю #3 | Наверх | Cообщить модератору

5. "Linux и оперативная память"  +/
Сообщение от Andrey Mitrofanov on 04-Дек-12, 19:50 
>>"Я вот не понимаю, и спокоен, как слон."
> я бы рад, да когда заканчивается память, то падает виртуалка и пока
> не освободить ее(память),

Кстати, мысль: если именно _падает, может она shared mem не освобождает. -> искать в инетах, как shared смотреть и, может даже, освобождать. Ну, лимиты shmem смотреть, уменьшать, увеличивать?...

> пока ребутом, то не[ ]запускается, ругаясь на отсутствие памяти.

А точно "slab" растёт?...

> показываю строки с самыми большими значениями в поле <objsize>
> size-524288(DMA)       0    
>  0 524288    1  128 : tunables

Мне _кажется_ 2 и 3 колонки. которые *num, ==0, значит, объектов таких нет, значит все эти строки занимают "0" памяти. То есть, мне так показалось, что они, пожалуй, не самые |*)большие.

> и так далее...  если будет нудно, то могу выложить полный вывод....

И так :))уже.

Ну, покажи

# awk </proc/slabinfo '{if(FNR>1&&$6~/^[1-9][0-9]*$/){m+=(s=$3/$5*$6)}else s=999999;printf "%d %s\n",s,$0}END{print m}'|sort -nr|head -10

Ответить | Правка | ^ к родителю #4 | Наверх | Cообщить модератору

6. "Linux и оперативная память"  +/
Сообщение от КуКу (ok) on 04-Дек-12, 20:46 
$ awk </proc/slabinfo '{if(FNR>1&&$6~/^[1-9][0-9]*$/){m+=(s=$3/$5*$6)}else s=999999;printf "%d %s\n",s,$0}END{print m}'|sort -nr|head -10
2148593
1660916 size-1024         6643423 6643664   1024    4    1 : tunables   54   27    8 : slabdata 1660916 1660916      4
999999 slabinfo - version: 2.1
999999 # name            <active_objs> <num_objs> <objsize> <objperslab> <pagesperslab> : tunables <limit> <batchcount> <sharedfactor> : slabdata <active_slabs> <num_slabs> <sharedavail>
443177 skbuff_head_cache 6645239 6647655    256   15    1 : tunables  120   60    8 : slabdata 443177 443177     36
28391 size-64           1673615 1675069     64   59    1 : tunables  120   60    8 : slabdata  28391  28391      0
2976 kmem_cache           186    186  32896    1   16 : tunables    8    4    0 : slabdata    186    186      0
2237 size-2048           4464   4474   2048    2    1 : tunables   24   12    8 : slabdata   2237   2237      0
2122 size-8192           1061   1061   8192    1    2 : tunables    8    4    0 : slabdata   1061   1061      0
936 ip_dst_cache        9290   9360    384   10    1 : tunables   54   27    8 : slabdata    936    936      0
Ответить | Правка | ^ к родителю #5 | Наверх | Cообщить модератору

7. "Linux и оперативная память"  +/
Сообщение от Andrey Mitrofanov on 04-Дек-12, 21:16 
> 2148593
> 1660916 size-1024         6643423 6643664
>   1024    4    1
> : tunables   54   27    

Из 8.2G (=новая первая колонка - в страницах, они по 4К) выделенных в ядре ч-з slab 6.3G выделены "кусками" от 513 до 1024 б. Как-то так.

Гугли почему-то говорят мне про утечки памяти, но я не знаю половины ответа, поэтому...

...
1.69G - в каких-то skbuff_head_cache. Тоже ничего не говорит.

Ответить | Правка | ^ к родителю #6 | Наверх | Cообщить модератору

Архив | Удалить

Рекомендовать для помещения в FAQ | Индекс форумов | Темы | Пред. тема | След. тема




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2025 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру