源力量公

课

KVM性能优化
美团开放服务
邱剑
qiujian@meituan.com
https://mos.meituan.com
2013/10/22
于美团
•
•
•
•

放服务

2012年初规
基于OpenStack架构,部分组件自主
2012年9月

始逐步

2013年5月推出美团

发

移在线服务系统到云主机
放服务(https://

mos.meituan.com),云主...
Agenda

美团

• CPU
• context switch
• cache
• Memory
• IO
• Storage
• Network

放服务

https://mos.meituan.com
Context Switch - Intel VT-x
Virtualization Technology

ring 0
kernel mode

ring 3
User mode

美团

放服务

https://mos.meituan....
Context Switch - Intel VT-x
Virtualization Technology

ring 0
kernel mode

VMM ring 0
kernel mode

VMM ring 3
User mode

r...
Context Switch - Intel VT-x
Virtualization Technology

ring 0
kernel mode

VMM ring 0
kernel mode

VMM ring 3
User mode

r...
Cache - Node Binding

美团

放服务

https://mos.meituan.com
Cache - Node Binding
• 将qemu进程绑定到特定的CPU node或core上
——避免L2/L3 Cache miss

美团

放服务

https://mos.meituan.com
Cache - Node Binding
• 将qemu进程绑定到特定的CPU node或core上
——避免L2/L3 Cache miss

• Node binding v.s core binding

美团

放服务

https:/...
Cache - Node Binding
• 将qemu进程绑定到特定的CPU node或core上
——避免L2/L3 Cache miss

• Node binding v.s core binding
• 设置:
美团

放服务

ht...
Cache - Node Binding
• 将qemu进程绑定到特定的CPU node或core上
——避免L2/L3 Cache miss

• Node binding v.s core binding
• 设置:
• taskset
美...
美团

放服务

https://mos.meituan.com
Agenda
• CPU
• Memory
• Addressing
• Space
• IO
• Storage
• Network
美团

放服务

https://mos.meituan.com
Addressing - EPT (SLAT)
• Extended page tables/second level address
translation
Vaddr
VMM
(Page table)

Paddr

美团

放服务

ht...
Addressing - EPT (SLAT)
• Extended page tables/second level address
translation
Vaddr
VMM
(Page table)

VM Vaddr
VM Page t...
Addressing - EPT (SLAT)
• Extended page tables/second level address
translation
Vaddr
VMM
(Page table)

VM Vaddr
VM Page t...
Addressing - HugePage

美团

放服务

https://mos.meituan.com
Addressing - HugePage
•

少page table尺寸,降低查找缓存(TLB)的cache-miss,加速VM内存地址
转换

美团

放服务

https://mos.meituan.com
Addressing - HugePage
•

少page table尺寸,降低查找缓存(TLB)的cache-miss,加速VM内存地址
转换

•

美团

默认Page size: 4KB/Hugepage size: 2M

放服务
...
Addressing - HugePage
•

少page table尺寸,降低查找缓存(TLB)的cache-miss,加速VM内存地址
转换

•
•

默认Page size: 4KB/Hugepage size: 2M

Transp...
Addressing - HugePage
•

少page table尺寸,降低查找缓存(TLB)的cache-miss,加速VM内存地址
转换

•
•

默认Page size: 4KB/Hugepage size: 2M

Transp...
Addressing - HugePage
•

少page table尺寸,降低查找缓存(TLB)的cache-miss,加速VM内存地址
转换

•
•

默认Page size: 4KB/Hugepage size: 2M

Transp...
Addressing - HugePage
•

少page table尺寸,降低查找缓存(TLB)的cache-miss,加速VM内存地址
转换

•
•

默认Page size: 4KB/Hugepage size: 2M

Transp...
美团

放服务

https://mos.meituan.com
Space - KSM
• Kernel same-page merging
• kernel进程ksmd周期性扫描内存,将内容相同的
page合并,

美团

放服务

少物理内存使用量

https://mos.meituan.com
Agenda
• CPU
• Memory
• IO
• Storage
• Network
美团

放服务

https://mos.meituan.com
Full virtualization v.s. paravirtualization

Guest VM

Guest VM

Drivers
Traps

Virtual Hardware

Interface

Virtual Hardw...
virtio
半虚拟化I/O设备框架,标准化guest与host之间
数据交换接口,简化流程,

少内存拷贝,提

升虚拟机I/O效率

美团

放服务

https://mos.meituan.com
Agenda
• CPU
• Memory
• IO
• Storage
• Network
美团

放服务

https://mos.meituan.com
virtio-blk
• 基于virtio框架的虚拟PCI磁盘设备
• /dev/vdx

美团

放服务

https://mos.meituan.com
virtio-blk
• 基于virtio框架的虚拟PCI磁盘设备
• /dev/vdx
-drive file=win_xp.img,if=none,id=drive_0,cache=none,aio=native
-device virtio...
virtio-SCSI
• 基于virtio框架的虚拟SCSI磁盘设备
• /dev/sdx

美团

放服务

https://mos.meituan.com
virtio-SCSI
• 基于virtio框架的虚拟SCSI磁盘设备
• /dev/sdx
-drive file=win_xp.img,if=none,id=drive_0,cache=none,aio=native
-device virt...
缓存模式
Guest User Space
Guest FS page cache

Brk Driver writeback cache

Qemu
Host FS page cache

Kernel

美团

放服务

https://m...
缓存模式(cont)
writeback
page cache
cache

写同步

说明

(flush)

directsync

NO

NO

N/A

无优化

writethrough

YES

NO

YES

依靠Host操作...
美团

放服务

https://mos.meituan.com
Native AIO

• Native aio: kernel AIO
• threaded aio: user space AIO emulated by posix
thread workers

美团

放服务

https://mos...
Native AIO

• Native aio: kernel AIO
• threaded aio: user space AIO emulated by posix
thread workers

-drive file=win_xp.im...
块设备IO调度器
cfq

per-process
IO queue

per-device
deadline
IO queue

美团

放服务

较好公平性
较低aggregate throughput

较好实时性,较好aggregate...
块设备IO调度器
cfq

per-process
IO queue

per-device
deadline
IO queue

较好公平性
较低aggregate throughput

较好实时性,较好aggregate throughp...
Agenda
• CPU
• Memory
• IO
• Storage
• Network
美团

放服务

https://mos.meituan.com
virtio-net
• 基于virtio框架的虚拟以太网设备

美团

放服务

https://mos.meituan.com
virtio-net
• 基于virtio框架的虚拟以太网设备
-netdev type=tap,id=pub226,ifname=pub226,vhost=on,script=up.sh,downscript=down.sh
-device ...
•

vhost_net
内核进程vhost_xxx负责tap设备和guest virtio queue之间的数据交换,
少qemu通过用户态和tap设备交换数据的system call和内存拷贝

qemu pid=5489
guest VM...
•

vhost_net
内核进程vhost_xxx负责tap设备和guest virtio queue之间的数据交换,
少qemu通过用户态和tap设备交换数据的system call和内存拷贝

qemu pid=5489

qemu pi...
•

vhost_net
内核进程vhost_xxx负责tap设备和guest virtio queue之间的数据交换,
少qemu通过用户态和tap设备交换数据的system call和内存拷贝

qemu pid=5489

qemu pi...
美团

放服务

https://mos.meituan.com
其他优化选项
• CPU: scheduler
• Memory: NUMA
• Storage: PCI-passthrough
• Network: SR-IOV, PCI-passthrough
• 提升硬件指标
美团

放服务

htt...
Thank you
Q&A
https://mos.meituan.com
Upcoming SlideShare
Loading in...5
×

美团技术学院 - KVM性能优化

3,579

Published on

Published in: Technology
0 Comments
13 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total Views
3,579
On Slideshare
0
From Embeds
0
Number of Embeds
1
Actions
Shares
0
Downloads
219
Comments
0
Likes
13
Embeds 0
No embeds

No notes for slide

美团技术学院 - KVM性能优化

  1. 1. 源力量公 课 KVM性能优化 美团开放服务 邱剑 qiujian@meituan.com https://mos.meituan.com 2013/10/22
  2. 2. 于美团 • • • • 放服务 2012年初规 基于OpenStack架构,部分组件自主 2012年9月 始逐步 2013年5月推出美团 发 移在线服务系统到云主机 放服务(https:// mos.meituan.com),云主机为第一款产品 • 美团云主机基于KVM虚拟化技术
  3. 3. Agenda 美团 • CPU • context switch • cache • Memory • IO • Storage • Network 放服务 https://mos.meituan.com
  4. 4. Context Switch - Intel VT-x Virtualization Technology ring 0 kernel mode ring 3 User mode 美团 放服务 https://mos.meituan.com
  5. 5. Context Switch - Intel VT-x Virtualization Technology ring 0 kernel mode VMM ring 0 kernel mode VMM ring 3 User mode ring 3 User mode VM ring 0 Kernel mode VM ring 3 User mode 美团 放服务 https://mos.meituan.com
  6. 6. Context Switch - Intel VT-x Virtualization Technology ring 0 kernel mode VMM ring 0 kernel mode VMM ring 3 User mode ring 3 User mode VM ring 0 Kernel mode VM ring 3 User mode 设置:宿主机BIOS中 美团 放服务 启,目前默认 启 https://mos.meituan.com
  7. 7. Cache - Node Binding 美团 放服务 https://mos.meituan.com
  8. 8. Cache - Node Binding • 将qemu进程绑定到特定的CPU node或core上 ——避免L2/L3 Cache miss 美团 放服务 https://mos.meituan.com
  9. 9. Cache - Node Binding • 将qemu进程绑定到特定的CPU node或core上 ——避免L2/L3 Cache miss • Node binding v.s core binding 美团 放服务 https://mos.meituan.com
  10. 10. Cache - Node Binding • 将qemu进程绑定到特定的CPU node或core上 ——避免L2/L3 Cache miss • Node binding v.s core binding • 设置: 美团 放服务 https://mos.meituan.com
  11. 11. Cache - Node Binding • 将qemu进程绑定到特定的CPU node或core上 ——避免L2/L3 Cache miss • Node binding v.s core binding • 设置: • taskset 美团 放服务 https://mos.meituan.com
  12. 12. 美团 放服务 https://mos.meituan.com
  13. 13. Agenda • CPU • Memory • Addressing • Space • IO • Storage • Network 美团 放服务 https://mos.meituan.com
  14. 14. Addressing - EPT (SLAT) • Extended page tables/second level address translation Vaddr VMM (Page table) Paddr 美团 放服务 https://mos.meituan.com
  15. 15. Addressing - EPT (SLAT) • Extended page tables/second level address translation Vaddr VMM (Page table) VM Vaddr VM Page table VM Paddr/VMM Vaddr VMM Page table Paddr VMM Paddr 美团 放服务 https://mos.meituan.com
  16. 16. Addressing - EPT (SLAT) • Extended page tables/second level address translation Vaddr VMM (Page table) VM Vaddr VM Page table VM Paddr/VMM Vaddr VMM Page table Paddr VMM Paddr 美团 设置:宿主机BIOS中 放服务 启,目前默认 启 https://mos.meituan.com
  17. 17. Addressing - HugePage 美团 放服务 https://mos.meituan.com
  18. 18. Addressing - HugePage • 少page table尺寸,降低查找缓存(TLB)的cache-miss,加速VM内存地址 转换 美团 放服务 https://mos.meituan.com
  19. 19. Addressing - HugePage • 少page table尺寸,降低查找缓存(TLB)的cache-miss,加速VM内存地址 转换 • 美团 默认Page size: 4KB/Hugepage size: 2M 放服务 https://mos.meituan.com
  20. 20. Addressing - HugePage • 少page table尺寸,降低查找缓存(TLB)的cache-miss,加速VM内存地址 转换 • • 默认Page size: 4KB/Hugepage size: 2M Transparent hugepage: kernel进程khugepaged周期性扫描内存,自动将 地址连续可合并的普通4KB page合并为2MB Hugepage 美团 放服务 https://mos.meituan.com
  21. 21. Addressing - HugePage • 少page table尺寸,降低查找缓存(TLB)的cache-miss,加速VM内存地址 转换 • • 默认Page size: 4KB/Hugepage size: 2M Transparent hugepage: kernel进程khugepaged周期性扫描内存,自动将 地址连续可合并的普通4KB page合并为2MB Hugepage • 美团 设置: 放服务 https://mos.meituan.com
  22. 22. Addressing - HugePage • 少page table尺寸,降低查找缓存(TLB)的cache-miss,加速VM内存地址 转换 • • 默认Page size: 4KB/Hugepage size: 2M Transparent hugepage: kernel进程khugepaged周期性扫描内存,自动将 地址连续可合并的普通4KB page合并为2MB Hugepage • 设置: • 美团 放服务 sysctl -w sys.kernel.mm.transparent_hugepage.enabled=always https://mos.meituan.com
  23. 23. Addressing - HugePage • 少page table尺寸,降低查找缓存(TLB)的cache-miss,加速VM内存地址 转换 • • 默认Page size: 4KB/Hugepage size: 2M Transparent hugepage: kernel进程khugepaged周期性扫描内存,自动将 地址连续可合并的普通4KB page合并为2MB Hugepage • 设置: • • 美团 放服务 sysctl -w sys.kernel.mm.transparent_hugepage.enabled=always sysctl -w sys.kernel.mm.transparent_hugepage.defrag=always https://mos.meituan.com
  24. 24. 美团 放服务 https://mos.meituan.com
  25. 25. Space - KSM • Kernel same-page merging • kernel进程ksmd周期性扫描内存,将内容相同的 page合并, 美团 放服务 少物理内存使用量 https://mos.meituan.com
  26. 26. Agenda • CPU • Memory • IO • Storage • Network 美团 放服务 https://mos.meituan.com
  27. 27. Full virtualization v.s. paravirtualization Guest VM Guest VM Drivers Traps Virtual Hardware Interface Virtual Hardware Qemu Qemu kernel Hardware 美团 放服务 kernel Hardware https://mos.meituan.com
  28. 28. virtio 半虚拟化I/O设备框架,标准化guest与host之间 数据交换接口,简化流程, 少内存拷贝,提 升虚拟机I/O效率 美团 放服务 https://mos.meituan.com
  29. 29. Agenda • CPU • Memory • IO • Storage • Network 美团 放服务 https://mos.meituan.com
  30. 30. virtio-blk • 基于virtio框架的虚拟PCI磁盘设备 • /dev/vdx 美团 放服务 https://mos.meituan.com
  31. 31. virtio-blk • 基于virtio框架的虚拟PCI磁盘设备 • /dev/vdx -drive file=win_xp.img,if=none,id=drive_0,cache=none,aio=native -device virtio-blk-pci,drive=drive_0,bus=pci.0,addr=0x5 美团 放服务 https://mos.meituan.com
  32. 32. virtio-SCSI • 基于virtio框架的虚拟SCSI磁盘设备 • /dev/sdx 美团 放服务 https://mos.meituan.com
  33. 33. virtio-SCSI • 基于virtio框架的虚拟SCSI磁盘设备 • /dev/sdx -drive file=win_xp.img,if=none,id=drive_0,cache=none,aio=native -device virtio-scsi-pci,drive=drive_0,bus=pci.0,addr=0x5 美团 放服务 https://mos.meituan.com
  34. 34. 缓存模式 Guest User Space Guest FS page cache Brk Driver writeback cache Qemu Host FS page cache Kernel 美团 放服务 https://mos.meituan.com
  35. 35. 缓存模式(cont) writeback page cache cache 写同步 说明 (flush) directsync NO NO N/A 无优化 writethrough YES NO YES 依靠Host操作系统优化IO性能 闭Host page cache. none/off NO YES N/A 优化写性能,并保证安全性 writeback YES YES YES 优化读写性能,可能丢失数据 unsafe YES YES NO 优化读写行 干,不保证数据安全 -drive file=win_xp.img,if=none,id=drive_0,cache=none,aio=native -device virtio-blk-pci,drive=drive_0,bus=pci.0,addr=0x5 美团 放服务 https://mos.meituan.com
  36. 36. 美团 放服务 https://mos.meituan.com
  37. 37. Native AIO • Native aio: kernel AIO • threaded aio: user space AIO emulated by posix thread workers 美团 放服务 https://mos.meituan.com
  38. 38. Native AIO • Native aio: kernel AIO • threaded aio: user space AIO emulated by posix thread workers -drive file=win_xp.img,if=none,id=drive_0,cache=none,aio=native -device virtio-blk-pci,drive=drive_0,bus=pci.0,addr=0x5 美团 放服务 https://mos.meituan.com
  39. 39. 块设备IO调度器 cfq per-process IO queue per-device deadline IO queue 美团 放服务 较好公平性 较低aggregate throughput 较好实时性,较好aggregate throughput 不 公平,容易出现VM starvation https://mos.meituan.com
  40. 40. 块设备IO调度器 cfq per-process IO queue per-device deadline IO queue 较好公平性 较低aggregate throughput 较好实时性,较好aggregate throughput 不 公平,容易出现VM starvation sysctl -w sys.block.sdb.queue.scheduler=cfq 美团 放服务 https://mos.meituan.com
  41. 41. Agenda • CPU • Memory • IO • Storage • Network 美团 放服务 https://mos.meituan.com
  42. 42. virtio-net • 基于virtio框架的虚拟以太网设备 美团 放服务 https://mos.meituan.com
  43. 43. virtio-net • 基于virtio框架的虚拟以太网设备 -netdev type=tap,id=pub226,ifname=pub226,vhost=on,script=up.sh,downscript=down.sh -device virtio-net-pci,netdev=pub226,mac=00:02:dc:04:59:36,bus=pci.0,addr=0xf 美团 放服务 https://mos.meituan.com
  44. 44. • vhost_net 内核进程vhost_xxx负责tap设备和guest virtio queue之间的数据交换, 少qemu通过用户态和tap设备交换数据的system call和内存拷贝 qemu pid=5489 guest VM virtqueue vnic tap0 vSwitch nic 美团 放服务 kernel https://mos.meituan.com
  45. 45. • vhost_net 内核进程vhost_xxx负责tap设备和guest virtio queue之间的数据交换, 少qemu通过用户态和tap设备交换数据的system call和内存拷贝 qemu pid=5489 qemu pid=5489 guest VM virtqueue guest VM vnic virtqueue tap0 tap0 vSwitch vSwitch nic 美团 放服务 vnic kernel nic vhost_5489 kernel https://mos.meituan.com
  46. 46. • vhost_net 内核进程vhost_xxx负责tap设备和guest virtio queue之间的数据交换, 少qemu通过用户态和tap设备交换数据的system call和内存拷贝 qemu pid=5489 qemu pid=5489 guest VM virtqueue guest VM vnic virtqueue tap0 tap0 vSwitch vSwitch nic 美团 vnic kernel nic vhost_5489 kernel -netdev type=tap,id=pub226,ifname=pub226,vhost=on,script=up.sh,downscript=down.sh -device virtio-net-pci,netdev=pub226,mac=00:02:dc:04:59:36,bus=pci.0,addr=0xf 放服务 https://mos.meituan.com
  47. 47. 美团 放服务 https://mos.meituan.com
  48. 48. 其他优化选项 • CPU: scheduler • Memory: NUMA • Storage: PCI-passthrough • Network: SR-IOV, PCI-passthrough • 提升硬件指标 美团 放服务 https://mos.meituan.com
  49. 49. Thank you Q&A https://mos.meituan.com
  1. A particular slide catching your eye?

    Clipping is a handy way to collect important slides you want to go back to later.

×