CPU に問題があるトルネード アプリケーションの作業を開始したところです。CPU 時間は時間の経過とともに単調に増加し、CPU は 100% で最大になります。システムは現在、メイン スレッドをブロックしないように設計されています。ブロックする何かを実行する必要があり、非同期ドライバーが使用できない場合は、別のスレッドを生成してブロック操作を実行します。
したがって、ほぼ完全に CPU バウンドのメイン スレッドと、ほぼ完全に IO バウンドの他のスレッドの束があります。私が読んだことから、これは GIL で問題に遭遇する完璧な方法のようです。さらに、私のプロファイリングは、シグナルの待機に多くの時間を費やしていることを示しています (これは、私__semwait_signal
が行っていることであると想定しています)。
チェックsys.setcheckinterval
間隔を 300 に設定すると、CPU の成長が大幅に遅くなります。私が判断しようとしているのは、チェック間隔を増やすべきか、300 のままにしておくべきか、それとも怖がって増やすべきかということです。結局、CPU のパフォーマンスが向上していることに気付きますが、これがシステムの応答性に悪影響を与えるのではないかと少し心配です。
もちろん、正しい答えはおそらく、GIL を考慮してアーキテクチャを再考する必要があるということです。しかし、それはすぐにできることではありません。では、短期的に取るべき適切な行動方針をどのように決定すればよいのでしょうか?