12MB のキャッシュを備えた 6 コアのマシンがあるとします。数ギガバイトのヒープを持つサーバー アプリケーションに使用します (その多くは第 2 レベルの Hibernate キャッシュです)。
ほとんどの場合、少数のスレッドがアクティブにクライアント リクエストを処理している (CPU を焼き尽くして DB と通信している) だけでなく、クライアントとの古い同期ネットワーク IO のみを実行している約 30 ~ 50 のスレッドがあることに気付きました。
Java メモリ モデルについて学習しているので、これがパフォーマンスに影響を与える可能性があるかどうか疑問に思っています。多くのネットワーク IO スレッドの 1 つのコンテキスト切り替えは、「アクティブな」スレッドのスレッド/CPU キャッシュを台無しにしますか? このレベルの同時実行性自体は有害ですか (メモリ キャッシュは別として)?
アプリケーションメモリ全体に対してCPUキャッシュがどれほど小さいかを考えると、それは本当に重要ですか? 境界がどこにあるかをどのように判断できますか?