virtio/pass-through
一、半虚拟化驱动(virtio)
virtio 是一种 I/O 半虚拟化解决方案,是对半虚拟化 Hypervisor 中的一组通用 I/O 设备的抽象
提供了一套上层应用与各 Hypervisor 虚拟化设备(KVM,Xen,VMware等)之间的通信框架和编程接口
virtio_balloon
可以让guest在运行时动态地调整它所占有host的内存资源,且无需关闭宿主机。
http://smilejay.com/2012/11/kvm-ballooning-overview/
virtio_net
可以提供网络吞吐量和降低网络延迟,达到和原生网卡差不多的性能
ethtool -i eth0
virtio_blk
提供高速访问块设备I/O的方法
使用该驱动的磁盘显示为: /dev/vda ...
IDE磁盘:/dev/hda ...
SATA磁盘:/dev/sda ...
二、PCI设备直接分配(VT-d/pass-through)
将host中的PCI设备直接分配给guest完全使用
不需要或者很少需要hypervisor的参与
SR-IOV
为了实现多个虚拟机能够共享同一个物理设备的资源并且达到设备直接分配的性能
3. 热插拔
4. 热迁移
5. 嵌套虚拟化
6. KSM
COW技术(copy-on-write): 写时复制
当使用fork函数创建一个进程时,子进程和父进程共享内存,当子进程或者父进程试图修改它们共享内存的区域时,
内核会分配一块新的内存区域,并将试图修改的共享内存区域复制到新的内存区域上,然后让进程去修改复制的内存。
KSM和COW技术有点相反
KSM: Kernel Samepage Merging
当内核扫描多个进程有相同的内存区域和内存页,将这些内存区域合并成一个,并标识为“写时复制”