Иостат много времени для возвращения

У меня есть сервер 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, возможно, вы найдете что-то готовое для использования и более подходящее там.

Как только вы определите застрявший системный вызов, вы сможете провести больше расследований.

Другие вопросы по тегам