Linux タイマー割り込み

Linux タイマー割り込み

Linuxカーネルについては2つの質問があります。具体的には、タイマー割り込みでLinuxが何をしているのかを正確に知っている人はいますか?これに関する文書はありますか?カーネルをビルドするときにCONFIG_HZ設定を変更すると、どのような影響がありますか?

よろしくお願いします!

ベストアンサー1

Linuxタイマー割り込みハンドラはそれほど多くのことをしません。まっすぐ。 x86の場合、デフォルトのPIT / HPETタイマー割り込みハンドラを見つけることができます。存在するarch/x86/kernel/time.c:

static irqreturn_t timer_interrupt(int irq, void *dev_id)
{
    global_clock_event->event_handler(global_clock_event);
    return IRQ_HANDLED;
}

これにより、グローバルクロックイベントのイベントハンドラが呼び出されます。tick_handler_periodic基本的に、ジッピーカウンターアップデート、グローバル負荷を計算し、時間が追跡される別の場所を更新します。

割り込み発生の副作用として、__schedule最終的に呼び出される可能性があるため、タイマー割り込みによってジョブの切り替えが発生する可能性があります(他の割り込みと同様)。

変化構成_HZタイマー割り込み周期を変更します。増加はHZより頻繁に発生するため、タイマーに関連するオーバーヘッドが増えますが、ジョブのスケジュールがしばらく待つ機会が少ないことを意味します(したがって相互作用が向上します)。減少はHZあまり頻繁に発生しないため、関連するオーバーヘッドが少ないことを意味します。タイマーの使用タイマーに関連するオーバーヘッドは少なくなりますが、ジョブがスケジュールされるのを待つリスクが高くなります(したがって、インタラクティブな応答性を犠牲にしてスループットが向上します)。いつものように、最良のトレードオフは特定のワークロードによって異なります。とにかく、CONFIG_HZ今はある意味では関連性が低くなります。LinuxのCPUスケジューラで使用されるタイムスライスの長さを変更するには?

また、見ることができますLinuxで割り込みを処理する方法は?

おすすめ記事