PDA

Bekijk de volledige versie : Использование оперативной памяти



AndrewStar
23-05-2009, 00:59
Как узнать под что конкретно используется память?
Сейчас у меня используется 29 мегабайт из 30.


$ free
total used free shared buffers
Mem: 30164 29280 884 0 2000
Swap: 499992 2732 497260
Total: 530156 32012 498144

Хотя ps в сумме показывает
12м.


$ ps | awk 'BEGIN {sum = 0} {sum += $3} END {print sum}'
12544


Вся система находится на жестом диске, так что память должна быть разгружена от системных файлов


$ mount
/dev/scsi/host0/bus0/target0/lun0/part2 on / type ext3 (ro)
none on /dev type devfs (rw)
proc on /proc type proc (rw)
ramfs on /tmp type ramfs (rw)
usbfs on /proc/bus/usb type usbfs (rw)
/dev/scsi/host0/bus0/target0/lun0/part1 on /opt type ext3 (rw,noatime)


Так куда же делась память?

Причем после перезагрузки свободно становится около 12 мегабайт, но стоит как-то сильно заюзать роутер буквально на 20 секунд, например так


$ dd if=/dev/zero of=/opt/aaa bs=1024 count=500000

и после это вся память куда-то девается и не возвращается, до перезагрузки...

Облазил форум, ответа на этот вопрос не нашел...

al37919
23-05-2009, 05:24
пользуйте ps из procps. Будет доступна еще одна колонка cached. Она многое объяснит.

AndrewStar
23-05-2009, 17:45
пользуйте ps из procps. Будет доступна еще одна колонка cached. Она многое объяснит.
Спасибо!
А можно ли как-то чистить кэш?

Nebulosa
23-05-2009, 19:37
Спасибо!
А можно ли как-то чистить кэш?

Чистить кеш в linux это оксюморон. В linux работа с памятью идет по другому нежели в windows - если память закеширована это не значит что она забита мусором, это значит что для выделения памяти программам этот кусок памяти будут мгновенно отдаваться под их нужды, без иницилизации. Т.е. ядро всегда кеширует всю имеющуюся память, для того чтобы обеспечить нормальную работу программам.

Поставьте программу htop она показывает по-человески размер реально занимаемой памяти.