Вопрос: Как понять использование памяти и средний уровень загрузки в Linux-сервере


Я использую сервер Linux, который имеет 128 ГБ памяти и 24 ядра. Я использую верхнюю часть, чтобы увидеть, сколько она используется. Его выход вставляется в конце сообщения. Вот два вопроса:

(1) Я вижу, что каждый из запущенных процессов занимает очень небольшой процент памяти (% MEM не более 0,2%, а всего всего 0,0%), но как общая память почти используется, как в четвертой строке вывода ( «Mem: 130766620k, 130161072k, 605548k бесплатно, 919300k буферы»)? Сумма использованного процента памяти над всеми процессами вряд ли достигнет почти 100%, не так ли?

(2) как понять среднюю нагрузку по первой строке («средняя загрузка: 14.04, 14.02, 14.00»)?

Спасибо и приветствую!

Редактировать:

Благодаря!

Мне также очень нравится слышать некоторые грубые цифры на основе использованного процента памяти, чтобы определить, сильно ли загружен сервер, поскольку я однажды стал тем, кто переполнял сервер, не понимая текущего нагрузки.

Является ли swap почти таким же, как память? Например, когда память и своп почти одинакового размера, если память почти исчерпана, но своп по-прежнему в значительной степени свободен, могу ли я просто просмотреть его, как если бы использованный процент памяти + swap все еще не был высоким и запускал другие новые процессы?

Как бы вы рассматривали использование процессора или памяти (или памяти + своп)? Вы беспокоитесь, если любой из них достигнет слишком высокого уровня или того и другого?

Выход сверху:

$ top

 
наверх - 12:45:33 до 19 дней, 23:11, 18 пользователей, средний нагрузка: 14.04, 14.02, 14.00
Задачи: 484 всего, 12 бегающих, 472 сна, 0 остановлено, 0 зомби
Cpu (ы): 36.7% us, 19.7% sy, 0.0% ni, 43.6% id, 0.0% wa, 0.0% hi, 0.0% si, 0.0% st
Mem: 130766620k всего, 130161072k б / у, 605548k бесплатно, 919300k буферы
Обмен: 63111312k всего, 500556k б / у, 62610756k бесплатно, 124437752k cached

  PID USER PR NI VIRT RES SHR S% CPU% MEM TIME + COMMAND
 6529 sanchez 18 -2 1075m 219m 13m S 100 0,2 13760: 23 MATLAB
13210 тимофеев 18 -2 48336 37 м 1216 R 100 0,0 3: 56,75 абсурд
13888 timothy 18 -2 48336 37m 1204 R 100 0.0 2: 04.89 абсурд
14542 timothy 18 -2 48336 37m 1196 R 100 0.0 1: 08.34 абсурд
14544 timothy 18 -2 2888 2076 400 R 100 0.0 1: 06.14 gatherData
 6183 sanchez 18 -2 1133m 195m 13m S 100 0,2 13676: 04 MATLAB
 6795 sanchez 18 -2 1079m 210m 13m S 100 0,2 13734: 26 MATLAB
10178 timothy 18 -2 48336 37m 1204 R 100 0.0 11: 33.93 абсурд
12438 тимофеев 18 -2 48336 37 м 1216 R 100 0,0 5: 38,17 абсурд
13661 timothy 18 -2 48336 37m 1216 R 100 0.0 2: 44.13 абсурд
14098 тимофеев 18 -2 48336 37 м 1204 R 100 0,0 1: 58,31 абсурд
14335 timothy 18 -2 48336 37m 1196 R 100 0.0 1: 08.93 абсурд
14765 тимофеев 18 -2 48336 37 м 1196 R 99 0,0 0: 32,57 абсурд
13445 timothy 18 -2 48336 37m 1216 R 99 0.0 3: 01.37 абсурд
28990 корень 20 0 0 0 0 S 2 0.0 65: 50.21 pdflush
12141 tim 18 -2 19380 1660 1024 R 1 0.0 0: 04.04 наверх
 1240 корень 15 -5 0 0 0 S 0 0.0 16: 07.11 kjournald
 9019 корень 20 0 296 м 4460 2616 S 0 0,0 82: 19,51 kdm_greet
    1 корень 20 0 4028 728 592 S 0 0,0 0: 03,11 init
    2 корень 15 -5 0 0 0 S 0 0.0 0: 00.00 kthreadd
    3 корень RT -5 0 0 0 S 0 0.0 0: 01.01 миграция / 0
    4 корень 15 -5 0 0 0 S 0 0.0 0: 08.13 ksoftirqd / 0
    5 root RT -5 0 0 0 S 0 0.0 0: 00.00 watchdog / 0
    6 корень RT -5 0 0 0 S 0 0.0 17: 27.31 миграция / 1
    7 root 15 -5 0 0 0 S 0 0.0 0: 01.21 ksoftirqd / 1
    8 root RT -5 0 0 0 S 0 0.0 0: 00.00 watchdog / 1
    9 корень RT -5 0 0 0 S 0 0.0 10: 02.56 миграция / 2
   10 root 15 -5 0 0 0 S 0 0.0 0: 00.34 ksoftirqd / 2
   11 root RT -5 0 0 0 S 0 0.0 0: 00.00 watchdog / 2
   12 корень RT -5 0 0 0 S 0 0.0 4: 29.53 миграция / 3
   13 корень 15 -5 0 0 0 S 0 0.0 0: 00.34 ksoftirqd / 3

54
2017-09-22 16:59


Источник


См. Это для хорошего ответа о памяти. serverfault.com/questions/38065/#38074 - Zoredache


Ответы:


(1) Я вижу, что каждый из запущенных процессов занимает очень небольшой процент памяти (% MEM не более 0,2%, а всего всего 0,0%), но как общая память почти используется, как в четвертой строке вывода ( «Mem: 130766620k, 130161072k, 605548k бесплатно, 919300k буферы»)? Сумма использованного процента памяти над всеми процессами вряд ли достигнет почти 100%, не так ли?

Чтобы узнать, сколько памяти вы используете, запустите free -m, Он будет обеспечивать вывод, например:

             общее количество использованных свободных буферов в кэше
Mem: 2012 1923 88 0 91 515
- / + буферы / кеш: 1316 695
Обмен: 3153 256 2896

Значение верхней строки «used» (1923) почти всегда будет соответствовать совпадению значения верхней строки (2012). Поскольку Linux любит использовать любую свободную память для кэширования блоков диска (515).

Ключ, используемый для просмотра, - это значение используемого буфера / кеша (1316). Это то, сколько пространства используются ваши приложения. Для достижения максимальной производительности это число должно быть меньше вашей общей (2012) памяти. Чтобы избежать ошибок в памяти, она должна быть меньше общей памяти (2012) и места подкачки (3153).

Если вы хотите быстро узнать, сколько свободного места памяти, посмотрите на свободное значение строки буфера / кеша (695). Это общая память (2012) - фактическая используемая (1316). (2012 - 1316 = 696, а не 695, это будет просто вопрос округления)

(2) как понять среднюю нагрузку по первой строке («средняя загрузка: 14.04, 14.02, 14.00»)?

Эта статья о среднем загрузке использует приятную аналогию трафика и является лучшей из тех, что я нашел до сих пор: Общие сведения о загрузке ЦП Linux - когда вы должны беспокоиться?, В вашем случае, как указывали люди:

В многопроцессорной системе загрузка зависит от количества доступных процессорных ядер. Знак «100% использования» составляет 1,00 в одноядерной системе, 2,00, на двухъядерном процессоре, 4,00 на четырехъядерном процессоре и т. Д.

Таким образом, при средней нагрузке 14,00 и 24 ядрах ваш сервер далеко не перегружен.


54
2017-09-22 21:33



+1 интересная ссылка, спасибо! - Marco Demaio


Unix-подобные системы, включая Linux, предназначены для максимально эффективного использования доступной оперативной памяти. В общих чертах есть 3 состояния, каждый МБ ОЗУ может находиться в:

  1. Свободно
  2. Используется процессом
  3. Используется для буферов

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

Ваш средний вопрос о загрузке немного интереснее, поскольку его легко можно интерпретировать неправильно. Для полной истории см. Это Статья в linuxjournal, Лучшее суммирование - это прямая цитата из статьи,

Средневзвешенный расчет лучше всего воспринимать как скользящее среднее из процессов в очереди выполнения Linux, обозначенной как работающая или бесперебойная

Смысл, что вы можете думать о средней нагрузке как (# запущенных процессов) + (# процессов, ожидающих на IO). Помня о том, что в любой момент времени вы можете иметь $ CORE количество выполняемых процессов, я бы сказал, что ваша средняя нагрузка 14 составляет довольно мало.


16
2017-09-22 17:39



Благодаря! Каков используемый процент памяти (или памяти + swap), который считается загруженным и лучше не запускать новые процессы? Вы смотрите на память или память + своп? Используется ли swap, показанный в верхней части размера свопинга? Что касается средней загрузки процессора, измеряете ли вы фактическую нагрузку на «среднее значение нагрузки / число ядер»? Насколько вы считаете, сервер сильно загружен? Спасибо и приветствую! - Tim
Загрузить просто индикатор. Как правило, нагрузка, отличная от ядер, является плохим. Как правило, высокий процент используемой памяти - это плохо. Это не двоичное значение, которое вы можете сказать «это очень хорошо». Если вам не хватает ОЗУ, у вас недостаточно средств для запуска большего количества процессов. Если вы не закончите, у вас будет много. Это очень зависит от специфики вашей ситуации. - Cian


Из sar справочная страница:

       Среднее значение нагрузки рассчитывается как среднее число runnable или
       выполняемые задачи (состояние R) и количество задач в непрерывном режиме
       sleep (состояние D) в течение указанного интервала.

Из uptime справочная страница:

       Средние значения загрузки системы - это среднее число процессов, которые
       в запущенном или непрерывном состоянии. Процесс в текущем состоянии
       либо использует CPU, либо ожидает использования CPU. Процесс в unin-
       прерывистое состояние ожидает некоторого доступа к вводу / выводу, например, ждет диск.
       Средние значения берутся за три временных интервала. Загрузить средние значения
       не нормализуются для количества процессоров в системе,
       возраст 1 означает, что единая система ЦП загружается все время, пока на 4
       Система ЦП означает, что она простаивала в 75% случаев.

4
2017-09-22 17:36





  1. Linux уже некоторое время управляет своей памятью таким образом, что эта линия top в основном бесполезно, обычно сохраняя большую часть памяти компьютера, выделенной для различных целей, когда это не требуется для пользовательского процесса.
  2. Среднее значение нагрузки - это среднее число запущенных процессов или ожидающих запуска. Обычно он имеет сильную отрицательную корреляцию с задержкой / реакцией системы, поэтому вы хотите, чтобы она была как можно меньшей. Так как каждый из ваших процессоров может запускать что-то в любой момент времени, вы, похоже, очень хорошо себя чувствуете в 14.

3
2017-09-22 17:02



Благодаря! Что касается 1, вы имеете в виду, что некоторые процессы не отображаются вверху, а используют много памяти? Или что четвертая строка вывода о памяти («Mem: 130766620k total, 130161072k used, 605548k free, 919300k buffers») вводит в заблуждение, я должен посмотреть на сумму процента памяти, используемую всеми процессами, показанными сверху и в моем случае Могу ли я безопасно запускать некоторые новые процессы, требующие большого объема памяти? - Tim
Как указывали другие ответы, среднее значение нагрузки следует сравнивать с количеством процессоров, поэтому 14 не так много в 24-ядерной системе. Это было бы похоже на 14/24 = 0,58 на одноядерную систему (ну вроде). - David Z
@Tim: Я имею в виду последний. - chaos


Средняя загрузка - отличная вещь. Это позволяет понять, что происходит за пределами 100% использования, в основном: http://en.wikipedia.org/wiki/Load_%28computing%29


0
2017-09-22 20:54