0%

各类虚拟机与主机大文件IO测试

  • 只测试了大文件IO,未测试小文件
  • 测试方法比较简陋,仅供参考
  • 请关注最后修改时间,本文内容可能年久失修

配置

  • Sys: Win10 1909
  • CPU: i5-7300HQ
  • MEM: DDR4 2400 16G
  • NVME:C2000 pro 1T (C, D, T)
  • SATA:东芝 256G (E)

直接拷贝 E -> D

Loading

一般提高网络IO的方法

  1. 使用巨型帧(Jumbo Frame),调大 MTU (Up to 9000 bytes)
  2. 修改 Windows 注册表,调大 Windows 滑动窗口大小

VMware

适配器信息

Loading

速度

CPU 占用 +50% (直接拉满 100%)
适配器未出现大幅IO变化

Loading

已知信息

  1. VMware workstation 不支持巨型帧
  2. VMware workstation 使用 samba 来进行虚拟机和主机的文件访问,CPU资源占用较高

QA

  • 为什么只有VMnat只有 100 Mbps?不能更快了吗?
  • 这个只是表面速度,实际甚至可以上 10Gbps

HyperV

适配器信息

Loading

速度

CPU 占用 +20%
适配器出现大型IO变化,基本等同于下载速度

Loading

已知信息

  1. HyperVVMware 都属于通过硬件辅助虚拟化实现的完全虚拟化。
  2. HyperV属于第一类管理程序,VMware workstation 属于第二类管理程序。两者不兼容
  3. 现在有基于HyperV的VMware预览版
  4. Vbox 也早也加入了对于 HyperV 的支持(但是未声明,可能还不稳定)
  5. Google 基于 HyperV 的安卓模拟器目前也在有序开发中

Docker

  • Docker 采取 cgroup 进行资源的管控,在访问挂载分区的时候使用 iptables 向本机发送数据,理论上性能损耗是很小的,故不考虑测试
  • 题外话:如果使用 -p 或 -P 参数,docker会直接向 iptables 添加规则,直接将端口暴露出去而不受防火墙的控制。
  • 解决方法:
    • 采取硬件防火墙,不使用软件
    • 修改 /etc/docker/daemon.json 添加或修改 { "iptables": false }, 然后 sudo systemctl daemon-reload && sudo systemctl restart docker.service

Docker for windows (Linux container)

适配器是使用上面的 HyperV vSwitch

速度(访问挂载卷)

CPU +50% (直接拉满)
1 GB/s左右及以上的是 docker内 IO 测试, 只有最后两条是挂载卷访问速度

Loading

已知信息
  • Docker for windows 采取 samba 来实现主机和 container 的文件共享,速度较慢
  • Windows2004 通过了一个基于 HyperV 的 WSL2,实现了类原生访问。对于挂载卷的访问速度提升很大,基本接近于直接访问。

参见

  • https://en.wikipedia.org/wiki/Virtual_machine#Hardware-assisted_virtualization
  • https://en.wikipedia.org/wiki/Hyper-V#Architecture
  • https://www.quora.com/What-is-the-difference-between-VMware-and-Hyper-V
-------------本文结束再接再厉-------------

本文标题:各类虚拟机与主机大文件IO测试

文章作者:IITII

发布时间:2020年04月27日 - 11:04

最后更新:2020年04月02日 - 02:04

原始链接:https://iitii.github.io/2020/04/27/1/

许可协议: 署名-非商业性使用-禁止演绎 4.0 国际 转载请保留原文链接及作者。