|
Команда vmstat — самый распространённый инструмент мониторинга Linux/Unix, который отображает значения состояния сервера в определённый промежуток времени, включая значения сервераИспользование процессора, использование памяти, виртуальный обмен памятью, чтение и запись ввода-вывода. Эта команда — моя любимая команда для проверки Linux/Unix: одна из них — поддержка Linux/Unix, а другая — что по сравнению с верхней версией я вижу загрузку процессора, памяти и ввода-вывода всей машины, а не только использование процессора и памяти каждого процесса (разные сценарии использования). Обычно использование инструмента vmstat осуществляется через два числовых параметра: первый параметр — это количество временных интервалов, единица — секунды, а второй — количество выборок, например:
root@ubuntu:~# vmstat 2 1 Procs -----------memory---------- ---swap-- -----io---- -system-- ----CPU---- r b swpd бесплатный бафф cache 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 бесплатный бафф cache 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. Бафф Система Linux/Unix используется для хранения того контента в каталоге, разрешения и т.д. кэша, я, наверное, занимаю более 300 миллионов на этой машине КэшКэш напрямую используется для запоминания файлов, которые мы открываем, буферизации файлов, я занимаю более 300 миллионов на своей машине (вот умная идея Linux/Unix: часть свободной физической памяти для кэширования файлов и каталогов, чтобы повысить производительность выполнения программы, когда программа использует память, буфер/кэширование будет использоваться быстро). ) Си Если это значение больше 0, это означает, что физической памяти недостаточно или память утекает. У моего компьютера достаточно памяти, и всё в порядке. Так что Размер диска, записанного в виртуальную память в секунду, если это значение больше 0, будет таким же, как и выше. bi Блочное оборудованиеКоличество полученных блоков в секунду — здесь блочное устройство относится ко всем дискам и другим блоковым устройствам в системе, размер блока по умолчанию — 1024 байта, у меня нет операций ввода на машине, поэтому всегда было 0, но я видел это на машинах, обрабатывающих большие объёмы данных (2-3 Т), которые могут достигать 140000/с, а скорость записи на диск почти 140М в секунду боКоличество блоков, отправляемых блоковым устройством в секунду, например, при чтении файла, bo больше 0. bi и bo обычно близки к 0, иначе IO слишком частый и требует корректировки. вКоличество прерываний в секунду процессора, включая временные прерывания CSКоличество переключений контекста в секунду, например, когда мы вызываем системную функцию, нужно переключать контексты, и переключение потоковКонтекст процессаНапример, в веб-серверах, таких как Apache и nginx, мы обычно проводим тесты производительности с тысячами или даже десятками тысяч параллелей, и процесс выбора веб-сервера может быть снижен на пик процесса или потока, стресс-тест, пока cs не достигнет относительно небольшого значения, количество процессов и потоков становится более подходящим. Системные вызовы тоже одинаковы: каждый раз, когда вызывается системная функция, наш код попадает в пространство ядра, что приводит к переключению контекста, что очень ресурсоёмко, и нам следует стараться избегать частых вызовов системных функций. Слишком много переключений контекста означает, что большая часть вашего процессора тратит на переключение контекста, что снижает время для серьёзных задач, и процессор не полностью используется, что не рекомендуется. СШАпользовательВремя процессораОднажды я видел, что в США было почти 100, а очередь на R достигла 80 на сервере, который часто занимался шифрованием и расшифровкой (машина была прошёл стресс-тест, и производительность была низкой). syЕсли системное процессорное время слишком велико, это означает, что системные вызовы будут долгими, например, частые операции ввода. идентификатор Время простоя процессора, в общем, id + us + sy = 100, в целом я думаю, id — это использование CPU в простое, us — это использование CPU пользователя, sy — использование системного CPU. wtЖдите время процессора ввода-вывода.
|