SlideShare a Scribd company logo
KVM環境における

ネットワーク速度ベンチマーク
日本仮想化技術株式会社
技術部 大内 明
2010/09/11 仮想化友の会
概要
•  KVM仮想化時の仮想マシンネットワークの
パフォーマンスについて調査
•  vhost_netを有効にした際のパフォーマンス
の変化について調査
使用機材(1)
•  マシン1(仮想マシンホスト): HP DL360 G7
‒  6Core Intel Xeon X5650 (2.6Ghz) 2
‒  DDR3 Registered ECC 4GB 6 (24GB)
‒  (OS) 2.5inch 146GB SAS RAID1+0
‒  (ストレージプール) Intel X25-E 6 RAID1+0
‒  (Onboard NIC) NC382i 1Gb Ethernet 
‒  (増設NIC) Intel X520 10Gb Ethernet
使用機材(2)
•  マシン2: HP DL380 G6
‒  4Core Intel Xeon X5520 (2.6Ghz) 
‒  DDR3 Registered ECC 4GB 6 (24GB)
‒  2.5inch 146GB SAS RAID1+0
‒  (Onboard NIC) NC382i 1Gb Ethernet 
‒  (増設NIC) Intel X520 10Gb Ethernet
仮想マシン設定
•  仮想マシン仕様
‒  (基本)4 vCPU
‒  3072MB Memory
•  起動方法
‒  vhost_net未使用時 : libvirt使用
‒  vhost_net使用時 : コマンドの手動実行(後述)
検証OSとツール
•  Fedora 13 (x86_64)を使用
‒  Kernel-2.6.33.6-147.fc13.x86_64
•  ベンチマークツールは Netperf を使用
‒  Ver.2.4.5
‒  http://www.netperf.org/netperf/
検証内容
•  マシン1・マシン2の物理環境で、それぞれ
netperfを実行(比較基準の採取)
•  マシン2から、マシン1上に起動した仮想マ
シンに対してnetperfを実行
‒  1VM, 2VM ,3VM, 6VM, 9VM同時実行の場合
についてそれぞれ測定
•  マシン1上に起動した1つの仮想マシンから
マシン2に対してnetperfを実行
値の採取方法
•  Netperfを次のパラメータで実行
‒  netperf -H (IPアドレス) -l 30 
•  スループット値を5回採取し、2回目 4回
目の値の平均を結果とする
•  複数仮想マシン実行時は、すべての仮想
マシンの結果を加算した値を結果とする
基本測定内容一覧
vCPU数
 送信
 受信
4vCPU
1VM
 物理(380G6)
物理(380G6)
 1VM
物理(380G6)
 2VM
物理(380G6)
 3VM
物理(380G6)
 6VM
物理(380G6)
 9VM
2vCPU
 物理(380G6)
 1VM
1vCPU
 物理(380G6)
 1VM
物理
物理(360G7)
 物理(380G6)
物理(380G6)
 物理(360G7)
測定内容一覧
•  基本測定内容のメニューを1セットとして、次の表
の通り測定を実施
•  1GbpsではMTU1500、10GbpsではMTU9000とし
た
HT有効
 HT無効
vhost_net On
 vhost_net Off
 vhost_net On
 vhost_net Off
1Gbps
(MTU:1500)
10Gbps
(MTU:9000)
結果(HT 無効)
vCPU数
 送信
 受信
 1Gb Ethernet
 10Gb Ethernet
4vCPU
1VM
 物理(380G6)
 940 
 6302 
物理(380G6)
 1VM
 938 
 8648 
物理(380G6)
 2VM
 941 
 9837 
物理(380G6)
 3VM
 942 
 9873 
物理(380G6)
 6VM
 942 
 9880 
物理(380G6)
 9VM
 942 
 9886 
2vCPU
 物理(380G6)
 1VM
 939 
 6886 
1vCPU
 物理(380G6)
 1VM
 939 
 8901 
物理
物理(360G7)
 物理(380G6)
 941 
 9890 
物理(380G6)
 物理(360G7)
 941 
 9895
結果(HT 有効)
vCPU数
 送信
 受信
 1Gb Ethernet
 10Gb Ethernet
4vCPU
1VM
 物理(380G6)
 923 
 6388 
物理(380G6)
 1VM
 939 
 6652 
物理(380G6)
 2VM
 941 
 9827 
物理(380G6)
 3VM
 941 
 9868 
物理(380G6)
 6VM
 942 
 9889 
物理(380G6)
 9VM
 943 
 9887 
2vCPU
 物理(380G6)
 1VM
 (省略)
 (省略)
1vCPU
 物理(380G6)
 1VM
 (省略)
 (省略)
物理
物理(360G7)
 物理(380G6)
 941 
 9899 
物理(380G6)
 物理(360G7)
 941 
 9895
HT無効・有効の比較グラフ
0
2000
4000
6000
8000
10000
12000
1VM
to 物
理
物理
to
1VM
物理
to
2VM
物理
to
3VM
物理
to
6VM
物理
to
9VM
4vCPU
1Gigabit Ethernet HT無
効
1Gigabit Ethernet HT有
効
10Gigabit Ethernet HT無
効
10Gigabit Ethernet HT有
効
傾向
•  10Gb Ethernet環境でVM1台(VCPU2もしく
は1)にした場合、仮想マシンのCPUが飽和
する
•  VM1台のみの場合の値が、VM1台あたり
の最大性能となる
•  複数仮想マシンで実行した時の仮想マシ
ン1台のスループットは、概ね均等になる
•  HT有効/無効で大きな差は無い
‒  物理To1VMを除く(特異値?)
10Gb Ethernetの

パフォーマンスチューニング
パフォーマンスチューニング概要
•  デフォルトの状態では10Gb Ethernetの性
能は十分に引き出せられない
‒  3 5Gbpsと微妙な値になる
•  次のパラメータ・設定を変更することで、パ
フォーマンスが改善された
‒  MTUの変更
‒  カーネルパラメータの調整
‒  NICの設定変更
MTUの変更
•  デフォルトの1500から9000に変更
•  /etc/sysconfig/network-scripts/ifcfg-
ethX
‒  MTU=9000
カーネルパラメータの調整(1)
•  sysctlコマンドで設定
# sysctl -w net.ipv4.tcp_window_scaling=1
# sysctl -w net.ipv4.tcp_rmem="4096 873800 1747600"
# sysctl -w net.ipv4.tcp_wmem="4096 873800 1747600"
# sysctl -w net.ipv4.tcp_mem="2048000 2048000 2048000"
# sysctl -w net.core.rmem_default=873800
# sysctl -w net.core.wmem_default=873800
# sysctl -w net.core.rmem_max=1747600
# sysctl -w net.core.wmem_max=1747600
# sysctl -w net.core.optmem_max=20480
カーネルパラメータの調整(2)
•  /etc/grub.conf で設定
intel_iommu=off
NICに対する設定
•  ethtoolコマンドで設定
‒  コマンドがない場合、ethtoolパッケージをイン
ストール
実行コマンド
 備考
ethtool -A eth4 autoneg off rx off tx off
ethtool -K eth4 lro off
HWRSCが有効の場合、このパラメータを指
定しても無視される
ethtool -K eth4 gro off
vhost_net
vhost_net概要
•  vhost_netは、ネットワークのパフォーマン
スを向上させる仕組み
•  システムコールの呼び出し回数を減らす事
によって、オーバーヘッドを低減
•  Kernel 2.6.33でマージ
vhost_netの有効化手順
•  「modprobe vhost_net」を実行
•  qemu-ifup / qemu-ifdownの用意
•  仮想マシン起動コマンドの準備
‒  libvirtが実行しているパラメータをpsコマンドで
取得
‒  いくつかの不要なパラメータを取り除く
‒  -netパラメータに「vhost=on」を追加
qemu-ifup/qemu-ifdownの用意
•  /etc/qemu-ifupを作成
•  /etc/qemu-ifdownを作成
•  (参考元) http://lostman-worlds-end.blogspot.com/2009/05/kvm_25.html
#!/bin/sh

echo "Bringing up $1 for bridged mode..."

ifconfig $1 0.0.0.0 promisc up

echo "Adding $1 to br0..."

brctl addif br0 $1
#!/bin/sh

echo "Removing $1 to br0..."

brctl delif br0 $1

echo "Shutting down $1..."

ifconfig $1 down
vhost_net有効時のVM起動例
# /usr/bin/qemu-kvm -cpu core2duo,+x2apic -enable-
kvm -m 3072 -smp 4,sockets=4,cores=1,threads=1 -
nodefaults -rtc base=utc -boot c -drive file=/var/lib/
libvirt/images/fedoravm1.img,if=none,id=drive-virtio-
disk0,boot=on,format=raw -device virtio-blk-pci,bus=pci.
0,addr=0x4,drive=drive-virtio-disk0,id=virtio-disk0 -
device virtio-net-
pci,vlan=0,id=net0,mac=52:54:00:40:19:f0,bus=pci.
0,addr=0x5 -net tap,vlan=0,vhost=on -usb -device usb-
tablet,id=input0 -k ja -vga cirrus -device virtio-balloon-
pci,id=balloon0,bus=pci.0,addr=0x3 -vnc 192.168.0.1:1
vhost_netの利用状況確認
•  「lsmod | grep vhost_net」を実行して確認
•  VMの台数分カウントされていれば、

vhost_netが利用されている
vhost_net有効時の結果(HT 有効)
vCPU数
 送信
 受信
 1Gigabit Ethernet
 10Gigabit Ethernet
4vCPU
1VM
 物理(380G6)
 940 
 6103 
物理(380G6)
 1VM
 939 
 7318 
物理(380G6)
 2VM
 941 
 9332 
物理(380G6)
 3VM
 941 
 9875 
物理(380G6)
 6VM
 942 
 9888 
物理(380G6)
 9VM
 943 
 9872
vhost_net使用・未使用の比較
0
2000
4000
6000
8000
10000
12000
1VM to
物理
物理 to
1VM
物理 to
2VM
物理 to
3VM
物理 to
6VM
物理 to
9VM
4vCPU
1Gigabit Ethernet
vhost_net未使用
1Gigabit Ethernet
vhost_net使用
10Gigabit Ethernet
vhost_net未使用
10Gigabit Ethernet
vhost_net使用
TCP_RR測定時の

Trans. Rate per sec 
0
5000
10000
15000
20000
25000
1VM to
物理
物理 to
1VM
物理 to
2VM
物理 to
3VM
物理 to
6VM
物理 to
9VM
4vCPU
1Gigabit Ethernet
vhost_net未使用
1Gigabit Ethernet
vhost_net使用
10Gigabit Ethernet
vhost_net未使用
10Gigabit Ethernet
vhost_net使用
傾向
•  性能に大きな差は無い
‒  まれにvhost_net未使用の方が値が上回る
•  改善が見込まれるTCP_RR値も大きな変化
は見られなかった
•  ネットワークカードの性能が良いため?
まとめ
•  KVMで仮想化してもネットワークの性能は
出る
•  10Gはやい
•  vhost_netは今回は性能差が出なかった
が、NICの性能によって結果が変わる可能
性アリ(?)
補足
•  発表時にご指摘頂いた点を補足として追
記
•  vhost_netは10VM 数十VMで効果が大き
く現れる
‒  9VM実行時のグラフでやや効果が現れている
のはこのためであった
•  ethtoolの設定で、groをon、lroをoffとすると
良い

More Related Content

PDF
Linux packet-forwarding
PDF
最近のOpenStackを振り返ってみよう
PDF
ゼロからはじめるKVM超入門
PPTX
OpenStackを使用したGPU仮想化IaaS環境 事例紹介
PPTX
NginxとLuaを用いた動的なリバースプロキシでデプロイを 100 倍速くした
PDF
Ingress on Azure Kubernetes Service
PPTX
OVN 設定サンプル | OVN config example 2015/12/27
PDF
Docker Compose 徹底解説
Linux packet-forwarding
最近のOpenStackを振り返ってみよう
ゼロからはじめるKVM超入門
OpenStackを使用したGPU仮想化IaaS環境 事例紹介
NginxとLuaを用いた動的なリバースプロキシでデプロイを 100 倍速くした
Ingress on Azure Kubernetes Service
OVN 設定サンプル | OVN config example 2015/12/27
Docker Compose 徹底解説

What's hot (20)

PDF
AvailabilityZoneとHostAggregate
PDF
今だからこそ知りたい Docker Compose/Swarm 入門
PDF
PGOを用いたPostgreSQL on Kubernetes入門(PostgreSQL Conference Japan 2022 発表資料)
PDF
DockerとPodmanの比較
PDF
Dockerを支える技術
PDF
Zabbix最新情報 ~Zabbix 6.0に向けて~ @OSC2021 Online/Fall
PDF
Ethernetの受信処理
PDF
アプリ開発者、DB 管理者視点での Cloud Spanner 活用方法 | 第 10 回 Google Cloud INSIDE Games & App...
PDF
OVS VXLAN Network Accelaration on OpenStack (VXLAN offload and DPDK) - OpenSt...
PPTX
サポート エンジニアが語る、トラブルを未然に防ぐための Azure インフラ設計
PDF
nginx入門
PDF
日本OpenStackユーザ会 第37回勉強会
PPTX
コンテナネットワーキング(CNI)最前線
PDF
負荷テストを行う際に知っておきたいこと 初心者編
PDF
Docker入門-基礎編 いまから始めるDocker管理【2nd Edition】
PPTX
OVN - Basics and deep dive
PPTX
Apache Spark on Kubernetes入門(Open Source Conference 2021 Online Hiroshima 発表資料)
PDF
ロードバランスへの長い道
PDF
細かすぎて伝わらないかもしれない Azure Container Networking Deep Dive
PDF
仮想化環境におけるパケットフォワーディング
AvailabilityZoneとHostAggregate
今だからこそ知りたい Docker Compose/Swarm 入門
PGOを用いたPostgreSQL on Kubernetes入門(PostgreSQL Conference Japan 2022 発表資料)
DockerとPodmanの比較
Dockerを支える技術
Zabbix最新情報 ~Zabbix 6.0に向けて~ @OSC2021 Online/Fall
Ethernetの受信処理
アプリ開発者、DB 管理者視点での Cloud Spanner 活用方法 | 第 10 回 Google Cloud INSIDE Games & App...
OVS VXLAN Network Accelaration on OpenStack (VXLAN offload and DPDK) - OpenSt...
サポート エンジニアが語る、トラブルを未然に防ぐための Azure インフラ設計
nginx入門
日本OpenStackユーザ会 第37回勉強会
コンテナネットワーキング(CNI)最前線
負荷テストを行う際に知っておきたいこと 初心者編
Docker入門-基礎編 いまから始めるDocker管理【2nd Edition】
OVN - Basics and deep dive
Apache Spark on Kubernetes入門(Open Source Conference 2021 Online Hiroshima 発表資料)
ロードバランスへの長い道
細かすぎて伝わらないかもしれない Azure Container Networking Deep Dive
仮想化環境におけるパケットフォワーディング
Ad

Viewers also liked (20)

PDF
Kvm performance optimization for ubuntu
PDF
KVM Tuning @ eBay
PDF
美团技术团队 - KVM性能优化
PDF
QEMU Disk IO Which performs Better: Native or threads?
PPTX
Lt駆動開発 01 プレゼン
PPTX
Speeda新機能開発にddd tddを取り入れた話
PDF
アジャイルによくきく?モデリング
PPTX
Developers.IO 2016 F-1 セッション資料
PPTX
dbtech showcase 2016 Delphix講演資料
PDF
How to be an agile programmer.
PDF
[db tech showcase Tokyo 2016] D24: データベース環境における検証結果から理解する失敗しないフラッシュ活用法 第三章 ~デ...
PDF
そろそろ(おまえらの)DevOpsについて一言いっておくか
PDF
AWS Summit Chicago 2016発表のサービスアップデートまとめ
PDF
Scrum Bangalore 18th Meetup - October 15, 2016 - Agile Architecture - Deepak ...
PDF
IoT and Evolution of Mobile Networks toward 5G
PDF
「レガシーコード」とはいったい?
PDF
DBTS2016 Data as Code - Delphix
PPTX
今からはじめるPuppet 2016 ~ インフラエンジニアのたしなみ ~
PDF
20161027 hadoop summit Generating Recommendations at Amazon Scale with Apach...
PDF
イノベーションに向けたR&dの再定義
Kvm performance optimization for ubuntu
KVM Tuning @ eBay
美团技术团队 - KVM性能优化
QEMU Disk IO Which performs Better: Native or threads?
Lt駆動開発 01 プレゼン
Speeda新機能開発にddd tddを取り入れた話
アジャイルによくきく?モデリング
Developers.IO 2016 F-1 セッション資料
dbtech showcase 2016 Delphix講演資料
How to be an agile programmer.
[db tech showcase Tokyo 2016] D24: データベース環境における検証結果から理解する失敗しないフラッシュ活用法 第三章 ~デ...
そろそろ(おまえらの)DevOpsについて一言いっておくか
AWS Summit Chicago 2016発表のサービスアップデートまとめ
Scrum Bangalore 18th Meetup - October 15, 2016 - Agile Architecture - Deepak ...
IoT and Evolution of Mobile Networks toward 5G
「レガシーコード」とはいったい?
DBTS2016 Data as Code - Delphix
今からはじめるPuppet 2016 ~ インフラエンジニアのたしなみ ~
20161027 hadoop summit Generating Recommendations at Amazon Scale with Apach...
イノベーションに向けたR&dの再定義
Ad

Similar to KVM環境におけるネットワーク速度ベンチマーク (20)

PDF
ここで差がつく「仮想化導入」性能、信頼性、コストの最新トレンド
PDF
Xen Nic
PDF
InfiniBandをPCIパススルーで用いるHPC仮想化クラスタの性能評価
PPTX
共有用 2012 r2hyper-v_nw仮想化
PDF
Hyper-V の本格採用に必要なエンタープライズ設計術
PPTX
Windows Server Community Meetup#2:New features of Microsoft SDN v2 in Windows...
PDF
VIOPS01: VMwareによる仮想化とネットワーク
PDF
MVPComCamp2015:Hyper-V仮想スイッチのTipsとTo Be(仮)
PPTX
Interact 2018:PowerShell of Microsoft SDN v2 101
PDF
Wakame-vnet / Open Source Project for Virtual Network & SDN
PDF
低遅延10Gb EthernetによるGPUクラスタの構築と性能向上手法について
PDF
Info talk2013
PDF
Vyatta: The Virtual Router for Cloud Computing Enviroment
PDF
OpenStack超入門シリーズ いまさら聞けないNeutronの使い方
PDF
OpenFlow in IaaS - Wakame
PPT
Nsegソフトウェアルータvyatta
PDF
第21回「Windows Server 2012 DeepDive!! Hyper-V と VDI を徹底解説」(2012/10/18 on しすなま!)...
PDF
VlanManagerを使ってみた
PDF
仮想化技術の今後の動向
ここで差がつく「仮想化導入」性能、信頼性、コストの最新トレンド
Xen Nic
InfiniBandをPCIパススルーで用いるHPC仮想化クラスタの性能評価
共有用 2012 r2hyper-v_nw仮想化
Hyper-V の本格採用に必要なエンタープライズ設計術
Windows Server Community Meetup#2:New features of Microsoft SDN v2 in Windows...
VIOPS01: VMwareによる仮想化とネットワーク
MVPComCamp2015:Hyper-V仮想スイッチのTipsとTo Be(仮)
Interact 2018:PowerShell of Microsoft SDN v2 101
Wakame-vnet / Open Source Project for Virtual Network & SDN
低遅延10Gb EthernetによるGPUクラスタの構築と性能向上手法について
Info talk2013
Vyatta: The Virtual Router for Cloud Computing Enviroment
OpenStack超入門シリーズ いまさら聞けないNeutronの使い方
OpenFlow in IaaS - Wakame
Nsegソフトウェアルータvyatta
第21回「Windows Server 2012 DeepDive!! Hyper-V と VDI を徹底解説」(2012/10/18 on しすなま!)...
VlanManagerを使ってみた
仮想化技術の今後の動向

More from VirtualTech Japan Inc. (20)

PDF
5G時代のアプリケーションとは 〜 5G+MECを活用した低遅延アプリの実現へ 〜
PPTX
エンジニアが幸せになれる会社を目指します
PDF
KubeVirt 201 How to Using the GPU
PDF
PDF
今からはじめる! Linuxコマンド入門
PDF
5G時代のアプリケーション開発とは - 5G+MECを活用した低遅延アプリの実現へ
PDF
Kubernetes雑にまとめてみた 2020年8月版
PDF
MS Teams + OBS Studio (+ OBS Mac Virtual Camera) でのオンラインセミナーのプロトタイプの構築
PDF
5G時代のアプリケーション開発とは
PDF
hbstudy#88 5G+MEC時代のシステム設計
PDF
通信への課題発掘ワークショップ 「5Gイノベーション」の取り組み
PDF
Kubernetes雑にまとめてみた 2019年12月版
PPTX
Docker超入門
PDF
5Gにまつわる3つの誤解 - 5G×ライブコンテンツ:5G時代の双方向コンテンツとは
PDF
KubeCon China & MWC Shangai 出張報告
PDF
NTT Docomo's Challenge looking ahead the world pf 5G × OpenStack - OpenStack最...
PDF
Introduction of private cloud in LINE - OpenStack最新情報セミナー(2019年2月)
PDF
Multi-access Edge Computing(MEC)における”Edge”の定義
PPTX
Edge Computing Architecture using GPUs and Kubernetes
PDF
OpenStack Summit & KubeConからみるコンテナ技術の最新トレンド (更新版) - OpenStack Day Tokyo 2018講演資料
5G時代のアプリケーションとは 〜 5G+MECを活用した低遅延アプリの実現へ 〜
エンジニアが幸せになれる会社を目指します
KubeVirt 201 How to Using the GPU
今からはじめる! Linuxコマンド入門
5G時代のアプリケーション開発とは - 5G+MECを活用した低遅延アプリの実現へ
Kubernetes雑にまとめてみた 2020年8月版
MS Teams + OBS Studio (+ OBS Mac Virtual Camera) でのオンラインセミナーのプロトタイプの構築
5G時代のアプリケーション開発とは
hbstudy#88 5G+MEC時代のシステム設計
通信への課題発掘ワークショップ 「5Gイノベーション」の取り組み
Kubernetes雑にまとめてみた 2019年12月版
Docker超入門
5Gにまつわる3つの誤解 - 5G×ライブコンテンツ:5G時代の双方向コンテンツとは
KubeCon China & MWC Shangai 出張報告
NTT Docomo's Challenge looking ahead the world pf 5G × OpenStack - OpenStack最...
Introduction of private cloud in LINE - OpenStack最新情報セミナー(2019年2月)
Multi-access Edge Computing(MEC)における”Edge”の定義
Edge Computing Architecture using GPUs and Kubernetes
OpenStack Summit & KubeConからみるコンテナ技術の最新トレンド (更新版) - OpenStack Day Tokyo 2018講演資料

KVM環境におけるネットワーク速度ベンチマーク