公開
Copyright Cybertrust Japan Co., Ltd. All rights reserved.
1
2017/11/15
サイバートラスト株式会社 Linux/OSS事業部
佐藤 剛春
OpenStack環境における通信高速化
~超入門~
公開
Copyright Cybertrust Japan Co., Ltd. All rights reserved.
2
この文書はあくまでも参考資料であり、掲載されている情報は予告なしに変更されることがあります。この発表は個人の見解であり、所
属する組織の公式見解ではありません。
サイバートラスト株式会社(以下、サイバートラスト)は本書の内容に関していかなる保証もいたしません。また、本書の内容に関連し
たいかなる損害についても責任を負いかねます。又、本資料の著作権は特に指定されている箇所を除いて、本書の作成者が有します。本
書の作成者が著作権を有するコンテンツにつきましては、本書の作成者に対して無断で複製、改変、頒布などをすることはできません。
このスライドに掲載された製品名、ロゴ、サービス名などは、サイバートラストが所有するか、使用権許諾を受けている商標もしくは登
録商標です。その他、本文書に掲載されている他社の製品名、ロゴなどは、それぞれ該当する各社が所有する商標もしくは登録商標です。
公開
Copyright Cybertrust Japan Co., Ltd. All rights reserved.
3
国内電子認証局の運用
Linux/OSS の専門性電子認証の専門性
専用機器・組込み開発
ITインフラを支えるLinux提供
グローバル標準
組込みLinux
IoT 電子認証
IoT 事業開発・グローバル協業
サイバートラスト(株)の事業領域
認証・セキュリティ事業 IoT事業 Linux/OSS事業
サイバートラストの認証事業とミラクル・リナックスの組込みLinux 事業の組み合わせで
IoT 時代のデファクトスタンダードへ
公開
Copyright Cybertrust Japan Co., Ltd. All rights reserved.
4
Who am I ?
• おしごと
– 旧ミラクル・リナックス側の社員
• 2017年10月に旧ミラクル・リナックスが旧サイバートラストを買収
• サイバートラストへ社名変更
– 2000年6月~
– 経験部署
• 開発・サポート
• マーケティング
• コンサルティング
• 社内情報システム
• 開発・サポート
• 開発
• プリセールスエンジニア (←いまここ)
– 元はRDBMSベンダのエンジニア
• 趣味
– モーターサイクル, エレキベース
– Xeon (MCC以上) 搭載のタワーサーバが欲しいデス。
公開
Copyright Cybertrust Japan Co., Ltd. All rights reserved.
5
OpenStack Summit November 2017 - Sydney
• 2回目
• October 2015 - Tokyo以来、久々の参加
– Call For Paper出してません…
公開
Copyright Cybertrust Japan Co., Ltd. All rights reserved.
6
きっと、この辺りの物凄い発表に出会えるはず!(心の声)
→…ぇぇぇ?
既に知っている内容が多かったので、簡単に纏めます。
(追加情報あり)
公開
Copyright Cybertrust Japan Co., Ltd. All rights reserved.
7
よくある構成のOpenStack環境で通信が遅い理由
• カーネル空間↔ユーザ空間 のメモリコピーが発生する
– 仮想インスタンスで発生する通信全てに対して発生
カーネル空間
Bare Metal
物理NIC
ユーザ空間
qemu-kvm
virtio-net
OVS
※あくまで概念図です!
公開
Copyright Cybertrust Japan Co., Ltd. All rights reserved.
8
解決策
• DPDK
– PMDがユーザ空間へメモリをコピー
– OVS, vRouter等、対応ソフトウェアと組み合わせて利用
• FD.io VPP
– VPP: Vector Packet Processing
– Ciscoが寄贈したコードが元
– Software Switchとして動作
– 複数パケットをチャンク処理して高速化
• SR-IOV NIC
– VF - Guest DMA転送
• Smart NIC
– OVS, vRouter等の機能そのものをNICにオフロード
公開
Copyright Cybertrust Japan Co., Ltd. All rights reserved.
9
DPDKで速くなる理由
• カーネル空間をバイパス
– DPDKライブラリを使用するアプリケーションのメモリへ直接書込
– PMDが割り当てられたCPUは常に使用率100%
カーネル空間
Bare Metal
物理NIC
ユーザ空間
qemu-kvm
virtio-net
OVS + DPDK
PMD
※あくまで概念図です!
公開
Copyright Cybertrust Japan Co., Ltd. All rights reserved.
10
もっと速くしたい!
• Hyper-Threading
– OFFに設定
• Huge Page
– サイズは2MBがスイートスポット (という発表があった)
• NUMA Nodeを考慮する必要がある
– 今回はココ中心
公開
Copyright Cybertrust Japan Co., Ltd. All rights reserved.
11
太古のSMP
• Front Side Bus (FSB)
– 単一のBusを共用する
– Nehalem登場とともに消滅
Front Side Bus
CPU CPU CPU CPU
North
Bridge RAM
L1/L2
Cache
L1/L2
Cache
L1/L2
Cache
L1/L2
Cache
公開
Copyright Cybertrust Japan Co., Ltd. All rights reserved.
12
NUMA
• Non-Uniform Memory Access
– FSBの問題点を解決
– プロセスが別NUMA Node上のCPUへ移動することはあり得るか?
• Yes! (という発表があった)
Core 1
CPU
4, 20
Core 0
CPU
0, 16
Core 3
CPU
12, 28
Core 2
CPU
8, 24
L3Cache
Mem
Controller
RAM
Core 1
CPU
7, 23
Core 0
CPU
3, 19
Core 3
CPU
15, 31
Core 2
CPU
11, 27
L3Cache
Mem
Controller
RAM
Core 1
CPU
5, 21
Core 0
CPU
1, 17
Core 3
CPU
13, 29
Core 2
CPU
9, 25
L3Cache
Mem
Controller
RAM
Core 1
CPU
6, 22
Core 0
CPU
2, 18
Core 3
CPU
14, 30
Core 2
CPU
10, 26
L3Cache
Mem
Controller
RAM
※あくまで概念図です!
# watch -d "ps ax -o pid,%cpu,%mem,psr,sgi_p,state,comm|egrep 'qemu-kvm|PID'|sort -n"
Local Access Remote Access
Memory
Channel
公開
Copyright Cybertrust Japan Co., Ltd. All rights reserved.
13
NUMA NodesとCPU Cores
• 環境によって異なる
– CPU の物理実装, ソケット数 等に依存
• ファイル /sys/devices/system/node/node*/cpulist
• コマンド lscpu 実行結果
• コマンド numactl -s 実行結果
…あたりを参照
– ある Intel E5-2620 v4 (8 cores, LCC), 2 socket マシンの場合
– ある AMD Opteron 6176 (12 cores), 1 socket マシンの場合
# cat /sys/devices/system/node/node0/cpulist
0,2,4,6,8,10,12,14
# cat /sys/devices/system/node/node1/cpulist
1,3,5,7,9,11,13,15
# cat /sys/devices/system/node/node0/cpulist
0-5
# cat /sys/devices/system/node/node1/cpulist
6-11
公開
Copyright Cybertrust Japan Co., Ltd. All rights reserved.
14
NUMA NodesとMemory
• Memory
– Local AccessとRemote Access
• 当然、Local Accessの方が高速
• Localへの固定化を狙いたい
公開
Copyright Cybertrust Japan Co., Ltd. All rights reserved.
15
NUMA NodesとPCI-Express [1/2]
• CPU Socket毎
– 利用対象デバイスの存在しているSocketのNUMA Nodeを使用する必要がある
– コマンド lstopo-no-graphics (または lstopo) で確認することは可能
# lstopo-no-graphics
...
NUMANode L#1 (P#1 64GB)
...
HostBridge L#7
PCIBridge
PCI 8086:1528
Net L#11 "enp130s0f0"
PCI 8086:1528
Net L#12 "enp130s0f1"
...
公開
Copyright Cybertrust Japan Co., Ltd. All rights reserved.
16
NUMA NodesとPCI-Express [2/2]
<object type="NUMANode" os_index="1" cpuset="0x0000aaaa" complete_cpuset="0x0000aaaa"
online_cpuset="0x0000aaaa" allowed_cpuset="0x0000aaaa" nodeset="0x00000002"
complete_nodeset="0x00000002" allowed_nodeset="0x00000002" local_memory="68719476736">
...
<object type="Bridge" os_index="524322" bridge_type="1-1" depth="1" bridge_pci="0000:[82-83]"
pci_busid="0000:80:02.2" pci_type="0604 [8086:6f06] [8086:0000] 01" pci_link_speed="4.000000">
<object type="PCIDev" os_index="532480" pci_busid="0000:82:00.0" pci_type="0200 [8086:1528]
[8086:5003] 01" pci_link_speed="4.000000">
<object type="OSDev" name="enp130s0f0" osdev_type="2">
<info name="Address" value="a0:36:9f:xx:xx:xx"/>
</object>
</object>
<object type="PCIDev" os_index="532481" pci_busid="0000:82:00.1" pci_type="0200 [8086:1528]
[8086:5003] 01" pci_link_speed="4.000000">
<object type="OSDev" name="enp130s0f1" osdev_type="2">
<info name="Address" value="a0:36:9f:xx:xx:xx"/>
</object>
</object>
</object>
– オプション --of xml 指定で、XMLフォーマット出力へ切り替え
公開
Copyright Cybertrust Japan Co., Ltd. All rights reserved.
17
Bare Metal
Node 0
qemu-kvm, DPDK PMD, 物理NICが
同一Node上に存在することが望ましい
CPU Pinning
• 使用するCPUを明確に割り当てる
– 以下を同一NUMA Nodeに配置する
• qemu-kvm
• DPDK PMD
• 物理NIC
– 複数NUMA Nodeを使用する場合
• 両NodeのCPUにPMDsを割り当てる必要が生じる
Node 1
qemu-kvm
物理NIC
virtio-net
DPDK PMD
公開
Copyright Cybertrust Japan Co., Ltd. All rights reserved.
18
CPU Pinningの課題
• Automation
– 使用したい物理NICは、どのNUMA Nodeに繋がっている?
– 該当NUMA Nodeで、空いているCPU Coreは?
• High Availability
– インスタンスの別compute nodeへの移動
公開
Copyright Cybertrust Japan Co., Ltd. All rights reserved.
19
参考文献, 他
• OpenStack Summit Sydney 2017 November
– All you need to know about CPU pinning and how to make it work? (by Nokia)
– Tuning packet and interrupt latency for 5G applications (by Wind River)
– Turbo charging OpenStack for NFV workloads (by RedHat, Cisco)
– NFV meets cloud, virtio, sr-iov, dpdk, cpu pinning, … (Forum, etherpad)
• OPNFV Summit Beijing 2017 June
– Putting OVS-DPDK into Massive Production, with 0.0% Frame Loss (by RedHat, Youtube)
• DPDK Summit India 2017 April資料
– VPP Overview (by Cisco)
• Special Thanks
– 日本仮想化技術株式会社: 伊藤さん, 遠山さん
– サイバートラスト株式会社: 田中隆久さん
公開
Copyright Cybertrust Japan Co., Ltd. All rights reserved.
信頼とともに
ソフトバンク・テクノロジー グループ
ソフトバンク・テクノロジー エムソリューションズ フォントワークス 環 サイバートラスト モードツーアソラテック リデン

2017-11-15 OpenStack最新情報セミナー Lightning Talk OpenStack環境における通信高速化 ~超入門~

  • 1.
    公開 Copyright Cybertrust JapanCo., Ltd. All rights reserved. 1 2017/11/15 サイバートラスト株式会社 Linux/OSS事業部 佐藤 剛春 OpenStack環境における通信高速化 ~超入門~
  • 2.
    公開 Copyright Cybertrust JapanCo., Ltd. All rights reserved. 2 この文書はあくまでも参考資料であり、掲載されている情報は予告なしに変更されることがあります。この発表は個人の見解であり、所 属する組織の公式見解ではありません。 サイバートラスト株式会社(以下、サイバートラスト)は本書の内容に関していかなる保証もいたしません。また、本書の内容に関連し たいかなる損害についても責任を負いかねます。又、本資料の著作権は特に指定されている箇所を除いて、本書の作成者が有します。本 書の作成者が著作権を有するコンテンツにつきましては、本書の作成者に対して無断で複製、改変、頒布などをすることはできません。 このスライドに掲載された製品名、ロゴ、サービス名などは、サイバートラストが所有するか、使用権許諾を受けている商標もしくは登 録商標です。その他、本文書に掲載されている他社の製品名、ロゴなどは、それぞれ該当する各社が所有する商標もしくは登録商標です。
  • 3.
    公開 Copyright Cybertrust JapanCo., Ltd. All rights reserved. 3 国内電子認証局の運用 Linux/OSS の専門性電子認証の専門性 専用機器・組込み開発 ITインフラを支えるLinux提供 グローバル標準 組込みLinux IoT 電子認証 IoT 事業開発・グローバル協業 サイバートラスト(株)の事業領域 認証・セキュリティ事業 IoT事業 Linux/OSS事業 サイバートラストの認証事業とミラクル・リナックスの組込みLinux 事業の組み合わせで IoT 時代のデファクトスタンダードへ
  • 4.
    公開 Copyright Cybertrust JapanCo., Ltd. All rights reserved. 4 Who am I ? • おしごと – 旧ミラクル・リナックス側の社員 • 2017年10月に旧ミラクル・リナックスが旧サイバートラストを買収 • サイバートラストへ社名変更 – 2000年6月~ – 経験部署 • 開発・サポート • マーケティング • コンサルティング • 社内情報システム • 開発・サポート • 開発 • プリセールスエンジニア (←いまここ) – 元はRDBMSベンダのエンジニア • 趣味 – モーターサイクル, エレキベース – Xeon (MCC以上) 搭載のタワーサーバが欲しいデス。
  • 5.
    公開 Copyright Cybertrust JapanCo., Ltd. All rights reserved. 5 OpenStack Summit November 2017 - Sydney • 2回目 • October 2015 - Tokyo以来、久々の参加 – Call For Paper出してません…
  • 6.
    公開 Copyright Cybertrust JapanCo., Ltd. All rights reserved. 6 きっと、この辺りの物凄い発表に出会えるはず!(心の声) →…ぇぇぇ? 既に知っている内容が多かったので、簡単に纏めます。 (追加情報あり)
  • 7.
    公開 Copyright Cybertrust JapanCo., Ltd. All rights reserved. 7 よくある構成のOpenStack環境で通信が遅い理由 • カーネル空間↔ユーザ空間 のメモリコピーが発生する – 仮想インスタンスで発生する通信全てに対して発生 カーネル空間 Bare Metal 物理NIC ユーザ空間 qemu-kvm virtio-net OVS ※あくまで概念図です!
  • 8.
    公開 Copyright Cybertrust JapanCo., Ltd. All rights reserved. 8 解決策 • DPDK – PMDがユーザ空間へメモリをコピー – OVS, vRouter等、対応ソフトウェアと組み合わせて利用 • FD.io VPP – VPP: Vector Packet Processing – Ciscoが寄贈したコードが元 – Software Switchとして動作 – 複数パケットをチャンク処理して高速化 • SR-IOV NIC – VF - Guest DMA転送 • Smart NIC – OVS, vRouter等の機能そのものをNICにオフロード
  • 9.
    公開 Copyright Cybertrust JapanCo., Ltd. All rights reserved. 9 DPDKで速くなる理由 • カーネル空間をバイパス – DPDKライブラリを使用するアプリケーションのメモリへ直接書込 – PMDが割り当てられたCPUは常に使用率100% カーネル空間 Bare Metal 物理NIC ユーザ空間 qemu-kvm virtio-net OVS + DPDK PMD ※あくまで概念図です!
  • 10.
    公開 Copyright Cybertrust JapanCo., Ltd. All rights reserved. 10 もっと速くしたい! • Hyper-Threading – OFFに設定 • Huge Page – サイズは2MBがスイートスポット (という発表があった) • NUMA Nodeを考慮する必要がある – 今回はココ中心
  • 11.
    公開 Copyright Cybertrust JapanCo., Ltd. All rights reserved. 11 太古のSMP • Front Side Bus (FSB) – 単一のBusを共用する – Nehalem登場とともに消滅 Front Side Bus CPU CPU CPU CPU North Bridge RAM L1/L2 Cache L1/L2 Cache L1/L2 Cache L1/L2 Cache
  • 12.
    公開 Copyright Cybertrust JapanCo., Ltd. All rights reserved. 12 NUMA • Non-Uniform Memory Access – FSBの問題点を解決 – プロセスが別NUMA Node上のCPUへ移動することはあり得るか? • Yes! (という発表があった) Core 1 CPU 4, 20 Core 0 CPU 0, 16 Core 3 CPU 12, 28 Core 2 CPU 8, 24 L3Cache Mem Controller RAM Core 1 CPU 7, 23 Core 0 CPU 3, 19 Core 3 CPU 15, 31 Core 2 CPU 11, 27 L3Cache Mem Controller RAM Core 1 CPU 5, 21 Core 0 CPU 1, 17 Core 3 CPU 13, 29 Core 2 CPU 9, 25 L3Cache Mem Controller RAM Core 1 CPU 6, 22 Core 0 CPU 2, 18 Core 3 CPU 14, 30 Core 2 CPU 10, 26 L3Cache Mem Controller RAM ※あくまで概念図です! # watch -d "ps ax -o pid,%cpu,%mem,psr,sgi_p,state,comm|egrep 'qemu-kvm|PID'|sort -n" Local Access Remote Access Memory Channel
  • 13.
    公開 Copyright Cybertrust JapanCo., Ltd. All rights reserved. 13 NUMA NodesとCPU Cores • 環境によって異なる – CPU の物理実装, ソケット数 等に依存 • ファイル /sys/devices/system/node/node*/cpulist • コマンド lscpu 実行結果 • コマンド numactl -s 実行結果 …あたりを参照 – ある Intel E5-2620 v4 (8 cores, LCC), 2 socket マシンの場合 – ある AMD Opteron 6176 (12 cores), 1 socket マシンの場合 # cat /sys/devices/system/node/node0/cpulist 0,2,4,6,8,10,12,14 # cat /sys/devices/system/node/node1/cpulist 1,3,5,7,9,11,13,15 # cat /sys/devices/system/node/node0/cpulist 0-5 # cat /sys/devices/system/node/node1/cpulist 6-11
  • 14.
    公開 Copyright Cybertrust JapanCo., Ltd. All rights reserved. 14 NUMA NodesとMemory • Memory – Local AccessとRemote Access • 当然、Local Accessの方が高速 • Localへの固定化を狙いたい
  • 15.
    公開 Copyright Cybertrust JapanCo., Ltd. All rights reserved. 15 NUMA NodesとPCI-Express [1/2] • CPU Socket毎 – 利用対象デバイスの存在しているSocketのNUMA Nodeを使用する必要がある – コマンド lstopo-no-graphics (または lstopo) で確認することは可能 # lstopo-no-graphics ... NUMANode L#1 (P#1 64GB) ... HostBridge L#7 PCIBridge PCI 8086:1528 Net L#11 "enp130s0f0" PCI 8086:1528 Net L#12 "enp130s0f1" ...
  • 16.
    公開 Copyright Cybertrust JapanCo., Ltd. All rights reserved. 16 NUMA NodesとPCI-Express [2/2] <object type="NUMANode" os_index="1" cpuset="0x0000aaaa" complete_cpuset="0x0000aaaa" online_cpuset="0x0000aaaa" allowed_cpuset="0x0000aaaa" nodeset="0x00000002" complete_nodeset="0x00000002" allowed_nodeset="0x00000002" local_memory="68719476736"> ... <object type="Bridge" os_index="524322" bridge_type="1-1" depth="1" bridge_pci="0000:[82-83]" pci_busid="0000:80:02.2" pci_type="0604 [8086:6f06] [8086:0000] 01" pci_link_speed="4.000000"> <object type="PCIDev" os_index="532480" pci_busid="0000:82:00.0" pci_type="0200 [8086:1528] [8086:5003] 01" pci_link_speed="4.000000"> <object type="OSDev" name="enp130s0f0" osdev_type="2"> <info name="Address" value="a0:36:9f:xx:xx:xx"/> </object> </object> <object type="PCIDev" os_index="532481" pci_busid="0000:82:00.1" pci_type="0200 [8086:1528] [8086:5003] 01" pci_link_speed="4.000000"> <object type="OSDev" name="enp130s0f1" osdev_type="2"> <info name="Address" value="a0:36:9f:xx:xx:xx"/> </object> </object> </object> – オプション --of xml 指定で、XMLフォーマット出力へ切り替え
  • 17.
    公開 Copyright Cybertrust JapanCo., Ltd. All rights reserved. 17 Bare Metal Node 0 qemu-kvm, DPDK PMD, 物理NICが 同一Node上に存在することが望ましい CPU Pinning • 使用するCPUを明確に割り当てる – 以下を同一NUMA Nodeに配置する • qemu-kvm • DPDK PMD • 物理NIC – 複数NUMA Nodeを使用する場合 • 両NodeのCPUにPMDsを割り当てる必要が生じる Node 1 qemu-kvm 物理NIC virtio-net DPDK PMD
  • 18.
    公開 Copyright Cybertrust JapanCo., Ltd. All rights reserved. 18 CPU Pinningの課題 • Automation – 使用したい物理NICは、どのNUMA Nodeに繋がっている? – 該当NUMA Nodeで、空いているCPU Coreは? • High Availability – インスタンスの別compute nodeへの移動
  • 19.
    公開 Copyright Cybertrust JapanCo., Ltd. All rights reserved. 19 参考文献, 他 • OpenStack Summit Sydney 2017 November – All you need to know about CPU pinning and how to make it work? (by Nokia) – Tuning packet and interrupt latency for 5G applications (by Wind River) – Turbo charging OpenStack for NFV workloads (by RedHat, Cisco) – NFV meets cloud, virtio, sr-iov, dpdk, cpu pinning, … (Forum, etherpad) • OPNFV Summit Beijing 2017 June – Putting OVS-DPDK into Massive Production, with 0.0% Frame Loss (by RedHat, Youtube) • DPDK Summit India 2017 April資料 – VPP Overview (by Cisco) • Special Thanks – 日本仮想化技術株式会社: 伊藤さん, 遠山さん – サイバートラスト株式会社: 田中隆久さん
  • 20.
    公開 Copyright Cybertrust JapanCo., Ltd. All rights reserved. 信頼とともに ソフトバンク・テクノロジー グループ ソフトバンク・テクノロジー エムソリューションズ フォントワークス 環 サイバートラスト モードツーアソラテック リデン