虚拟机和宿主机之间高速通信

1 背景

    略

2 技术方案

2.1 通过虚拟串口

  通过serial channel实现,数据传输效率较高,但是不适合传输数据量大的数据。

2.2 通过共享文件夹

  通过9pfs实现,数据传输效率高,但是不适合做视频数据流的存储传输。

2.3 tcp socket通信

  虚拟机和服务器通过网络socket传输数据,数据传输效率低,数据传输延时较高,不适合实效性高的视频流场景。

2.4共享内存

  方案:在服务器上申请一块内存块,将内存块映射到虚拟机内,实现虚拟机和物理机通过内存块来共享数据。

  架构图:

  Debug demo

3 性能测试

功能 - 能进行数据的双向收发;

  性能 - 收和发12M数据量,两个动作总耗时1-2ms左右;

 性能 - 收和发400M数据量,两个动作总耗时40-50ms左右;

  

Cpu负载:

服务器端

 虚拟机端(4C4G)

4 缺陷

 安全性 - 因为使用的是内存映射模式,可以在虚拟机内操作物理机的内存地址进行攻击操作;

 资源占用 - 服务器端占用CPU-50%,客户端CPU - 28%(这是在sleep(0)下测试的,sleep1-2ms负载能降下很多)。

5 应用场景

虚拟机和物理机下的数据交互场景

Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐