1

現在 dtrace を使用して収集している kstat を介して統計を収集しようとしています。

カウントベースの情報ではなく、毎回新しいデータです。

kstat 出力の最小間隔は 1 秒です。ただし、必要なデータは 1 秒間に数回変更されます。dtrace を使用せずに、kstat が更新されるたびに kstat からデータを取得する方法 (API) はありますか?

4

1 に答える 1

1

外部でdtraceは、更新時に統計を取得する方法はありませんが、C libkstat APIkstatを使用すると、任意の 1 秒未満のサンプリング レートで統計を取得できます。

スクリプトで実行したい場合は、 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
于 2016-02-15T23:11:52.120 に答える