以前と違い、今回はそこまで苦労しませんでした。
目次
1. 変更前のドライバ
r8169となっていますが、サーバに搭載されているNICはRTL8111Hでr8168が正しいものとなります。ethtool -i enp2s0
driver: r8169 version: 2.3LK-NAPI firmware-version: rtl8168h-2_0.0.2 02/26/15 expansion-rom-version: bus-info: 0000:02:00.0 supports-statistics: yes supports-test: no supports-eeprom-access: no supports-register-dump: yes supports-priv-flags: no
2. ドライバの変更
コンパイルに必要な物をインストールdnf install kernel-devel elfutils*elfutilsが無い状態でmakeすると以下のエラーになりました。
Makefile:958: *** "Cannot generate ORC metadata for CONFIG_UNWINDER_ORC=y, please install libelf-dev, libelf-devel or elfutils-libelf-devel". 中止.ここから、『GBE Ethernet LINUX driver r8168 for kernel up to 4.15』をダウンロードし、/rootに配置します。
Eメールのアドレスを入力する必要があります。
tar vjxf r8168-8.047.04.tar.bz2 cd r8168-8.047.04 make問題なく終わることが確認できたら、以下を実行。
./autorun.shSSHが切れ、しばらくたったら、再接続する。
3. 変更後のドライバ
無事変更されました。ethtool -i enp2s0
driver: r8168 version: 8.047.04-NAPI firmware-version: expansion-rom-version: bus-info: 0000:02:00.0 supports-statistics: yes supports-test: no supports-eeprom-access: no supports-register-dump: yes supports-priv-flags: no
4. 初期RAMDISKの再作成
再起動後も変更後のドライバが使用されるように、初期RAMDISKを新しくしておく。↓起動時にr8169が選ばれないようにするため削除。
rm -f /lib/modules/$(uname -r)/kernel/drivers/net/ethernet/realtek/r8169.ko.xz↓再作成。
cd /boot/ mv initramfs-$(uname -r).img initramfs-$(uname -r).img.bak dracut /boot/initramfs-$(uname -r).img
5. ドライバ変更の効果
正しいドライバを使用することで安定性が上がるそうです。前後で違いがあるかiperf3を使用し、PC(Windows)からサーバに向けてパケットを投げてみました。
CentOS 8のiperf3は、dnfでインストールできます。
Windows用は、どこかで拾ってきました。
5-1. TCP速度測定
サーバ側iperf3 -sPC側
iperf3.exe -c サーバのIPアドレス
5-1-1. 変更前
1回目[ ID] Interval Transfer Bitrate [ 5] 0.00-10.04 sec 1.10 GBytes 937 Mbits/sec receiver2回目
[ ID] Interval Transfer Bitrate [ 5] 0.00-10.04 sec 1.10 GBytes 939 Mbits/sec receiver
5-1-2. 変更後
1回目[ ID] Interval Transfer Bitrate [ 5] 0.00-10.04 sec 1.10 GBytes 939 Mbits/sec receiver2回目
[ ID] Interval Transfer Bitrate [ 5] 0.00-10.04 sec 1.10 GBytes 938 Mbits/sec receiver違いは見られません。
5-2. UDPロスト量測定
とりあえずたくさん送信するために、10G指定しています。計測方法が正しいかはわかりません。
サーバ側
iperf3 -sPC側
iperf3.exe -c サーバのIPアドレス -u -b 10G
5-2-1. 変更前
1~5回目。[ ID] Interval Transfer Bitrate Jitter Lost/Total Datagrams [ 5] 0.00-10.04 sec 832 MBytes 695 Mbits/sec 0.071 ms 0/106520 (0%) receiver [ 5] 0.00-10.04 sec 837 MBytes 699 Mbits/sec 0.070 ms 153/107285 (0.14%) receiver [ 5] 0.00-10.04 sec 834 MBytes 697 Mbits/sec 0.085 ms 2/106768 (0.0019%) receiver [ 5] 0.00-10.04 sec 805 MBytes 672 Mbits/sec 0.076 ms 425/103429 (0.41%) receiver [ 5] 0.00-10.04 sec 770 MBytes 644 Mbits/sec 0.106 ms 4/98587 (0.0041%) receiver
5-2-2. 変更後
1~5回目。[ ID] Interval Transfer Bitrate Jitter Lost/Total Datagrams [ 5] 0.00-10.04 sec 771 MBytes 644 Mbits/sec 0.079 ms 1/98654 (0.001%) receiver [ 5] 0.00-10.04 sec 771 MBytes 644 Mbits/sec 0.070 ms 24/98721 (0.024%) receiver [ 5] 0.00-10.04 sec 821 MBytes 686 Mbits/sec 0.074 ms 1/105143 (0.00095%) receiver [ 5] 0.00-10.04 sec 769 MBytes 643 Mbits/sec 0.076 ms 25/98507 (0.025%) receiver [ 5] 0.00-10.04 sec 829 MBytes 693 Mbits/sec 0.055 ms 182/106309 (0.17%) receiver変更後のロスト量は減っているようですが、Transferが少ないため結果としては微妙です。
実際に効果があるかは分かりませんでした…。