gstat – выявление узких мест
Как правило, быстродействие диска существенно ограничивает суммарную производительность вычислительной системы. Если программы постоянно ожидают завершения дисковых операций, прежде чем продолжить работу, их производительность начинает снижаться. Такая ситуация, называемая блокированием на диске, препятствует нормальной работе программ. Действенное решение состоит в том, чтобы установить более быстрые диски или больше дисков, либо перераспределить нагрузку на диски.
Операционная система FreeBSD предоставляет несколько инструментов для проверки дисковой активности, но я предпочитаю пользоваться утилитой gstat(8), поэтому продемонстрирую ее. Достаточно просто запустить команду gstat
без аргументов, и она будет выводить обновленную информацию примерно каждую секунду:
dT: 1.003s w: 1.000s L(q) ops/s r/s kBps ms/r w/s kBps ms/w %busy Name 0 0 0 0 0.0 0 0 0.0 0.0| fd0 0 0 0 0 0.0 0 0 0.0 0.0| ada0 0 0 0 0 0.0 0 0 0.0 0.0| ada0p1 0 0 0 0 0.0 0 0 0.0 0.0| ada0p2 0 0 0 0 0.0 0 0 0.0 0.0| ada0p3 0 0 0 0 0.0 0 0 0.0 0.0| ada0p4 0 0 0 0 0.0 0 0 0.0 98.2| ada0p5 0 0 0 0 0.0 0 0 0.0 0.0| ada0p6 0 0 0 0 0.0 0 0 0.0 0.0| gptid/3d69e5bd-2b01-11e5-92c7-0030840a99af
Мы видим здесь разнообразную информацию о каждом диске, участке и разделе в виде отдельных строк для каждого устройства. Утилита gstat(8) показывает разнообразную полезную информацию, например, количество операций чтения в секунду (r/s
), количество операций записи в секунду (w/s
), скорость чтения и записи в килобайтах в секунду, а также число миллисекунд, затраченных на каждую операцию чтения и записи. Первое, на что следует обратить внимание, — колонка %busy
, вторая справа.
Находим загруженный раздел (например) ada0p5 – на него приходится 98,2% активности и сотни операций чтения в секунду. Проверив содержимое файла /etc/fstab или воспользовавшись командой mount, можно увидеть, что раздел ada0p1 является разделом /usr данного сервера. Какие-то процессы читают много, очень много данных с диска… Но что это за процессы? Чтобы ответить на этот вопрос, необходимо воспользоваться другим инструментом.