嵌入式系统在曙光4000A大规模机群监控系统中的应用
扫描二维码
随时随地手机看文章
嵌入式系统是以应用为中心,以计算机技术为基础,并且软硬件可裁剪,适用于应用系统对功能、可靠性、成本、体积、功耗有严格要求的专用计算机系统。它一般由嵌入式微处理器、外围硬件设备、嵌入式操作系统以及用户的应用程序等四个部分组成,用于实现对其他设备的控制、监视或管理等功能。它具有小型化、低成本、高可靠、高灵活性等特点。
由于上述优点,曙光4000A大规模机群监控系统在信息数据流的传输过程中,采用嵌入式系统作为数据信息汇总并且发送到监控节点的平台。
本文介绍了首先介绍了曙光4000A大规模机群监控系统的功能和结构,然后介绍了嵌入式系统在其中的应用,最后提出了这个实例今后的发展方向并总结全文。
一:曙光4000A大规模机群监控系统
1.1 背景分析及项目意义
随着机群系统的发展,机群的规模越来越大。当机群的节点数达到几百个以上时,对这种大规模机群的管理和维护就会有很大的困难。一种解决方案就是对机群从硬件上配备监控系统。这种监控系统一方面需要收集所有节点机的硬件和软件的实时信息,另外一方面需要随时登陆出问题的节点机上进行管理,或者进行远程安装操作系统等工作。有时监控系统还需要远程启动机器或者远程对机器进行热启动。
曙光4000A超级计算机由640个计算节点构成,这样的大规模机群监控系统中,针对上述问题,可以在节点机上安装专门负责收集节点机信息以及节点机鼠标键盘和VGA信号的节点卡。这样大大简化了系统的连接方式,使系统管理员可以在控制室监视整个机群系统的运行情况并可以对任意一台节点进行类似本地的操作,而不需要进入机房。
1.2监控系统的各部分功能划分
曙光4000A大规模机群监控系统从硬件上分成四部分,包括节点卡、采集卡(多路器)、监控屏幕、终端机等四个部分。整个系统架构如图1所示:
图1 系统结构图
Figure 1 Structure of the system
采集卡(多路器)最多支持8组节点机,每组最多可支持128个节点机。节点卡安装在节点机内部,每个节点卡有两个RJ45接口,作为数据总线接口,负责传送键盘鼠标操作信息、KVM命令信息、以及监控信息。同时由于主板提供开机、重启等电信号的接口,可以通过KVM系统来进行节点机的开机、重启等工作。
该监控系统需要完成以下功能:
1.收集所有节点机的硬件信息并发送给监控节点;
2.实现机群最大1024节点任意节点的KVM切换和登陆,KVM支持OSD操作;
3.通过KVM系统可以进行对任意节点进行开机,重启(冷启动)等工作(按需求待定);
4.节点机监控屏显示,节点号设置,自动顺序开机等(按需求看是否需要监控屏)。
二:嵌入式系统的引入
2.1 采集卡(多路器)的结构
曙光4000A大规模机群监控系统的核心是采集卡,采集卡集成多路器功能。一方面,采用8×1的模拟开关,支持1个终端盒,通过终端盒就可以操作整个机群中的任意一个节点,从而实现了多路器的功能。另一方面,采集卡还要运行应用程序,分别收集8路总线上节点的监控信息,然后通过采集卡集成的8路网口把收集的节点机的信息通过以太网传送给监控节点,最终由监控节点显示在监控屏幕上。
虽然采集卡总的数据流量并不是很大,性能的要求也不是很高,但是考虑到系统的可移植性、易用性和系统的可扩展性,这个环节最好用一个嵌入式系统来实现。
每个节点机上的信息由节点卡收集,这些信息在汇总的过程中,采取轮循的方式收集,可以避免遗漏节点机信息。如果直接使用采集卡主芯片轮循收集,不但占用了采集卡的大量资源,更重要的是不能保证采集卡及时响应监控节点命令,从而不能把汇总的信息及时发送给监控节点,这样会在监控屏幕上显示错误的节点机信息。因此在采集卡中还集成了一个单片机,这个单片机的作用就是收集相连的这一组节点机的信息,保存在本地缓冲区中,然后通过IIC总线发送给采集卡的主芯片。[!--empirenews.page--]
对于采集卡主芯片的选择,由于需要支持TCP/IP网络,需要支持IIC接口,同时还可以支持内存控制以及Flash控制器,因此选择了三星公司的ARM芯片S3C4510B,该芯片采用ARM7TDI内核,32位RISC架构。对于嵌入式操作系统的选择,uClinux具有免费、开源、可裁减性好、对TCP/IP网络协议支持的较好并且稳定性高等优点,因此选择uClinux作为嵌入式操作系统。同时由于IIC总线技术有连接简单、数据传输速率高、高可靠性等优点,所以采集卡的主芯片和采集单片机使用IIC总线相连。
2.2 采集卡(多路器)的功能
采集卡的主要作用,一方面是从与每组节点机相连的采集单片机中通过IIC总线读取节点机的信息,另一方面监听自身的事先约定的端口,当有连接请求并收到发送数据的命令后送出从采集卡中读取的数据。硬件上已经有了IIC和网络接口,软件方面,可以从网上资源中获取S3C4510B芯片的IIC控制器和网络驱动程序,然后集成到uClinux嵌入式操作系统中。此外还需要一段采集程序实现系统的主要功能。
采集程序根据系统需要的功能,分为两个部分,一部分定时从IIC总线读取数据,另一部分监听某个约定端口、收取命令并发送数据。这两个部分分别由两个线程来执行。两个线程共享同一块数据缓冲区。线程一通过IIC总线读取采集卡中的数据,写入缓冲区中,线程二一方面读取缓冲区中的数据发送,另一方面在发送完毕后,把已经发送了的缓冲区填写为无效数据。由于数据缓冲区属于临界区域,这两个线程在使用缓冲区的时候要严格互斥。
程序的主体结构如下:
read_iic(){ //线程一运行的函数
打开iic设备;
while(1) {
读取iic设备的数据;
写入全局缓冲区中;
休眠一定的时间;
}
}
send_data() { //线程二运行的函数
绑定本地端口;
监听本地端口;
while(1) {
收到命令;
发送全局缓冲区中的数据;
填写无效数据;
}
}
main() {
初始化全局缓冲区;
创建线程一;
创建线程二;
}
2.3 运行情况以及发展方向
在实际运行1周后,曙光4000A大规模集群监控系统运行状况良好,其中采集卡功能良好,在规定的延迟内数据传输流畅,没有出现数据漏传、丢失等现象,说明监控系统中的嵌入式系统运行很稳定,发挥了预期的作用。
在将来的监控系统升级工作中,可以考虑在这个采集卡中加入嵌入式数据库技术,把收到的数据存储起来,并且和uClinux提供的Web服务结合,在Web服务中显示监控系统的数据,这样就可以在任何一台机器上以浏览网页的形式监控整个集群,从而节省了监控节点的开销,提高了采集卡的利用率。
三:结束语
嵌入式系统体积小、灵活性高,已经被应用到各行各业,例如汽车、家电、航空、精密仪器等等。本文介绍的嵌入式系统在曙光4000A大规模机群监控系统中的应用,结合了ARM技术、IIC总线技术,采用了uClinux嵌入式操作系统,体积小、可扩展性好、成本低,数据流向清晰明确,现在已经作为配套产品提供给用户。