Оценка загруженности диска в FreeBSD...Часто возникают ситуации, когда сервер начинает тормозить, но непонятно по какой причине. Просмотр команды top не дает никакой нужной нам информации. Возможно не справляется жесткий диск сервера. как это проверить? Для этого существует несколько полезных утилит.
Для начала запустим команду
systat -vm. Чтобы экран обновлялся почаще введем команду ":start 2". Данная команда показывает загрузку ваших дисковых устройств. Обратите внимание если даже загрузка одного из устройств "100% busy", это не значит что все плохо. Это значит что устройство работает, но не обязательно что оно перегружено. В примере ниже сервер собственно почти ничем не занят.
Также неплохо бы посмотреть состояние дисковой очереди. Поможет нам в этом команда "
iostat -x 2"
В этом расширенном режиме iostat(8) покажет не только скорость обмена с каждым дисковым устройством, но также длину его очереди (wait или qlen) и среднее время обслуживания (svc_t). Если очередь большую часть времени -- разумной длины (1-2-3) и время обслуживания сопоставимо с периодом оборота диска (порядка 1-10 мс -- поделите 60 с на RPM диска), то диск "100% busy" отлично справляется с нагрузкой, хотя ему отдыхать некогда. Но если очередь и время обслуживания постоянно большие, диск безнадежено перегружен и не успевает за потоком запросов -- пора искать виновника перегрузки или новое дисковое решение.
В FreeBSD с GEOM увидеть полную картину можно одной утилитой:
gstat.
Она покажет не только длину очереди каждого устройства GEOM, но также раздельно средние времена записи и чтения, так что можно даже понять, тормозит ли запись на диск или чтение с него. (Не уверен, включают ли они время ожидания svc_t или же отражают только время физической операции. Так что посмотреть может быть полезно и на вывод
iostat -x.