Почему «верхний» указывает на низкое использование памяти, а «свободный» указывает на высокое использование памяти?
Mem: 262144k total, 225708k used, 36436k free, 47948k buffers
Swap: 262136k total, 40k used, 262096k free, 110704k cached
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
1652 root 15 0 79456 14m 1728 S 0.0 5.6 0:00.02 miniserv.pl
3544 root 15 0 87920 3356 2584 R 0.0 1.3 0:00.01 sshd
3707 root 16 0 86704 3104 2416 S 0.0 1.2 0:00.00 sshd
3708 sshd 15 0 61864 1452 872 S 0.0 0.6 0:00.00 sshd
3548 root 16 0 10872 1432 1116 S 0.0 0.5 0:00.00 bash
1908 root 15 0 10876 1392 1072 S 0.0 0.5 0:00.00 sh
918 root 15 0 60520 1204 664 S 0.0 0.5 0:00.07 sshd
3624 root 15 0 12584 1180 920 R 0.0 0.5 0:00.00 top
926 root 18 0 19672 1152 576 S 0.0 0.4 0:00.00 crond
1 root 15 0 10324 704 588 S 0.0 0.3 0:00.02 init
311 root 16 -4 12580 704 388 S 0.0 0.3 0:00.06 udevd
874 root 16 0 5884 592 472 S 0.0 0.2 0:00.06 syslogd
877 root 18 0 3780 420 336 S 0.0 0.2 0:00.00 klogd
Общее использование MEM = 12,1%
Однако из 262 Мбайт использовано 226 Мбайт, а свободно 36 Мбайт, т.е. 86,25% использовано.
Даже с учетом свопа общая память 262 мб * 2 = 524 мб. Если используется 226 МБ, используется 43,12%. Оба они намного выше, чем фактически обработанные, указанные в топе.
Сервер представляет собой свежий VPS на 256 МБ под управлением CentOS 5.2 - на него еще ничего не установлено. Запуск webadmin; т.е. нет Plesk.
Этот вопрос в основном касается противоречивой информации, которую, кажется, дает top; но мне также интересно, является ли такое использование памяти нормальным для сервера, на котором не выполняются какие-либо приложения, особенно интенсивно использующие память. Я собираюсь установить Apache / Ruby EE / Passenger; однако, если использование памяти уже настолько велико, я не уверен, насколько хорошо он с этим справится.
Сверху, это цифра в %MEM
столбец, подсчитывает количество RSS
память (размер резидентного сегмента, в основном страницы в памяти, содержащие реальные данные) в процентах от общей физической памяти на вашем компьютере или VPS.
С другой стороны, свободными считаются только те страницы физической памяти, на которых нет данных, и которые не были назначены буферам, кешу или ядру. В Unix-подобной операционной системе ОС изо всех сил старается сохранить это число как можно меньше, используя свободные страницы для дискового кеша. Единственный случай, когда у вас, вероятно, будет высокое значение свободной памяти, - это сразу после загрузки вашего компьютера или если вы закроете программу, которая потребляла большой объем физической памяти.
Это нормальное использование памяти? Краткий ответ: да. Для программ Unix типично выделять (то есть запрашивать у ОС) значительно больше памяти, чем они могли бы использовать. Если вы посмотрите на VSS
столбец, для перечисленных процессов общее количество превышает 463 МБ. Это потому
glibc
Выяснить использование памяти процессами - это больше искусство, чем наука. ИМХО, см. Обсуждения на http://lwn.net. Мой совет - внимательно следить за iostat -xm
и убедитесь, что ваша машина не сильно меняет местами.
В дополнение к ответу Дэйва Чейни:
Общее использование памяти за вычетом буферов и кеша (159 МБ) составляет ~ 67 МБ и 67/524 МБ ~ 12%. Поскольку для запуска процессов требуется больше памяти, система автоматически очищает старый кеш и выделяет его.
Если вы работаете бесплатно, вы получите представление о том, сколько памяти фактически используется запущенными процессами и что фактически доступно.
$ free -m
total used free shared buffers cached
Mem: 247 218 29 0 46 96
-/+ buffers/cache: 74 172
Swap: 556 0 556
Интересующая вас строка - это - / + buffers / cache
Вероятно, вы обнаружите, что это не все процессы, которые выполняются на вашем компьютере - только первые 13, отсортированные по использованию памяти.
Если вы запустите «ps», вы увидите все запущенные процессы, которые в стандартной версии Ubuntu - 109.