What exactly is

What exactly is "iowait"?To summari

What exactly is "iowait"?

To summarize it in one sentence, 'iowait' is the percentage
of time the CPU is idle AND there is at least one I/O
in progress.

Each CPU can be in one of four states: user, sys, idle, iowait.
Performance tools such as vmstat, iostat, sar, etc. print
out these four states as a percentage. The sar tool can
print out the states on a per CPU basis (-P flag) but most
other tools print out the average values across all the CPUs.
Since these are percentage values, the four state values
should add up to 100%.

The tools print out the statistics using counters that the
kernel updates periodically (on AIX, these CPU state counters
are incremented at every clock interrupt (these occur
at 10 millisecond intervals).
When the clock interrupt occurs on a CPU, the kernel
checks the CPU to see if it is idle or not. If it's not
idle, the kernel then determines if the instruction being
executed at that point is in user space or in kernel space.
If user, then it increments the 'user' counter by one. If
the instruction is in kernel space, then the 'sys' counter
is incremented by one.

If the CPU is idle, the kernel then determines if there is
at least one I/O currently in progress to either a local disk
or a remotely mounted disk (NFS) which had been initiated
from that CPU. If there is, then the 'iowait' counter is
incremented by one. If there is no I/O in progress that was
initiated from that CPU, the 'idle' counter is incremented
by one.

When a performance tool such as vmstat is invoked, it reads
the current values of these four counters. Then it sleeps
for the number of seconds the user specified as the interval
time and then reads the counters again. Then vmstat will
subtract the previous values from the current values to
get the delta value for this sampling period. Since vmstat
knows that the counters are incremented at each clock
tick (10ms), second, it then divides the delta value of
each counter by the number of clock ticks in the sampling
period. For example, if you run 'vmstat 2', this makes
vmstat sample the counters every 2 seconds. Since the
clock ticks at 10ms intervals, then there are 100 ticks
per second or 200 ticks per vmstat interval (if the interval
value is 2 seconds). The delta values of each counter
are divided by the total ticks in the interval and
multiplied by 100 to get the percentage value in that
interval.

iowait can in some cases be an indicator of a limiting factor
to transaction throughput whereas in other cases, iowait may
be completely meaningless.
Some examples here will help to explain this. The first
example is one where high iowait is a direct cause
of a performance issue.

Example 1:
Let's say that a program needs to perform transactions on behalf of
a batch job. For each transaction, the program will perform some
computations which takes 10 milliseconds and then does a synchronous
write of the results to disk. Since the file it is writing to was
opened synchronously, the write does not return until the I/O has
made it all the way to the disk. Let's say the disk subsystem does
not have a cache and that each physical write I/O takes 20ms.
This means that the program completes a transaction every 30ms.
Over a period of 1 second (1000ms), the program can do 33
transactions (33 tps). If this program is the only one running
on a 1-CPU system, then the CPU usage would be busy 1/3 of the
time and waiting on I/O the rest of the time - so 66% iowait
and 34% CPU busy.

If the I/O subsystem was improved (let's say a disk cache is
added) such that a write I/O takes only 1ms. This means that
it takes 11ms to complete a transaction, and the program can
now do around 90-91 transactions a second. Here the iowait time
would be around 8%. Notice that a lower iowait time directly
affects the throughput of the program.

Example 2:

Let's say that there is one program running on the system - let's assume
that this is the 'dd' program, and it is reading from the disk 4KB at
a time. Let's say that the subroutine in 'dd' is called main() and it
invokes read() to do a read. Both main() and read() are user space
subroutines. read() is a libc.a subroutine which will then invoke
the kread() system call at which point it enters kernel space.
kread() will then initiate a physical I/O to the device and the 'dd'
program is then put to sleep until the physical I/O completes.
The time to execute the code in main, read, and kread is very small -
probably around 50 microseconds at most. The time it takes for
the disk to complete the I/O request will probably be around 2-20
milliseconds depending on how far the disk arm had to seek. This
means that when the clock interrupt occurs, the chances are that
the 'dd' program is asleep and that the I/O is in progress. Therefore,
the 'iowait' counter is incremented. If the I/O completes in
2 milliseconds, then the 'dd' program runs again to do another read.
But since 50 microseconds is so small compared to 2ms (2000 microseconds),
the chances are that when the clock interrupt occurs, the CPU will
again be idle with a I/O in progress. So again, 'iowait' is
incremented. If 'sar -P ' is run to show the CPU
utilization for this CPU, it will most likely show 97-98% iowait.
If each I/O takes 20ms, then the iowait would be 99-100%.
Even though the I/O wait is extremely high in either case,
the throughput is 10 times better in one case.



Example 3:

Let's say that there are two programs running on a CPU. One is a 'dd'
program reading from the disk. The other is a program that does no
I/O but is spending 100% of its time doing computational work.
Now assume that there is a problem with the I/O subsystem and that
physical I/Os are taking over a second to complete. Whenever the
'dd' program is asleep while waiting for its I/Os to complete,
the other program is able to run on that CPU. When the clock
interrupt occurs, there will always be a program running in
either user mode or system mode. Therefore, the %idle and %iowait
values will be 0. Even though iowait is 0 now, that does not
mean there is NOT a I/O problem because there obviously is one
if physical I/Os are taking over a second to complete.



Example 4:

Let's say that there is a 4-CPU system where there are 6 programs
running. Let's assume that four of the programs spend 70% of their
time waiting on physical read I/Os and the 30% actually using CPU time.
Since these four programs do have to enter kernel space to execute the
kread system calls, it will spend a percentage of its time in
the kernel; let's assume that 25% of the time is in user mode,
and 5% of the time in kernel mode.
Let's also assume that the other two programs spend 100% of their
time in user code doing computations and no I/O so that two CPUs
will always be 100% busy. Since the other four programs are busy
only 30% of the time, they can share that are not busy.

If we run 'sar -P ALL 1 10' to run 'sar' at 1-second intervals
for 10 intervals, then we'd expect to see this for each interval:

cpu %usr %sys %wio %idle
0 50 10 40 0
1 50 10 40 0
2 100 0 0 0
3 100 0 0 0
- 75 5 20 0

Notice that the average CPU utilization will be 75% user, 5% sys,
and 20% iowait. The values one sees with 'vmstat' or 'iostat' or
most tools are the average across all CPUs.

Now let's say we take this exact same workload (same 6 programs
with same behavior) to another machine that has 6 CPUs (same
CPU speeds and same I/O subsytem). Now each program can be
running on its own CPU. Therefore, the CPU usage breakdown
would be as follows:

cpu %usr %sys %wio %idle
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

So now the average CPU utilization will be 50% user, 3% sy,
and 47% iowait. Notice that the same workload on another
machine has more than double the iowait value.



Conclusion:

The iowait statistic may or may not be a useful indicator of
I/O performance - but it does tell us that the system can
handle more computational work. Just because a CPU is in
iowait state does not mean that it can't run other threads
on that CPU; that is, iowait is simply a form of idle time.
0/5000
From: -
To: -
Results (Russian) 1: [Copy]
Copied!
Что же такое «iowait»?Чтобы суммировать его в одном предложении, «iowait»-процентвремя простоя процессора и есть по крайней мере одного ввода-выводав ходе работы.Каждый процессор может быть в одном из четырех состояний: пользователь, sys, простоя, iowait.Печать производительности инструменты, такие как vmstat, iostat, САР, и т.д.из этих четырех государств в процентах. Инструмент sar можнораспечатать государствами на основе процессора за (-P флаг), но большинстводругие инструменты распечатать средние значения во всех процессорах.Поскольку эти процентные значения, четыре государства значенияследует добавить до 100%.Инструменты печати статистики с помощью счетчиков,обновления ядра периодически (на AIX, эти состояния счетчиков ЦПувеличиваются на каждые часы прерывания (они встречаютсяинтервалом в 10 миллисекунд).Когда происходит прерывание будильник на Процессоре, ядрапроверяет процессор, чтобы увидеть, если она находится в режиме ожидания, или нет. Если это непростоя, ядро затем определяет если будучи Инструкцияказнены на что точка находится в пользовательском пространстве или в пространстве ядра.Если пользователя, то это увеличивает на единицу счетчик «пользователь». ЕслиИнструкция находится в пространстве ядра, то счетчик «sys»увеличивается на единицу.Если процессор простаивает, ядро затем определяет, есть липо крайней мере одного ввода-вывода в настоящее время либо на локальный дискили удаленно подключенных дисков (NFS), который был начатот этого процессора. Если есть, то счетчик «iowait»увеличивается на единицу. Если нет никаких операций ввода-вывода в прогресс, который былначато с этого процессора, «простой» счетчик увеличиваетсяна единицу.Когда производительность инструмента, такие как vmstat вызывается, он читаеттекущие значения этих четырех счетчиков. Затем он спитколичество секунд пользователь, указанный в качестве интервалавремя и затем читает счетчики снова. Затем будет vmstatвычитание предыдущего значения из текущих значений дляПолучите значение Дельта для этого периода отбора проб. С vmstatзнает, что счетчики увеличиваются на каждый будильникТик (10 мс), во-вторых, он затем делит значение ДельтаКаждый счетчик на количество тактов в выборкепериод. Например, если вы запустите ' vmstat 2', это делаетvmstat образец счетчики каждые 2 секунды. ПосколькуБудильник тикает в 10ms интервалы, то есть 100 клещейза второй или 200 тактов на интервал vmstat (если интервалзначение — 2 секунды). Дельта-значения каждого счетчикаразделены всего клещей в интервале иумножить на 100, чтобы получить процентное значение в том, чтоинтервал.в некоторых случаях iowait может быть показателем ограничивающим факторомна пропускную способность транзакций в то время как в других случаях, может iowaitбыть полностью бессмысленным.Здесь некоторые примеры помогут объяснить это. Первыйпримером является одним где высокий iowait является прямой причинойпроблемы с производительностью.Пример 1:Допустим, что программе требуется для выполнения операций от именипакетного задания. Для каждой транзакции программа будет выполнять некоторыевычисления, которые принимает 10 миллисекунд и затем делает синхроннойзапись результатов на диск. Поскольку файл, который он пишет воткрыт синхронно, записи не возвращает до тех пор, пока операций ввода-выводасделал это все пути к диску. Предположим, что дисковая подсистема делаетне имеют кэш и что каждой физической записи ввода-вывода занимает 20 мс.Это означает, что программа завершает транзакцию каждые 30 мс.В течение 1 секунды (1000 мс) программа может сделать 33операции (33 tps). Если эта программа является только один работаетв системе 1-CPU, то ЦП будет занят 1/3время и ожидание ввода-вывода остальную часть времени - так iowait 66%и 34% CPU занят.Если подсистема ввода-вывода была улучшена (скажем дискового кэшаДобавлено) такие записи операций ввода-вывода занимает только 1 мс. Это означает, чтоОн принимает 11ms для завершения транзакции, и программа можетТеперь делаем вокруг 90-91 транзакций в секунду. Здесь время iowaitбудет около 8%. Обратите внимание, что нижняя iowait время непосредственновлияет на пропускную способность программы.Пример 2:Давайте скажем, что существует одна программа, работающая в системе - Предположимчто это программа «dd», и это чтение с диска 4 КБ навремя. Допустим, что подпрограммы в «дд» называется main() и еговызывает read() делать читать. Main() и read() являются пространства пользователяподпрограммы. Read() является libc.a подпрограмму, которая затем будет вызыватьсистемный вызов kread() в какой-то момент она входит в пространство ядра.kread() тогда будет инициировать физического ввода-вывода на устройство и «ДД»Программа затем положить спать до завершения физического ввода-вывода.Время выполнения кода, в основном, чтение и kread очень мала-вероятно, около 50 микросекунд в большинстве. Время, необходимое длядиск для завершения запроса ввода-вывода, вероятно, будет около 2-20миллисекунд в зависимости от того, насколько диска руку пришлось искать. Этоозначает, что, когда происходит прерывание часов, есть вероятность, чтоПрограмма «дд» спит и что ввод-вывод в прогресс. Таким образом,Приращение этого счетчика «iowait». Если операции ввода-вывода завершается в2 мс, затем программа «дд» выполняется снова, чтобы сделать еще один читать.Но начиная с 50 микросекунд настолько мал по сравнению с 2 мс (2000 МКС),есть вероятность, что когда происходит прерывание Будильник, процессор будетснова будьте простоя с ввода-вывода в прогресс. Так что опять же является «iowait»увеличивается. Если «САР -P ' запустить чтобы показать ЦПиспользование для этого процессора, скорее всего, он покажет iowait 97-98%.Если каждый ввод-вывод занимает 20 мс, то iowait бы 99-100%.Несмотря на то, что ожидание ввода-вывода является чрезвычайно высокой, в любом случае,пропускная способность в 10 раз лучше, в одном случае.Пример 3:Предположим, что существуют две программы, работающие на Процессоре. Один — «дд»Программа чтения с диска. Другой-это программа, которая делает неВвода-вывода, но тратит 100% своего времени делать вычислительной работы.Теперь предположим, что есть проблемы с подсистемой ввода-вывода и чтофизические операции ввода-вывода принимают более секунды для завершения. Всякий раз, когдаПрограмма «дд» спит во время ожидания ввода-вывода завершить,Другая программа может работать на этом Процессоре. Когда часыпроисходит прерывание, всегда будет программа работает вПользовательский режим или режим системы. Таким образом % простоя и % iowaitзначения будут равны 0. Хотя iowait 0 теперь, что неозначает, что есть не проблема ввода-вывода, потому что там, очевидно, является однимЕсли для завершения второй принимают физических вводов-выводов.Пример 4:Допустим, что существует система 4-CPU где есть 6 программЗапуск. Давайте предположим, что четыре программы тратят 70% от ихвремя ожидания на физических операций ввода-вывода и 30%, на самом деле использование Процессорного времени.Так как эти четыре программы должны войти в пространство ядра для выполненияkread системные вызовы, он будет тратить процента своего времени вядра; Давайте предположим, что 25% времени в пользовательском режиме,и 5% времени в режиме ядра.Давайте также предположим, что две другие программы тратят 100% от ихвремя в пользовательском коде, делать вычисления и не процессоров ввода-вывода так что двавсегда будет 100% занят. Так как четыре других программы занятытолько 30% времени, они могут поделиться, не занят.Если мы запустим ' САР -P все 1 10' запустить «САР» интервалом в 1 секундудля 10 интервалов то мы бы ожидать увидеть это для каждого интервала: процессор % 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% пользователей, sys 5%,и 20% iowait. Значения одно видит с «vmstat» или «iostat» илиБольшинство инструментов являются средний во всех процессоров.Теперь давайте скажем мы принимаем это точно такая же нагрузка (же 6 программто же самое) на другую машину, которая имеет 6 процессоров (то жеСкорость процессора и же подсистема ввода-вывода). Теперь каждая программа может бытьработает на свой собственный процессор. Таким образом разбивка использования ЦПбудет следующим: процессор % 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 статистика может быть или не быть полезным показателемПроизводительность ввода-вывода - но это сказать нам, что система можетОбработайте больше вычислительной работы. Просто потому, что процессор находится вiowait государства не означает, что он не может запускать другие потокина этом Процессоре; то есть iowait это просто форма времени простоя.
Being translated, please wait..
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..
Results (Russian) 3:[Copy]
Copied!
Что же это такое "iowait" ?ветровому резюмировать его в одном предложении, 'iowait' - это процент
времени простоя и существует по крайней мере одна I/O
.ветровому каждого процессора могут быть в одном из четырех состояний: пользователь, sys, обороты холостого хода, iowait.
производительность таких инструментов, как vmstat, iostat, sar, и т.д. печать
этих четырех государств в процентах. Значение SAR инструмента, можно
распечатать на на процессор (флаг -P), но большинство
Другие инструменты распечатать средние значения для всех процессоров.
Поскольку эти значения в процентах, четыре государства ценностей
следует добавить до 100 % .ветровому инструменты распечатать статистика с помощью счетчиков, в
обновлений ядра периодически (в AIX, эти состояние ЦП счетчики
увеличивается на каждом часы прерывания (они имеют место
10 миллисекундными интервалами) .
когда часы прерывания на процессор,Ядро
проверяет CPU. Если он находится в режиме ожидания или нет. Если она не
обороты холостого хода, а затем ядра определяет, если инструкции
казнены в этот момент находится в пользовательском пространстве или в kernel space.
если пользователь, затем она увеличивает "пользователь" счетчик. Если
преподавание ведется не в kernel пространства, а затем 'sys'
увеличивается на один.ветровому если процессор работает на холостом ходу, ядро затем определяет, имеется ли
По крайней мере один из I/O в настоящее время либо на локальный диск
или дистанционно диск (NFS), которая была начата
из ЦП. Если есть, затем "iowait' счетчик
увеличивается на единицу. Если нет I/O в том
с, ЦП, на "холостом ходу", счетчик увеличивается
один.ветровому если инструмент, например vmstat, он считывает
Текущие значения этих четырех счетчики. Затем она спит
в течение нескольких секунд пользователь, указанный как интервал
времени и затем считывает показания счетчиков. Затем vmstat будет
вычесть предыдущие значения от текущих значений для
получить значение дельты в период выборки. Поскольку vmstat
знает, что счетчиков увеличивается на каждом часы
отметьте галочкой 10ms), во-вторых,Затем она делит значение дельты по
каждой счетчика на число тактов в отбор проб
период. Например, если вы запустите 'vmstat 2 ', это делает
vmstat образец счетчики каждые 2 секунд. Поскольку
тактов на 10ms интервалы времени, затем 100 делений
в секунду, или 200 рисок на vmstat интервал (если интервал
2 секунд). Дельта-значения каждого счетчика
Делятся на общее делений в интервал и
умножается на 100, чтобы получить значение в этом
интервал.ветровому iowait в некоторых случаях могут быть показателем является ограничивающим фактором
к пропускной способности в то время как в других случаях iowait может
быть полностью бессмысленным.
некоторые примеры здесь помогут объяснить это. Первый
пример где высокая iowait является прямой причиной
производительности.

Пример 1:
допустим, что программу необходимо выполнить проверку сделок от имени
a пакетного задания. Для каждой транзакции, в рамках программы будет выполнять некоторые
расчетов что занимает 10 миллисекунд, и затем не синхронный
запись результатов на диск. Поскольку файл в письменной форме было
открыта синхронно, запись не возвращается до I/O
сделал все для диска.Предположим, дисковой подсистемы не
не кэш-памяти и что каждый физический записи I/O занимает 20ms.
это означает, что программа завершает сделки через каждые 30ms.
в течение 1 секунды (1000ms), программа может делать 33
сделок (33 tps). Если эта программа является только один работает
1-процессорные системы, а затем использование ЦП будет занято 1/3
времени и ожидания на I/O во все остальное время - это составляет 66% iowait
и 34% CPU BUSY.ветровому если подсистемы ввода/вывода, и к повышению (предположим, что кэш-памяти диска -
добавлено) таким образом, что записи I/O занимает только 1г-жа Это означает, что
он принимает 11ms для заключения сделок, и программа может
сейчас сделать вокруг 90-91 транзакций в секунду. Здесь iowait время
будут примерно на 8 %. Обратите внимание на то, что нижний iowait время непосредственно
Влияет на пропускную способность.ветровому пример 2:ветровому допустим, что есть одна программа работает на системе - давайте предположим
что это "dd" программы, и чтение с диска 4КБ на
a время. Допустим, что в подпрограмм в "дд" - main() и
вызов read() для чтения. Оба основных() и прочитать() пользовательского пространства
подпрограмм. читать() является libc.подпрограммы, будет ссылаться на
В kread( ), системный вызов в какой момент она поступает в kernel space.
kread() будет затем инициировать физического ввода/вывода на устройство, и на "dd'
программы, затем положить спать до физической I/O завершает.
время выполнить код в главном, чтение и kread очень маленький -
вероятно, к 50 микросекунд. Время, необходимое для
на диск, чтобы выполнить запрос ввода-вывода, вероятно, будет вокруг 2-20
МС в зависимости от того, как далеко рычаг диска в. Это
означает, что, когда часы прерывания, шансы, что
'dd' программы находится в спящем режиме и что I/O. Поэтому,
'iowait' счетчике. Если в I/O завершает в
2 миллисекунд, затем "дд" работает еще раз, чтобы сделать еще один.
Но, поскольку 50 микросекунд имеет очень небольшие по сравнению с 2ms (2000 микросекунд) ,
шансы, что когда часы прерывания, в ЦП будет
вновь обороты холостого хода с I/O в прогресс. Это вновь, 'iowait'
увеличивается на единицу. Если 'sar -P <Количествопроцессоров>' - это ход для показать процессор
использования для этого процессора, весьма вероятно, что она будет показывать 97-98% iowait.
если каждой I/O требуется более 20 мс, затем iowait будет 99-100 % .
Даже несмотря на то, что I/O подождите, чрезвычайно высока в любом случае,
пропускную способность в 10 раз лучше в одном случае.



пример 3:ветровому допустим, что существует две программы, выполняющиеся на ЦП. Один из них - "dd'
программы чтения с диска. В других - это программа, которая не
ввода/вывода, но тратят 100% его времени, делая вычислительные работы.
теперь предположим, что существует проблема с подсистемой ввода/вывода и что
Физической I/OS за секунды. Всякий раз, когда
'dd' программы находится в спящем режиме ожидания ее I/OS завершить,
другие программы для запуска на ЦП. Когда часы
прерывания, всегда будет существовать на программу, работающую в
пользователя режиме или режиме системы. Поэтому %оборотов холостого хода и %iowait
значения будут 0. Даже если iowait 0 сейчас, что не
Означает, что не является I/O проблема, потому что очевидно является одной из
если физической I/OS за секунды.



пример 4:ветровому допустим, что имеется 4-CPU системы, где есть 6 программ
работает. Предположим, что четыре программы тратят до 70% своего
время ожидания на физических read I/OS и 30% фактически с помощью времени CPU.
Поскольку эти четыре программы для ввода kernel пространства для выполнения
kread системных вызовов, он будет тратить в процентах от своего времени в
ядра; предположим, что 25% времени находится в режиме пользователя,
и 5% времени в режиме ядра.
также предположим, что два других программ потратить 100% своих
время в код пользователя делает вычисления и ввода/вывода, два процессора
всегда будет 100% заняты.Поскольку в четырех других программ заняты
только 30% времени, они могут использовать, не занят.ветровому если мы "sar -P 1 10' для запуска "sar" в 1-секундными интервалами
10 интервалы времени, затем мы ожидаем увидеть это для каждого интервала:

ЦП %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 ЦП (в том же
скоростью процессора и тот же I/O подсистеме). Теперь каждая программа может быть
работает на собственные ЦП. Таким образом, использование ЦП разбивка
бы следующим образом:

ЦП %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 статистика может быть или не быть полезным показателем
Производительность ввода-вывода - это не говорит нам, что система может
обработка более вычислительной работы. Только потому что ЦП - в
iowait государства, не означает, что она не может выполнить другие потоки
на ЦП, iowait - это просто форма время простоя.
Being translated, please wait..
 
Other languages
The translation tool support: Afrikaans, Albanian, Amharic, Arabic, Armenian, Azerbaijani, Basque, Belarusian, Bengali, Bosnian, Bulgarian, Catalan, Cebuano, Chichewa, Chinese, Chinese Traditional, Corsican, Croatian, Czech, Danish, Detect language, Dutch, English, Esperanto, Estonian, Filipino, Finnish, French, Frisian, Galician, Georgian, German, Greek, Gujarati, Haitian Creole, Hausa, Hawaiian, Hebrew, Hindi, Hmong, Hungarian, Icelandic, Igbo, Indonesian, Irish, Italian, Japanese, Javanese, Kannada, Kazakh, Khmer, Kinyarwanda, Klingon, Korean, Kurdish (Kurmanji), Kyrgyz, Lao, Latin, Latvian, Lithuanian, Luxembourgish, Macedonian, Malagasy, Malay, Malayalam, Maltese, Maori, Marathi, Mongolian, Myanmar (Burmese), Nepali, Norwegian, Odia (Oriya), Pashto, Persian, Polish, Portuguese, Punjabi, Romanian, Russian, Samoan, Scots Gaelic, Serbian, Sesotho, Shona, Sindhi, Sinhala, Slovak, Slovenian, Somali, Spanish, Sundanese, Swahili, Swedish, Tajik, Tamil, Tatar, Telugu, Thai, Turkish, Turkmen, Ukrainian, Urdu, Uyghur, Uzbek, Vietnamese, Welsh, Xhosa, Yiddish, Yoruba, Zulu, Language translation.

Copyright ©2025 I Love Translation. All reserved.

E-mail: