問題タブ [softirq]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
1 に答える
72 参照

network-programming - rps プロシージャが local_irq_disable でスピンロックを使用する理由

最近は、カーネルの内部ネットワーク コード、特にRPSコードについて勉強しています。ご存知のように、それについては多くの機能があります。ただし、やなどのSMP キュー処理に関するいくつかの機能に焦点を当てています。enqueue_to_backlogprocess_backlog

enqueue_to_backlog-と-の 2 つの関数を使用して、2 つのコア (または単一のコア) 間の同期について疑問に思いprocess_backlogます。

その関数では、A core(A) は、spin_lockパケットをキューに入れinput_pkt_queue、 core(B) の napi をスケジュールするために、他の core(B) の を保持します。また、A Core(B)は、core(B)へのspin_lockスプライシングと napi スケジュールを単独で削除するための も保持します。input_pkt_queueprocess_queuespin_lockキューの処理中に2つのコアが同じキューに相互にアクセスするのを防ぐために保持する必要があることはわかっています。

しかし、なぜ(または)spin_lockで呼び出されるのか理解できません。割り込み(TH)が現在のコンテキスト(softirq、BH)をプリエンプトする場合、割り込みコンテキスト(TH)によるキューまたはコア(B)へのアクセスはないと思います。local_irq_disablelocal_irq_saverps_lock- もちろん、napi struct は TH によって napi のスケジューリングのためにアクセスできますが、パケットをキューイングするまで irq を無効に保持します- では、なぜspin_lockirq disable で呼び出されるのか疑問に思います。

タスクレットなどの他の BH で現在のコンテキスト (napi、softirq) をプリエンプトすることは不可能だと思います。本当ですか?そして、local_irq_disable がすべてのコアの irq を無効にするのか、それとも現在のコアの irq だけを無効にするのかを知りたいですか? 実は、カーネル開発に関する本を読んだことがありますが、プリエンプションについて十分に理解していないと思います。

spin_lockrps プロシージャが を使用する理由を説明しlocal_irq_disableますか?

0 投票する
1 に答える
173 参照

kernel - softirq をデバッグする方法はありますか?

私の目的 :

特定の状況での softirq 生成のデバッグ情報 (比率、アドレス、その他) をログに記録します。どんな情報でも役に立ちます。

不審なデバイス ドライバがあると思われますが、負荷が高くなった理由がわかりません。

「このマニュアルを読む」などの推奨事項に感謝します。