虚拟机和宿主机之间的高速通信方案
虚拟机和宿主机之间高速通信1 背景略2 技术方案2.1 通过虚拟串口通过serial channel实现,数据传输效率较高,但是不适合传输数据量大的数据。2.2 通过共享文件夹通过9pfs实现,数据传输效率高,但是不适合做视频数据流的存储传输。2.3 tcp socket通信虚拟机和服务器通过网络socket传输数据,数据传输效率低,数据传输延时较高,不适合实效性高的视频流场景。2.4共享内存方案
虚拟机和宿主机之间高速通信
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 应用场景
虚拟机和物理机下的数据交互场景
更多推荐
所有评论(0)