SlideShare una empresa de Scribd logo
1 de 24
Descargar para leer sin conexión
NICにおけるPCI E 性能の計測
Yohei Kuga@KEIO Univ
⾼速PCルータ研究会 2015/5
今⽇の話
1. PCIe NICの基礎体⼒測定
2. ざっくばらんにFPGA開発ネタ
• FPGA+SystemVerilogで合成可能なパケット処理を考える
• その他のFPGA NIC実装
1
Motivation
ネットワークを⾼機能化するためにNICを⾃由に拡張したい
最近のDC+SW界隈 (Kernel bypass/Unikernels) に⽐べて,
ネットワークHWはまだまだユーザ拡張性が低い
▶ 現在のOffload機能はL2˜L4パケットヘッダ操作が主流
• Capsulation, CSUM, TCP など
▶ Programmable NICの検討は始まっている
”NICがProgrammableであること”が最初の⼀歩
▶ ヘッダやFIB操作はProgrammable NICやNPUで実現可能
▶ ペイロード操作/Interrupt/PCIe/遅延制御などを直接触り
たいならFPGA NICが有⼒
2
今回のチャレンジ
前回: シングルポート1GE NIC
▶ Lattice ECP3 versa kit (1GEx2 + PCIe1.1)
▶ PCIE-TX: PIO write + Write combining, RX: DMA write
▶ Linux Driver and Timestamp機能
今回: マルチポート10GE NIC
▶ KC705 (10GEx4 + PCIe gen2 x8) or NetFPGA-SUME
▶ PCIE: TX: DMA read, RX: DMA write
▶ 性能⽬標: 少なくとも10G 2ポートはline rate出したい
3
FPGA NICのどこらへんが難しいのか
いまのところ マルチポート らへんが課題
▶ Ethernetポートは増やせても使えるPCIe帯域は共通
▶ だめ回路ではマルチポートで性能がだせない可能性がある
しかしマルチポートNICのPCIe利⽤帯域の⾒積もりは難しい
▶ ネットワークではマルチポート送受信利⽤が前提だがPCIe
は共有
▶ マルチポートEthernet利⽤時のTLP送信待ち時間が課題
▶ マルチポート40GE/100GE NICがきびしい理由を計測から
考える
今回は,市販NICでPCIeの現実に使える利⽤可能帯域を計測
4
計測のねらい
▶ Ethernetの性能を最⼤限出すために,現実的なPCIeの利⽤
可能帯域を探りたい
▶ ⼀⽅で,市販NICはPCIe帯域に余裕を持って設計されてい
るため,計測⽅法に⼯夫が必要
▶ 今回はIntel x520-SR2 (10GE x2)を⽤いて計測
Intel 82599: Host Interface Features1
PCIe Host Interface PCIe gen2 (2.5GT/s, 5GT/s)
Number of Lanes x1, x2, x4, x8
意図的にNIC PCIeの使⽤レーン数を絞ることでThroughput
を計測
1(PDF) Intel 82599 10 GbE Controller Datasheet
5
計測環境
Host CPU Intel Core i7 4770
NIC Intel x520-SR2
OS BSD Router 1.55 (FreeBSD 10.1-RELEASE-p8)
Tool netmap pkt-gen
Tester
(Intel x520)
DUT
(Intel x520)
Test 1: TX
Tester
(Intel x520)
DUT
(Intel x520)
Test 2: TXRX (same interface)
pkt-gen (60B, 1514B)
pkt-gen (60B, 1514B)
pkt-gen (60B, 1514B)
6
テープを使ってPCIeスロットを物理マスク
$ sudo lspci -vv
01:00.0 Ethernet controller: Intel Corporation 82599ES
LnkCap: Port #0, Speed 5GT/s, Width x8, ...
LnkSta: Speed 5GT/s, Width x1, ...
上: x1マスク, 中: x4マスク, 下: x1時のLink status
7
計測環境
Tester
(Intel x520)
DUT
(Intel x520)
Test 1: TX
Tester
(Intel x520)
DUT
(Intel x520)
Test 2: TXRX (same interface)
pkt-gen (60B, 1514B)
pkt-gen (60B, 1514B)
pkt-gen (60B, 1514B)
ここでPCIeレーン数を絞る
計測結果の注意点
▶ Softwareで試験パケットを⽣成しているので計測PPSに誤
差が⽣じる
▶ もちろんx8の時に最⼤限PCIe性能がだせる回路と考えられ
るので,NICそのものの絶対評価ではない
8
Max. TX Throughput
0
2
4
6
8
10
12
x1 x2 x4 x8
Gbps
Lane width
60B(TX)
60B(TXRX)
1514B(TX)
1514B(TXRX)
Theoretical Max. Throughput (GT/s) * 8b/10b overhead (0.8):
x1: 4Gbps, x2: 8Gbps, x4: 16Gbps, x8: 32Gbps
9
% of Max. TX Throughput
0
20
40
60
80
100
x1 x2 x4 x8
Throughput(%)
Lane width
60B(TX)
60B(TXRX)
1514B(TX)
1514B(TXRX)
Theoretical Max. Throughput (GT/s) * 8b/10b overhead (0.8):
x1: 4Gbps, x2: 8Gbps, x4: 16Gbps, x8: 32Gbps
10
NICのPCIe基礎体⼒測定 考察
0
20
40
60
80
100
x1 x2 x4 x8
Throughput(%)
Lane width
% of Theoretical Max. TX Throughput
60B(TX)
60B(TXRX)
1514B(TX)
1514B(TXRX)
PCIe利⽤可能帯域を計測することでNIC回路の性能を推測
▶ 送信のみの場合,PCIeの約81%の帯域が利⽤可能
▶ 送受信時,PCIeの約73%の帯域が利⽤可能
▶ 送受信時,1514B-60Bで約20%利⽤可能帯域が減少
▶ (PCIeはFull duplexにも関わらず) 60B送受信-送信のみ
で,PCIe利⽤可能帯域が約18%減少
11
NICのPCIe基礎体⼒測定 考察
0
20
40
60
80
100
x1 x2 x4 x8
Throughput(%)
Lane width
% of Theoretical Max. TX Throughput
60B(TX)
60B(TXRX)
1514B(TX)
1514B(TXRX)
▶ PCIeの最⼤利⽤可能帯域の割合で⾒るとx1, x2で同じ傾向
▶ x4(TXRX60B以外)とx8では,Ethernet帯域(10Gbps)を上
回るので特性は⾒えない
検討内容
1. パケットサイズとPCIe利⽤可能帯域の関係
2. Full duplexとPCIe利⽤可能帯域の関係
12
NICのおさらい
パケット送信時のPCIe操作
1. ドライバがNICのリングバッファのTail pointerを更新
2. データ転送 (DMA read)
3. Write-back the NIC status
パケット受信時のPCIe操作
1. データ転送 (DMA write)
2. ドライバがTail pointerを更新
13
PCIeのおさらい
▶ PCIeのメモリ操作は送受信のレーンを使ってTLPパケット
の通信が発⽣
▶ Ethernetポートを送受信パケットでFull duplex専有して
も,PCIeでは上り下りリンクの専有ができるわけではない
⇛ TLPパケットの送信待ちが発⽣する
Ethernetパケット送信 (DMA read)
1. TLP (Memory read)を送信
2. ACKとデータ付きコンプリーションを受信
3. コンプリーションに対するACKを送信
Ethernetパケット受信時 (DMA write)
1. TLP (Memory write)を送信
2. ACKを受信
14
計測結果をどう考えるか
0
20
40
60
80
100
x1 x2 x4 x8
Throughput(%)
Lane width
% of Theoretical Max. TX Throughput
60B(TX)
60B(TXRX)
1514B(TX)
1514B(TXRX)
参考データ
Throughput %. gen3x8(64Gbps) %. gen3x16(128Gbps)
10GE 10Gbps 15 8
40GE 40Gbps 62 31
100GE 100Gbps - 78
Xeon環境があるとPCMでもう少し詳細がわかりそう
NICのレーン数の変更はEEPROMの書き換えで変更できるかも
15
ざっくばらんにFPGA開発ネタ
16
FPGA開発環境の話
▶ Xilinx vivadoではSystemverilogで論理合成が可能になった
• 使える型が増えた (typedef, union, struct, enum, etc)
⇛ FPGA回路の合成時に型のチェックができるだけでもかなりう
れしい
• Classなど合成できないSVの機能はまだまだ多い
• FPGAでのunionやenumはとても強⼒
• VHDL, Verilog混在環境で合成可能
▶ Systemverilogがとても良かったので合成可能なパケット処
理を考えてみる
• Classなどが使えないのでOSSで公開されているような検証⽤ラ
イブラリはそのままでは使えない
• そこでLinuxのRaw socketぽくしてみる
17
Systemverilogによるパケット処理 [1/3]
ethernet_pkg.sv
/* MAC adderss */
typedef bit [ETH_ALEN-1:0][7:0] macaddr_t;
/* ethernet header */
typedef struct packed {
macaddr_t h_dest;
macaddr_t h_source;
bit [15:0] h_proto;
} ethhdr;
18
Systemverilogによるパケット処理 [2/3]
user_app.sv
union packed {
bit [5:0][63:0] raw; // XGMII (64bit)
struct packed {
ethhdr eth;
iphdr ip;
udphdr udp;
bit [47:0] padding;
} hdr;
} tx_pkt, rx_pkt;
19
Systemverilogによるパケット処理 [3/3]
TX
// User register to XGMII_TX
xgmii.data = endian_conv64(tx_pkt.raw[5]);
RX
// XGMII_RX to User register
rx_pkt.raw[5] <= endian_conv64(xgmii_rx.data);
...
// packet filtering
if (rx_pkt.hdr.eth.h_proto == ETH_P_IP &&
rx_pkt.hdr.ip.protocol == IP4_PROTO_UDP &&
rx_pkt.hdr.udp.dest == 16’d9) begin
Raw socket ぽい?
20
その他のFPGA NIC実装
▶ NetFPGA-10G (最近1ポート10Gラインレート対応)
▶ NetFPGA-SUME (リファレンス回路待ち)
▶ KC705, VC709などのリファレンスNIC
それぞれ論理合成に2から3時間かかる
21
Summary
▶ 実験⽤のFPGA NIC回路を作るために,まずは市販NICの
PCIe帯域を計測
• PCIeの使⽤レーンを減らすことでPCIe利⽤可能帯域を計測
• Ethert送受信時はPCIeの利⽤可能帯域が60%前後まで下がった
• NICはEthernetの広帯域化に従って,PCIe利⽤可能帯域の効率
化が課題になる
▶ 100GE NIC以降はNIC間をデイジーチェーンでつないで
PCIe帯域を増やすアプローチもあるらしい
▶ 今後は現在⼀般的なNICリングバッファ構造以外の⽅法を検
討
22
Q ⌣
23

Más contenido relacionado

La actualidad más candente

FPGAのトレンドをまとめてみた
FPGAのトレンドをまとめてみたFPGAのトレンドをまとめてみた
FPGAのトレンドをまとめてみた
Takefumi MIYOSHI
 
マルチコアとネットワークスタックの高速化技法
マルチコアとネットワークスタックの高速化技法マルチコアとネットワークスタックの高速化技法
マルチコアとネットワークスタックの高速化技法
Takuya ASADA
 
Linux packet-forwarding
Linux packet-forwardingLinux packet-forwarding
Linux packet-forwarding
Masakazu Asama
 
透過型確率的パケットマーキング装置の提案と開発(オープンルータコンペティション発表資料)
透過型確率的パケットマーキング装置の提案と開発(オープンルータコンペティション発表資料)透過型確率的パケットマーキング装置の提案と開発(オープンルータコンペティション発表資料)
透過型確率的パケットマーキング装置の提案と開発(オープンルータコンペティション発表資料)
Akira Kanaoka
 

La actualidad más candente (20)

FPGAのトレンドをまとめてみた
FPGAのトレンドをまとめてみたFPGAのトレンドをまとめてみた
FPGAのトレンドをまとめてみた
 
FPGA・リコンフィギャラブルシステム研究の最新動向
FPGA・リコンフィギャラブルシステム研究の最新動向FPGA・リコンフィギャラブルシステム研究の最新動向
FPGA・リコンフィギャラブルシステム研究の最新動向
 
Synthesijer.Scala (PROSYM 2015)
Synthesijer.Scala (PROSYM 2015)Synthesijer.Scala (PROSYM 2015)
Synthesijer.Scala (PROSYM 2015)
 
Lagos running on small factor machine
Lagos running on small factor machineLagos running on small factor machine
Lagos running on small factor machine
 
ハードウェア技術の動向 2015/02/02
ハードウェア技術の動向 2015/02/02ハードウェア技術の動向 2015/02/02
ハードウェア技術の動向 2015/02/02
 
マルチコアとネットワークスタックの高速化技法
マルチコアとネットワークスタックの高速化技法マルチコアとネットワークスタックの高速化技法
マルチコアとネットワークスタックの高速化技法
 
ICD/CPSY 201412
ICD/CPSY 201412ICD/CPSY 201412
ICD/CPSY 201412
 
NVIDIA TESLA V100・CUDA 9 のご紹介
NVIDIA TESLA V100・CUDA 9 のご紹介NVIDIA TESLA V100・CUDA 9 のご紹介
NVIDIA TESLA V100・CUDA 9 のご紹介
 
High Performance Networking with DPDK & Multi/Many Core
High Performance Networking with DPDK & Multi/Many CoreHigh Performance Networking with DPDK & Multi/Many Core
High Performance Networking with DPDK & Multi/Many Core
 
FPGAX6_hayashi
FPGAX6_hayashiFPGAX6_hayashi
FPGAX6_hayashi
 
DPDKを用いたネットワークスタック,高性能通信基盤開発
DPDKを用いたネットワークスタック,高性能通信基盤開発DPDKを用いたネットワークスタック,高性能通信基盤開発
DPDKを用いたネットワークスタック,高性能通信基盤開発
 
Ethernetの受信処理
Ethernetの受信処理Ethernetの受信処理
Ethernetの受信処理
 
増え続ける情報に対応するためのFPGA基礎知識
増え続ける情報に対応するためのFPGA基礎知識増え続ける情報に対応するためのFPGA基礎知識
増え続ける情報に対応するためのFPGA基礎知識
 
Lagopus Switch Usecases
Lagopus Switch UsecasesLagopus Switch Usecases
Lagopus Switch Usecases
 
Linux packet-forwarding
Linux packet-forwardingLinux packet-forwarding
Linux packet-forwarding
 
透過型確率的パケットマーキング装置の提案と開発(オープンルータコンペティション発表資料)
透過型確率的パケットマーキング装置の提案と開発(オープンルータコンペティション発表資料)透過型確率的パケットマーキング装置の提案と開発(オープンルータコンペティション発表資料)
透過型確率的パケットマーキング装置の提案と開発(オープンルータコンペティション発表資料)
 
FPGAによる津波シミュレーション -- GPUを超える高性能計算の手法
FPGAによる津波シミュレーション -- GPUを超える高性能計算の手法FPGAによる津波シミュレーション -- GPUを超える高性能計算の手法
FPGAによる津波シミュレーション -- GPUを超える高性能計算の手法
 
GTC 2017 基調講演からディープラーニング関連情報のご紹介
GTC 2017 基調講演からディープラーニング関連情報のご紹介GTC 2017 基調講演からディープラーニング関連情報のご紹介
GTC 2017 基調講演からディープラーニング関連情報のご紹介
 
Fpgax 20130604
Fpgax 20130604Fpgax 20130604
Fpgax 20130604
 
Dpdk環境の話
Dpdk環境の話Dpdk環境の話
Dpdk環境の話
 

Similar a High speed-pc-router 201505

2015年度GPGPU実践基礎工学 第7回 シングルコアとマルチコア
2015年度GPGPU実践基礎工学 第7回 シングルコアとマルチコア2015年度GPGPU実践基礎工学 第7回 シングルコアとマルチコア
2015年度GPGPU実践基礎工学 第7回 シングルコアとマルチコア
智啓 出川
 
CMSI計算科学技術特論A(7) 線形代数演算ライブラリBLASとLAPACKの基礎と実践2
CMSI計算科学技術特論A(7) 線形代数演算ライブラリBLASとLAPACKの基礎と実践2CMSI計算科学技術特論A(7) 線形代数演算ライブラリBLASとLAPACKの基礎と実践2
CMSI計算科学技術特論A(7) 線形代数演算ライブラリBLASとLAPACKの基礎と実践2
Computational Materials Science Initiative
 

Similar a High speed-pc-router 201505 (20)

20170421 tensor flowusergroup
20170421 tensor flowusergroup20170421 tensor flowusergroup
20170421 tensor flowusergroup
 
[DL Hacks]FPGA入門
[DL Hacks]FPGA入門[DL Hacks]FPGA入門
[DL Hacks]FPGA入門
 
OpenStack Kilo with 6Wind VA High-Performance Networking Using DPDK - OpenSta...
OpenStack Kilo with 6Wind VA High-Performance Networking Using DPDK - OpenSta...OpenStack Kilo with 6Wind VA High-Performance Networking Using DPDK - OpenSta...
OpenStack Kilo with 6Wind VA High-Performance Networking Using DPDK - OpenSta...
 
機械学習とこれを支える並列計算: ディープラーニング・スーパーコンピューターの応用について
機械学習とこれを支える並列計算: ディープラーニング・スーパーコンピューターの応用について機械学習とこれを支える並列計算: ディープラーニング・スーパーコンピューターの応用について
機械学習とこれを支える並列計算: ディープラーニング・スーパーコンピューターの応用について
 
200625material naruse
200625material naruse200625material naruse
200625material naruse
 
2015年度GPGPU実践基礎工学 第7回 シングルコアとマルチコア
2015年度GPGPU実践基礎工学 第7回 シングルコアとマルチコア2015年度GPGPU実践基礎工学 第7回 シングルコアとマルチコア
2015年度GPGPU実践基礎工学 第7回 シングルコアとマルチコア
 
データ爆発時代のネットワークインフラ
データ爆発時代のネットワークインフラデータ爆発時代のネットワークインフラ
データ爆発時代のネットワークインフラ
 
Trema day 1
Trema day 1Trema day 1
Trema day 1
 
Myoshimi extreme
Myoshimi extremeMyoshimi extreme
Myoshimi extreme
 
FPGA+SoC+Linux実践勉強会資料
FPGA+SoC+Linux実践勉強会資料FPGA+SoC+Linux実践勉強会資料
FPGA+SoC+Linux実践勉強会資料
 
CMSI計算科学技術特論A(7) 線形代数演算ライブラリBLASとLAPACKの基礎と実践2
CMSI計算科学技術特論A(7) 線形代数演算ライブラリBLASとLAPACKの基礎と実践2CMSI計算科学技術特論A(7) 線形代数演算ライブラリBLASとLAPACKの基礎と実践2
CMSI計算科学技術特論A(7) 線形代数演算ライブラリBLASとLAPACKの基礎と実践2
 
【関東GPGPU勉強会#4】GTX 1080でComputer Vision アルゴリズムを色々動かしてみる
【関東GPGPU勉強会#4】GTX 1080でComputer Visionアルゴリズムを色々動かしてみる【関東GPGPU勉強会#4】GTX 1080でComputer Visionアルゴリズムを色々動かしてみる
【関東GPGPU勉強会#4】GTX 1080でComputer Vision アルゴリズムを色々動かしてみる
 
PFI Seminar 2010/01/21
PFI Seminar 2010/01/21PFI Seminar 2010/01/21
PFI Seminar 2010/01/21
 
20220602コンピュータネットワーク.pdf
20220602コンピュータネットワーク.pdf20220602コンピュータネットワーク.pdf
20220602コンピュータネットワーク.pdf
 
クラウドの組み立て方事始め H/W利用者としての事業者
クラウドの組み立て方事始め H/W利用者としての事業者クラウドの組み立て方事始め H/W利用者としての事業者
クラウドの組み立て方事始め H/W利用者としての事業者
 
HPC 的に H100 は魅力的な GPU なのか?
HPC 的に H100 は魅力的な GPU なのか?HPC 的に H100 は魅力的な GPU なのか?
HPC 的に H100 は魅力的な GPU なのか?
 
研究者のための Python による FPGA 入門
研究者のための Python による FPGA 入門研究者のための Python による FPGA 入門
研究者のための Python による FPGA 入門
 
Abstracts of FPGA2017 papers (Temporary Version)
Abstracts of FPGA2017 papers (Temporary Version)Abstracts of FPGA2017 papers (Temporary Version)
Abstracts of FPGA2017 papers (Temporary Version)
 
A100 GPU 搭載! P4d インスタンス 使いこなしのコツ
A100 GPU 搭載! P4d インスタンス使いこなしのコツA100 GPU 搭載! P4d インスタンス使いこなしのコツ
A100 GPU 搭載! P4d インスタンス 使いこなしのコツ
 
2値化CNN on FPGAでGPUとガチンコバトル(公開版)
2値化CNN on FPGAでGPUとガチンコバトル(公開版)2値化CNN on FPGAでGPUとガチンコバトル(公開版)
2値化CNN on FPGAでGPUとガチンコバトル(公開版)
 

High speed-pc-router 201505