论文部分内容阅读
随着计算机系统中商用部件性能的不断提高和价格的不断下降,使得具有良好可扩展性和高性价比的集群系统在高性能计算中的地位越来越重要。应用于高性能计算的集群系统中存在大量的计算资源,因而有效管理和利用这些资源是一个非常重要的问题。集群动态负载平衡系统正是解决这个问题的重要工具。它通过在集群各个结点间动态的平衡系统负载来达到更有效的资源利用率,从而提高集群系统的整体性能。由于集群并行程序设计和运行环境中网络通信的地位越来越重要,而现有的绝大多数集群负载平衡系统对存在网络通信的应用程序缺乏有效支持。为此本文提出了一种支持socket迁移的抢占式进程迁移系统,结合负载平衡算法可以有效解决以上问题。在本文的进程迁移系统中,使用了一种改进的total copy进程迁移算法来避免传送进程虚拟地址空间中的动态连接库和代码段部分,这样可以大大减少进程迁移过程代价和减小被迁移进程的冻结时间。通过对现有的socket迁移实现途径和相关系统的分析,发现现有的socket迁移系统在迁移监听状态socket时只是简单地将监听套接字从一个结点迁移到另一个结点。当有客户端向原结点的原监听端口发起连接时,这个连接请求将会失败而导致整个程序运行失败。本文通过介绍采用P4通信库的并行程序间建立通信连接的过程描述了以上现象,充分说明如果不解决这个问题,会导致现有的socket迁移系统没有太大的实际应用价值。通过使用本文提出syn-change方法可以简单有效地解决这个问题。另外,本文通过使用TCP的超时重传原理,对现有的socket系统在迁移连接状态socket的迁移算法进行了改进。本文在Linux操作系统中以可动态加载内核模块形式实现了抢占式进程迁移系统——PPMM(Preemptive Process Migration Module)。由于不需要对操作系统内核做任何修改,因此大大提高了进程迁移系统的易用性和可维护性。系统功能测试表明本文的进程迁移系统可以完全支持socket迁移。同时通过性能的对比测试,也表明了进程迁移算法的改进带来了较大的性能提升。