内容へ移動
ClownWiki
ユーザ用ツール
ログイン
サイト用ツール
検索
ツール
文書の表示
以前のリビジョン
バックリンク
最近の変更
メディアマネージャー
サイトマップ
ログイン
>
最近の変更
メディアマネージャー
サイトマップ
トレース:
centos:rps_rfs
この文書は読取専用です。文書のソースを閲覧することは可能ですが、変更はできません。もし変更したい場合は管理者に連絡してください。
====== 5.xでNICの割り込み処理のコア振り分け ====== ===== 現状の確認 ===== ==== 現在のカーネルバージョンを確認 ==== <code> # uname -a Linux kd-web25 2.6.18-308.13.1.el5 #1 SMP Tue Aug 21 17:10:18 EDT 2012 x86_64 x86_64 x86_64 GNU/Linux </code> ==== NICの割り込み処理が偏っていることを確認 ==== <code> # cat /proc/interrupts CPU0 CPU1 0: 513846733 0 IO-APIC-edge timer 1: 9 0 IO-APIC-edge i8042 6: 5 0 IO-APIC-edge floppy 7: 0 0 IO-APIC-edge parport0 8: 0 0 IO-APIC-edge rtc 9: 0 0 IO-APIC-level acpi 12: 109 0 IO-APIC-edge i8042 14: 5727120 0 IO-APIC-edge ide0 51: 107741677 0 IO-APIC-level eth0 59: 45 0 IO-APIC-level ioc0 67: 0 0 IO-APIC-level vmci NMI: 0 0 LOC: 520967905 520924357 ERR: 0 MIS: 0 </code> ethX(上記ではeth0)の処理がCPU0に偏っていることがわかる。 ===== 作業開始 ===== ==== RPS/RFSの設定が可能なカーネルにバージョンアップ ==== <code> # rpm --import http://elrepo.org/RPM-GPG-KEY-elrepo.org # rpm -Uvh http://elrepo.org/elrepo-release-5-4.el5.elrepo.noarch.rpm # yum --enablerepo=elrepo-kernel install kernel-lt </code> ==== 起動時にインストールしたカーネルから起動してくるように設定 ==== <code> # vi /boot/grub/menu.lst -) default=1 +) default=0 </code> ==== 再起動後、インストールしたカーネルで起動していることを確認 ==== <code> # shutdown -r now # uname -a Linux kd-web25 3.0.89-1.el5.elrepo #1 SMP PREEMPT Sun Aug 4 10:02:50 EDT 2013 x86_64 x86_64 x86_64 GNU/Linux </code> ==== 割り込み処理の状況を確認(NET_RX) ==== <code> # watch -n1 cat /proc/softirqs </code> 各CPUのNET_RXの値を監視 ==== 別窓を開いて、以下実行 ==== <code> # echo "f" > /sys/class/net/eth0/queues/rx-0/rps_cpus # echo 4096 > /sys/class/net/eth0/queues/rx-0/rps_flow_cnt # echo 32768 > /proc/sys/net/core/rps_sock_flow_entries </code> デフォルトはすべて"0"。 rps_cpusについては、"f"ではエラーになる場合がある。 その場合は、CPUの数に合わせてマスクを適宜変更する。 e.g. 2CPUの場合、"3" <code> # /etc/init.d/irqbalance start </code> 上記を実行して割り込み処理の振り分けが確認されたら、次回起動時以降、自動で設定されるようにする。 (※確認した環境では、再起動後にすべてデフォルト"0"に戻っていた。) <code> # vi /etc/rc.local +) echo 3 > /sys/class/net/eth0/queues/rx-0/rps_cpus +) echo 4096 > /sys/class/net/eth0/queues/rx-0/rps_flow_cnt +) echo 32768 > /proc/sys/net/core/rps_sock_flow_entries </code> <code> # chkconfig irqbalance on </code> ===== 参考 ===== 受信キューと CPU の対応付け http://docs.oracle.com/cd/E39368_01/b71105/ol_about_uek.html 受信割込みを処理しているCPUを確認するには、コマンドwatch -n1 cat /proc/softirqsを使用して、各CPUのNET_RXの値を監視します。 https://www.nic.ad.jp/ja/materials/iw/2011/proceedings/s09/s09-01.pdf CentOS5でもRPS/RFSでNICが捗る話 http://nekoya.github.io/blog/2012/11/13/centos5-rps-rfs/ CentOS 6.2 で RPS/RFS を使ってネットワークの割り込み処理を複数コアに分散してみた http://blog.nomadscafe.jp/2012/08/centos-62-rpsrfs.html
centos/rps_rfs.txt
· 最終更新: 2025/02/16 13:53 by
127.0.0.1
ページ用ツール
文書の表示
以前のリビジョン
バックリンク
文書の先頭へ