Ubuntu > タイマー精度の評価
更新日
2014-12-06
広告
Linuxマシンのタイマー精度を評価する方法を紹介します。
rt-testsというツールを使います。
インストール
gitからダウンロードしてコンパイルします。$ git clone git://git.kernel.org/pub/scm/linux/kernel/git/clrkwllms/rt-tests.git $ cd rt-tests/ $ make allコンパイル時にエラーができる場合があります。
$ make all cc -D VERSION_STRING=0.89 -c src/cyclictest/cyclictest.c -Wall -Wno-nonnull -O2 -DNUMA -D_GNU_SOURCE -Isrc/include In file included from src/cyclictest/cyclictest.c:39:0: src/cyclictest/rt_numa.h:29:18: fatal error: numa.h: No such file or directory #include <numa.h> ^ compilation terminated. make: *** [cyclictest.o] Error 1この場合は、libnuma-devをインストールしてから再コンパイルします。
$ sudo apt-get install libnuma-devyumなら以下です。
$ sudo yum install numactl-devel
テスト
コンパイル完了すると、cyclictestというコマンドが生成されます。 このコマンドは、nanosleepを定期的に繰り返し、「スリープから起きる理想的な時刻」と「実際に起きた時刻」の差分(遅延時間)を計算します。 つまり、差分が小さいほど、タイマーの精度が良いことになります。
以下のようにテストします。
$ sudo cyclictest -n -p 70 -i 500 -l 3000この場合、priority 70で、500マイクロ秒のnanosleepを3000回実施します。 しばらくすると、以下のような結果が表示されます。
T: 0 (30114) P:70 I:500 C: 3000 Min: 67 Act: 68 Avg: 68 Max: 118Maxはが重要な値です。最大の遅延です。単位はマイクロ秒。 上記の結果だと、最大遅延が118マイクロ秒なので、1ミリ秒よりは高い精度でカーネルが動作していることがわかります。
広告
お問い合わせは sweng.tips@gmail.com まで。