
当社のサーバーソリューションは、以下を使用して多くのトンネル作業要求(追加/更新/削除)を処理します。I/W制御インターフェイスとAF_INETアドレスファミリソケット。について。数字は毎分100のジョブで、サーバーには合計8,000を超えるトンネルがあります。
トンネルの数が増えるにつれて、奇妙な動作を観察します。トンネルの数が増加するにつれて、ioctlがカーネルで費やす時間のランダム性が増加します。
はい:平均して約100トンネル。 ioctlの作業時間範囲は100〜150msですが、2000以上では100〜10000msです。このプロセスのランダム性は驚くべきことです。
ストレス処理時間の97%以上がioctlにかかることがわかり、内部タイマーがこれを確認します。
これを最適化する方法はありますか?カーネルパラメータを調整すればよいですか?ランダム性をどのように説明しますか?
私たちのオペレーティングシステムはUbuntu Server 12.04です。
答え1
ここで、ioctlは有罪ではないことが判明しました。ストレスこれが実際に本当であることを示していますが、カーネルのより深い分析は道(またはトレースコマンド) は次のように示しています。I/W制御プロセッサスケジューラは、コア/コンテキスト切り替え中にほとんどの速度低下を引き起こします。