Иостат много времени для возвращения
У меня есть сервер Solaris 10 с большим количеством дисков SAN (около 1000 по всем путям). iostat -En
займет около 5 минут, чтобы вернуться. Есть ли способ выяснить, что вызывает задержку? ферма не сильно помогла.
1 ответ
Dtrace, безусловно, инструмент, который вы ищете. Вы можете использовать относительно простой скрипт, чтобы выяснить, какой системный вызов занимает больше всего времени.
Что-то вроде этого:
#!/usr/sbin/dtrace -s
syscall:::entry
/execname == "iostat"/
{
self->ts = vtimestamp;
}
syscall:::return
/self->ts/
{
@[probefunc] = sum(vtimestamp - self->ts);
@["- all syscalls -"] = sum(vtimestamp - self->ts);
self->ts = 0;
}
profile:::tick-1sec
/i++ >= 59/
{
exit(0);
}
Кроме того, вы можете использовать DTrace Toolkit, возможно, вы найдете что-то готовое для использования и более подходящее там.
Как только вы определите застрявший системный вызов, вы сможете провести больше расследований.