MOSIX是Linux核心
集群计算的功能之一。它支持的操作系统平台有BSD/OS 和Linux,它允许任意多个基于X86/Pentium的服务器和工作站
协同工作。
MOSIX为
Linux核心增添了
集群计算的功能。在MOSIX
集群环境中,用户无需对应用程序进行修改,或将应用程序与库连接起来,或将应用程序分配到不同的节点上运行。MOSIX会自动将这些工作透明地交给别的节点来执行。
MOSIX的核心是适应性的资源管理算法,它对各节点的负载进行监测并做出相应的回应,从而提高所有进程的整体性能。它使用抢先的进程迁移方法来在各节点中分配和再分配进程,从而充分利用所有的资源。适应性的资源管理算法具体上又包括适应性的
负载平衡算法、内存引导算法和文件I/O的优化算法。这些算法都对
集群中的资源使用情况的变化做出响应。如:节点上的不平衡的负载分布或由于
内存不足而导致的过多的磁盘换入换出。在这种情况下,MOSIX将进程从一个节点迁移到另外一个节点上,从而来均衡负载或将进程迁移到有足够的内存空间的节点上。
由于MOSIX是在Linux的核心中实现的,因此它的操作对应用程序而言是完全透明的。可以用它来定义不同的
集群类型,这些集群中的机器可以相同也可以不同。
与Turbocluster、Linux Virtual Server、Lsf等
集群系统不同的是,MOSIX集群中的每个节点既是主节点又是服务节点,不存在主控节点。对于那些在本地节点创建的进程而言,该节点就是一个主节点;对于那些从远方节点迁移过来的进程而言,该节点就是服务节点。这意味着可以在任意时刻向
集群中增加节点或从集群中删除节点,而不会对正在运行的进程产生不良的影响。MOSIX的另外一个特性就是它的监测算法能够监测每个节点的速度、负载、可用内存、IPC 以及I/O rate 。系统使用这些信息来决定将进程发送到哪个具体的节点上。当在某个节点上创建了一个进程以后,该进程就在这个节点上执行。当该节点的负载超过了一定的阀值以后,就将该进程透明地迁移到别的节点上继续执行。
MOSIX文件系统采用直接文件系统访问的方法,它可以允许迁移到别的节点的进程在本地进行
I/O操作。这样就减少了需要进行I/O操作的进程与创建该进程的
节点之间的通讯,从而允许这些进程更加自由地在
集群中的节点中进行迁移。MOSIX文件系统使所有节点都可以像访问本地文件系统一样透明地访问其它节点上的所有目录和文件。
一个低端的MOSIX配置可以包含通过
以太网连接起来的多台PC机。一个较大的配置可以包含通过
快速以太网连接起来的多台工作站和服务器。高端的MOSIX配置可以包含通过Gigabit-Ethernet连接起来的多台SMP 或非SMP工作站和服务器。
MOSIX
集群使用了自己的文件系统MFS文件系统。MFS将集群中的所有文件系统和目录都看作是一个文件系统,而且它提供了对所有节点上的所有文件系统的统一访问,它还通过只提供一个cache保证了cache的一致性。
在MOSIX
集群中进行进程迁移时,如果此进程主要占用的是CPU资源,则迁移此进程对于提供系统性能是非常有效的,但是如果此进程需要进行大量的
I/O操作,则迁移进程非常不利。这是因为每个I/O操作都需要与该进程原来所处的
节点进行通讯。
因此MFS增加了对DFSA(Direct File System Acess)的支持。DFSA的目的就是让那些需要进行大量I/O操作的进程迁移到远端节点上,该远端节点拥有大多数I/O操作将会涉及到的文件,因此大多数的I/O操作都能在远端节点上完成,而且在远端节点上可以通过本地访问来访问数据。如果一个系统调用是节点无关的,此系统调用就会在远端节点上执行,否则就在本地执行。MFS比其它
网络文件系统优越的地方就是它允许使用本地文件系统,这样就减少了进程和
文件服务器之间的通讯开销。