oio11: (Default)
[personal profile] oio11
Linux, кто съел всю память?
04.06.2012
Столкнулся с проблемой, а точнее, некоторым моим не пониманием работы Linux систем. Зайдя на один из серверов я увидел следующее:
1
# top

В этой картине меня привлекло значение потребляемой памяти. А именно написано, что из 16 Гб оперативки используется 14 Гб. Но на сервере крутится всего один маленький сайтик, и он не может съедать столько памяти...

Дальше я проверил этот результат командой:

1
free -m
и получил такую же картину:

Это было очень подозрительно.. Чтобы определить какие процессы, сколько съедают памяти я использовал следующую команду (описание тут: Как узнать какой процесс ест больше всего памяти в Linux):
1
ps -eo size,pid,user,command | awk '{ hr=$1/1024 ; printf("%13.6f Mb ",hr) } { for ( x=4 ; x<=NF ; x++ ) { printf("%s ",$x) } print "" }' | sort
Результатом, я остался не доволен, потому что, в совокупности все процессы, съедали, что-то около 2-х Гб:
1
2
3
4
5
6
7
8
9
10
11
12
...
1157.269531 Mb /usr/sbin/mysqld
12.566406 Mb cpdavd - accepting connections
...
222.468750 Mb /sbin/rsyslogd -i /var/run/syslogd.pid -c 4
...
48.109375 Mb /usr/local/bin/spamd
48.683594 Mb spamd child
...
622.593750 Mb /usr/sbin/named -u named
74.328125 Mb auditd
...
Тогда я полез в поиск и нашел скрипт ps_mem.py, который подсчитывает кол-во памяти по процессам. Скрипт написан на питоне, пост про него тут: Подсчет потребляемой памяти процеcсами в Linux. Но он так же показывал, что все вместе процессы, не потребляют столько памяти.
Дальше я подумал, что проблема именно с ядром, и полез искать инфу, по ключевику: "linux ram size is not correct", долго ли коротко, но нашел я вот такой ответ, на одно из сообщений:
As I understand it, on Linux 'used' memory is split into 'active' and 'inactive'.
Active memory is memory which is currently allocated to a process and in use by it.
Inactive is memory that has been allocated to a process but is no longer in use by it (it has been freed). The allocator puts this memory on one side for later use, but doesn't empty it. If the same data that is in that memory block is requested again it just re-allocates that memory block to the process. If a block of memory is requested and there is no 'clean' memory left it starts re-allocating this 'dirty' memory.
Examining /proc/meminfo can show you how much of your 'used' memory is active and how much is inactive.
Вкратце написано следующее: в Linux системах память делится на активную и неактивную.
Неактивная это та, что выделена процессу, но больше не используется им.
Allocator ( выделятор :) ) оставляет эту память для дальнейшего использования, и не очищает её. Если данные расположенные в этой памяти понадобятся он их сразу вернет. Если же другому процессу, потребуется эта память и не будет "чистой памяти", то тогда будет распределятся неактивная память.
Другими словами, используется оптимизация, и данные без надобности не выкидываются из памяти, но при необходимости, эта память будет выделена процессам. Отсюда делаем соответствующий вывод: если большая часть памяти, является неактивной, то, все ок.
Проверить кол-во неактивной памяти можно так:
1
# cat /proc/meminfo
Результат работы:
1
2
3
4
5
6
7
MemTotal: 16376892 kB
MemFree: 2200444 kB
Buffers: 480652 kB
Cached: 12708152 kB
SwapCached: 0 kB
Active: 1958840 kB
Inactive: 11521124 kB
Как видим, 11 Гб (11521124 kB), являются неактивной памятью и 1.95 Гб (1958840 kB), реально используется, т.е. является активной. Значит, в моем случае, избыточного потребления нет.
Подводя итог, хочу заметить, что довольно часто, вся соль проблемы заключается, в недостаточной квалификации прокладки между стулом и монитором и над этим надо работать :)
Напоследок анекдот:

- А у меня друг сломал сервер за пять минут!!!
- Он что, хакер???
- Нет. Он - муд@к!!!

:)

Автор: | Теги:

http://www.it-rem.ru/linux-kto-sel-vsyu-pamyat.html
(will be screened)
(will be screened if not validated)
If you don't have an account you can create one now.
HTML doesn't work in the subject.
More info about formatting

If you are unable to use this captcha for any reason, please contact us by email at support@dreamwidth.org

October 2025

S M T W T F S
   1234
567891011
12131415161718
19202122 232425
262728293031 

Most Popular Tags

Style Credit

Expand Cut Tags

No cut tags
Page generated Feb. 4th, 2026 11:18 am
Powered by Dreamwidth Studios