Назад | Перейти на главную страницу

Почему «верхний» указывает на низкое использование памяти, а «свободный» указывает на высокое использование памяти?

Почему «верхний» указывает на низкое использование памяти, а «свободный» указывает на высокое использование памяти?

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.