Заметил, что после перезапуска системы web-сервера неуклонно уменьшается кол-во свободной физической памяти (с 4Гб до 50Мб). При этом swap не используется, а top и ps показывают лишь 0,8% на MySQL.Вопрос: как можно просмотреть ЧТО и КАК реально (в байтах) жрет память?
>Заметил, что после перезапуска системы web-сервера неуклонно уменьшается кол-во свободной физической памяти
>(с 4Гб до 50Мб). При этом swap не используется, а top
>и ps показывают лишь 0,8% на MySQL.
>
>Вопрос: как можно просмотреть ЧТО и КАК реально (в байтах) жрет память?
>
Если кратко - это нормальное поведение ОС. Эээ задача ОС - не держать максимально возможный обьем свободной памяти для тебя, а эффективно делать свое дело.Напрягаться надо когда растет своп.
>Если кратко - это нормальное поведение ОС. Эээ задача ОС - не
>держать максимально возможный обьем свободной памяти для тебя, а эффективно делать
>свое дело.
>
>Напрягаться надо когда растет своп.
Спасибо, но очень хотелось бы конкретно знать, какой процесс скалько ест!
Подскажите, пожалуйста, необходимые команды!..
free
top
>free
>topСпасибо за ответ, но если бы всё было так просто, то я бы не задавал "справочных" вопросов:
Меня интересует способ определения расхода памяти на КАЖДЫЙ процесс и не в мнимых процентах (как в top), а в реальных байтах!
Неужели никто никогда не задавался таким вопросом?!
А Вы понимаете, как вообще ядро с памятью работает?
man top
...
2. FIELDS / Columns
2a. DESCRIPTIONS of Fields
o: VIRT -- Virtual Image (kb)
The total amount of virtual memory used by the task. It includes all code, data and
shared libraries plus pages that have been swapped out.VIRT = SWAP + RES.
p: SWAP -- Swapped size (kb)
The swapped out portion of a task's total virtual memory image.q: RES -- Resident size (kb)
The non-swapped physical memory a task has used.RES = CODE + DATA.
r: CODE -- Code size (kb)
The amount of physical memory devoted to executable code, also known as the 'text resi-
dent set' size or TRS.s: DATA -- Data+Stack size (kb)
The amount of physical memory devoted to other than executable code, also known as the
'data resident set' size or DRS.t: SHR -- Shared Mem size (kb)
The amount of shared memory used by a task. It simply reflects memory that could be
potentially shared with other processes.
...Выбирайте, какой Вам нужен.
Это зря. щас вопрос будет, почему в сумме не получается общего кол-ва памяти на сервере
>Это зря. щас вопрос будет, почему в сумме не получается общего кол-ва
>памяти на сервереСпасибо за доверие!
Почему "в сумме не получается общего кол-ва памяти" я могу понять! ;-)
Я не могу понять (как я писал в самом начале), почему память (физическая -- не swap) постоянно, но уверенно уменьшается.Я так понимаю, никто (даже представляющие, как ядро работает с памятью) не может посоветовать никакой утилиты контроля расхода памяти, кроме top'а?
Знаете, что такое дисковый кэш? Так вот, объясняя на пальцах, вся память (сколько ядро может) отжирается под кэш (называется buffers/cache). Для того, чтобы не дро^H^H^H обращаться к винту на каждый чих. Если кому-то понадобился кусок памяти, буфера/кэш уменьшаются, высвободившийся кусок отдаётся приложению. Если это не удаётся (нечего освобождать или запрошено слишком много), система полезет в своп.Таким образом, поводим итог. Система работает правильно (памяти достаточно), если:
1. Free -- немного.
2. Buffers/Cache -- почти вся физическая память.
3. Swap -- либо 0, либо ОЧЕНЬ мало.P.S. Забудьте досово-виндовые привычки про то, что должно быть много free-памяти. Её должно быть мало.
>Знаете, что такое дисковый кэш? Так вот, объясняя на пальцах, вся память
>(сколько ядро может) отжирается под кэш (называется buffers/cache).Ok!
А можно ли убедиться в том, что память ДЕЙСТВИТЕЛЬНО сожрана кэшем?
См. в выдаче команды free. Так и называется buffers/cache.
А у меня нет комманды free. Это надо доставлять что-то?
>А у меня нет комманды free. Это надо доставлять что-то?тогда смотрите в TOP!
пример:
Mem: 33M Active, 47M Inact, 25M Wired, 6292K Cache, 22M Buf, 5724K Free
Swap: 1024M Total, 28K Used, 1024M Free
>См. в выдаче команды free. Так и называется buffers/cache.Спасибо большое!
А расход памяти по отдельным процессам, я понимаю, -- глухо?..
>А расход памяти по отдельным процессам, я понимаю, -- глухо?..Вы что, издеваетесь? Вас уже три или четыре раза адресовали к утилите top,
прочтите наконец ее man! А заодно и man ps, вдумчиво и внимательно. И тогда
у вас перестанут возникать (вы уж не сердитесь) глупые вопросы вроде этого.
>>А расход памяти по отдельным процессам, я понимаю, -- глухо?..
>
>Вы что, издеваетесь? Вас уже три или четыре раза адресовали к утилите
>top,
>прочтите наконец ее man! А заодно и man ps, вдумчиво и внимательно.
>И тогда
>у вас перестанут возникать (вы уж не сердитесь) глупые вопросы вроде этого.
>У меня такое же чувство, что надо мной издеваются! ;-)
Я писал в топике: top выдает 0,8% на mysql, остальные процессы -- 0,0%!!!
Если всех присутствующих это полностью удовлетворяет, когда от 4Гб физической памяти осталось меньше 50Мб, тогда я перестаю "издеваться" и буду пользоваться панацеей для всевозможной статистики -- программой top!..
>>>А расход памяти по отдельным процессам, я понимаю, -- глухо?..
>>
>>Вы что, издеваетесь? Вас уже три или четыре раза адресовали к утилите
>>top,
>>прочтите наконец ее man! А заодно и man ps, вдумчиво и внимательно.
>>И тогда
>>у вас перестанут возникать (вы уж не сердитесь) глупые вопросы вроде >этого.
>>
>
>У меня такое же чувство, что надо мной издеваются! ;-)
>Я писал в топике: top выдает 0,8% на mysql, остальные процессы --
>0,0%!!!
>Если всех присутствующих это полностью удовлетворяет, когда от 4Гб >физической памяти осталось
>меньше 50Мб, тогда я перестаю "издеваться" и буду пользоваться панацеей >для
>всевозможной статистики -- программой top!..
Если не ошибаюсь 0.8% это не размер памяти, которую потребляет тот или иной процесс, а процессорное время. Или я не прав?
А ты выложи сюда полностью весь вывод команды top , посмотрим.
Автор, ты уже достал. Даже систему свою не называешь.
А теперь разуй глаза.Linux
$ top
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
10231 mysql 15 0 806m 661m 4808 S 0.7 32.6 10126:14 mysqldmysql жрет 806 Мб.
FreeBSD
$ top
PID USERNAME PRI NICE SIZE RES STATE C TIME WCPU CPU COMMAND
22689 mysql 20 0 301M 266M kserel 3 44.0H 3.47% 3.47% mysqldmysql жрет 301 Мб.
Я не хочу вызывать раздражение, но дело принципа! (неужели top -- это всё, что есть в системе для статистики???)Система RedHat 9, вывод команды top:
103 processes: 102 sleeping, 1 running, 0 zombie, 0 stopped
CPU0 states: 1.0% user 0.0% system 0.0% nice 1.0% iowait 97.0% idle
CPU1 states: 0.0% user 0.0% system 0.0% nice 0.0% iowait 100.0% idle
CPU2 states: 0.0% user 0.0% system 0.0% nice 0.0% iowait 100.0% idle
CPU3 states: 0.0% user 0.0% system 0.0% nice 0.0% iowait 100.0% idle
Mem: 4640568k av, 4583736k used, 56832k free, 0k shrd, 381600k buff
3085004k actv, 0k in_d, 73096k in_c
Swap: 2040244k av, 0k used, 2040244k free 3885300k cachedPID USER PRI NI SIZE RSS SHARE STAT %CPU %MEM TIME CPU COMMAND
1667 mysql 15 0 67540 65M 2020 S 0.1 1.4 11:13 1 mysqld
1 root 15 0 476 476 420 S 0.0 0.0 0:02 3 init
2 root RT 0 0 0 0 SW 0.0 0.0 0:00 0 migration/0
3 root RT 0 0 0 0 SW 0.0 0.0 0:00 1 migration/1
4 root RT 0 0 0 0 SW 0.0 0.0 0:00 2 migration/2
5 root RT 0 0 0 0 SW 0.0 0.0 0:00 3 migration/3
6 root 15 0 0 0 0 SW 0.0 0.0 0:00 0 keventd
7 root 34 19 0 0 0 SWN 0.0 0.0 0:00 0 ksoftirqd/0
8 root 39 19 0 0 0 SWN 0.0 0.0 0:00 1 ksoftirqd/1
9 root 34 19 0 0 0 SWN 0.0 0.0 0:00 2 ksoftirqd/2
10 root 34 19 0 0 0 SWN 0.0 0.0 0:00 3 ksoftirqd/3
13 root 16 0 0 0 0 SW 0.0 0.0 0:00 2 bdflush
11 root 15 0 0 0 0 SW 0.0 0.0 0:02 1 kswapd
12 root 15 0 0 0 0 SW 0.0 0.0 0:01 1 kscand
14 root 15 0 0 0 0 SW 0.0 0.0 0:12 2 kupdated
Что и требовалось доказать. mysql жрёт 67540 килобайт памяти. Остальное в буферах (381600k) и кэше (3885300k). Своп не используется. Как и должно быть.Не мешайте системе работать. ;-)
>Что и требовалось доказать. mysql жрёт 67540 килобайт памяти. Остальное в буферах
>(381600k) и кэше (3885300k). Своп не используется. Как и должно быть.
>
>
>Не мешайте системе работать. ;-)Ok!
Спасибо большое!... просто думал есть средства по-проще top'а...
Куда уж проще?!
>... просто думал есть средства по-проще top'а...Насчёт проще - не знаю. Есть тупее: man proc.
>>См. в выдаче команды free. Так и называется buffers/cache.
>
>Спасибо большое!
>
>А расход памяти по отдельным процессам, я понимаю, -- глухо?..pmap PID