Intel Arc B580でローカルLLMが遅い? 調査結果と考察 〜Arc B580ローカルLLM 第2話

本ページは広告(アフィリエイトプログラム)を含みます。詳しくはプライバシーポリシーをご覧ください。

デスクトップPCにIntel Arc B580 を挿して速度を測ったところ、どうも速度が出ません。そこで、`lspci` を確認したところ PCIe 1.0 x1 と表示されました。本来は PCIe 4.0 x8 の製品です。これは壊れているか挿し方を間違えたか、と思い調べた内容を記載します。

2026年7月時点の内容です。

前回の記事はこちら

使用した機器の概要

使用したデスクトップは、下記のとおり。このPCにIntel Arc B580を追加しました。

CPURyzen 9 3950X
マザーボードX570
メモリー64GB
GPURTX 3090、Intel Arc B580(今回追加)
OSUbuntu

使用したGPU:玄人志向 Intel Arc B580 搭載 グラフィックボード GDDR6 12GB AR-B580D6-E12GB/DF

[kimono_product id="16471″]

目的:表示を鵜呑みにして誤診した経緯を残す

第1話で、B580 が異常に遅かった原因はドライバ(Mesa)のバージョンだったと書きました。ただし原因にたどり着くまでに、いくつか間違った仮説を立てています。その最初が「PCIe 接続が劣化している」でした。

sysfs(Linux がハードウェア情報を見せる仕組み)を階層ごとに読んで確認しました。その中で、`lspci` の表示を見て、私は接続不良を疑いました。この判断は誤りでした。同じ勘違いをしないための確認手順を、実際の値とともに示します。

実験内容:階層ごとにリンク速度を読む

PCIe のリンク速度は、GPU 単体ではなく「経路上の各ノード」がそれぞれ持っています。CPU の根元(ルートポート)から GPU まで、間にいくつものブリッジ(中継点)が挟まります。

Linux では各ノードのリンク速度が sysfs に出ています。GPU のエンドポイントから根元まで、一段ずつ読み上げました。

for d in $(経路上のPCIアドレス); do
  cat /sys/bus/pci/devices/$d/current_link_speed
  cat /sys/bus/pci/devices/$d/current_link_width
done

結果:上の2段は「Gen1 x1」、下の段で真値が出た

B580 から CPU の根元まで、6段のリンクを読んだ結果です。

B580 → CPU 根元までのリンク速度(当環境の実測)
05:00.0 GPU 本体(Intel Arc B580) 2.5GT/s ×1 ← 誤報告
04:01.0 カード内ブリッジ(上段) 2.5GT/s × 1 ← 誤報告
03:00.0 カード内ブリッジ(最下段) 16.0GT/s × 4 ← ★ここが真値
02:01.0 マザー側ブリッジ 16.0GT/s × 4
01:00.0 マザー側ブリッジ 16.0GT/s × 4
00:01.2 CPU ルートポート 16.0GT/s × 4

`lspci` が拾って表示するのは、いちばん上の GPU エンドポイント(05:00.0)の値です。ここが「2.5GT/s x1」= PCIe 1.0 x1 と出ていました。しかし一段下の 03:00.0 では 16.0GT/s x4、すなわち PCIe 4.0 x4 が出ています(16.0GT/s が PCIe 4.0 の1レーンあたりの速度)。

真の接続は PCIe 4.0 x4 でした。ルートポートまで一貫して 16.0GT/s x4 なので、経路のどこにも劣化はありません。

Intel が仕様として認めている

この挙動は Intel の公式サポート文書に明記されていました。

Intel Arc グラフィックスカードは、カード内部に PCIe ノードの階層を持つ。その階層の上位ノードは残念ながらリンク属性の値を誤って報告するが、Intel は最下段のブリッジが正しい値を報告することを保証する。上位ノードは製品本来の値ではなく、常に Gen1・x1 レーンを表示する。
― Intel 公式サポート記事 000094587

「常に Gen1 x1 を表示する」と書かれています。B580 で `lspci` が Gen1 x1 を出すのは正常で、これを見て接続不良と判断するのは誤りでした。

考察:表示を1つ見て決めない

今回の教訓は、表示された値ひとつで結論を出さないことです。とくに新しい製品では、ツール側が製品固有の癖を知らずに額面どおり見せてしまうことがあります。

反証できる別の指標を持っておくと、この種の誤診を避けられます。私はリンク速度の表示とは独立に、実際の転送でも裏を取りました。

B580 へモデルデータ 2.61GB を転送するのにかかった時間は 4.87 秒でした。実効で約 0.54GB/s です。もし本当に PCIe 1.0 x1(実効およそ 0.25GB/s)なら、この転送だけで 10.4 秒以上かかる計算です。実測の 4.87 秒は、Gen1 x1 では物理的に成立しません。表示が誤りで、実際は十分に速い経路だと、速度表示を見なくても確定できました。

こうした「下限からの反証」は、値そのものを正確に測れなくても使えます。ある表示を疑ったら、それが正しければ絶対にあり得ない事象を1つ探すと、白黒がつきます。

まとめ:Arc の PCIe を確認する手順

Intel Arc シリーズで PCIe の接続を確認するときは、`lspci` の表示(GPU エンドポイントの値)を鵜呑みにせず、一段下のブリッジの値を見ます。Linux なら sysfs で経路をたどれます。

# GPU のPCIアドレスを調べる(例: 05:00.0)
lspci | grep -i arc

# その経路の各ノードのリンク速度を読む
cat /sys/bus/pci/devices/0000:03:00.0/current_link_speed
cat /sys/bus/pci/devices/0000:03:00.0/current_link_width

GPU エンドポイントが Gen1 x1 でも、下段のブリッジが期待どおり(例: 16.0GT/s x4)なら正常です。逆に下段まで遅ければ、そこで初めて接続を疑います。

なお他の Arc ユーザーからも「新品なのに Gen1 x1 と出て焦った」という同種の報告が複数あります。Arc を初めて使う人がつまずきやすい表示のようです。本記事の値は 2026年7月時点の当環境(B580 + X570 マザー)のものです。

参考にしたサイト

検証に使用した機材

[kimono_product id="16471″]