「top」はカーネル割り込みを記述しますか?

「top」はカーネル割り込みを記述しますか?

GPIO入力によってトリガされる単純な割り込みがあります。 IRQは単に変数を増やして返します。割り込み周波数を約10〜20kHzに調整すると、システムが応答しなくなります。周波数を上げながらCPU負荷を測定しましたが、topそのコマンドの指標に大きな変化はありませんでしたtop

だからプロセッサCPUがロードされましたが、利用できませんtop

topどのように測定されますか?非常に頻繁な割り込みが表示されないのはなぜですか?

システム全体のパフォーマンスに対する割り込みの影響を測定するには?

編集する

CPU周波数ガバナを「パフォーマンス」に設定し、周波数を静的1GHzに設定することで、プロセッサがクラッシュする前に割り込み周波数を150kHzに上げることができました。

答え1

「top」はカーネル割り込みを考慮していますか?

カーネルによって異なります。有効にしないと、IRQ_TIME_ACCOUNTING割り込み処理に要した時間が計算されないことがあります。

config IRQ_TIME_ACCOUNTING
    bool "Fine granularity task level IRQ time accounting"
    depends on HAVE_IRQ_TIME_ACCOUNTING && !VIRT_CPU_ACCOUNTING_NATIVE
    help
      Select this option to enable fine granularity task irq time
      accounting. This is done by reading a timestamp on each
      transitions between softirq and hardirq state, so there can be a
      small performance impact.

カーネル構成ファイルから検索してみることができます。多くのシステムでは、カーネル構成は/boot/config-*

これについてはオリジナルパッチシリーズで詳しく説明します。正しいカーネル irq タイミング統計-v4

詳細は CPU アーキテクチャによって異なります。たとえば、TSCを持たない古代x86 CPUでは、この機能は有効になりません。一部のLinuxアーキテクチャではこれをまったく実装していませんHAVE_IRQ_TIME_ACCOUNTING

一部のLinuxアーキテクチャは、代替機能 VIRTUAL_CPU_ACCOUNTING_NATIVEの一部としてこの機能を提供します。現在、これらのアーキテクチャはS390、IA64、およびPowerPCです。私の考えでは、これらは何も使用していないようです(部分的には「GPIO」:-Pの使用に基づいています)。

関連情報