Один из вариантов использования памяти моего Linux-сервера странный.
Насколько я знаю, объем выделенной памяти (Committed_AS в /proc/meminfo или kbcommit в sar -r), чем используемая приложением память, является нормальным. Но выделенная память моего сервера значительно мала.
# кошка /proc/meminfo
Общий объем памяти: 32877480 КБ
МемБесплатно: 3511812 КБ
Буферы: 19364 КБ
Кэшировано: 12080112 КБ
SwapCached: 0 КБ
Активный: 22658640 КБ
Неактивно: 5906936 КБ
Актив(анон): 16460116 КБ
Неактивный (анон): 6652 КБ
Активный (файл): 6198524 КБ
Неактивный (файл): 5900284 КБ
Неизбежный: 0 КБ
Заблокировано: 0 КБ
SwapTotal: 0 КБ
SwapFree: 0 КБ
Грязный: 544 КБ
Обратная запись: 4 КБ
Страницы: 16482208 КБ
Нанесено на карту: 17228 КБ
Шмем: 672 кБ
Слэб: 529344 КБ
SReclaimable: 460220 КБ
SUnreclaim: 69124 КБ
Стек ядра: 12304 КБ
Таблицы страниц: 51412 КБ
NFS_Unstable: 0 КБ
Отказ: 0 КБ
WritebackTmp: 0 КБ
Предел фиксации: 16438740 КБ
Committed_AS: 4484680 КБ
VmallocTotal: 34359738367 КБ
VmallocUsed: 66424 КБ
VmallocChunk: 34359651996 КБ
HardwareCorrupted: 0 kB
AnonHugePages: 15376384 КБ
HugePages_Total: 0
HugePages_Free: 0
HugePages_Rsvd: 0
HugePages_Surp: 0
Огромный размер страницы: 2048 КБ
DirectMap4k: 4096 КБ
DirectMap2M: 2093056 КБ
DirectMap1G: 31457280 КБ
Как видите, Committed_AS занимает около 4,4 ГБ.
Но один из процессов использует более 14 ГБ. Этот процесс не имеет файла mmap или общей памяти.
# pidstat -r 1 1
Linux 2.6.32-696.16.1.el6.x86_64 (appintprdsearch01) 23.08.21 _x86_64_ (8 ЦП)
16:56:34 PID minflt/s majflt/s VSZ RSS %MEM Команда
16:56:35 414 19476,24 0,00 17260248 14356476 43,67 isc_mc
# pmap -x 414 | egrep '^Адрес|^всего'
Адрес Кбайт RSS Сопоставление грязного режима
всего кБ 17268588 14363848 14360208
# pmap -x 414 | grep анон | awk '{s+=$3} END {print s}'
14326736
Интересно, почему используемая память этого процесса не влияет на выделенную память.
Я что-то потерял?
# кошка /etc/системный выпуск
Red Hat Enterprise Linux Server версии 6.8 (Сантьяго)
# uname -r
2.6.32-696.16.1.el6.x86_64
Заранее спасибо!!
РЕДАКТИРОВАТЬ: я попытался показать полный вывод pmap -x, сделанный сегодня. но это 758 строк и превышает лимит сообщений. Итак, вот резюме. И я обнаружил, что его анонимные страницы становятся больше.
# pmap -x 414 | grep -vw анон
414: /usr/local/search/sf-1v530/bin/isc_mc -license /usr/local/search/sf-1v530/license/license.xml -conf ../config/config_mc.xml -pid /usr/local /search/sf-1v530/pid/isc_mc.pid -log /usr/local/search/sf-1v530/log/isc_mc
Адрес Кбайт RSS Сопоставление грязного режима
0000000000400000 4616 1720 0 r-x-- isc_mc
0000000000a81000 1304 716 20 rw--- isc_mc
0000003c54200000 128 108 0 r-x-- ld-2.12.so
0000003c54420000 4 4 4 р---- ld-2.12.so
0000003c54421000 4 4 4 rw--- ld-2.12.so
0000003c54600000 1576 584 0 r-x-- libc-2.12.so
0000003c5478a000 2048 0 0 ----- libc-2.12.so
0000003c5498a000 16 16 8 r---- libc-2.12.so
0000003c5498e000 8 8 8 rw--- libc-2.12.so
0000003c54a00000 92 72 0 r-x-- libpthread-2.12.so
0000003c54a17000 2048 0 0 ----- libpthread-2.12.so
0000003c54c17000 4 4 4 r---- libpthread-2.12.so
0000003c54c18000 4 4 4 rw--- libpthread-2.12.so
0000003c55600000 524 80 0 r-x-- libm-2.12.so
0000003c55683000 2044 0 0 ----- libm-2.12.so
0000003c55882000 4 4 4 r---- libm-2.12.so
0000003c55883000 4 4 4 rw--- libm-2.12.so
0000003c55a00000 84 16 0 r-x-- libz.so.1.2.3
0000003c55a15000 2044 0 0 ----- libz.so.1.2.3
0000003c55c14000 4 4 4 r---- libz.so.1.2.3
0000003c55c15000 4 4 4 rw--- libz.so.1.2.3
0000003c56600000 88 16 0 r-x-- libgcc_s-4.4.7-20120601.so.1
0000003c56616000 2044 0 0 ----- libgcc_s-4.4.7-20120601.so.1
0000003c56815000 4 4 4 rw--- libgcc_s-4.4.7-20120601.so.1
0000003c57200000 928 488 0 r-x-- libstdc++.so.6.0.13
0000003c572e8000 2048 0 0 ----- libstdc++.so.6.0.13
0000003c574e8000 28 28 28 r---- libstdc++.so.6.0.13
0000003c574ef000 8 8 8 rw--- libstdc++.so.6.0.13
00007ffdcbf56000 84 48 48 rw --- [стек]
---------------- ------ ------ ------
всего кБ 18462068 15806748 15802956
Это отсортированный размер аноновской карты и ее количество.
# pmap -x 414 | grep -w сразу | awk '{s[$2]++} END {for (x in s) {print x,s[x]}}' | Сортировать
-РНК 1
254728 1
225520 1
197220 1
196608 1
131480 2
131072 2
124008 1
65740 3
65536 142
65532 5
65528 3
65524 2
65520 1
65512 2
65508 2
65504 3
65500 3
65488 2
65484 5
65480 2
65476 1
65464 2
65456 1
65452 1
65448 2
65440 4
65436 3
65432 3
65428 2
65424 1
65420 28
65412 1
65404 1
65400 1
65372 1
65192 1
65188 1
64804 1
64636 1
63940 1
63912 1
63792 1
63584 1
63408 1
63400 2
63244 1
63008 2
63004 1
61996 1
61848 1
61792 1
61624 1
60976 1
59940 1
58276 1
57736 1
55992 1
52348 1
51212 1
50084 1
40840 1
24696 1
15452 1
14324 1
13188 1
10396 1
10240 1
9544 1
7800 1
7260 1
7064 1
5596 1
4560 1
3912 1
3744 1
3688 1
3540 1
3216 1
2532 1
2528 2
2292 1
2136 2
2128 1
1952 1
1744 1
1624 1
1596 1
1024 169
900 1
732 1
348 1
344 1
164 1
136 1
132 1
124 1
116 28
112 1
108 2
104 3
100 3
96 4
88 2
84 2
80 1
72 2
60 1
56 2
52 5
48 2
36 3
32 3
28 2
24 2
16 3
12 2
8 4
4 179
РЕДАКТИРОВАТЬ: я обратился в службу поддержки Redhat. Боюсь, я не могу получить никакого ответа, так как RHEL6 был EOSed. В любом случае, я опубликую здесь результат.