Използване на iostat за идентифициране на тесни места, свързани с входа на диска

За да идентифицирате тесните места, свързани с диска, можете да използвате помощната програмаiostat, която предоставя информация за I/O на диска (активност на твърдия диск) и използването на процесора.

Първият ред отпечатва I/O статистика от стартирането на системата. Следващите редове отразяват данните, събрани през предишния интервал.

Помощната програма iostat ви позволява да преглеждате показатели на CPU и I/O устройства. Що се отнася до vmstat, първите стойности от изхода на помощната програма трябва да бъдат изхвърлени ...

Започнете оценката си, като изпълните командата iostat по време на пиковите часове на вашата система или по време на критично приложение, което искате да запазите I/O латентностите до минимум. Следният скрипт изпълнява командата iostat във фонов режим, докато копира голям файл:

# iostat 5 3 >io.out & # cp big1 /dev/null

Посочената команда създава три отчета във файла io.out:

Първият отчет е статистика от последното зареждане и показва равномерността (или, в този случай, неравномерността) на I/O разпределението между твърдите дискове. Твърд диск hdisk1 е неактивен през повечето време, докато твърд диск hdisk2 обработва около 63 процента от всички I/O (измерени от колоните Kb_read и Kb_wrtn).

Вторият отчет съдържа информация, събрана през първите 5 секунди от командата cp. Моля, прочетете внимателно информацията, съдържаща се там. Изминаха 2,6 секунди от стартирането на командата cp. В резултат на това 2,5 секунди интензивен I/O, комбиниран с 2,5 секунди празен ход, дават среден % iowait от 39,5 процента. По-кратък интервал на измерване би позволилполучите по-точни стойности. Този пример показва, че когато се анализират отчетите, трябва да се има предвид, че всички посочени стойности са средни за интервала на измерване.

%user – част от процесорното време, изразходвано за изпълнение на потребителски приложения%nice – част от процесорното време, изразходвано за хубави промени на ниво процес%sys – част от процесорното време, изразходвано за изпълнение на код на ядрото%idle – част от процесорното време, прекарано в неактивностDevice – име на устройствотоtps – номер I/O заявки за секундаBlk_read/s, Blk_wrtn/s – брой прочетени и записани блокове за секундаBlk_read, Blk_wrtn – брой прочетени и записани блокове между два серийни iostat изхода

Тъй като четенето и писането на знаци изразходва ресурси на процесора, обърнете внимание на връзката между активността на терминала и натоварването на процесора. Ако има такава зависимост, опитайте се да подобрите производителността на подсистемата TTY. Възможните действия включват модифициране на приложни програми, промяна на настройките на терминалния порт за прехвърляне на файлове и надграждане на асинхронния адаптер.

Колоните с информация за процесора (%user, %sys, %idle и %iowait) показват разпределението на процесорното време. Резултатът от командата vmstat показва тази информация в колоните us, sy, id и wa.

Ако има само едно приложение, работещо в системата, тогава високият процент I/O таймаути най-вероятно се дължи на сложността на това приложение. При системи с множество процесори, докато един от процесорите чака I/O, останалите ще работят. В този случай стойността на % iowait ще бъде малка или равна на нула, тъй като работещите процесори "скриват" частвреме за чакане. По този начин, въпреки ниската стойност на %iowait, I/O може да окаже значително влияние върху производителността на приложението.

Ако командата iostat показва, че производителността на приложението не е ограничена от ресурсите на процесора и стойността на % iowait е по-голяма от 20 процента, тогава слабата производителност се дължи на диск или друг I/O. Тази ситуация може да възникне по време на масово страниране поради липса на физическа памет. Може също да е свързано с дисбаланс на натоварването на диска, фрагментация на данни или фрагментация на гореща точка. Командата iostat показва цялата необходима информация за случай на небалансирано натоварване. Информация за файлови системи и логически томове, свързани с логически ресурси, може да бъде получена с помощта на командите filemon и fileplace.

Ако смятате, че лошата производителност се дължи на I/O на диска, вижте отчета за командата iostat. За да изключите информация за терминали и процесори, посочете опцията -d. Освен това можете да получите информация само за отделни устройства, като посочите техните имена.

Не забравяйте, че първият отчет съдържа статистика за ефективността на системата от стартирането.

За да направите правилен извод от отчетите на командата iostat, трябва да знаете метода, използван за достъп до данните на приложението (сериен, произволен или смесен), както и типовете дискови устройства и адаптери в системата. Например, ако приложение чете или записва последователно, тогава скоростта на трансфер на данни (Kbps) при високо използване на диска (%tm_act) също трябва да бъде висока. Стойностите Kb_read и Kb_wrtn указват количеството данни, прочетени и записани от приложението. Тези стойности обаче не ви позволяват да определите как се осъществява достъп до данните.

Обикновено високо натоварванедиск (%tm_act) не показва неизправност, ако е придружено от висока скорост на трансфер (Kbps). Обаче високото използване на диска при ниски скорости на трансфер показва фрагментация на логическия том, файловата система или файла.

Когато разглеждате въпроси, свързани с производителността на дискове, логически томове и файлови системи, можете да стигнете до извода, че колкото повече дискове в системата, толкова по-висока е нейната производителност. Това не винаги е така, тъй като всички данни, прехвърлени между системата и устройството, минават през адаптера на устройството. Този адаптер също може да се превърне в пречка. Ако всяко дисково устройство е свързано към отделен адаптер и всички силно използвани файлови системи са на различни физически томове, тогава увеличаването на броя на дисковете наистина подобрява производителността на системата. Степента на подобряване на производителността ще зависи от използвания метод за достъп.