嵌入式系統是以應用為中心,以計算機技術為基礎,并且軟硬件可裁剪,適用于應用系統對功能、可靠性、成本、體積、功耗有嚴格要求的專用計算機系統。它一般由嵌入式微處理器、外圍硬件設備、嵌入式操作系統以及用戶的應用程序等四個部分組成,用于實現對其他設備的控制、監視或管理等功能。它具有小型化、低成本、高可靠、高靈活性等特點。 由于上述優點,曙光4000A大規模機群監控系統在信息數據流的傳輸過程中,采用嵌入式系統作為數據信息匯總并且發送到監控節點的平臺。 本文介紹了首先介紹了曙光4000A大規模機群監控系統的功能和結構,然后介紹了嵌入式系統在其中的應用,最后提出了這個實例今后的發展方向并總結全文。 一:曙光4000A大規模機群監控系統 1.1 背景分析及項目意義 隨著機群系統的發展,機群的規模越來越大。當機群的節點數達到幾百個以上時,對這種大規模機群的管理和維護就會有很大的困難。一種解決方案就是對機群從硬件上配備監控系統。這種監控系統一方面需要收集所有節點機的硬件和軟件的實時信息,另外一方面需要隨時登陸出問題的節點機上進行管理,或者進行遠程安裝操作系統等工作。有時監控系統還需要遠程啟動機器或者遠程對機器進行熱啟動。 曙光4000A超級計算機由640個計算節點構成,這樣的大規模機群監控系統中,針對上述問題,可以在節點機上安裝專門負責收集節點機信息以及節點機鼠標鍵盤和VGA信號的節點卡。這樣大大簡化了系統的連接方式,使系統管理員可以在控制室監視整個機群系統的運行情況并可以對任意一臺節點進行類似本地的操作,而不需要進入機房。 1.2監控系統的各部分功能劃分 曙光4000A大規模機群監控系統從硬件上分成四部分,包括節點卡、采集卡(多路器)、監控屏幕、終端機等四個部分。整個系統架構如圖1所示: 圖1 系統結構圖 采集卡(多路器)最多支持8組節點機,每組最多可支持128個節點機。節點卡安裝在節點機內部,每個節點卡有兩個RJ45接口,作為數據總線接口,負責傳送鍵盤鼠標操作信息、KVM命令信息、以及監控信息。同時由于主板提供開機、重啟等電信號的接口,可以通過KVM系統來進行節點機的開機、重啟等工作。 該監控系統需要完成以下功能: 1.收集所有節點機的硬件信息并發送給監控節點; 2.實現機群最大1024節點任意節點的KVM切換和登陸,KVM支持OSD操作; 3.通過KVM系統可以進行對任意節點進行開機,重啟(冷啟動)等工作(按需求待定); 4.節點機監控屏顯示,節點號設置,自動順序開機等(按需求看是否需要監控屏)。 二:嵌入式系統的引入 2.1 采集卡(多路器)的結構 曙光4000A大規模機群監控系統的核心是采集卡,采集卡集成多路器功能。一方面,采用8×1的模擬開關,支持1個終端盒,通過終端盒就可以操作整個機群中的任意一個節點,從而實現了多路器的功能。另一方面,采集卡還要運行應用程序,分別收集8路總線上節點的監控信息,然后通過采集卡集成的8路網口把收集的節點機的信息通過以太網傳送給監控節點,最終由監控節點顯示在監控屏幕上。 雖然采集卡總的數據流量并不是很大,性能的要求也不是很高,但是考慮到系統的可移植性、易用性和系統的可擴展性,這個環節最好用一個嵌入式系統來實現。 每個節點機上的信息由節點卡收集,這些信息在匯總的過程中,采取輪循的方式收集,可以避免遺漏節點機信息。如果直接使用采集卡主芯片輪循收集,不但占用了采集卡的大量資源,更重要的是不能保證采集卡及時響應監控節點命令,從而不能把匯總的信息及時發送給監控節點,這樣會在監控屏幕上顯示錯誤的節點機信息。因此在采集卡中還集成了一個單片機,這個單片機的作用就是收集相連的這一組節點機的信息,保存在本地緩沖區中,然后通過IIC總線發送給采集卡的主芯片。 對于采集卡主芯片的選擇,由于需要支持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嵌入式操作系統,體積小、可擴展性好、成本低,數據流向清晰明確,現在已經作為配套產品提供給用戶。 |