冉凡燦,蔣句平(國防科學(xué)技術(shù)大學(xué) 計算機學(xué)院,湖南 長沙 410073)
超算中心環(huán)境監(jiān)測系統(tǒng)的設(shè)計和實現(xiàn)
冉凡燦,蔣句平
(國防科學(xué)技術(shù)大學(xué) 計算機學(xué)院,湖南 長沙 410073)
超級計算機對其運行環(huán)境有極為苛刻的要求,它的持續(xù)穩(wěn)定運行需要通過水冷、風(fēng)冷等設(shè)備對機房溫度進行嚴格控制,為了檢測制冷設(shè)備的穩(wěn)定程度并制定合理的溫度控制策略,提出了以Linux操作系統(tǒng)和S3C2440處理器為平臺構(gòu)建分布式溫度采集系統(tǒng)的思想,該系統(tǒng)通過分布在機房多處的溫度傳感器采集機房內(nèi)的溫度值,并將這些數(shù)據(jù)存入本地SQLite數(shù)據(jù)庫,再通過Boa服務(wù)和CGI技術(shù)訪問這些信息,系統(tǒng)管理人員則可以通過分析這些溫度信息判斷制冷設(shè)備的可靠性并制定合理的溫度控制策略。首先論述了系統(tǒng)的相關(guān)技術(shù)和實現(xiàn)方法,再將系統(tǒng)布置在機房中進行測試,測試結(jié)果表明,系統(tǒng)運行穩(wěn)定、監(jiān)測數(shù)據(jù)可靠,能夠滿足需求。
嵌入式系統(tǒng);Linux;Boa;SQLite;公共網(wǎng)關(guān)接口
隨著計算任務(wù)規(guī)模越來越大,對超級計算機的性能要求也越來越高,但隨之而來的問題是超級計算機的功耗和發(fā)熱量越來越大,同時由于計算密度的差異,同一個計算任務(wù)在不同的時間段內(nèi)計算機的發(fā)熱量不同,因此機房內(nèi)的溫度極易波動。而超級計算機的持續(xù)可靠運行需要穩(wěn)定的機房溫度,因此機房內(nèi)的制冷效果以及制冷策略的制定變得極為重要。本文以天河2號超級計算機機房管理為背景,提出了一種分布式溫度采集方法用以檢測機房內(nèi)溫度的穩(wěn)定性和制冷設(shè)備的可靠性。首先分析了以Linux操作系統(tǒng)和S3C2440嵌入式處理器為平臺,并利用Boa服務(wù)器、SQLite數(shù)據(jù)庫和溫度傳感器構(gòu)建分布式溫度采集系統(tǒng)的可行性,并給出了系統(tǒng)的具體實現(xiàn)方法,最后對系統(tǒng)進行了測試。由于這種分布式溫度采集系統(tǒng)能夠同時采集到機房內(nèi)多處的溫度信息,相比使用單個傳感器或使用溫度計對機房溫度進行采集,該系統(tǒng)的效率更高,采集到的數(shù)據(jù)也更加可靠。而機房維護人員則可以通過分析保存在數(shù)據(jù)庫里的歷史數(shù)據(jù)判斷制冷設(shè)備的可靠性,并以此為依據(jù)科學(xué)地制定機房溫度控制策略。
該系統(tǒng)基于一種嵌入式開發(fā)平臺,該平臺上集成了一顆S3C2440嵌入式處理器,并且平臺上已經(jīng)移植了Linux操作系統(tǒng)。在此基礎(chǔ)上又移植了Boa服務(wù)器和SQLite數(shù)據(jù)庫,并在處理器的6個IO引腳上掛接了溫度傳感器DS18B20,這些傳感器分布在機房各處。系統(tǒng)采集的溫度數(shù)據(jù)存儲到數(shù)據(jù)庫中,而機房維護人員可以通過瀏覽器查看這些信息,圖1為單個溫度采集系統(tǒng)的框圖。
圖1 系統(tǒng)框圖
1.1 Boa服務(wù)器
Boa是類Unix操作系統(tǒng)下的一個開源的Web服務(wù)器軟件,最新版本的源碼包不到200KB。Boa是一個單任務(wù)服務(wù)器,即在同一時刻只能響應(yīng)一個用戶的請求,當(dāng)多個用戶同時訪問服務(wù)器時,只能有一個用戶的請求得到響應(yīng),而其他用戶必須等待[1]。由于這些特性,Boa服務(wù)器適合移植到資源受限的嵌入式系統(tǒng)中。當(dāng)服務(wù)器收到來自瀏覽器的請求后,會分析請求類型,若請求的是靜態(tài)網(wǎng)頁,則服務(wù)器直接向瀏覽器返回靜態(tài)網(wǎng)頁,如是更復(fù)雜的請求,例如表單處理等,則需要調(diào)用CGI程序處理用戶請求[2]。該系統(tǒng)通過源碼方式安裝Boa服務(wù)器,在安裝完成后還需要通過修改配置文件boa.conf對服務(wù)器進行配置[3-4]。
1.2 CGI編程
CGI程序是Web服務(wù)器的一種后臺程序,用于處理來自瀏覽器的請求,是實現(xiàn)瀏覽器與服務(wù)器動態(tài)交互的一種方式,通常情況下提交瀏覽器中的表單或點擊一個超級鏈接就能夠觸發(fā)一個CGI程序的執(zhí)行[5],例如〈form action="/cgi-bin/relay.cgi"method="post"〉是瀏覽器中的一個表單,提交這個表單就能夠觸發(fā)位于服務(wù)器上的一個CGI程序relay.cgi的執(zhí)行;而〈a href="/cgi-bin/dump.cgi"〉dump database〈/a〉是一個超鏈接,點擊這個超鏈接就能夠觸發(fā)dump.cgi的執(zhí)行。CGI程序能夠從環(huán)境變量或標(biāo)準輸入中獲取來自瀏覽器的數(shù)據(jù),并能將處理結(jié)果返回給瀏覽器[4-5]。
1.3 SQLite數(shù)據(jù)庫
SQLite是一款開源的、嵌入式關(guān)系型數(shù)據(jù)庫,它主要應(yīng)用在嵌入式設(shè)備上,在很多Android和IOS設(shè)備上都可以看到它的身影。與其他大型數(shù)據(jù)庫不同,SQLite數(shù)據(jù)庫和基于這個數(shù)據(jù)庫的應(yīng)用程序共同運行于同一個系統(tǒng)中,應(yīng)用程序產(chǎn)生的數(shù)據(jù)可以直接存入數(shù)據(jù)庫中而不需要通過網(wǎng)絡(luò)傳輸[6-7]。本系統(tǒng)中通過源碼方式安裝SQLite數(shù)據(jù)庫,需要注意的是在安裝過程中會生成一些文件,需要將其中的動態(tài)鏈接庫文件復(fù)制到嵌入式Linux的/usr/lib目錄下, 除此之外還有一個頭文件sqlite3.h和一個庫文件libsqlite3.a,在編寫基于數(shù)據(jù)庫的應(yīng)用程序時需要使用這兩個文件。在本系統(tǒng)中數(shù)據(jù)庫用于存儲溫度傳感器采集的溫度值,每個傳感器都對應(yīng)數(shù)據(jù)庫中的一個表,該表用于存儲傳感器采集的數(shù)據(jù)。機房管理人員通過分析大量的歷史數(shù)據(jù),可以判斷機房內(nèi)的制冷設(shè)備能夠滿足制冷需求,還能夠根據(jù)歷史數(shù)據(jù)制定合理的溫度控制策略,使天河2號計算機系統(tǒng)持續(xù)穩(wěn)定地運行。
2.1 系統(tǒng)硬件實現(xiàn)
圖2為溫度采集系統(tǒng)中單個節(jié)點的硬件連接圖,每個節(jié)點由一個S3C2440嵌入式控制平臺和8個溫度傳感器組成。圖中的8個圓圈是DS18B20溫度傳感器,該傳感器是一種高精度的單線式傳感器,通過一條數(shù)據(jù)線與處理器互連;圖中的4條數(shù)據(jù)線長度為4m,其余4條數(shù)據(jù)線的長度為2m,這種拓撲結(jié)構(gòu)可以保證該節(jié)點能夠均勻地采集到其覆蓋范圍內(nèi)的溫度信息。另外為保障系統(tǒng)的穩(wěn)定性,傳感器的VCC和GND引腳沒有與處理器相連,而是使用獨立的5V電源為傳感器供電[8]。經(jīng)實地測試,10個圖2所示的溫度采集節(jié)點基本可以將天河2號機房完整地覆蓋,這些節(jié)點接入同一個路由器并與一臺PC互聯(lián),而系統(tǒng)維護人員則能夠通過這臺PC獲取機房內(nèi)各處的溫度信息。
圖2 單個節(jié)點硬件連接圖
2.2 溫度信息的采集
處理器通過單總線發(fā)送指令控制傳感器,對該傳感器進行操作的指令可以分為3類:1條復(fù)位指令、5條ROM指令、6條RAM指令,每進行一次操作都需要至少3條組合指令,即1條復(fù)位指令、1條ROM指令和1條RAM指令,在某些情況下并不需要執(zhí)行ROM指令,這時可以使用“跳過ROM”指令來代替ROM指令[8-9]。傳感器驅(qū)動程序作為Linux系統(tǒng)的內(nèi)核加載模塊[10],每隔5min依次讀取所有傳感器的數(shù)據(jù),驅(qū)動程序的核心函數(shù)是Write_byte和Read_byte,兩個函數(shù)分別用于向傳感器寫1B數(shù)據(jù)和從傳感器讀1B數(shù)據(jù),需要根據(jù)傳感器的時序圖實現(xiàn)這兩個函數(shù)。向傳感器發(fā)送ROM或RAM指令是通過函數(shù)Write_byte實現(xiàn)的,從傳感器讀取溫度值是通過函數(shù) Read_byte實現(xiàn)的,圖3為溫度傳感器驅(qū)動程序的流程圖。
圖3 溫濕度傳感器驅(qū)動程序流程
2.3 溫度信息存入數(shù)據(jù)庫
傳感器的驅(qū)動程序讀取溫度值后會調(diào)用copy_to_user將溫度數(shù)據(jù)傳輸?shù)接脩魬B(tài)進程[11],用戶態(tài)進程則會將數(shù)據(jù)存入數(shù)據(jù)庫。為了存儲溫度數(shù)據(jù),每個溫度采集節(jié)點需要創(chuàng)建一個本地的數(shù)據(jù)庫,該數(shù)據(jù)庫存放在嵌入式開發(fā)平臺的板載Flash芯片上,每個數(shù)據(jù)庫中需要創(chuàng)建8個表,用于存儲該節(jié)點下每個傳感器采集的數(shù)據(jù)。以0號傳感器為例,該傳感器采集的數(shù)據(jù)存儲在表ds18b20_0中,表中有3列數(shù)據(jù),分別為行編號、溫度值、采集數(shù)據(jù)的時刻。由于需要循環(huán)將溫度信息存入數(shù)據(jù)庫,SQLite提供的參數(shù)化語句功能可以很好地滿足這種應(yīng)用[12],具體過程如下(下面函數(shù)省略了全部或部分參數(shù)):
2.4 查詢溫度信息
系統(tǒng)維護人員可以通過PC上的瀏覽器訪問任意一個節(jié)點數(shù)據(jù)庫中的溫度信息,實現(xiàn)該功能需要節(jié)點中Boa服務(wù)器的后臺CGI程序支持。由于SQLite是一種嵌入式數(shù)據(jù)庫,它對網(wǎng)絡(luò)應(yīng)用的支持不全面,因此如果需要通過網(wǎng)絡(luò)訪問數(shù)據(jù)庫中的信息,可以先將數(shù)據(jù)庫中的信息導(dǎo)出到本地文件中,再通過網(wǎng)絡(luò)訪問這個本地文件。每個監(jiān)測節(jié)點中都有一個CGI程序負責(zé)將數(shù)據(jù)庫中的信息導(dǎo)出到本地的文本文件中,以導(dǎo)出表ds18b20_0中的數(shù)據(jù)為例,過程如下:
最后這個CGI程序還要將保存在result中的臨時結(jié)果輸出到文本文件中,因此當(dāng)網(wǎng)頁中一個超鏈接指向這個文本文件時,用戶在瀏覽器中點擊這個超鏈接就可以查看溫度信息。
在系統(tǒng)構(gòu)建完成之后將其部署在機房中并對其穩(wěn)定性和可靠性進行測試,啟動系統(tǒng)并使其運行一段時間,以保證能夠采集到足夠量的數(shù)據(jù)。在瀏覽器地址欄輸入其中一個溫度監(jiān)控節(jié)點的IP地址,例如192.168.1.112,并選擇查看該節(jié)點下的任意一個傳感器采集的數(shù)據(jù),瀏覽器就能顯示圖4所示的該傳感器采集的溫度信息。由圖4可知,這段時間內(nèi)該傳感器附近的溫度維持在23℃,將多個傳感器采集的數(shù)據(jù)與機房內(nèi)的溫度計對比可知,通過該系統(tǒng)采集到的數(shù)據(jù)可靠,同時也可以說明機房內(nèi)各處的溫度保持在一個穩(wěn)定的狀態(tài)。
圖4 查詢溫度信息
Web服務(wù)器提供了一種通過局域網(wǎng)或廣域網(wǎng)訪問和控制嵌入式設(shè)備的方式,這種方式基于成熟的網(wǎng)絡(luò)通信技術(shù),使用這種方式能夠?qū)⑶度胧皆O(shè)備部署到任何地方而無需過多額外成本,而嵌入式數(shù)據(jù)庫則為數(shù)據(jù)的存儲和訪問帶來了極大的便利。本文首先分析了天河2號機房溫度采集的需求,針對這種需求提出了構(gòu)建分布式溫度采集系統(tǒng)的思想,該系統(tǒng)通過分布在機房各處的傳感器實現(xiàn)溫度信息的采集,并將采集到的數(shù)據(jù)存儲到數(shù)據(jù)庫中。由于傳感器分布在機房的多個位置,因此采集到的數(shù)據(jù)能更好地反映機房內(nèi)的溫度信息。相比傳統(tǒng)方式,這種分布式溫度采集系統(tǒng)采集到的數(shù)據(jù)更為可靠,能夠更準確反映機房的溫度信息。而機房維護員則可以通過網(wǎng)絡(luò)查看這些數(shù)據(jù),并以這些數(shù)據(jù)為依據(jù)調(diào)整水冷和風(fēng)冷設(shè)備的工作狀態(tài),使機房環(huán)境保持在最佳狀態(tài)以保證天河2號超級計算機的可靠穩(wěn)定運行。
[1]孫輝,陸松年,楊樹堂.基于Linux和S3c2410的嵌入式Web Sever的研究與實現(xiàn)[J].計算機應(yīng)用與軟件,2007,24(2):134-136.
[2]劉鑫.基于ARM平臺的嵌入式Web服務(wù)器的設(shè)計與實現(xiàn)[D].成都:電子科技大學(xué),2010.
[3]王軍飛.基于ARM和Linux的嵌入式Web服務(wù)器的研究與實現(xiàn)[D].太原:太原理工大學(xué),2009.
[4]張曦?zé)?,柴志?嵌入式Web服務(wù)器中的CGI特點及實現(xiàn)[J].小型微型計算機系統(tǒng),2003,24(11):2046-2048.
[5]黃奇光.CGI編程指南[M].北京:電子工業(yè)出版社,1999.
[6]ALLEN G,OWENS M.The definitive guide to SQLite(Second Edition)[M].Berkeley:Apress,2010.
[7]施忠華.基于嵌入式Linux和Sqlite的Web服務(wù)器的研究及應(yīng)用[D].南昌:南昌大學(xué),2012.
[8]ds18b20[EB/OL].[2015-01-08].http://baike.baidu.com/link?Nhh7VxAxdcGfK-t5sbmM1tZIhXB1a5yo1P3DbisgKmlbuH xU vvxKbns7a3dLuNeUkrDHTf2qxZiM-K.
[9]李雪峰.分布式溫度采集網(wǎng)絡(luò)在恒溫控制中的應(yīng)用[J].微型機與應(yīng)用,2013,32(15):69-72.
[10]CORBET J,RUBINI A,KROAH-HARTMAN G.Linux設(shè)備驅(qū)動程序(第三版)[M].魏永明,耿岳,鐘書毅,譯.北京:中國電力出版社,2009.
[11]BOVET D,CESATI M.深入理解Linux內(nèi)核(第三版)[M].陳莉君,張瓊聲,張宏偉,譯.北京:中國電力出版社,2009.
[12]BI C Y.Research and application of sqlite embedded database technology[J].Wseas Transactions on Computer,2009,8(1):83-92.
Design and implementation of temperature acquisition system for supercomputer center
Ran Fancan,Jiang Juping
(College of Computer,National University of Defense Technology,Changsha 410073,China)
Supercomputer is strict with operating environment,and refrigeration equipments are used to keep temperature stable in engine room.In order to test the stability of temperature and making temperature control strategies,a distributed temperature acquisition system based on Linux operating system and S3C2440 processor was built.This system collects temperature informations by temperature sensors,and then the informations are stored in SQLite database and queried through Boa server and CGI technology. Related technologies and implementation methods were firstly discussed,and then a testing was performed.Testing demonstrated that the system could meet the demands.
embedded system;Linux;Boa;SQLite;CGI
TP399
A
1674-7720(2015)18-0089-03
冉凡燦,蔣句平.超算中心環(huán)境監(jiān)測系統(tǒng)的設(shè)計和實現(xiàn)[J].微型機與應(yīng)用,2015,34(18):89-91,94.
2015-04-23)
冉凡燦(1990-),男,碩士研究生,主要研究方向:嵌入式系統(tǒng)。
蔣句平(1965-),男,碩士,研究員,主要研究方向:計算機系統(tǒng)結(jié)構(gòu)、系統(tǒng)RAS技術(shù)、嵌入式系統(tǒng)。