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

Какая связь между использованием ожидания ввода-вывода и средней нагрузкой

При средней нагрузке используются процессы, которые запущены, могут быть выполнены или находятся в состоянии непрерывного сна. Так соответствуют ли процессы в состоянии непрерывного сна% wa в соответствии с командой top? Оба относятся к потокам, ожидающим ввода-вывода, поэтому кажется интуитивно понятным предположить, что если один увеличивается, другой тоже.

Однако я наблюдаю прямо противоположное. % wait не увеличивается,% простоя высокий и средняя нагрузка также высока. Я читал другие вопросы по этому поводу, но я не нашел удовлетворительного ответа, потому что они не объясняют такое поведение.

Явное увеличение ЦП не поможет, потому что в очереди есть задачи, которые ЦП не берет.

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

Эта ситуация немного иная. Время простоя ЦП велико, средняя нагрузка высокая (часто вдвое больше ЦП), дискового ввода-вывода нет, поэтому использование свопа, некоторый сетевой ввод-вывод. В непрерывном спящем режиме нет процессов, очередь выполнения часто поднимается вверх. Но как процессор все еще простаивает? Разве я не должен ожидать, что процессор будет загружен на 100%? Дело в том, что большое количество задач не может быть загружено на ЦП, потому что они ждут в сети (или что-то еще?)? Разумно предположить, что каждая из этих задач потребляет очень мало времени процессора. Это правильно? Что в этом случае является узким местом? Можно ли сказать, что увеличение ЦП не поможет? Как мне узнать, что настроить или какие ресурсы увеличить, чтобы снизить среднюю нагрузку?

sar -n TCP,ETCP,DEV 1 сар

netstat количество подключений netstat

iostat iostat

vmstat vmstat

uptime время безотказной работы

top верхняя

nicstat nicstat

(Предполагается, что Linux, хотя общая концепция может быть применена к другим операционным системам.)

Рабочую нагрузку нельзя описать только средней нагрузкой и% iowait. Это показатели, которые суммируют задачи только в определенных состояниях. Количество запускаемых и непрерываемых, простоя и невыполненных операций ввода-вывода соответственно.

У вас может быть ситуация, когда есть задачи в рабочем состоянии, несколько циклов простоя ЦП, но не простаивают при вводе-выводе. Представьте себе несколько загруженный веб-сервер с 200 рабочими процессами, работающими на двух процессорах. Средняя нагрузка около 1, iowait около 0. Много задач, не много работы каждая, и еще меньше времени CPU простаивает, но ожидает на диске.

Если бы эта гипотетическая виртуальная машина веб-сервера была перенесена в реальном времени, ее задержка памяти и доступное время процессора могли бы ненадолго пострадать. Симптомом может быть более высокая средняя нагрузка, но это не будет стимулом для iowait.

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