|
Командата vmstat е най-често използваният инструмент за мониторинг в Linux/Unix, който показва стойностите на състоянието на сървъра в определен времеви интервал, включително и на сървъраИзползване на процесора, използване на памет, виртуална смяна на паметта, четене и запис на изходни изходи. Тази команда е любимата ми команда за проверка на Linux/Unix, едната е, че се поддържа Linux/Unix, а другата е, че в сравнение с горната версия, мога да видя използването на процесора, паметта и изходите на цялата машина, вместо да виждам само използването на процесора и паметта на всеки процес (различни сценарии на употреба). Обикновено използването на инструмента vmstat се осъществява чрез два числови параметъра: първият параметър е броят на пробните времеви интервали, единицата е секунди, а вторият параметър е броят на пробите, като например:
root@ubuntu:~# vmstat 2 1 Procs -----------memory---------- ---swap-- -----io---- -system-- ----cpu---- r b swpd безплатно подсилване кеш si so bi bo in cs us sy id wa 1 0 0 3498472 315836 3819540 0 0 0 1 2 0 0 0 100 0 2 означава, че състоянието на сървъра се събира веднъж на всеки две секунди, а 1 означава, че състоянието на сървъра се събира само веднъж. Всъщност, по време на процеса на кандидатстване ще наблюдаваме за определен период от време, и ако не искаме да го наблюдаваме, можем просто да прекратим vmstat директно, например:
root@ubuntu:~# vmstat 2 Procs -----------memory---------- ---swap-- -----io---- -system-- ----cpu---- r b swpd безплатно подсилване кеш si so bi bo in cs us sy id wa 1 0 0 3499840 315836 3819660 0 0 0 1 2 0 0 0 100 0 0 0 0 3499584 315836 3819660 0 0 0 0 88 158 0 0 100 0 0 0 0 3499708 315836 3819660 0 0 0 2 86 162 0 0 100 0 0 0 0 3499708 315836 3819660 0 0 0 10 81 151 0 0 100 0 1 0 0 3499732 315836 3819660 0 0 0 2 83 154 0 0 100 0
Това означава, че vmstat събира данни на всеки 2 секунди и продължава, докато не завърша програмата, а аз приключвам програмата след като събера данни 5 пъти тук. Добре, въведена е командата, сега нека започнем да обясняваме значението на всеки параметър. rОзначава да се стартира опашката (тоест колко процеси са реално разпределени към процесора), сървърът, който тествах, в момента е относително неактивен, няма програми, които да се изпълняват, когато тази стойност надвиши броя на процесорите, ще има тесно място за процесора. Това е свързано и с натоварването на горната част – обикновено натоварването е по-голямо, ако надвиши 3, по-високо ако надвиши 5, а ако надвиши 10, не е нормално, а състоянието на сървъра е много опасно. Натоварването на върха е подобно на това на течаща опашка в секунда. Ако опашката за работене е твърде голяма, това означава, че процесорът ви е зает, което обикновено води до висока натоварване на процесора. bОзначава блокиран процес, това не е много да се каже, процесът е блокиран, всички разбират. SWPDАко размерът на използваната виртуална памет е по-голям от 0, това означава, че машината ви няма достатъчно физическа памет, и ако тя не е причината за изтичането на паметта, тогава е време да се обнови паметта или да се мигрират задачите, изискващи памет, към друга машина. Безплатно Размерът на свободната физическа памет е общо 8G, а останалите 3415M. buff Linux/Unix системата се използва за съхранение на съдържанието в директорията, разрешения и т.н. кеш, вероятно заемам над 300 милиона на тази машина кешcache се използва директно за запомняне на файловете, които отваряме, буфериране на файловете, заемам повече от 300M на собствената си машина (ето хитрото на Linux/Unix: вземи част от свободната физическа памет за кеширане на файлове и директории, за да подобриш производителността на изпълнението на програмата, когато програмата използва памет, буферът/кеширането се използва бързо). ) Си Ако тази стойност е по-голяма от 0, това означава, че физическата памет не е достатъчна или паметта е изтекла. Машината ми има достатъчно памет и всичко е наред. Така че Размерът на диска, записан във виртуална памет в секунда, ако тази стойност е по-голяма от 0, е същият като по-горе. bi Блоково оборудванеБроят на получените блокове в секунда, тук блок устройството се отнася до всички дискове и други блокови устройства в системата, стандартният размер на блока е 1024 байта, нямам никаква IO операция на машината, така че винаги е било 0, но съм виждал това на машини, които обработват големи обеми данни (2-3T), които могат да достигнат 140000/с, а скоростта на запис на диска е почти 140M в секунда боБроят на блоковете, изпращани в секунда от блоково устройство, например, когато четем файл, bo е по-голям от 0. bi и bo обикновено са близо до 0, иначе изходът е твърде чест и трябва да се коригира. вБроят прекъсвания в секунда на процесора, включително времеви прекъсвания CSБроят на превключванията на контекста в секунда, например, когато извикваме системна функция, трябва да сменим контексти, както и превключване на нишкиКонтекст на процесаНапример, в уеб сървъри като Apache и nginx обикновено правим тестове за производителност с хиляди или дори десетки хиляди паралелност, а процесът на избор на уеб сървър може да бъде намален с пика на процеса или нишката, стрес тест, докато cs достигне сравнително малка стойност, броят на процесите и нишките е по-подходяща стойност. Системните повиквания също са същите – всеки път, когато се извика системна функция, нашият код навлиза в ядрото, което води до превключване на контекста, което е много ресурсоемко, и трябва да се опитаме да избягваме чести повиквания към системни функции. Твърде много превключвания на контекста означават, че по-голямата част от процесора ви се губи за смяна на контекст, което води до по-малко време за сериозни задачи, а процесорът не е напълно използван, което не е препоръчително. ниепотребителCPU времеВеднъж видях, че US беше близо до 100, а опашката за работа в R достигаше 80 на сървър, който често криптираше и декриптираше (машината беше подложена на стрес тест и производителността не беше добра). syАко системното процесорно време е твърде голямо, това означава, че системните повиквания са дълги, например чести IO операции. id Времето на покой на процесора, общо казано, id + us + sy = 100, обикновено мисля, че id е използване на процесора в покой, us е потребителско използване на CPU, sy е използване на системния процесор. wtИзчакай времето на IO процесора.
|