Вывести kstat при обновлении (несколько раз за 1 секунду)

Я пытаюсь собрать статистику через kstat, которую я сейчас использую для сбора dtrace.

Это не информация на основе подсчета, а новые данные каждый раз.

Минимальный интервал при печати kstat составляет 1 секунду. Однако необходимые мне данные меняются несколько раз в секунду. Есть ли способ (API) для получения данных из kstat при каждом обновлении kstat, в котором не используется dtrace?

1 ответ

Решение

Снаружи с dtraceнет никакой возможности получить статистику при ее обновлении, однако API C libkstat позволяет получить kstat статистика с произвольной субсекундной частотой дискретизации.

Существует также Perl API, если вы хотите сделать это с помощью сценариев.

Очень простой способ его использования - создать kstat команду (которая уже является perl-скриптом, использующим perl api kstat) и измените его, чтобы использовать таймеры с высоким разрешением вместо таймера по умолчанию, например:

$ sed '
s/sleep($interval);/Time::HiRes::usleep($interval*1000.);/
/use Sun::Solaris::Kstat/a\
use Time::HiRes;
' /usr/bin/kstat > /var/tmp/kstat_ms
$ chmod +x /var/tmp/kstat_ms
$ /var/tmp/kstat_ms -n lo0 500 3

module: lo                              instance: 0
name:   lo0                             class:    net
        crtime                          19.559031813
        ipackets                        532
        opackets                        532
        snaptime                        4309.506435597


module: lo                              instance: 0
name:   lo0                             class:    net
        crtime                          19.559031813
        ipackets                        534
        opackets                        534
        snaptime                        4310.008578348


module: lo                              instance: 0
name:   lo0                             class:    net
        crtime                          19.559031813
        ipackets                        536
        opackets                        536
        snaptime                        4310.511617682
Другие вопросы по тегам