Results (
Russian) 2:
[Copy]Copied!
Что такое "iowait" Подводя итог его в одном предложении, "iowait 'является процент времени CPU находится в режиме ожидания, и есть по крайней мере один I / O в процессе. Каждый процессор может находиться в одном из четырех состояний: пользователь, SYS, в режиме ожидания, iowait. Инструменты измерения производительности, такие как Vmstat, IOSTAT, ЮАР и др печати эти четыре состояния в процентах. Инструмент SAR может распечатать государств, на каждом ЦП основе (флаг -P), но большинство других инструментов распечатать средние значения по всем процессорам. Поскольку эти процентные значения, четыре государственных значения следует добавить до 100%. Инструменты распечатать статистику с помощью счетчиков, что обновления ядра периодически (по AIX, эти государственные CPU счетчики увеличиваются на каждом прерывании (это происходит на 10 миллисекунд, интервалы). При прерывании происходит на процессоре, ядро проверяет процессор на увидеть, если он находится в режиме ожидания или нет. Если это не праздный, ядро затем определяет, является ли инструкция будучи выполнены в этой точке в пространстве пользователя или в пространстве ядра. Если пользователь, то он увеличивает "пользователь" счетчик на единицу. Если инструкция находится в пространстве ядра, то счетчик "SYS" увеличивается на единицу. Если CPU находится в режиме ожидания, Затем ядро определяет, имеется ли по крайней мере один I / O в настоящее время в ходе работы или на локальном диске или дистанционно смонтированном диске ( NFS), который был инициирован с этого CPU. Если есть, то "iowait 'счетчик увеличивается на единицу. Если нет ввода / вывода в движении, что было начато с этого процессора, "простоя" счетчик увеличивается на единицу. Когда производительность инструмента, таких как Vmstat будет вызван, он читает текущие значения этих четырех счетчиков. Тогда он спит на количество секунд заданных пользователем как интервал времени, а затем считывает счетчики снова. Тогда Vmstat будет вычесть предыдущих значений из текущих значений получить значение дельта для этого периода выборки. Поскольку Vmstat знает, что счетчики увеличиваются на каждом тактовом клеща (10 мс), во-вторых, он делит значение дельта каждого счетчика по количеству тактов в выборки периода. Например, если вы запустите "Vmstat 2 ', это делает Vmstat попробовать счетчиков каждые 2 секунды. С тикают часы на 10 мс с интервалом, то есть 100 клещей в секунду или 200 тиков на Vmstat интервале (если интервал значение составляет 2 секунды). Значения дельта каждого счетчика делятся на общее клещей в интервале и умножается на 100, чтобы получить процентное значение в этом интервале. iowait в некоторых случаях может быть показателем не ограничивающий фактор для обработки транзакций, тогда как в других случаях, iowait может полностью бессмысленным. Некоторые примеры здесь, поможет объяснить это. Первый пример является одним где высокие iowait является прямой причиной как проблема производительности. Пример 1: Предположим, что программа должна выполнить сделки от имени пакетного задания. Для каждой сделки, программа будет выполнять некоторые вычисления, которые принимает 10 миллисекунд, а затем делает синхронную запись результатов на диск. Так файла он пишет, был открыт синхронно, а запись не возвращаться, пока I / O не сделал это весь путь к диску. Скажем, дисковая подсистема ли не иметь кэш, и что каждый физический записи I / O принимает 20 мс. Это означает, что программа завершает сделку каждые 30ms. На протяжении 1 секунды (1000 мс), программа может сделать 33 операций (33 TPS). Если эта программа только один работает на системе 1-CPU, то использование CPU будут заняты 1/3 времени и ожидание ввода / вывода остальное время - так 66% iowait и 34% CPU занят. Если подсистема ввода / вывода была улучшена (скажем дисковый кэш добавлено) таким образом, что записи I / O займет всего 1 мс. Это означает, что она занимает 11 мс, чтобы завершить транзакцию, и программа может теперь делать около 90-91 операций в секунду. Здесь iowait время будет около 8%. Обратите внимание, что ниже iowait раз прямо влияет на пропускную способность программы. Пример 2: Допустим, что существует одна программа работает в системе, - давайте предположим, что это "дд" программа, и она читает с диска 4 Кбайт на Время. Давайте предположим, что подпрограмма в "дд" называется основной (), и это вызывает читать (), чтобы сделать чтение. Оба Main () и читать () являются пространства пользователя подпрограммы. читать () является libc.a подпрограмму, которая затем будет вызывать в kread () системный вызов в этот момент он входит в пространстве ядра. kread (), то будет инициировать физического ввода / вывода на устройство и 'дд' программа затем положить спать до физического ввода / вывода не завершится. Время для выполнения кода в основном, читать, и kread очень мало - вероятно, около 50 микросекунд самое. Время, необходимое для диска, чтобы завершить запрос ввода / вывода, вероятно, будет около 2-20 миллисекунд в зависимости от того, насколько диск рука пришлось искать. Это означает, что при возникновении прерывании, есть вероятность, что "дд" Программа спит и что I / O в процессе. Таким образом, "iowait" счетчик увеличивается на единицу. Если I / O завершает в 2 мс, а затем "дд" Программа работает снова сделать еще читать. Но так как 50 микросекунд настолько мала по сравнению с 2 мс (2000 мкс), то вероятность того, что при прерывании происходит, процессор будет снова сидеть сложа руки с I / O в прогресс. Итак, еще раз, "iowait" является увеличивается. Если «сар -Р
"Запускается, чтобы показать процессора
использования для этого процессора, то, скорее всего показывают 97-98% iowait.
Если каждый I / O принимает 20 мс, то iowait будет 99-100%.
Несмотря на то, задержки ввода / очень высоко в любом случае,
пропускная способность в 10 раз лучше в одном случае. Пример 3: Допустим, что существуют две программы, работающие на центральный процессор. Одним из них является "дд" чтение программы с диска. Другой программа, которая не делает I / O, но тратит 100% своего времени на выполнение вычислительной работы. Теперь предположим, что существует проблема с подсистемой ввода / вывода и что физического ввода / вывода, использующих более секунды, чтобы закончить. Всякий раз, когда "дд" Программа спит, ожидая его ввода / вывода, чтобы закончить, другая программа может запускать на процессоре. Когда часы происходит прерывание, всегда будет программа в любом режиме пользователя, либо системном режиме. Таким образом,% простоя и% iowait значения будут равны 0. Даже если iowait 0 сейчас, что не означает, что есть не проблема ввода / вывода, поскольку, очевидно, является одним , если физическое ввода / вывода захватывают второй, чтобы закончить. Пример 4: Допустим, что существует система 4-CPU, где есть 6 программ подряд. Давайте предположим, что четыре из программ потратить 70% своего времени на ожидание на физическом чтения I / O и 30% на самом деле с помощью процессорного времени. Так как эти четыре программы не нужно вводить пространстве ядра для выполнения системных kread звонки, он будет тратить процент своего времени в ядре; давайте предположим, что 25% времени работает в режиме пользователя, и 5% времени в режиме ядра. Давайте также предположим, что два других программ тратить 100% своего времени в пользовательском коде делать вычисления и ввода / вывода не так, что два процессоры всегда будет 100% занят. Поскольку другие четыре программы заняты только 30% времени, они могут поделиться тем, что не заняты. Если мы запустим "сар -P ALL 1 10 'для запуска РПП" на 1-секундными интервалами в течение 10 интервалов, то мы " бы ожидать, чтобы увидеть это для каждого интервала: CPU% USR% SYS% Вио% простоя 0 50 10 40 0 1 50 10 40 0 2 100 0 0 0 3 100 0 0 0 - 75 5 20 0 Обратите внимание, что средняя загрузка процессора будет 75% пользователей, 5% SYS, и 20% iowait. Значения, видимые при "Vmstat 'или' IOSTAT" или большинства инструментов в среднем по всем процессорам. Теперь предположим, что мы принимаем это точно такой же объем работы (те же 6 программ с таким же поведением) на другую машину, которая имеет 6 CPU (до такой же скорости процессора и subsytem же I / O). Теперь каждая программа может быть запущен на собственный процессор. Таким образом, пробой использование процессора будет выглядеть следующим образом: CPU% USR% SYS% Вио% простоя 0 25 5 70 0 1 25 5 70 0 2 25 5 70 0 3 25 5 70 0 4 100 0 0 0 5 100 0 0 0 - 50 3 47 0 Так что теперь средняя загрузка процессора будет составлять 50% пользователей, 3% С.Ю., а 47% iowait. Обратите внимание, что же нагрузка на другом компьютере имеет более чем в два раза iowait значение. Заключение: iowait статистика может или не может быть полезным индикатором производительности ввода / вывода - но это не говорит нам, что система может обрабатывать больше вычислительной работы. Просто потому, что CPU находится в iowait государства не означает, что он не может выполнять другие темы на этом процессоре; то есть, iowait просто форма времени простоя.
Being translated, please wait..
