Jump to content

Нагрузка (вычисления)

(Перенаправлено из загрузки системы )

htop отображает значительную вычислительную нагрузку (вверху справа: средняя нагрузка: )

В UNIX вычислениях системы загрузка является мерой объема вычислительной работы, выполняемой компьютерной системой. представляет Средняя нагрузка собой среднюю нагрузку системы за определенный период времени. Обычно он отображается в виде трех чисел, обозначающих загрузку системы за последние одну, пять и пятнадцать минут.

Расчет нагрузки в стиле Unix

[ редактировать ]

безразмерную метрику из трех чисел «средней нагрузки» Все Unix и Unix-подобные системы генерируют в ядре . Пользователи могут легко запросить текущий результат из оболочки Unix , запустив команду uptime команда:

$ uptime 14:34:03 up 10:43,  4 users,  load average: 0.06, 0.11, 0.09

The w и top команды показывают те же три средних значения нагрузки, что и ряд утилит графического пользовательского интерфейса .

В операционных системах на базе ядра Linux эту информацию можно легко получить, прочитав /proc/loadavg файл.

Для более глубокого изучения такого рода информации в соответствии со стандартом иерархии файловой системы Linux в файле отображается информация, зависящая от архитектуры. /proc/stat. [1] [2] [3]

Неработающий компьютер имеет номер нагрузки 0 (процесс простоя не учитывается). Каждый процесс , использующий ЦП или ожидающий его ( очередь готовности или очередь выполнения ), увеличивает номер загрузки на 1. Каждый завершающийся процесс уменьшает его на 1. Большинство систем UNIX учитывают только процессы, находящиеся в работе (на ЦП) или в работоспособном состоянии (ожидающие ЦП). ) говорится . Однако в Linux также есть процессы, находящиеся в состояниях непрерывного сна (обычно ожидающих активности диска ), что может привести к совершенно другим результатам, если многие процессы остаются заблокированными при вводе-выводе из- за занятости или зависания системы ввода-вывода. [4] Сюда, например, входит блокировка процессов из-за сбоя сервера NFS или слишком медленного носителя (например, USB накопителей 1.x). Такие обстоятельства могут привести к увеличению средней нагрузки, что не отражает фактического увеличения использования ЦП (но все же дает представление о том, как долго пользователям придется ждать).

нагрузки Системы рассчитывают среднее значение как экспоненциально демпфированное/взвешенное скользящее среднее нагрузки числа . Три значения средней нагрузки относятся к последней, пяти и пятнадцати минутам работы системы. [5]

С математической точки зрения, все три значения всегда усредняют всю загрузку системы с момента ее запуска. Все они затухают экспоненциально, но затухают с разной скоростью : они затухают экспоненциально на e через 1, 5 и 15 минут соответственно. Следовательно, 1-минутная средняя нагрузка состоит из 63% (точнее: 1 - 1/ e ) нагрузки с последней минуты и 37% (1/ e ) от средней нагрузки с момента запуска, исключая последнюю минуту. Для средних значений нагрузки за 5 и 15 минут одинаковое соотношение 63%/37% рассчитывается за 5 и 15 минут соответственно. Таким образом, технически неверно, что среднее значение нагрузки за 1 минуту включает только последние 60 секунд активности, поскольку оно включает 37% активности из прошлого, но правильно утверждать, что оно включает в основном последнюю минуту.

Интерпретация

[ редактировать ]

Для однопроцессорных систем, привязанных к ЦП , среднюю нагрузку можно рассматривать как меру использования системы в течение соответствующего периода времени. Для систем с несколькими процессорами необходимо разделить нагрузку на количество процессоров, чтобы получить сопоставимый показатель.

Например, можно интерпретировать среднее значение нагрузки «1,73 0,60 7,98» в однопроцессорной системе как:

  • За последнюю минуту система была перегружена в среднем на 73% (1,73 выполняющихся процесса, так что в среднем 0,73 процесса приходилось ждать своей очереди для однопроцессорной системы).
  • В течение последних 5 минут процессор простаивал в среднем 40% времени.
  • За последние 15 минут система была перегружена в среднем на 698% (7,98 выполняющихся процессов, так что в среднем 6,98 процессам приходилось ждать своей очереди для однопроцессорной системы).

Это означает, что данная система (ЦП, диск, память и т. д.) могла бы справиться со всей работой, запланированной на последнюю минуту, если бы она была в 1,73 раза быстрее.

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

В современных UNIX-системах обработка потоков в зависимости от средней нагрузки различается. Некоторые системы рассматривают потоки как процессы для расчета средней нагрузки: каждый поток, ожидающий запуска, добавляет 1 к нагрузке. Однако другие системы, особенно системы, реализующие так называемую многопоточность M:N , используют другие стратегии, такие как подсчет процесса ровно один раз с целью загрузки (независимо от количества потоков) или подсчет только потоков, открытых в данный момент пользователем. планировщик потоков к ядру, что может зависеть от уровня параллелизма, установленного для процесса. Похоже, что Linux считает каждый поток отдельно, добавляя 1 к нагрузке. [6]

Загрузка ЦП и загрузка ЦП

[ редактировать ]

Сравнительное исследование различных индексов нагрузки, проведенное Феррари и др. [7] сообщили, что информация о загрузке ЦП, основанная на длине очереди ЦП, гораздо лучше справляется с балансировкой нагрузки по сравнению с загрузкой ЦП. Причина, по которой длина очереди ЦП оказалась лучше, вероятно, заключается в том, что когда хост сильно загружен, его загрузка ЦП, вероятно, будет близка к 100%, и он не может отразить точный уровень загрузки. Напротив, длина очереди ЦП может напрямую отражать величину нагрузки на ЦП. Например, две системы, одна с 3, а другая с 6 процессами в очереди, с большой вероятностью будут иметь загрузку, близкую к 100%, хотя они, очевидно, различаются. [ оригинальное исследование? ]

Учёт загрузки процессора

[ редактировать ]

В системах Linux среднее значение нагрузки не рассчитывается для каждого такта, а определяется значением переменной, которая основана на настройке частоты Гц и проверяется на каждом такте. Этот параметр определяет тактовую частоту ядра в герцах (раз в секунду), и по умолчанию он равен 100 для тактов 10 мс. Действия ядра используют это количество тактов для определения времени. В частности, функция timer.c::calc_load(), вычисляющая среднее значение нагрузки, запускается каждый раз. LOAD_FREQ = (5*HZ+1) тиков или примерно каждые пять секунд:

unsigned long avenrun[3];static inline void calc_load(unsigned long ticks){   unsigned long active_tasks; /* fixed-point */   static int count = LOAD_FREQ;   count -= ticks;   if (count < 0) {      count += LOAD_FREQ;      active_tasks = count_active_tasks();      CALC_LOAD(avenrun[0], EXP_1, active_tasks);      CALC_LOAD(avenrun[1], EXP_5, active_tasks);      CALC_LOAD(avenrun[2], EXP_15, active_tasks);   }}

Массив avenrun содержит 1-минутное, 5-минутное и 15-минутное среднее значение. CALC_LOAD Макрос и связанные с ним значения определены в sched.h:

#define FSHIFT   11		/* nr of bits of precision */#define FIXED_1  (1<<FSHIFT)	/* 1.0 as fixed-point */#define LOAD_FREQ (5*HZ+1)	/* 5 sec intervals */#define EXP_1  1884		/* 1/exp(5sec/1min) as fixed-point */#define EXP_5  2014		/* 1/exp(5sec/5min) */#define EXP_15 2037		/* 1/exp(5sec/15min) */#define CALC_LOAD(load,exp,n) \   load *= exp; \   load += n*(FIXED_1-exp); \   load >>= FSHIFT;

«Выборочный» расчет средних значений нагрузки является довольно распространенным явлением; FreeBSD также обновляет значение каждые пять секунд. Интервал обычно считается неточным, чтобы не собирать процессы, запуск которых запланирован на определенный момент. [8]

В сообщении в списке рассылки Linux рассматривается +1 тика недостаточно, чтобы избежать артефактов муара из такой коллекции, и вместо этого предлагается интервал в 4,61 секунды. [9] Это изменение распространено среди ядер системы Android , хотя точное используемое выражение предполагает, что HZ равен 100. [10]

Другие команды производительности системы

[ редактировать ]

Другие команды для оценки производительности системы включают в себя:

  • uptime – надежность системы и средняя нагрузка
  • top – для общего обзора системы
  • vmstat – vmstat сообщает информацию о запущенных или заблокированных процессах, памяти, подкачке, блочном вводе-выводе, ловушках и процессоре.
  • htop – интерактивный просмотрщик процессов
  • dool (ранее dstat), [11] atop – помогает сопоставить все существующие данные о ресурсах для процессов, памяти, подкачки, блочного ввода-вывода, ловушек и активности ЦП.
  • iftop – интерактивный просмотр сетевого трафика для каждого интерфейса
  • nethogs – интерактивный просмотрщик сетевого трафика для каждого процесса
  • iotop – интерактивный просмотрщик ввода/вывода [12]
  • iostat – для хранения статистики ввода/вывода
  • netstat – для сетевой статистики
  • mpstat – для статистики процессора
  • tload — график средней загрузки терминала
  • xload – график средней нагрузки для X
  • /proc/loadavg – текстовый файл, содержащий среднюю нагрузку

См. также

[ редактировать ]
  1. ^ «Загрузка процессора» . Проверено 4 октября 2023 г.
  2. ^ "/прок" . Иерархия файловой системы Linux . Проверено 4 октября 2023 г.
  3. ^ «Разная статистика ядра в /proc/stat» . Проверено 4 октября 2023 г.
  4. ^ «Техническая поддержка Linux: что такое средняя загрузка?» . 23 октября 2008 г.
  5. ^ Уокер, Рэй (1 декабря 2006 г.). «Изучение средней нагрузки» . Linux-журнал . Проверено 13 марта 2012 г.
  6. ^ См . http://serverfault.com/a/524818/27813.
  7. ^ Феррари, Доменико; и Чжоу, Суннянь; « Эмпирическое исследование индексов нагрузки для приложений балансировки нагрузки », Proceedings of Performance '87, 12-й Международный симпозиум по моделированию, измерению и оценке производительности компьютеров, издательство North Holland Publishers, Амстердам, Нидерланды, 1988, стр. 515–528.
  8. ^ «Как рассчитывается средняя нагрузка во FreeBSD?» . Обмен стеками Unix и Linux .
  9. ^ Рипке, Клаус (2011). «Архив Linux-Kernel: LOAD_FREQ (4*HZ+61) позволяет избежать муара загрузки» . lkml.iu.edu . график и патч
  10. ^ «Обновите ядро ​​с загрузкой версии 4.61 · Проблема № 2109 · AOSC-Dev/aosc-os-abbs» . Гитхаб .
  11. ^ Бейкер, Скотт (28 сентября 2022 г.). «dool — совместимый с Python3 клон dstat» . Гитхаб . Проверено 22 ноября 2022 г. ...Даг Вирс прекратил разработку Dstat...
  12. ^ «Iotop(8) — страница руководства Linux» .
[ редактировать ]
Arc.Ask3.Ru: конец переведенного документа.
Arc.Ask3.Ru
Номер скриншота №: 43e3cf7f23e9cbc3f2d695b82b7b5dba__1699773720
URL1:https://arc.ask3.ru/arc/aa/43/ba/43e3cf7f23e9cbc3f2d695b82b7b5dba.html
Заголовок, (Title) документа по адресу, URL1:
Load (computing) - Wikipedia
Данный printscreen веб страницы (снимок веб страницы, скриншот веб страницы), визуально-программная копия документа расположенного по адресу URL1 и сохраненная в файл, имеет: квалифицированную, усовершенствованную (подтверждены: метки времени, валидность сертификата), открепленную ЭЦП (приложена к данному файлу), что может быть использовано для подтверждения содержания и факта существования документа в этот момент времени. Права на данный скриншот принадлежат администрации Ask3.ru, использование в качестве доказательства только с письменного разрешения правообладателя скриншота. Администрация Ask3.ru не несет ответственности за информацию размещенную на данном скриншоте. Права на прочие зарегистрированные элементы любого права, изображенные на снимках принадлежат их владельцам. Качество перевода предоставляется как есть. Любые претензии, иски не могут быть предъявлены. Если вы не согласны с любым пунктом перечисленным выше, вы не можете использовать данный сайт и информация размещенную на нем (сайте/странице), немедленно покиньте данный сайт. В случае нарушения любого пункта перечисленного выше, штраф 55! (Пятьдесят пять факториал, Денежную единицу (имеющую самостоятельную стоимость) можете выбрать самостоятельно, выплаичвается товарами в течение 7 дней с момента нарушения.)