ゲームサーバーがスレッド化されていると仮定しています。この場合、実際にアプリケーションに CPU アフィニティを強制できる場合があります。ゲームにユーザーがいるかどうかを確認する方法がある場合、つまり、UDP パケットが割り当てられたポートに着信している場合、「おい、誰も接続されていません」と言うことができます。次に、プログラムですべての作業スレッドを同じコアに強制することができます。
したがって、8 コアの CPU があり、すべてのスレッドが 1 つのコアにある場合、最大で 12.5% の CPU を使用します。
割り当てられたポートにパケットが入ってくるのを確認したら、アフィニティをすべてのコアに割り当てることができます。
これをさらに一歩進めて、「「アイドル」ゲームはありますか。すべてオンになっているアイドルゲームがある場合..コア7と言って、より高いHLT命令の無限ループを実行します。ゲームよりも優先されますが、ゲームを完全に飢えさせないようにスレッドを強制的にスリープさせます。
これにより、CPU の消費電力は少なくなりますが、より多くの作業が必要になり、問題が発生する可能性が高くなります。
私はアフィニティのみを強制することに固執し、アイドル状態のすべてのゲームが特定のコアを共有できるようにします。