tick_periodic
Gentooをゲストとして仮想マシンを実行すると、関数からかなりのオーバーヘッドが発生することがわかりました。(これは、タイマー割り込みごとに実行される関数です。)この関数は、オーバーヘッドにつながるグローバルjiffy
使用を更新します。write_seqlocks
HZ
これが私のカーネル設定ファイルのgrepと関連するものです。
sharan013@sitmac4:~$ cat /boot/config | egrep 'HZ|TIME'
# CONFIG_RCU_FAST_NO_HZ is not set
CONFIG_NO_HZ=y
# CONFIG_HZ_100 is not set
# CONFIG_HZ_250 is not set
# CONFIG_HZ_300 is not set
CONFIG_HZ_1000=y
CONFIG_HZ=1000
# CONFIG_MACHZ_WDT is not set
CONFIG_TIMERFD=y
CONFIG_HIGH_RES_TIMERS=y
CONFIG_X86_CYCLONE_TIMER=y
CONFIG_HPET_TIMER=y
明らかに構成が1000に設定されていますが、設定するとsysconf(_SC_CLK_TCK)
、タイマー周波数として100が取得されます。それで、私のシステムのタイマー周波数は何ですか?
私がやりたいのは、周波数を100に下げ、可能であればさらに低くすることです。poll
/およびスケジューラのタイムスライスの対話性と精度に影響を与える可能性がありますがselect
、VMを高速化するため、タイマー割り込みを減らすためにこれらを犠牲にする準備ができています。
何をしなければならないかを見つけようとしたとき、構成ファイルを変更することでそれができる場所を読みました。それ以外の場合は、bootパラメーターにdivider = 10を追加すると機能することを読みました。それ以外の場合は、それを読みました。CONFIG_HIGH_RES_TIMERS
タイマーの頻度を上げなくても、低遅延タイマーを実現するように設定できれば、それは必要ありません。ティックレスシステムでも同じことが可能ですCONFIG_NO_HZ
。
私は正しいアプローチが何であるかについて非常に混乱しています。
私が欲しいのは、タイマー割り込みを可能な限り低くすることです。
これを行う正しい方法を知ることができますか?