一种动态实时调整spice图像品质的方法

文档序号:9670819阅读:1068来源:国知局
一种动态实时调整spice图像品质的方法
【技术领域】
[0001]本发明涉及一种数据传输方法,尤其是涉及一种动态实时调整spice图像品质的方法。
【背景技术】
[0002]目前spice-server (server-服务器)负责处理spice协议及网络通讯,存在形式可以是一个运行在虚拟机内部的模块或者是一个独立的进程。
[0003]Spice是一个远程计算方案,提供对远程主机的显示和设备(如:键盘、鼠标、音频)的远程访问,最主要的应用是提供对虚拟机的访问。
[0004]虚拟机把图像数据交给spice-server,spice-server处理后再使用spice协议通过网络把图像传输给终端软件,传输的图像频数据进行无损压缩或固定压缩率的有损压缩。当前的这种方式需要占据比较大的网络带宽,在低带宽条件下无法使用,在带宽波动时会产生比较大的通讯延迟。

【发明内容】

[0005]本发明提供了一种动态实时调整spice图像品质的方法,用户通过终端软件操作虚拟机,终端软件与虚拟机通过spice协议进行网络通信。虚拟机通过网络实时把图像、音频数据传输给终端软件,在网络带宽不够或带宽波动的时候通讯延迟会很大,通过动态实时调整图像的品质,降低数据传输量,可以有效降低通讯延迟。其技术方案如下所述:
[0006]—种动态实时调整spice图像品质的方法,包括下列步骤:
[0007](1)设立运行在spice-server进程内部的参数管理模块,读写用于保存参数的内部变量,spice图像处理模块根据参数管理模块提供的内部参数实时变更图像压缩方法,所述内部参数用于配置压缩参数和压缩参数是否执行人工配置;
[0008](2) spice网络通讯模块根据网络通讯情况实时修改参数管理模块的压缩参数,自动选择压缩参数;
[0009](3)执行人工配置时,外部程序通过进程间通讯实时修改压缩参数。
[0010]步骤(1)中,所述参数管理模块启动独立线程,通过进程间通讯的方式从其他进程接收配置命令,实时配置内部参数。
[0011]步骤(1)中,所述图像压缩方法在无损压缩时选择Deflate或LZMA压缩方法,在有损压缩时使用JPEG传输方法。
[0012]步骤(3)中,人工配置压缩参数的方法包括以下步骤:
[0013]1)运行网络通讯程序,此程序以进程方式运行,创建socket进行网络侦听,从网络接收配置命令;
[0014]2)网络通讯程序收到配置命令后,解析出内部参数,通过进程间通讯的方式把内部参数传递给参数管理模块;
[0015]3)网络配置命令中包含指定虚拟机的信息及内部参数。
[0016]步骤(2)中自动选择压缩参数的方法步骤如下:
[0017]1)修改spice-server网络通讯功能代码,收集网络通讯状况,所述网络通讯状况包括:平均每秒需要发送的图像数据字节数、每秒需要发送的图像数据字节数峰值、平均每秒实际发送的图像字节数、每秒实际发送的图像字节数峰值,以上数据均在一段时间内统计;
[0018]2)根据网络通讯状况获得的通讯速率实时调整压缩参数,
[0019]2.1初始使用有损压缩,图像质量定为85 ;
[0020]2.2如果连续30秒平均每秒实际发送的图像字节数等于平均每秒需要发送的图像数据字节数,并且每秒需要发送的图像数据字节数峰值没有增加,则图像质量+1,并且如果每秒实际发送的图像数据字节数峰值增加,则图像质量+2 ;
[0021]2.3如果出现平均每秒实际发送的图像字节数小于平均每秒需要发送的图像数据字节数,则图像质量-1,并且如果每秒实际发送的图像数据字节数峰值增加,则图像质量-10 ;
[0022]2.4如果图像质量达到100,并且连续30秒连续30秒平均每秒实际发送的图像字节数等于平均每秒需要发送的图像数据字节数,则使用无损压缩。
[0023]步骤(3)中,网络通讯程序通过进程间通讯的方式与参数管理模块进行交互,进程间通讯的方法包括:
[0024]1) socket:参数管理模块创建本地socket进行侦听,从socket接收数据;网络通讯程序则连接此socket,向此socket写入数据;
[0025]2)管道:参数管理模块创建命名管道,从管道内读取数据;网络通讯程序则打开此管道,向管道内写入数据;
[0026]3)共享内存:参数管理模块创建共享内存文件,并通过mmap将文件映射到内存中,并从此内存读取数据;网络通讯程序则打开此共享内存文件,并通过mmap将文件映射到内存中,并将数据写入此内存。
[0027]所述socket、管道、共享内存文件的命名均使用虚拟机的UUID命名。
[0028]所述方法能够降低虚拟机网络通讯对带宽的要求,在低带宽情况下可以通过网络操作虚拟机,在带宽波动时有效降低通讯延迟。
【附图说明】
[0029]图1是所述动态实时调整spice图像品质的方法示意图;
[0030]图2是人工配置压缩参数的方法示意图;
[0031 ] 图3是自动选择压缩参数的方法示意图。
【具体实施方式】
[0032]如图1所示,右边的框表示spice-server,首先设立参数管理模块,此模块运行在spice-server进程内部,读写用于保存参数的内部变量。功能实现包括:
[0033]a、对spice-sever进行修改,包括:
[0034]1、建立spice图像处理模块,修改图像频数据处理程序,增加内部参数,此参数用来配置:压缩参数(包括图像和压缩算法和压缩率)、是否人工配置(指人工配置压缩参数或软件自动选择压缩参数);
[0035]2、增加参数管理模块,此模块启动独立线程,通过进程间通讯的方式从其他进程接收配置命令,实时配置内部参数;
[0036]3、增加网络处理程序,建立spice网络通讯模块,用于收集网络数据,判定网络状态,实时动态修改内部参数。
[0037]b、提供虚拟机管理程序,处理虚拟机信息数据;
[0038]c、支持网络配置,通过网络通讯程序接收网络配置命令,实时调整内部参数;
[0039]d、配置的粒度可以精确到每台虚拟机。
[0040]其中,压缩算法包括:
[0041]1、无损压缩,可以选择Deflate或LZMA压缩方法,DEFLATE是同时使用了 LZ77算法与哈夫曼编码(Huffman Coding)的一个无损数据压缩算法;LZMA (Lempel-Ziv_Markovchain-Algorithm的缩写),是一个Deflate和LZ77算法改良和优化后的压缩算法。
[0042]2、有损压缩,使用JPEG处理方法。
[0043]如图2所示,人工配置压缩参数的方法,用户首先在浏览器界面通过网络通讯HTTP协议下发配置命令,包括所述命令传送到web Sever,然后经过下列步骤:
[0044]1、运行网络通讯程序,此程序以进程方式运行,此程序创建socket进行网络侦听,从网络接收配置命令;
[0045]2、网络通讯程序收到配置命令后,解析出内部参数,通过进程间通讯的方式把内部参数传递给参数管理模块,即通过本地socket通讯,配置内部参数;
[0046]3、网络配置
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1