Raspberry Pi 2 / 3 向け CentOS 7 RT Kernel の評価

先日作った Raspberry Pi 向け CentOS 用 Real-Time Kernel を検証してみた。

■RT Kernel のテスト
Cyclictest というもので、タイマー精度を測定できるそうだ。
https://rt.wiki.kernel.org/index.php/Cyclictest

■タイマー精度
通常の Kernel だとスループットはでるが、レイテンシーが割とぶれてるそうだ。
Real-Time Kernel (PREEMPT) になると、レイテンシーがぶれなくなるらしい。

■Real-Time Kernel は万能か?
Real-Time Kernel だからと言って、レイテンシーが最高によくなるわけではない。
大事なのは、レイテンシーが予測可能になることらしい。
ぶっちゃけスループットなら、通常 Kernel のがよい場面のが多い。
Red Hat:レイテンシを最適化するためになぜ MRG Realtime を使用するのか
https://access.redhat.com/documentation/ja-JP/Red_Hat_Enterprise_MRG/2/html/Realtime_Installation_Guide/chap-Realtime_Installation_Guide-Why_Use_RT_to_Optimize_Latency.html

■Cyclictest を使って実際にテスト
・rt-tests をビルド
何も考えず、Cyclictest のページどおりビルド。

$ git clone git://git.kernel.org/pub/scm/linux/kernel/git/clrkwllms/rt-tests.git
$ cd ./rt-tests/
$ make all
# cp -piav ./cyclictest /usr/bin/

・Cyclictest の実行
次のように実行。
なお、出力結果をリダイレクトで残して後程集計に使った。
 Priority 90
 Interval 200
 Loops 50000
で設定。

# cyclictest -p 90 -m -c 0 -i 200 -n -v -q -l 50000 > `uname -r`_default.log

・測定結果
通常Kernel
 T: 0 ( 2054) P:90 I:200 C:50000 Min:5 Act:6 Avg:6 Max:120
通常Kernel + チューニング
 T: 0 ( 3696) P:90 I:200 C:50000 Min:5 Act:5 Avg:5 Max: 63
Real-Time Kernel
 T: 0 ( 2308) P:90 I:200 C:50000 Min:6 Act:7 Avg:6 Max: 24
Real-Time Kernel + チューニング
 T: 0 ( 1790) P:90 I:200 C:50000 Min:6 Act:7 Avg:6 Max: 22

■実行結果を絵にしてみた
・レイテンシー分布図
レイテンシー分布図
想定通り、通常 Kernel に比べて、RT Kernel は確かにレイテンシーは一定のゾーンに集中している。
ただびっくりしたのは、自分がいつも入れているチューニング項目が予想以上にいい成績出していたところ。
でもやっぱり、RT Kernel のぶれなさには感動できる。

・レイテンシーサマリ
レイテンシーサマリ
各モードごとにどのくらいのレイテンシーがカウントされたのかを集計してみた。
こうしてみると、やはり通常利用には RT Kernel は不要であるような気がしてきてる。

・レイテンシーサマリ拡大
レイテンシーサマリ拡大
通常 Kernel の値がつぶれてるので、拡大した図も作った。
RT Kernel の凄さと、通常 Kernel の特徴がよく見えてる気がする。

■感想
Real-Time Kernelになると、確かにレイテンシーはぶれなくなった。
ただ、私にはこれを有効利用できるシステムを作る技巧はなかった。

■おまけ:Raspberry Pi に入れているカーネルチューニング
tuned のプロファイルから、スループットのプロファイルにレイテンシーのプロファイルを被せたものを作って使っている。
/etc/sysctl.d/tune.conf

kernel.sched_min_granularity_ns=10000000
vm.dirty_ratio=10
vm.dirty_background_ratio=3
vm.swappiness=10
kernel.sched_migration_cost_ns=5000000
net.core.busy_read=50
net.core.busy_poll=50
net.ipv4.tcp_fastopen=3
カテゴリー: めも パーマリンク

5 Responses to Raspberry Pi 2 / 3 向け CentOS 7 RT Kernel の評価

  1. ピンバック: Raspberry Pi 2 / 3 向け CentOS 7 RT Kernel の評価@Kernel 4.9.13 | まこぴかっと

  2. ピンバック: Raspberry Pi 2 / 3 向け CentOS 7 RT Kernel の評価@Kernel 4.9.76 | まこぴかっと

  3. ピンバック: Raspberry Pi 2 / 3 向け CentOS 7 RT Kernel の評価@Kernel 4.14.27 | まこぴかっと

  4. ピンバック: Raspberry Pi 2 / 3 向け CentOS 7 RT Kernel の評価@Kernel 4.14.34 | まこぴかっと

  5. ピンバック: Raspberry Pi 2 / 3 向け CentOS 7 RT Kernel の評価@Kernel 4.14.59 | まこぴかっと

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です