发布时间:2025-03-03 11:48:03 点击量:
HASH GAME - Online Skill Game GET 300
摘 要:Hash算法在高性能多进程负载均衡中起到关键作用,但目前面向多进程负载均衡的Hash算法研究主要集中在Hash算法设计和领域应用方面,较少有文献对现有的Hash算法性能进行分析比较。为此,总结面向多进程负载均衡的Hash算法应具有的特征,并据此筛选出5种适用于多进程负载均衡的主流Hash算法,从分配均衡性和耗时等方面进行理论分析和实验评估,为多进程负载均衡中Hash算法的选择与使用提供依据。分析结果表明,Toeplitz Hash算法较适合用于多进程的负载均衡。
(Network Intrusion Detection System,NIDS)节点性能的基于高效Hash算法的多进程负载均衡方案。文献[6]针对大量分布式会话启动协议(Session Initiation Protoco,SIP)请求研制的高性能多进程负载均衡器不仅提供了细粒度的控制,而且在吞吐量和响应时间方面有明显的提高。文献[7]探讨了多核服务器中基于Hash算法的多进程负载均衡调度技术。这些针对多进程负载均衡的Hash算法研究主要侧重于Hash算法设计和领域应用方面,尚未对现有的Hash 算法的性能进行分析比较研究。鉴于Hash算法性能在多进程负载均衡中的关键作用,对其进行性能分析和比较研究无疑十分必要。
任意长为(n+m-1 ) bit的序列S都对应一个n行m列的Toeplitz矩阵Ts。序列S定义了矩阵T的第1列和第1行,从而定义了整个Toeplitz矩阵。序列S的前n个元素被从下到上映射到矩阵的第一列上,序列S的后m个元素则被从左到右映射到矩阵的第一行上,上述矩阵对应序列为an-1…a1a0a-1…a-n+1 。一个n行m列的Toeplitz矩阵可以用来将长度为m的序列Hash到长度为n的另一个序列上。Free BSD内核源码中提供了一个用于实现Receive-Side Scaling功能的Toeplitz矩阵[ 13] ,本文使用该矩阵计算request_sock的Hash值。
本文实验所使用数据集由麻省大学(Umas s)网络中心收集[ 15] ,该数据集记录了麻省大学2007年6月9 日-2007年6月22日期间每天上午9:30-10:30通过学校网关的数据包,共包括654795条记录。本文实验使用上文提到的5种Hash算法计算这些包的Hash值,测试当存在2个、4个、8个、16个、32个、64个负载均衡进程的情况下Hash函数的分配均衡性,同时对这些过程计时,以考察Hash函数的时间消耗。
对其余4种算法产生的实验结果求标准差,结果如图6所示。可以看出,当Hash的目标数量较多时,4种Hash算法方差都比较接近,这意味着这4种算法都能够较为均匀地将网络数据包分配到较大的集合中;但当Hash目标数量较小时(如2个或4个) ,算法2和算法3的均衡性严重降低。而算法4和算法5的均衡性几乎不受Hash 目标数多少的影响,具有很好的稳定性,而且无论Hash目标的多少,这两种算法的实验结果都具有最小的标准差,提供最均衡的Hash分配。但算法4的时间消耗( 3,91 s )远大于算法5
为对面向多进程负载均衡的Hash算法进行性能研究,本文在综述主流研究成果的基础上,分析了适用于多进程负载均衡的Hash算法特征,并以这些特征为原则,筛选出5种广泛应用于高性能负载均衡的Hash算法,从分配均衡性和时间消耗等方面进行算法分析和实验评估。实验结果表明,当Hash算法产生较为均衡的分配时,应用该算法的多进程负载均衡才能获得最大的性能提升,从而为多进程负载均衡中Hash算法的选择与使用提供了依据。鉴于Hash算法在高性能多进程负载均衡中起到关键作用,今后将在比较已有算法性能基础上,研究性能更优的Hash算法。