どうもこんにちは、agiです。
今回は ESXi ホスト(Dell PowerEdge T330)でlspciコマンドを実行したことをきっかけに、サーバー内部のハードウェア構成やデータの流れを学んだので、その内容をまとめていきます。
↓lspciの結果はこのような感じ。lspciコマンドはシステムのすべてのバスと接続されているデバイスに関する情報を表示します。

サーバー内部は「CPUを中心とした接続構造」でできている
まず大前提として、サーバー内部の高速デバイス接続には主に PCIe(PCI Express) が使われます。 これはイーサネットとは別物ですが、考え方としてはネットワークに少し似ています。
たとえば、ざっくり対応づけるとこんなイメージです。
| PCIe | ネットワークでたとえると | 役割 |
|---|---|---|
| Root Complex(CPU側) | コアスイッチ | 各デバイスへの経路の起点 |
| Root Port | スイッチポートのようなもの | デバイスへの出口 |
| レーン数(x1 / x4 / x8 / x16) | 回線帯域 | 転送性能に影響 |
| NIC / RAID / NVMe / GPU | 接続先機器 | 実際にデータを処理する装置 |
PCIeはCPU側を中心に複数のデバイスがぶら下がる構造として捉えると、かなり理解しやすくなります。
CPU直結とチップセット経由の違い
サーバー内部のデバイスは、大きく分けると次の2種類の経路に分かれます。
1. CPU直結のデバイス
高速性が重視されるデバイスは、CPU側のPCIeレーンに直結されることがあります。
- RAIDコントローラー
- 高速NIC
- NVMe SSD
- GPU
こうしたデバイスは大量のデータを扱うため、低遅延・高帯域が求められます。
2. チップセット(PCH)経由のデバイス
一方で、そこまで高速性が必要ないデバイスはチップセット側に集約されます。
- USB
- SATA
- SMBus
- 管理系インターフェース
- 一部のオンボード機能
イメージとしては、CPU直結が基幹系の高速経路、チップセット経由が管理系や補助系の経路という感じみたいです。
ただし重要なのは、チップセット側は複数の機能が集約されるため、上流で帯域を共有するということです。 「デバイスごとに完全独立で干渉しない」というより、独立リンクを持ちやすいが、上流側では集約されると考えるほうが正確です。
メモリはすべてのデータの「作業台」
メモリはPCIeデバイスとは別系統で、CPUのメモリコントローラに直結されています。PCIeデバイスよりもさらに低遅延でアクセスされる、サーバーの作業台です。
ここで重要なのが、多くのI/Oは主記憶(メモリ)を経由して処理されるということです。
たとえば、
- NICが受け取ったパケット
- RAIDコントローラーが読み書きするデータ
- ディスクから読み込まれたファイル
こうしたデータは、通常は主記憶上のバッファを使って処理されます。
ただし、毎回CPUコアが手作業でデータを運んでいるわけではありません。NICやRAIDコントローラーは DMA(Direct Memory Access) によって、CPUコアの細かな介入なしに主記憶へデータ転送できます。
つまり、
- CPUコアが1バイトずつ運んでいるわけではない
- でも システム全体としては CPU/メモリ側の制御のもとで動いている
という理解が大事です。
サーバー内部にはキャッシュの階層がある
サーバー内部には、速度差を吸収するためのキャッシュがいくつもあります。 以下はあくまで目安ですが、上に行くほど高速・小容量、下に行くほど低速・大容量です。
| 層 | 速度感 | 容量感 | 役割 |
|---|---|---|---|
| L1キャッシュ | 約1ns級 | 数十KB | CPUコア直近。最速 |
| L2キャッシュ | 数ns級 | 数百KB | L1にないデータを保持 |
| L3キャッシュ | 数ns〜十数ns級 | 数MB〜数十MB | CPU全体で共有 |
| メモリ(DDR4/DDR5) | 数十ns級 | 数GB〜数百GB | 主記憶。全体の作業台 |
| RAIDキャッシュ | ディスクより高速 | 数百MB〜数GB | 書き込みの緩衝材 |
| SSD / HDD | さらに遅い | 数百GB〜数TB | 永続保存先 |
この構造はかなり重要です。 速い層にデータが残っているほど、遅い層まで取りに行かずに済むため、体感性能が大きく変わります。
キャッシュヒット率が高いほど速い、という原理はCPUでもRAIDでもOSのファイルキャッシュでも基本的に同じです。
RAIDコントローラーのキャッシュと Write Back / Write Through
RAIDコントローラーにもキャッシュが搭載されていることがあります。たとえばDellのPERC H730系では1GBのキャッシュ保護機構を備える資料があります。
ここで重要なのがWrite BackとWrite Through の違いです。
Write Through
キャッシュに書き込むだけでなく、実際にディスクへの書き込み完了を待ってから完了応答を返す方式です。
- 安全性は高い
- そのぶん遅くなりやすい
Write Back
いったんコントローラーのキャッシュに載った時点で完了応答を返し、実ディスクへの反映は後で行う方式です。
- 速い
- ただし停電時の保護機構が重要
このため、RAID コントローラーではキャッシュ保護機構(NV Cache/フラッシュ保護キャッシュなど)が非常に重要になります。「Write Backは速いが、保護機構があってこそ安心して使える」という理解でよいのかなと思います。
HDDとSSDの差は「帯域」より「IOPS」が本質的
ストレージ性能というとMB/sが注目されがちですが、実務では IOPS(1秒あたりのI/O回数) が非常に重要です。
ざっくりしたイメージはこんな感じです。
| デバイス | 帯域の目安 | IOPSの目安 |
|---|---|---|
| HDD(7200rpm) | 約100〜200 MB/s | 約100前後 |
| SATA SSD | 約500 MB/s級 | 数万〜十万弱 |
| NVMe SSD | 数GB/s級 | 数十万級 |
特にDBやVMのように、小さいランダムアクセスを大量に発生させる用途では、帯域よりIOPSやレイテンシの差が効いてきます。
「HDDをRAIDで束ねれば速くなる」というのも半分正しいですが、限界があります。 さらに RAID5は書き込み時にパリティ計算や追加 I/O が発生するため、ランダム書き込みでは不利です。
つまり、今の時代は
- 容量重視なら HDD
- 性能重視なら SSD / NVMe
という切り分けがかなり明確です。
まとめ
lspciの出力をきっかけに、PCIeの構造、メモリの役割、キャッシュ階層、ストレージ性能の考え方までつながって見えてきました。
これらの知識はサイジングにも大きく関わっており、サーバの用途によってストレージ性能やメモリの量などを決めていきます。
こうした視点を持つと、サーバをただの箱としてではなく、内部でどうデータが流れているかまでイメージできるようになる、、、と思ってます。
引き続き勉強していきます!

