Система гальмує або база SQL якась повільна, але в top (1) нічого підозрілого не видно? Давайте перевіримо, чи не перевантажений чи якийсь із дисків.
Крок 1. Запускаємо «systat -vm». Говоримо йому «: start 2», щоб він оновлював екран частіше. Взагалі, systat (1) - відмінний інструмент, який можна порівняти за важливістю з top (1), тільки спрямований нема на процеси, а на внутрішні деталі системи. Зокрема, він показує прості характеристики завантаженості окремих дискових пристроїв. Якщо завантаження всіх дисків істотно менше 100%, проблема в чомусь іншому. Але що якщо один або декілька дисків «100% busy»? Насправді, це ще не доказ проблеми. Справа в тому, що показник «100% busy» говорить тільки, що накопичувач на комп'ютері не простоювали, йому є чим зайнятися, однак це зовсім не означає, що диск вже не здатний на більше. Сучасні контролери і диски можуть приймати і обробляти декілька запитів паралельно і незалежно, наприклад, якщо це масив RAID, в якому різні запити можна направити на різні фізичні приводи. Значить, нам потрібна додаткова інформація.
Крок 2. Якщо ви також спец по мережах, то зобов'язані знати, що ознакою справжньої перевантаження служить зростання черги на обслуговування. Це можна застосувати і до дискам, адже система підтримує черги між своїми внутрішніми компонентами. Як би нам вивчити стан дискової черзі? Досить запустити «iostat -x 2», де 2 - пауза між екранами. У цьому розширеному режимі iostat (8) покаже не тільки швидкість обміну з кожним дисковим пристроєм, але також довжину його черги (wait або qlen) і середній час обслуговування (svc_t). Якщо чергу більшу частину часу - розумної довжини (1-2-3) і час обслуговування можна порівняти з періодом обігу диска (близько 1-10 мс - поділіть 60 з на RPM диска), то диск «100% busy» відмінно справляється з навантаженням, хоча йому відпочивати ніколи. Але якщо чергу і час обслуговування постійно великі, диск безнадійний перевантажений і не встигає за потоком запитів - пора шукати винуватця перевантаження або нове дисковий рішення.
Крок 3, він же 0. У FreeBSD з GEOM побачити повну картину можна однією утилітою: gstat (8). Вона покаже не тільки довжину черги кожного пристрою GEOM, але також окремо середні часи запису і читання, так що можна навіть зрозуміти, гальмує чи запис на диск або читання з нього. (Не впевнений, чи включають вони час очікування svc_t або ж відображають лише час фізичної операції. Так що подивитися може бути корисно і на висновок iostat -x.)