iostat взятие партии времени для возврата

У меня есть сервер solaris 10 с большим количеством дисков SAN (близко к 1 000 через все пути). iostat -En берет близко к 5 минутам для возврата. Существует ли способ выяснить то, что вызывает задержку? связка не помогла многому.

2
задан 16 January 2015 в 15:14
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 , может быть, вы что-то найдете готов к использованию и более подходящий.

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

2
ответ дан 3 December 2019 в 11:39

Теги

Похожие вопросы