Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

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

712 views

Published on

「セミナープログラム(昼の部):CFPに落ちたが現地で話したかった俺の話」向けに、NUMA Node環境におけるDPDK利用についての基本的な考え方を纏めたものです。

Published in: Technology
  • Be the first to comment

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

  1. 1. 公開 Copyright Cybertrust Japan Co., Ltd. All rights reserved. 1 2017/11/15 サイバートラスト株式会社 Linux/OSS事業部 佐藤 剛春 OpenStack環境における通信高速化 ~超入門~
  2. 2. 公開 Copyright Cybertrust Japan Co., Ltd. All rights reserved. 2 この文書はあくまでも参考資料であり、掲載されている情報は予告なしに変更されることがあります。この発表は個人の見解であり、所 属する組織の公式見解ではありません。 サイバートラスト株式会社(以下、サイバートラスト)は本書の内容に関していかなる保証もいたしません。また、本書の内容に関連し たいかなる損害についても責任を負いかねます。又、本資料の著作権は特に指定されている箇所を除いて、本書の作成者が有します。本 書の作成者が著作権を有するコンテンツにつきましては、本書の作成者に対して無断で複製、改変、頒布などをすることはできません。 このスライドに掲載された製品名、ロゴ、サービス名などは、サイバートラストが所有するか、使用権許諾を受けている商標もしくは登 録商標です。その他、本文書に掲載されている他社の製品名、ロゴなどは、それぞれ該当する各社が所有する商標もしくは登録商標です。
  3. 3. 公開 Copyright Cybertrust Japan Co., Ltd. All rights reserved. 3 国内電子認証局の運用 Linux/OSS の専門性電子認証の専門性 専用機器・組込み開発 ITインフラを支えるLinux提供 グローバル標準 組込みLinux IoT 電子認証 IoT 事業開発・グローバル協業 サイバートラスト(株)の事業領域 認証・セキュリティ事業 IoT事業 Linux/OSS事業 サイバートラストの認証事業とミラクル・リナックスの組込みLinux 事業の組み合わせで IoT 時代のデファクトスタンダードへ
  4. 4. 公開 Copyright Cybertrust Japan Co., Ltd. All rights reserved. 4 Who am I ? • おしごと – 旧ミラクル・リナックス側の社員 • 2017年10月に旧ミラクル・リナックスが旧サイバートラストを買収 • サイバートラストへ社名変更 – 2000年6月~ – 経験部署 • 開発・サポート • マーケティング • コンサルティング • 社内情報システム • 開発・サポート • 開発 • プリセールスエンジニア (←いまここ) – 元はRDBMSベンダのエンジニア • 趣味 – モーターサイクル, エレキベース – Xeon (MCC以上) 搭載のタワーサーバが欲しいデス。
  5. 5. 公開 Copyright Cybertrust Japan Co., Ltd. All rights reserved. 5 OpenStack Summit November 2017 - Sydney • 2回目 • October 2015 - Tokyo以来、久々の参加 – Call For Paper出してません…
  6. 6. 公開 Copyright Cybertrust Japan Co., Ltd. All rights reserved. 6 きっと、この辺りの物凄い発表に出会えるはず!(心の声) →…ぇぇぇ? 既に知っている内容が多かったので、簡単に纏めます。 (追加情報あり)
  7. 7. 公開 Copyright Cybertrust Japan Co., Ltd. All rights reserved. 7 よくある構成のOpenStack環境で通信が遅い理由 • カーネル空間↔ユーザ空間 のメモリコピーが発生する – 仮想インスタンスで発生する通信全てに対して発生 カーネル空間 Bare Metal 物理NIC ユーザ空間 qemu-kvm virtio-net OVS ※あくまで概念図です!
  8. 8. 公開 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にオフロード
  9. 9. 公開 Copyright Cybertrust Japan Co., Ltd. All rights reserved. 9 DPDKで速くなる理由 • カーネル空間をバイパス – DPDKライブラリを使用するアプリケーションのメモリへ直接書込 – PMDが割り当てられたCPUは常に使用率100% カーネル空間 Bare Metal 物理NIC ユーザ空間 qemu-kvm virtio-net OVS + DPDK PMD ※あくまで概念図です!
  10. 10. 公開 Copyright Cybertrust Japan Co., Ltd. All rights reserved. 10 もっと速くしたい! • Hyper-Threading – OFFに設定 • Huge Page – サイズは2MBがスイートスポット (という発表があった) • NUMA Nodeを考慮する必要がある – 今回はココ中心
  11. 11. 公開 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
  12. 12. 公開 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
  13. 13. 公開 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
  14. 14. 公開 Copyright Cybertrust Japan Co., Ltd. All rights reserved. 14 NUMA NodesとMemory • Memory – Local AccessとRemote Access • 当然、Local Accessの方が高速 • Localへの固定化を狙いたい
  15. 15. 公開 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" ...
  16. 16. 公開 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フォーマット出力へ切り替え
  17. 17. 公開 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
  18. 18. 公開 Copyright Cybertrust Japan Co., Ltd. All rights reserved. 18 CPU Pinningの課題 • Automation – 使用したい物理NICは、どのNUMA Nodeに繋がっている? – 該当NUMA Nodeで、空いているCPU Coreは? • High Availability – インスタンスの別compute nodeへの移動
  19. 19. 公開 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 – 日本仮想化技術株式会社: 伊藤さん, 遠山さん – サイバートラスト株式会社: 田中隆久さん
  20. 20. 公開 Copyright Cybertrust Japan Co., Ltd. All rights reserved. 信頼とともに ソフトバンク・テクノロジー グループ ソフトバンク・テクノロジー エムソリューションズ フォントワークス 環 サイバートラスト モードツーアソラテック リデン

×