GMKtec M8 のLANポートで速度が56倍違った話


自宅サーバー用に買った GMKtec M8 に Proxmox を入れて、コンテナのテンプレートをダウンロードしようとしたら異様に遅かった。

124MB のファイルに48分。 平均 43.6KB/s。

結論から書くと、本体に付いている2つの LAN ポートのうち片方の実効速度が極端に低かった。もう一方に挿し替えたら 2.36MB/s 出た。56倍の差。

同じ症状で悩んでいる人のために、切り分けの過程を残しておく。

環境

  • GMKtec M8(AMD Ryzen 5 PRO 6650H)
  • Proxmox VE 9.2.2
  • 有線LAN 2ポート(Realtek、ドライバは r8169
  • LANケーブルは CAT6a
  • バッファローの中継機 WEX-5400AX6 経由で接続

症状

pveam download でコンテナテンプレートを落とすと、進捗が異常に遅い。

debian-13-standard_13.6-1_amd64.tar.zst
  15%[=====>              ]  19.16M  1.09MB/s  eta 97s

いや、これは解決後の表示だ。問題があったときはこうだった。

  0%[                     ]  768K  36.2KB/s  eta 45m 5s

45分。ADSL でもここまで遅くない。

切り分け1:CDN の経路を疑う

まず接続先を確認した。

$ ping -c 10 download.proxmox.com
PING sg.cdn.proxmox.com (51.79.228.122) 56(84) bytes of data.
64 bytes from sg.cdn.proxmox.com: icmp_seq=2 ttl=46 time=86.6 ms
...
10 packets transmitted, 9 received, 10% packet loss

シンガポールのサーバーに繋がっていた。 ホスト名が sg.cdn.proxmox.com、応答時間 86ms、パケットロス10%。

日本のミラーを直接叩けば速くなるはずだと考えた。

$ wget http://jp.as.cdn.proxmox.com/images/system/debian-13-standard_13.6-1_amd64.tar.zst
Resolving jp.as.cdn.proxmox.com... 117.120.5.24
  0%[                     ]  617.57K  42.5KB/s  eta 41m 54s

変わらない。 日本のサーバーに繋いでも 42.5KB/s。CDN の経路は原因ではなかった。

切り分け2:リンク速度を確認

物理層を疑う。

$ ethtool nic1 | grep -i Speed
        Speed: 1000Mb/s

1Gbps でリンクしている。ケーブルも CAT6a(10Gbps 対応)なので、規格上のボトルネックはない。

この時点で「リンク速度は正常だから物理層は問題なし」と判断してしまったのだが、これが最初の誤りだった。 リンク速度は「機器同士が合意した速度」であって、実際にデータが流れる速度ではない。

切り分け3:省電力機能(EEE)

Realtek の NIC では、省電力機能が原因で速度が落ちる報告がある。

$ ethtool --show-eee nic1
EEE settings for nic1:
        EEE status: enabled - active
        Tx LPI: 12 (us)
        Link partner advertised EEE link modes:  100baseT/Full
                                                 1000baseT/Full

有効になっていた。 中継機側も EEE に対応していて、両者が省電力モードで合意している状態だ。これが犯人に見えた。

$ ethtool --set-eee nic1 eee off
$ ethtool --show-eee nic1
        EEE status: disabled

再測定。

  0%[                     ]  617.57K  42.5KB/s  eta 41m 54s

効果なし。 容疑者から外れた。

切り分け4:ネットワークのどこが遅いのか

ここで方向を変えた。M8 が悪いのか、それとも中継機や回線が悪いのか。

まずノートPCで速度測定。Wi-Fi 経由で 25Mbps。回線自体は生きている。

次に、M8 から抜いた LAN ケーブルをそのままノートPCに挿して測定した。同じケーブル、同じ中継機ポート。

結果は 17Mbps。

M8 の 0.35Mbps に対して 50倍。中継機は正常で、M8 側に問題があると確定した。

切り分け5:もう一方のポート

M8 には LAN ポートが2つある。使っていなかった方を試す。

$ ip a
2: nic0: <BROADCAST,MULTICAST> mtu 1500 state DOWN
    link/ether 70:70:fc:0b:ce:91
3: nic1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 master vmbr0 state UP
    link/ether 70:70:fc:0b:ce:92

MAC アドレスが連番(...ce91...ce92)。おそらく同じチップの2ポート構成だ。だとすればドライバは共通なので、結果は変わらないだろうと予想した。

ケーブルを nic0 側に挿し替えて、インターフェースを有効化する。

$ ip link set nic0 up
$ ethtool nic0 | grep -i -E "Speed|Link detected"
        Speed: 1000Mb/s
        Link detected: yes
$ dhclient nic0

ここで一度つまずいた。IP は取得できたのに外に出られない。

$ ip route
default via 192.168.11.1 dev vmbr0 proto kernel onlink linkdown
192.168.11.0/24 dev vmbr0 proto kernel scope link src 192.168.11.100 linkdown
192.168.11.0/24 dev nic0 proto kernel scope link src 192.168.11.13

デフォルトルートが vmbr0 を向いていて、しかも linkdown ケーブルが刺さっていない方に全パケットを流していた。

nic0 経由のルートを追加して、古い方を削除する。

$ ip route add default via 192.168.11.1 dev nic0 metric 50
$ ip route del default via 192.168.11.1 dev vmbr0
$ ping -c 3 8.8.8.8
3 packets transmitted, 3 received, 0% packet loss

通った。そして測定。

$ wget -O /dev/null http://jp.as.cdn.proxmox.com/images/system/debian-13-standard_13.6-1_amd64.tar.zst
  11.54M  2.36MB/s  eta 47s

2.36MB/s。

43.6KB/s に対して 56倍。同じケーブル、同じ中継機、同じドライバ、同じ設定。違うのはポートだけ。

対処

Proxmox のブリッジ vmbr0 が束ねるポートを nic1 から nic0 に変更した。

管理画面の システムネットワークvmbr0 を選んで 編集、ブリッジポートを書き換えて 設定を適用。あとはケーブルを挿し替えるだけ。IP アドレスは変わらないので、他の設定に影響はない。

なお、ip linkip route で行った変更はすべてメモリ上の一時的なものなので、再起動すれば消える。設定ファイルを直接いじる必要はなかった。

原因の考察

ドライバの問題なら両方のポートが遅いはずなので、ポート固有の不良と考えるのが自然だろう。

リンク速度が 1000Mb/s と表示されるのに実効速度が出ないというのは、オートネゴシエーションは成立しているが、その先の物理層で何かが起きている状態だ。パケットロスは出ていなかったので、単純な断線でもない。

Windows 環境で同じ症状が出るかは確認していない。プリインストールの Windows は Proxmox で上書きしてしまったので、比較できなかった。ドライバとの相性という可能性も完全には否定できない。

返品も考えたが、2つあるうちの良い方を使えば実用上の問題はないので、そのまま運用している。

まとめ

リンク速度が正常でも実効速度は保証されない。 ethtoolSpeed: 1000Mb/s を見て「物理層は問題なし」と判断したのが遠回りの原因だった。

同じケーブルを別の機器に挿して測るのが一番速い切り分け。 これで「ネットワーク側」と「機器側」が一発で分かれる。

LAN ポートが2つあるなら両方試す。 MAC アドレスが連番でも、実効速度が同じとは限らない。

同じミニPCで通信が遅いと感じている人は、まずもう一方のポートを試してみてほしい。数分で試せる。