RPS/RFS設定

現状の仮想環境ではマルチキューが利用できません。したがってmemcachedなどのミドルウェアを仮想上で動作させると必ず一つのCPUに偏ります。これを回避するためにはrhelの7系のカーネルを待つしかありません。

と思っていたところ、

RPS/RFSの設定でCentOS6.xで仮想環境でCPUの偏りをなくすことができるようです。
RPS/RFSを使用するとソフトウェア的にNICの割り込みに使用するCPUを分散してくれます。
dmmで利用しているmemcachedのサーバで設定してみたところ、
実際にCPUコアの偏りが無くなったことが確認できました。

入れ替え前のmemcachedサーバのCPU負荷
cpuの1に偏っています。

RPS/RFS設定を行ったmemcachedサーバのCPU負荷
cpuの0,1,2,3と綺麗に分散されています。

設定例

/sys/class/net/eth0/queues/rx-0/rps_cpus は使用するCPUを指定します。
各コアを使用するかのフラグと2進数で各ビットを立て、16進数に変換します。
1,2コアを使用する場合は
2進数で 11 → 16進数に変換して3を設定。
1,2,3,4コアを使用する場合は
2進数で 1111 → 16進数に変換してfを設定。

これにより、ネットワーク系のエラーやmemcachedのレスポンスタイムが改善しています。

・入れ替え前
before_rps

・入れ替え後
after_rps


PAGE TOP