更新时打印 kstat(1 秒内多次)
print kstat when updated (multiple times in 1 second)
我正在尝试通过我目前使用 dtrace 收集的 kstat 收集统计信息。
这不是基于计数的信息,而是每次都有新数据。
kstat 打印的最小间隔是 1 second.However,我需要的数据在 second.Is 内更改了几次,有一种方法(API)可以随时从 kstat 获取数据kstat 已更新,不使用 dtrace ?
在 dtrace
之外,无法在更新时获取统计信息,但是 C libkstat API 允许以任意亚秒采样率检索 kstat
统计信息。
还有一个 perl api 如果你想用脚本来做的话。
一个非常简单的使用方法是创建一个自定义的 kstat
命令(恰好已经是一个利用 kstat perl api 的 perl 脚本)并修改它以使用高分辨率计时器而不是默认计时器,例如:
$ 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
我正在尝试通过我目前使用 dtrace 收集的 kstat 收集统计信息。
这不是基于计数的信息,而是每次都有新数据。
kstat 打印的最小间隔是 1 second.However,我需要的数据在 second.Is 内更改了几次,有一种方法(API)可以随时从 kstat 获取数据kstat 已更新,不使用 dtrace ?
在 dtrace
之外,无法在更新时获取统计信息,但是 C libkstat API 允许以任意亚秒采样率检索 kstat
统计信息。
还有一个 perl api 如果你想用脚本来做的话。
一个非常简单的使用方法是创建一个自定义的 kstat
命令(恰好已经是一个利用 kstat perl api 的 perl 脚本)并修改它以使用高分辨率计时器而不是默认计时器,例如:
$ 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