欧美在线观看视频网站,亚洲熟妇色自偷自拍另类,啪啪伊人网,中文字幕第13亚洲另类,中文成人久久久久影院免费观看 ,精品人妻人人做人人爽,亚洲a视频

在計算機機群系統(tǒng)中獲取結(jié)點信息的方法

文檔序號:6397315閱讀:125來源:國知局

專利名稱::在計算機機群系統(tǒng)中獲取結(jié)點信息的方法
技術(shù)領(lǐng)域
:本發(fā)明涉及計算機機群監(jiān)控系統(tǒng)領(lǐng)域,更具體地,涉及一種在計算機機群系統(tǒng)中獲取結(jié)點信息的方法,旨在提高機群監(jiān)控系統(tǒng)結(jié)點信息采集效率,這種方法提高了監(jiān)控系統(tǒng)可允許的數(shù)據(jù)采集頻率,降低了監(jiān)控方法對系統(tǒng)資源的占用。
背景技術(shù)
:機群服務(wù)器系統(tǒng)(Cluster)是相互連接的多個獨立計算機(結(jié)點)的集合,每個結(jié)點都是單獨的計算機,可以是PC機也可以是服務(wù)器,每個結(jié)點都有自己的處理器、存儲系統(tǒng)、I/O設(shè)備和操作系統(tǒng)。結(jié)點機上的操作系統(tǒng)最普遍的是Linux。這些結(jié)點通過高速網(wǎng)絡(luò)連接起來,應(yīng)用中間件將各個結(jié)點形成一個單一映像的超級服務(wù)器。機群服務(wù)器是高性能服務(wù)器家族中當(dāng)前最受關(guān)注的一個分支,其性能覆蓋小型機(SMPUNIX工作站/服務(wù)器)到大型機(超級服務(wù)器),有很高性能價格比。高端機群服務(wù)器已在石油地震資料處理、基因和蛋白質(zhì)計算等重要領(lǐng)域廣泛應(yīng)用。機群計算將成格點計算(Gridcomputing)的一種主要實現(xiàn)形式。國際上一些專家甚至預(yù)言格點計算環(huán)境將是新一代的因特網(wǎng),而機群服務(wù)器則是其關(guān)鍵設(shè)備。由于機群結(jié)點數(shù)眾多,對機群進行高效適時的監(jiān)控是一個重要而緊迫的問題。為了提高機群監(jiān)控系統(tǒng)的適時性,必須提高對結(jié)點信息的采樣頻率,然而提高采樣頻率又會導(dǎo)致監(jiān)控軟件本身占用的系統(tǒng)資源加大。如何做到盡量適時地監(jiān)控計算機機群,又不占用很多的系統(tǒng)資源是一個問題。在以前的機群監(jiān)控系統(tǒng)中,對結(jié)點信息的采樣需要調(diào)用一系列系統(tǒng)調(diào)用,系統(tǒng)調(diào)用所導(dǎo)致的上下文轉(zhuǎn)換非常占用資源,因此當(dāng)采樣頻率提高時,監(jiān)控軟件所占用的CPU時間會明顯上升。圖1示出了傳統(tǒng)的系統(tǒng)信息采集方法的流程。實際的采集過程還會讀取一些其它的proc文件如net/dev等,并且還有系統(tǒng)調(diào)用hostname()等。采集過程中的每一個系統(tǒng)調(diào)用都會引起上下文轉(zhuǎn)換,圖2示出了傳統(tǒng)的系統(tǒng)信息采集方法中的上下文轉(zhuǎn)換的流程,當(dāng)采樣頻率升高時,由上下文轉(zhuǎn)換所占用的CPU時間會明顯上升。
發(fā)明內(nèi)容本發(fā)明的目的是提高機群監(jiān)控系統(tǒng)對計算機結(jié)點的采集頻率,同時又不增加機群監(jiān)控方法所占用的系統(tǒng)資源。通過一種在計算機機群系統(tǒng)中獲取結(jié)點信息的方法,一次性獲取所有的所需系統(tǒng)信息,從而極大地減少系統(tǒng)調(diào)用的次數(shù),也就減少了監(jiān)控方法所占用的CPU時間。本發(fā)明提出了一種在計算機機群系統(tǒng)中獲取結(jié)點信息的方法,運行在計算機機群系統(tǒng)中的每個結(jié)點上,所述方法包括以下步驟初始化步驟,對系統(tǒng)調(diào)用列表進行初始化;信息獲取步驟,包括從內(nèi)核中獲取CPU相關(guān)信息的步驟;從內(nèi)核中獲取網(wǎng)絡(luò)接口信息的步驟;從內(nèi)核中獲取系統(tǒng)相關(guān)信息的步驟;以及信息復(fù)制步驟,將上述信息獲取步驟中所獲得的信息復(fù)制到用戶態(tài),以便用于對結(jié)點狀態(tài)的監(jiān)控。提高了監(jiān)控系統(tǒng)可允許的數(shù)據(jù)采集頻率,降低了監(jiān)控方法對系統(tǒng)資源的占用。圖1示出了傳統(tǒng)的系統(tǒng)信息采集方法的流程;圖2示出了傳統(tǒng)的系統(tǒng)信息采集方法中的上下文轉(zhuǎn)換的流程;圖3示出了按照本發(fā)明實施例的結(jié)點信息采集方法的方框圖;圖4示出了按照本發(fā)明實施例的結(jié)點信息采集方法的初始化步驟的流程圖;以及圖5示出了按照本發(fā)明實施例的結(jié)點信息采集方法的流程圖。具體實施例方式現(xiàn)在將參考附圖詳細描述本發(fā)明的實施例。圖3示出了按照本發(fā)明實施例的結(jié)點信息采集方法的方框圖。通過一個Linux內(nèi)核模塊給Linux操作系統(tǒng)增加一個系統(tǒng)調(diào)用,用戶所需要的所有系統(tǒng)信息都通過這個系統(tǒng)調(diào)用一次性獲取。NA結(jié)點代理,接收控制臺傳來的命令,采集結(jié)點的系統(tǒng)信息,并將結(jié)點信息經(jīng)過機柜代理(NP)送至控制臺。NA運行在用戶態(tài)。sysstat()獲得結(jié)點信息的系統(tǒng)調(diào)用。這個系統(tǒng)調(diào)用有一個參數(shù)是指向structsysstat結(jié)構(gòu)的指針。系統(tǒng)調(diào)用可以獲得所有需要采集的信息。lcm_mod提供sysstat()系統(tǒng)調(diào)用的內(nèi)核模塊,運行在內(nèi)核態(tài)。加載該模塊以后才可以使用sysstat()系統(tǒng)調(diào)用。kernelLinux內(nèi)核。通過sysstat()可以獲得系統(tǒng)負載情況、內(nèi)存使用狀況、進程數(shù)、CPU信息和網(wǎng)絡(luò)接口信息等。sysstat()還可以判斷本結(jié)點中是否有myrinet(高速專用通信網(wǎng))卡,如果有的話,可以通過讀取myrinet卡的寄存器來采集myrinet網(wǎng)卡的連接狀態(tài)。sysstat()采集到的信息都包含在structsysstat結(jié)構(gòu)中,數(shù)據(jù)結(jié)構(gòu)是監(jiān)控系統(tǒng)所定義的,包含用戶所需要的系統(tǒng)信息,其結(jié)構(gòu)示例如下structsysstat{charname[64];/*系統(tǒng)名*/unsignedlongloads[3];/*1,5,和15內(nèi)每秒鐘的平均負載*/unsignedlongtotalram;/*總的內(nèi)存大小*/unsignedlongfreeram;/*可用內(nèi)存大小*/unsignedlongprocesses;/*進程數(shù)*/unsignedlongusers;/*用戶數(shù)*/unsignedlongcpu_num;/*CPU個數(shù)*/structcpuinfocpu_info[MAX_CPUS];/*CPU信息,頻率、利用率等*/unsignedlongnetdev_num;/*網(wǎng)絡(luò)端口數(shù)*/structnetinfonet_info[MAX_NET_IF];/*網(wǎng)絡(luò)端口信息*/}。本領(lǐng)域的技術(shù)人員所清楚的是,所述數(shù)據(jù)結(jié)構(gòu)并不局限于上述示例,任何包括所需信息的結(jié)構(gòu)都是可能的。圖4示出了按照本發(fā)明實施例的結(jié)點信息采集方法的初始化步驟的流程圖。lcm_mod在加載的時候需要經(jīng)過一些初始化,初始化過程如下首先,在步驟S401,定位Linux內(nèi)核的系統(tǒng)調(diào)用列表。Linux內(nèi)核的系統(tǒng)調(diào)用列表sys_call_table不輸出給模塊使用,所以無法直接使用sys_call_table。而需要從System.map中讀取sys_call_table的地址。System.map由nmvmlinux生成。其中nm是查看可執(zhí)行文件的符號的工具,vmlinux是Linux的內(nèi)核文件。然后,在步驟S402中,修改系統(tǒng)調(diào)用列表的第255項,將其修改成sys_sysstat()函數(shù)的地址。系統(tǒng)調(diào)用列表原來的值是sys_ni_syscall()函數(shù)的指針。sys_ni_syscall()是個空函數(shù),所以修改該項不影響操作系統(tǒng)其它部分的運行。也可以修改系統(tǒng)調(diào)用列表的其它為空函數(shù)的項,但必須小于255,因為在linux2.4.18及以下版本的內(nèi)核中,255是系統(tǒng)調(diào)用列表的最后一項,如果超出255,會導(dǎo)致無法預(yù)計的錯誤,甚至?xí)瓜到y(tǒng)崩潰。在步驟S403中,定位avenrun(平均活動進程數(shù))、total_forks(總進程數(shù))、module_list(模塊列表)、cpu_khz(CPU頻率)等。系統(tǒng)負載loads需要通過Linux內(nèi)核中的avenrun計算而來。avenrun也是不輸出給模塊使用的,與sys_call_table一樣,需要從System.map文件中讀取。用同樣的方法定位total_forks、module_list。對于版本大于或等于2.4.20的內(nèi)核,還需要定位cpu_khz。圖5示出了按照本發(fā)明實施例的結(jié)點信息采集方法的流程圖。系統(tǒng)加載lcm_mod模塊以后,NA就可以調(diào)用sysstat()了。NA調(diào)用sysstat()以后,進入內(nèi)核態(tài),內(nèi)核轉(zhuǎn)到sys_sysstat()函數(shù),該函數(shù)獲取系統(tǒng)信息,并把這些信息復(fù)制到用戶態(tài)。sys_sysstat的運行過程如下,在步驟S501,獲取CPU相關(guān)信息,包括CPU個數(shù)、CPU產(chǎn)商、CPU型號、CPU緩存大小、頻率、系統(tǒng)時間、用戶時間、利用率等。如果沒有SMP,CPU個數(shù)為1,如果有SMP,CPU個數(shù)可以從內(nèi)核中的smp_num_cpus變量得到。CPU的頻率可以從cpu_khz變量得到。CPU產(chǎn)商、CPU型號、CPU緩存大小等則可以從cpu_data得到。cpu_data是類型為structcpuinfo_x86的一個數(shù)組。對于2.6以上版本的內(nèi)核,系統(tǒng)時間、用戶時間、利用率等可以從內(nèi)核中的kstat_cpu變量得到,對于2.4.x的內(nèi)核,可以從kstat變量得到。在步驟S502,獲取網(wǎng)絡(luò)接口信息,如果存在myrinet網(wǎng)卡,則包括myrinet網(wǎng)卡的信息。這些信息包括接口名、硬件地址、接口類型、連接狀態(tài)、接收/發(fā)送包數(shù)、接收/發(fā)送字節(jié)數(shù)、接收/發(fā)送錯誤數(shù)等。網(wǎng)絡(luò)接口信息從類型為structnet_device的數(shù)據(jù)變量dev_base得到。對于myrinet網(wǎng)卡,必須從已加載的myrinet網(wǎng)卡驅(qū)動模塊中讀取myrinet卡的信息。在步驟S503,獲取系統(tǒng)名、系統(tǒng)負載、內(nèi)存使用狀況等信息。系統(tǒng)平均負載是從avenrun計算得到的。內(nèi)存使用狀況可以調(diào)用內(nèi)核中的函數(shù)si_meminfo得到。系統(tǒng)名通過讀取內(nèi)核數(shù)據(jù)變量system_utsname獲取。在步驟S504,將采集的信息復(fù)制到用戶態(tài)。權(quán)利要求1.一種在計算機機群系統(tǒng)中獲取結(jié)點信息的方法,運行在計算機機群系統(tǒng)中的每個結(jié)點上,所述方法包括以下步驟初始化步驟,對系統(tǒng)調(diào)用列表進行初始化;信息獲取步驟,包括從內(nèi)核中獲取CPU相關(guān)信息的步驟;從內(nèi)核中獲取網(wǎng)絡(luò)接口信息的步驟;以及從內(nèi)核中獲取系統(tǒng)相關(guān)信息的步驟;以及信息復(fù)制步驟,將上述信息獲取步驟中所獲得的信息復(fù)制到用戶態(tài),以便用于對結(jié)點狀態(tài)的監(jiān)控。2.按照權(quán)利要求1所述的獲取結(jié)點信息的方法,其特征在于所述初始化步驟包括以下子步驟第一定位步驟,定位系統(tǒng)調(diào)用列表;修改步驟,將系統(tǒng)調(diào)用列表中的預(yù)定項修改為指向上述獲取與復(fù)制步驟的標識符;以及第二定位步驟,定位平均活動進程數(shù)(avenrun)、總進程數(shù)(total_forks)、模塊列表(module_list)、CPU頻率(cpu_khz)等3.按照權(quán)利要求2所述的獲取節(jié)點信息的方法,其特征在于所述預(yù)定項為系統(tǒng)調(diào)用列表中的空函數(shù)項。4.按照權(quán)利要求2所述的獲取節(jié)點信息的方法,其特征在于所述預(yù)定項為系統(tǒng)調(diào)用列表中小于或等于第255項的項。5.按照權(quán)利要求1所述的獲取結(jié)點信息的方法,其特征在于所述CPU相關(guān)信息包括CPU個數(shù)、CPU產(chǎn)商、CPU型號、CPU緩存大小、頻率、系統(tǒng)時間、用戶時間、利用率。6.按照權(quán)利要求1或5所述的獲取結(jié)點信息的方法,其特征在于獲取CPU相關(guān)信息的步驟包括如果沒有SMP,則CPU個數(shù)為1,如果有SMP,則從內(nèi)核中的smp_num_cpus變量得到CPU個數(shù);從cpu_khz變量得到CPU的頻率;從cpu_data得到CPU產(chǎn)商、CPU型號、CPU緩存大??;以及從內(nèi)核中的kstat_cpu變量得到系統(tǒng)時間、用戶時間、利用率。7.按照權(quán)利要求5所述的獲取結(jié)點信息的方法,其特征在于獲取CPU相關(guān)信息的步驟包括如果沒有SMP,則CPU個數(shù)為1,如果有SMP,則從內(nèi)核中的smp_num_cpus變量得到CPU個數(shù);從cpu_khz變量得到CPU的頻率;從cpu_data得到CPU產(chǎn)商、CPU型號、CPU緩存大?。灰约皬膬?nèi)核中的kstat變量得到系統(tǒng)時間、用戶時間、利用率。8.按照權(quán)利要求1所述的獲取結(jié)點信息的方法,其特征在于獲取網(wǎng)絡(luò)接口信息的步驟包括如果存在myrinet網(wǎng)卡,則獲取myrinet網(wǎng)卡的信息。9.按照權(quán)利要求1或8所述的獲取結(jié)點信息的方法,其特征在于獲取網(wǎng)絡(luò)接口信息的步驟包括從類型為structnet_device的數(shù)據(jù)變量dev_base得到所述網(wǎng)絡(luò)接口信息;以及對于myrinet網(wǎng)卡,必須從已加載的myrinet網(wǎng)卡驅(qū)動模塊中讀取myrinet卡的信息。10.按照權(quán)利要求1或8所述的獲取結(jié)點信息的方法,其特征在于所述網(wǎng)絡(luò)接口信息包括接口名、硬件地址、接口類型、連接狀態(tài)、接收/發(fā)送包數(shù)、接收/發(fā)送字節(jié)數(shù)、接收/發(fā)送錯誤。11.按照權(quán)利要求10所述的獲取結(jié)點信息的方法,其特征在于獲取網(wǎng)絡(luò)接口信息的步驟包括從類型為structnet_device的數(shù)據(jù)變量dev_base得到所述網(wǎng)絡(luò)接口信息;以及對于myrinet網(wǎng)卡,必須從已加載的myrinet網(wǎng)卡驅(qū)動模塊中讀取myrinet卡的信息。12.按照權(quán)利要求1所述的獲取結(jié)點信息的方法,其特征在于所述系統(tǒng)相關(guān)信息包括系統(tǒng)名、系統(tǒng)負載、內(nèi)存使用狀況。13.按照權(quán)利要求1或12所述的獲取結(jié)點信息的方法,其特征在于獲取系統(tǒng)相關(guān)信息的步驟包括從avenrun計算得到系統(tǒng)平均負載;調(diào)用內(nèi)核中的函數(shù)si_meminfo得到內(nèi)存使用狀況;以及通過讀取內(nèi)核數(shù)據(jù)變量system_utsname獲取系統(tǒng)名。全文摘要一種在計算機機群系統(tǒng)中獲取結(jié)點信息的方法,運行在計算機機群系統(tǒng)中的每個結(jié)點上,所述方法包括以下步驟初始化步驟,對系統(tǒng)調(diào)用列表進行初始化;信息獲取步驟,包括從內(nèi)核中獲取CPU相關(guān)信息的步驟;從內(nèi)核中獲取網(wǎng)絡(luò)接口信息的步驟;從內(nèi)核中獲取系統(tǒng)相關(guān)信息的步驟;以及信息復(fù)制步驟,將上述信息獲取步驟中所獲得的信息復(fù)制到用戶態(tài),以便用于對結(jié)點狀態(tài)的監(jiān)控。提高了監(jiān)控系統(tǒng)可允許的數(shù)據(jù)采集頻率,降低了監(jiān)控方法對系統(tǒng)資源的占用。文檔編號G06F11/30GK1673971SQ20041003320公開日2005年9月28日申請日期2004年3月26日優(yōu)先權(quán)日2004年3月26日發(fā)明者蔣曉華,饒弋寧,張羽飛,陳又新,陳然,金正操,李金麗,崔吉順,易昭華,程菊生申請人:聯(lián)想(北京)有限公司
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1
太谷县| 广德县| 博爱县| 彭阳县| 乐昌市| 保亭| 中江县| 庐江县| 甘德县| 崇左市| 井冈山市| 台东市| 开远市| 布尔津县| 湖南省| 海安县| 石狮市| 汾西县| 会昌县| 九江县| 高清| 容城县| 郁南县| 巴林右旗| 静宁县| 葫芦岛市| 西和县| 保山市| 元朗区| 南皮县| 兴安盟| 阳城县| 深州市| 南京市| 钟祥市| 凉山| 喀喇| 舟曲县| 鲁甸县| 来安县| 全州县|