專(zhuān)利名稱(chēng)::一種內(nèi)存監(jiān)控的方法和裝置的制作方法
技術(shù)領(lǐng)域:
:本發(fā)明涉及計(jì)算機(jī)嵌入式操作系統(tǒng)領(lǐng)域,尤其涉及一種內(nèi)存監(jiān)控的方法和裝置。
背景技術(shù):
:在現(xiàn)有技術(shù)中計(jì)算機(jī)系統(tǒng)的內(nèi)存不管容量有多大,均是有限的,因此優(yōu)化內(nèi)存管理有效地利用內(nèi)存空間是一個(gè)非常關(guān)鍵的問(wèn)題?,F(xiàn)有技術(shù)中通常采用的內(nèi)存管理的結(jié)構(gòu)如圖1所示,其中,內(nèi)存管理通常采用雙層管理的方式,具體包括第一層管理頁(yè)分配器101將物理內(nèi)存切割成一定長(zhǎng)度的內(nèi)核內(nèi)存頁(yè),并管理該內(nèi)核內(nèi)存頁(yè),根據(jù)申請(qǐng)內(nèi)存的實(shí)體的類(lèi)別將系統(tǒng)中的內(nèi)存劃分到多個(gè)緩沖池中進(jìn)行管理,在實(shí)際的應(yīng)用環(huán)境中申請(qǐng)和使用內(nèi)存的實(shí)體一般為任務(wù)和/或模塊(簡(jiǎn)稱(chēng)為任務(wù)/模塊)。第二層管理Slab分配器102將緩沖池所包含的緩沖區(qū)劃分為多個(gè)Slab(是一種數(shù)據(jù)結(jié)構(gòu)),Slab是由一個(gè)或多個(gè)(2N)連續(xù)頁(yè)(頁(yè)為內(nèi)存的單元)組成的slab鏈條,另外,每個(gè)slab所包含的多個(gè)連續(xù)頁(yè)作為一個(gè)整體被分為多個(gè)對(duì)象單元(也可稱(chēng)為對(duì)象體)。對(duì)象單元是從特定緩存中進(jìn)行內(nèi)存分配和釋放的基本元素,如開(kāi)放最短路由優(yōu)先協(xié)議(OpenShortestPathFirst,ospf)任務(wù)的路由公告一次內(nèi)存申請(qǐng)就會(huì)占用Slab的多個(gè)對(duì)象單元;每個(gè)緩沖池中緩存的都是同類(lèi)任務(wù)/模塊申請(qǐng)的對(duì)象單元,并且緩沖池的主要目的是緩存,而不是預(yù)留內(nèi)存。一個(gè)新建的緩沖池里面沒(méi)有任何空閑對(duì)象單元,這時(shí)如果一個(gè)任務(wù)需要申請(qǐng)內(nèi)存,則對(duì)該任務(wù)對(duì)應(yīng)的緩沖池發(fā)送一個(gè)分配新對(duì)象單元的請(qǐng)求,然后slab分配器為這個(gè)緩沖池分配一個(gè)新的slab,該任務(wù)則會(huì)分配到如圖1A所示的對(duì)象單元IAOI(對(duì)象單元大小是固定的,如l個(gè)內(nèi)存頁(yè))。如圖2所示,對(duì)象單元被全部占用或者是部分占用的slab稱(chēng)之為"活動(dòng)的(Active)slab",這部分slab正在被系統(tǒng)4吏用,如上圖2所示的Full和Partial情形;空的slabs稱(chēng)之為不活動(dòng)的,如圖2所示的Empty情形,在該示意圖中對(duì)象l占用兩個(gè)slab的所有對(duì)象單元。對(duì)于Partial和Empty兩種情形,即Slab中對(duì)象單元部分或者全部出現(xiàn)空閑,系統(tǒng)在分配內(nèi)存時(shí)會(huì)出現(xiàn)如下問(wèn)題伴隨著內(nèi)存分配和釋放的不斷進(jìn)行,空閑內(nèi)存空間逐漸被拆分成了如圖3所示的眾多大小不均的小塊,在某個(gè)任務(wù)/模塊申請(qǐng)內(nèi)存時(shí),這些小塊的總量可以滿(mǎn)足一個(gè)請(qǐng)求,但是由于其不連續(xù)的緣故實(shí)際無(wú)法滿(mǎn)足,這種內(nèi)存申請(qǐng)失敗的情況則稱(chēng)之為內(nèi)存碎片問(wèn)題。如果系統(tǒng)中經(jīng)常出現(xiàn)申請(qǐng)內(nèi)存失敗,則會(huì)導(dǎo)致telnet應(yīng)用無(wú)法進(jìn)行登陸管理;控制臺(tái)無(wú)法管理;ospf等路由協(xié)議任務(wù)無(wú)法為路由表項(xiàng)申請(qǐng)到內(nèi)存空間,進(jìn)一步會(huì)出現(xiàn)系統(tǒng)無(wú)法完成基本的數(shù)據(jù)轉(zhuǎn)發(fā)任務(wù)等問(wèn)題。為了解決內(nèi)存碎片問(wèn)題,目前網(wǎng)絡(luò)設(shè)備系統(tǒng)都將內(nèi)存使用情況信息存放在結(jié)構(gòu)體中,同時(shí)還提供了內(nèi)存信息查看接口,雖然各種設(shè)備輸出信息的形式不完全一樣,但都僅是信息的羅列,信息量相對(duì)比較龐大,其中列出了所有的任務(wù)內(nèi)存使用情況、不同大小字節(jié)類(lèi)型的使用情況、不同緩沖池使用情況,這種方法存在的缺點(diǎn)是(1)需要查看的信息量大,而且不直觀。(2)如圖4所示,該方法在測(cè)試過(guò)程中,還需要不斷地將內(nèi)存信息通過(guò)可視化的方式輸出,并查看和比對(duì)(在實(shí)際的應(yīng)用中可以采用showmemoiy命令將存放在結(jié)構(gòu)體中的內(nèi)存信息以列表的形式進(jìn)行顯示),對(duì)于相對(duì)復(fù)雜的信息輸出,則需要將所述輸出的內(nèi)存信息進(jìn)行綜合核對(duì)。其中比對(duì)內(nèi)容包括重點(diǎn)關(guān)注的字節(jié)數(shù)統(tǒng)計(jì)值,各個(gè)重點(diǎn)功能協(xié)議內(nèi)存利用統(tǒng)計(jì)值,因?yàn)樗璞葘?duì)的項(xiàng)目相對(duì)較多所以很容易遺漏,另外因?yàn)轱@示的數(shù)據(jù)量大所以有可能需要觀察的數(shù)據(jù)不在同一頁(yè)面顯示,從而造成觀察面不齊備而且難以兼顧。
發(fā)明內(nèi)容本發(fā)明實(shí)施例提供一種內(nèi)存監(jiān)控的方法和裝置,能夠及時(shí)有效的提供系統(tǒng)內(nèi)存情況。本發(fā)明實(shí)施例提供一種內(nèi)存監(jiān)控的方法,網(wǎng)絡(luò)設(shè)備定期對(duì)自身內(nèi)存使用情況信息進(jìn)行采樣,并將采樣數(shù)據(jù)存放于結(jié)構(gòu)體中,包括選擇監(jiān)控的緩沖池,并設(shè)定監(jiān)控周期;根據(jù)設(shè)定的監(jiān)控周期從所述結(jié)構(gòu)體中獲取任務(wù)或者模塊對(duì)應(yīng)緩沖池的結(jié)構(gòu)體變量參數(shù)值,其中所述結(jié)構(gòu)體變量參數(shù)值用于記錄所述緩沖池內(nèi)存使用情況的相關(guān)信息;利用獲取到的變量參數(shù)值計(jì)算得到相應(yīng)的內(nèi)存性能指標(biāo),并將得到的每個(gè)內(nèi)存性能指標(biāo)與設(shè)定的對(duì)應(yīng)閥值進(jìn)行比較,如果所述內(nèi)存性能指標(biāo)的任一項(xiàng)超過(guò)對(duì)應(yīng)的閥值,則確定該緩沖池產(chǎn)生了內(nèi)存碎片。針對(duì)上述方法,本發(fā)明實(shí)施例還提供一種內(nèi)存監(jiān)控的裝置,網(wǎng)絡(luò)設(shè)備定期對(duì)自身內(nèi)存使用情況信息進(jìn)行采樣,并將采樣數(shù)據(jù)存放于結(jié)構(gòu)體中,包括預(yù)處理模塊,用于選擇監(jiān)控的緩沖池,并設(shè)定監(jiān)控周期,根據(jù)設(shè)定的監(jiān)控周期從所述結(jié)構(gòu)體中獲取緩沖池的結(jié)構(gòu)體變量參數(shù)值,其中所述結(jié)構(gòu)體變量參數(shù)值用于記錄所述緩沖池內(nèi)存使用情況的相關(guān)信息;確定模塊,用于利用獲取到的變量I^L值計(jì)算得到相應(yīng)的內(nèi)存性能指標(biāo),并將得到的每個(gè)內(nèi)存性能指標(biāo)與設(shè)定的對(duì)應(yīng)閥值進(jìn)行比較,如果所述內(nèi)存性能指標(biāo)的任一項(xiàng)超過(guò)對(duì)應(yīng)的閥值,則確定該緩沖池產(chǎn)生了內(nèi)存碎片。本發(fā)明實(shí)施例通過(guò)交換機(jī)提供的外部接口獲取緩沖池的結(jié)構(gòu)體變量參數(shù)值并利用獲取到的結(jié)構(gòu)體變量參數(shù)值計(jì)算得到內(nèi)存性能指標(biāo),并用該內(nèi)存性能指標(biāo)與預(yù)設(shè)的閥值進(jìn)行比較,從而判斷系統(tǒng)是否存在內(nèi)存碎片問(wèn)題,通過(guò)本發(fā)明實(shí)施例提供的方法能夠有效監(jiān)控系統(tǒng)內(nèi)存碎片現(xiàn)象,并且能夠縮短內(nèi)存碎片問(wèn)題被發(fā)現(xiàn)的周期。圖1為現(xiàn)有技術(shù)中內(nèi)存管理的結(jié)構(gòu)示意圖1A為現(xiàn)有技術(shù)中slab和對(duì)象單元的關(guān)系示意圖2為現(xiàn)有技術(shù)中緩沖池的結(jié)構(gòu)示意圖3為內(nèi)存申請(qǐng)分割圖示;圖4為showmemory命令部分顯示效果圖5為緩沖池與任務(wù)/模塊的對(duì)應(yīng)關(guān)系以及內(nèi)存情況部分顯示效果圖;圖6為本發(fā)明實(shí)施例一種內(nèi)存監(jiān)控方法的流程圖;圖7為本發(fā)明實(shí)施例一種內(nèi)存監(jiān)控裝置的裝置圖。具體實(shí)施例方式本發(fā)明實(shí)施例一種監(jiān)控內(nèi)存的方法首先通過(guò)所述網(wǎng)絡(luò)設(shè)備提供的外部接口選擇監(jiān)控的緩沖池,并設(shè)定監(jiān)控周期;根據(jù)設(shè)定的監(jiān)控周期從所述結(jié)構(gòu)體中獲取所述緩沖池的結(jié)構(gòu)體變量參數(shù)值,其中所述結(jié)構(gòu)體變量參數(shù)值用于記錄所述緩沖池內(nèi)存使用情況的相關(guān)信息;利用獲取到的變量參數(shù)值計(jì)算得到相應(yīng)的內(nèi)存性能指標(biāo),并將得到的每個(gè)內(nèi)存性能指標(biāo)與設(shè)定的對(duì)應(yīng)閥值進(jìn)行比較,如果所述內(nèi)存性能指標(biāo)的任一項(xiàng)超it^t應(yīng)的閥值,則確定該緩沖池產(chǎn)生了內(nèi)存碎片。下面結(jié)合說(shuō)明書(shū)附圖對(duì)本發(fā)明實(shí)施例進(jìn)行詳細(xì)說(shuō)明,如圖6所示,本發(fā)明實(shí)施例一種內(nèi)存監(jiān)控的方法,具體包括步驟601,在所述網(wǎng)絡(luò)設(shè)備中設(shè)置外部接口,并通過(guò)該外部接口選擇需要監(jiān)控的緩沖池,并設(shè)定監(jiān)控周期,定期從結(jié)構(gòu)體中獲取所述緩沖池相關(guān)的結(jié)構(gòu)體變量參數(shù)值,所述結(jié)構(gòu)體變量參數(shù)值是定期對(duì)緩沖池的使用情況信息進(jìn)行采樣所獲取到的參數(shù)值。其中,設(shè)定需要監(jiān)控的緩沖池以及監(jiān)控周期是通過(guò)交換機(jī)上提供的外部接口實(shí)現(xiàn)的,所述外部接口是交換機(jī)設(shè)備所提供的一些命令接口,并且外部可視,如"monitor[memory|cpu|skb|…][OSPF|BGP|LDP|NSM|…][[64|128|256…]timeLong"。進(jìn)一步,還可以通過(guò)該接口選擇監(jiān)控哪種系統(tǒng)資源、監(jiān)控那種任務(wù)或模塊、監(jiān)控哪個(gè)任務(wù)的哪種字節(jié)數(shù)、任務(wù)參數(shù)為OSPF等、內(nèi)存部分監(jiān)控還有字節(jié)數(shù)的選項(xiàng)、設(shè)置抽樣監(jiān)控時(shí)間間隔、能夠設(shè)定多久輸出一次比較結(jié)果。在本發(fā)明實(shí)施例中,任務(wù)/模塊在申請(qǐng)內(nèi)存時(shí)可能因?yàn)樗暾?qǐng)內(nèi)存類(lèi)型或大小的不同,從而使得所申請(qǐng)到的內(nèi)存被劃分到不同的緩沖池。因?yàn)槟硞€(gè)任務(wù)/模塊申請(qǐng)的內(nèi)存有可能被劃分在多個(gè)緩沖池中,所以當(dāng)用戶(hù)通過(guò)接口設(shè)定監(jiān)控某個(gè)任務(wù)/模塊時(shí),首先需要先從結(jié)構(gòu)體中獲取該任務(wù)/模塊對(duì)應(yīng)的緩沖池,然后再?gòu)慕Y(jié)構(gòu)體中分別獲取這些緩沖池對(duì)應(yīng)的結(jié)構(gòu)體變量參數(shù)值。所述結(jié)構(gòu)體變量在交換機(jī)設(shè)備內(nèi)部保存形式如下所示(以下僅列出了部分重要內(nèi)容,其他變量未列出)structcache—s{unsignedintslab中的對(duì)象大??;unsignedintslab總數(shù);unsignedintfoil的slab數(shù);unsignedintpatial的slab數(shù);unsignedintslab中的對(duì)象數(shù);unsignedintpatial中使用的對(duì)象數(shù);structlist—head滿(mǎn)slab鏈表;structlist—head半滿(mǎn)slab鏈表;structlist—head空閑slab鏈表;};步驟602,利用所述結(jié)構(gòu)體變量參數(shù)值通過(guò)一定的公式計(jì)算得到內(nèi)存性能指標(biāo),將得到的內(nèi)存性能指標(biāo)與預(yù)設(shè)的閾值進(jìn)行比較,如果所述內(nèi)存性能指標(biāo)的任一項(xiàng)超過(guò)預(yù)設(shè)的閥值,則確定該模塊對(duì)應(yīng)的緩沖池產(chǎn)生了內(nèi)存碎片問(wèn)題,并轉(zhuǎn)入步驟603,其中每一項(xiàng)內(nèi)存性能指標(biāo)都有一個(gè)對(duì)應(yīng)的閥值。進(jìn)一步,若選擇的是監(jiān)控某個(gè)任務(wù)/模塊則在確定監(jiān)控的緩沖池中的任意一個(gè)產(chǎn)生了內(nèi)存碎片,則確定該任務(wù)/模塊出現(xiàn)了異常。其中所述內(nèi)存性能指標(biāo)體現(xiàn)任務(wù)/模塊所對(duì)應(yīng)緩沖器的內(nèi)存使用情況,其中包括空閑slab總數(shù)、活動(dòng)slab中空閑對(duì)象單元的占有率其中空閑slab總數(shù)通過(guò)網(wǎng)絡(luò)設(shè)備系統(tǒng)上提供的內(nèi)存信息查看接口,獲取緩沖池中活動(dòng)slab的數(shù)量(active)以及緩沖池中的總申請(qǐng)數(shù)(number),然后根據(jù)公式得到未有效使用的slab數(shù)(N):該公式為N=number-active-(slab總數(shù))-(fUll的slab數(shù))-(patial的slab數(shù))。如圖4所示,在現(xiàn)有技術(shù)中獲取該指標(biāo)時(shí)必須統(tǒng)計(jì)圖4中"slabs"下的"active"既是指緩沖池中活動(dòng)的slab,"number"指slab的總共申請(qǐng)數(shù),然后才艮據(jù)7〉式N=number—active-(slab總數(shù))-(fiill的slab數(shù))-(patial的slab數(shù))得到未有效使用的slab數(shù)?;顒?dòng)slab中空閑對(duì)象單元的占有率從所述結(jié)構(gòu)體變量參數(shù)值中獲取半滿(mǎn)slab中的空閑對(duì)象單元數(shù),并用獲取到的空閑對(duì)象單元數(shù)除以活動(dòng)slab總數(shù)與每條slab所包含對(duì)象單元數(shù)的乘積得到所述活動(dòng)slab中空閑對(duì)象單元的占有率。分別將當(dāng)前獲取到的空閑slab總數(shù)和活動(dòng)slab中空閑對(duì)象單元的占有率與預(yù)設(shè)的對(duì)應(yīng)閥值進(jìn)行比較,任何一項(xiàng)超過(guò)閥值都認(rèn)為被監(jiān)控任務(wù)/模塊所對(duì)應(yīng)的援沖池使用異常。其中,所述閥值是經(jīng)驗(yàn)參考值,在設(shè)定所述緩沖池的各閥值時(shí),根據(jù)所述緩沖池對(duì)應(yīng)的任務(wù)或模塊在運(yùn)行過(guò)程中對(duì)內(nèi)存的申請(qǐng)量、申請(qǐng)頻度和該任務(wù)或者模塊的功能重要性。例如SK—DATA模塊在網(wǎng)絡(luò)環(huán)境中相對(duì)比較重要,其用于收發(fā)報(bào)文,因此經(jīng)常會(huì)出現(xiàn)申請(qǐng)與釋放的行為。在大型網(wǎng)絡(luò)中(即用戶(hù)數(shù)量,網(wǎng)絡(luò)^f各由數(shù)量在100K左右和數(shù)據(jù)流量在幾十G左右)存在較多ARP等攻擊報(bào)文的惡劣條件下,通常該模塊所對(duì)應(yīng)的cache中空的Slab數(shù)正常會(huì)維持在l卯O的數(shù)值以下,另外需要留出一定的余量,防止瞬間峰值導(dǎo)致系統(tǒng)誤判,所以將Emptyslab總數(shù)定義為2000個(gè)。進(jìn)一步,根據(jù)長(zhǎng)期使用的經(jīng)驗(yàn)值得到Partial中空閑對(duì)象單元百分比N3在30%(因?yàn)?,滿(mǎn)、半滿(mǎn)、空閑三者之間會(huì)隨申請(qǐng)情況相互轉(zhuǎn)化,但需要保持整體的較高合理利用率)以下,因此該緩沖池就分別定義這兩個(gè)值為閥值;而tcp一openjequest則使用較少,需要進(jìn)行限制,則根據(jù)實(shí)際操作內(nèi)存頻繁度定義空閑slab總數(shù)閥值為20,Partial中空閑對(duì)象數(shù)為30%。為了找到導(dǎo)致內(nèi)存產(chǎn)生內(nèi)存碎片問(wèn)題的任務(wù)/模塊,本發(fā)明實(shí)施例還包括步驟603:步驟603,根據(jù)所述結(jié)構(gòu)體中儲(chǔ)存的緩沖池與各任務(wù)或模塊的對(duì)應(yīng)關(guān)系確定導(dǎo)致所述緩沖池產(chǎn)生內(nèi)存碎片的任務(wù)或者模塊。當(dāng)確定上述兩種內(nèi)存性能指標(biāo)的任何一項(xiàng)超過(guò)預(yù)設(shè)的閥值(每一個(gè)任務(wù)都有一個(gè)對(duì)應(yīng)的閥值),則結(jié)合結(jié)構(gòu)體中儲(chǔ)存的緩沖池與任務(wù)或者模塊對(duì)應(yīng)關(guān)系的信息判斷是哪些任務(wù)/模塊導(dǎo)致內(nèi)存碎片問(wèn)題。如初步判定是"ARP_table,,緩沖池(其他類(lèi)似處理)異常后,找出導(dǎo)致內(nèi)存碎片的具體使用模塊,結(jié)合圖5所示(圖5是通過(guò)列表的形式將緩沖池與任務(wù)/模塊的對(duì)應(yīng)關(guān)系以及內(nèi)存情況輸出),找出導(dǎo)致內(nèi)存碎片的具體使用模塊,找到ARP一table行中參數(shù)值非0的任務(wù)/模塊,找到導(dǎo)致內(nèi)存碎片的模塊bgpd、ef_res和tnet,由于圖5只截取了部分,后續(xù)可能還有使用ARP—table緩沖池的任務(wù)/模塊產(chǎn)生內(nèi)存碎片(如paramter等)。為了使用戶(hù)獲知系統(tǒng)中出現(xiàn)的內(nèi)存碎片問(wèn)題,本發(fā)明實(shí)施例還包括步驟604,對(duì)所述內(nèi)存碎片問(wèn)題的相關(guān)信息進(jìn)行告警。在不同的系統(tǒng)中可以采取不同的告警方式,在本發(fā)明實(shí)施例中告警的方式包括根據(jù)設(shè)定的告警方式和格式進(jìn)行告警、以web系統(tǒng)的短消息方式、在網(wǎng)絡(luò)設(shè)備的液晶屏上進(jìn)行信息告警顯示、通過(guò)各控制終端的追蹤(trap)信息以及記錄日志(log)的形式等方式??梢赃x擇多個(gè)形式并存的方式進(jìn)行告警。另外在告警信息中可以給出申請(qǐng)非法或者申請(qǐng)超過(guò)預(yù)定閥值,內(nèi)存申請(qǐng)異常,當(dāng)前值是多少等信息。在本發(fā)明實(shí)施例中步驟603可以設(shè)置在告警之前也可設(shè)置在告警之后。因?yàn)榫W(wǎng)絡(luò)設(shè)備定期對(duì)自身內(nèi)存使用情況信息進(jìn)行采樣,并將采樣數(shù)據(jù)存放于結(jié)構(gòu)體中,針對(duì)上述方法本發(fā)明實(shí)施例還提供一種內(nèi)存監(jiān)控的裝置,如圖7所示,包括預(yù)處理模塊701、確定模塊702:預(yù)處理模塊701,用于選擇監(jiān)控的緩沖池,并設(shè)定監(jiān)控周期,根據(jù)設(shè)定的監(jiān)控周期從所述結(jié)構(gòu)體中獲取所述緩沖池的結(jié)構(gòu)體變量參數(shù)值,其中所述結(jié)構(gòu)體變量參數(shù)值用于記錄所述緩沖池內(nèi)存使用情況的相關(guān)信息。確定模塊702,用于利用獲取到的變量參數(shù)值計(jì)算得到相應(yīng)的內(nèi)存性能指標(biāo),并將得到的每個(gè)內(nèi)存性能指標(biāo)與設(shè)定的對(duì)應(yīng)閥值進(jìn)行比較,如果所述內(nèi)存性能指標(biāo)的任一項(xiàng)超過(guò)對(duì)應(yīng)的閥值,則確定該緩沖池產(chǎn)生了內(nèi)存碎片;其中,所述內(nèi)存性能指標(biāo)包括空閑slab總數(shù)和/或活動(dòng)slab中空閑對(duì)象單元的占有率,則所述確定模塊702還用于從所述結(jié)構(gòu)體變量參數(shù)值中獲取緩沖池中活動(dòng)slab的總數(shù)和緩沖池中slab的總申請(qǐng)數(shù),利用所述緩沖池中slab的總申請(qǐng)數(shù)減去活動(dòng)slab的總數(shù)得到所述空閑slab總數(shù);從所述結(jié)構(gòu)體變量參數(shù)值中獲取半滿(mǎn)slab中的空閑對(duì)象單元數(shù),并用獲取到的空閑對(duì)象單元數(shù)除以活動(dòng)slab總數(shù)與每條slab所包含對(duì)象單元數(shù)的乘積得到所述活動(dòng)slab中空閑對(duì)象單元的占有率。為了便于用戶(hù)盡快地獲知系統(tǒng)中出現(xiàn)的內(nèi)存碎片問(wèn)題,本發(fā)明實(shí)施例還包括告警模塊703:告警模塊703,用于對(duì)所述內(nèi)存碎片的相關(guān)信息進(jìn)行告警。該告警模塊703還用于以web系統(tǒng)的短消息方式、在網(wǎng)絡(luò)設(shè)備的液晶屏上進(jìn)行信息告警顯示、通過(guò)各控制終端的TRAP信息以及記錄LOG的方式中一種或幾種進(jìn)行告警。進(jìn)一步,為了便于找到導(dǎo)致緩沖池出現(xiàn)內(nèi)存碎片問(wèn)題的任務(wù)/模塊,該裝置還包括溯源模塊704,根據(jù)所述結(jié)構(gòu)體中儲(chǔ)存的緩沖池與使用內(nèi)存的任務(wù)或模塊的對(duì)應(yīng)關(guān)系確定導(dǎo)致所述緩沖池產(chǎn)生內(nèi)存碎片的任務(wù)或者模塊。其中,所述預(yù)處理模塊還用于當(dāng)選擇監(jiān)控任務(wù)或者模塊的內(nèi)存使用情況時(shí),通過(guò)結(jié)構(gòu)體中存儲(chǔ)的任務(wù)或模塊與緩沖池的對(duì)應(yīng)關(guān)系確定需要監(jiān)控的至少一個(gè)緩沖池;則所述確定模塊還用于在確定所述緩沖池中的任意一個(gè)產(chǎn)生了內(nèi)存碎片之后,判定所述任務(wù)或模塊出現(xiàn)了異常。用戶(hù)在接收到告警信息之后,可以調(diào)用網(wǎng)絡(luò)設(shè)備內(nèi)存回收接口進(jìn)行內(nèi)存碎片整理與回收。通過(guò)本發(fā)明實(shí)施例所述提供的方法和裝置,能夠有效監(jiān)控系統(tǒng)內(nèi)存碎片現(xiàn)象和大大縮短問(wèn)題發(fā)現(xiàn)周期,同時(shí)還能夠結(jié)合結(jié)構(gòu)體中儲(chǔ)存的信息確定導(dǎo)致緩沖池產(chǎn)生內(nèi)存碎片的任務(wù)/模塊。本方法不需要借助外部測(cè)試設(shè)備,由被測(cè)設(shè)備系統(tǒng)實(shí)現(xiàn),有效的減低了測(cè)試成本。進(jìn)一步,本發(fā)明所提供的方法和裝置在發(fā)現(xiàn)系統(tǒng)中存在內(nèi)存碎片問(wèn)題后采取告警,從而能夠及時(shí)、直觀、形象告知用戶(hù)系統(tǒng)中的哪些任務(wù)模塊、哪些字節(jié)出現(xiàn)了內(nèi)存碎片,使得系統(tǒng)用戶(hù)能夠根據(jù)判斷結(jié)果采取措施,如觸發(fā)內(nèi)存收模塊進(jìn)行碎片整理與回收。本發(fā)明所迷的方法并不限于具體實(shí)施方式中所述的實(shí)施例,本領(lǐng)域^t術(shù)人員根據(jù)本發(fā)明的技術(shù)方案得出其它的實(shí)施方式,同樣屬于本發(fā)明的技術(shù)創(chuàng)新范圍。顯然,本領(lǐng)域的技術(shù)人員可以對(duì)本發(fā)明進(jìn)行各種改動(dòng)和變型而不脫離本發(fā)明的精神和范圍。這樣,倘若本發(fā)明的這些修改和變型屬于本發(fā)明權(quán)利要求及其等同技術(shù)的范圍之內(nèi),則本發(fā)明也意圖包含這些改動(dòng)和變型在內(nèi)。權(quán)利要求1、一種內(nèi)存監(jiān)控的方法,網(wǎng)絡(luò)設(shè)備定期對(duì)自身內(nèi)存使用情況信息進(jìn)行采樣,并將采樣數(shù)據(jù)存放于結(jié)構(gòu)體中,其特征在于,包括選擇監(jiān)控的緩沖池,并設(shè)定監(jiān)控周期;根據(jù)設(shè)定的監(jiān)控周期從所述結(jié)構(gòu)體中獲取所述緩沖池的結(jié)構(gòu)體變量參數(shù)值,其中所述結(jié)構(gòu)體變量參數(shù)值用于記錄所述緩沖池內(nèi)存使用情況的相關(guān)信息;利用獲取到的變量參數(shù)值計(jì)算得到相應(yīng)的內(nèi)存性能指標(biāo),并將得到的每個(gè)內(nèi)存性能指標(biāo)與設(shè)定的對(duì)應(yīng)閥值進(jìn)行比較,如果所述內(nèi)存性能指標(biāo)的任一項(xiàng)超過(guò)對(duì)應(yīng)的閥值,則確定該緩沖池產(chǎn)生了內(nèi)存碎片。2、如權(quán)利要求1所述的方法,其特征在于,所述確定該緩沖池產(chǎn)生了內(nèi)存碎片之后,進(jìn)一步包括根據(jù)所述結(jié)構(gòu)體中儲(chǔ)存的緩沖池與各任務(wù)或模塊的對(duì)應(yīng)關(guān)系確定導(dǎo)致所述緩沖池產(chǎn)生內(nèi)存碎片的任務(wù)或者模塊,其中所述任務(wù)或者模塊是申請(qǐng)或使用內(nèi)存的實(shí)體。3、如權(quán)利要求1所述的方法,其特征在于,所述選擇監(jiān)控的緩沖池之前進(jìn)一步包括當(dāng)選擇監(jiān)控任務(wù)或模塊的內(nèi)存使用情況時(shí),通過(guò)結(jié)構(gòu)體中存儲(chǔ)的任務(wù)或模塊與緩沖池的對(duì)應(yīng)關(guān)系確定需要監(jiān)控的至少一個(gè)緩沖池;若確定所述緩沖池中的任意一個(gè)產(chǎn)生了內(nèi)存碎片則判定所述任務(wù)或模塊出現(xiàn)了異常。4、如權(quán)利要求13任一權(quán)項(xiàng)所述的方法,其特征在于,所述內(nèi)存性能指標(biāo)包括空閑slab總數(shù),和/或,活動(dòng)slab中空閑對(duì)象單元的占有率;則利用獲取到的結(jié)構(gòu)體變量參數(shù)值計(jì)算得到相應(yīng)的內(nèi)存性能指標(biāo),包括從所述結(jié)構(gòu)體變量參數(shù)值中獲取緩沖池中活動(dòng)slab的總數(shù)和緩沖池中slab的總申請(qǐng)數(shù),利用所述緩沖池中slab的總申請(qǐng)數(shù)減去活動(dòng)slab的總數(shù)得到所述空閑slab總數(shù);從所述結(jié)構(gòu)體變量參數(shù)值中獲取半滿(mǎn)slab中的空閑對(duì)象單元數(shù),并用獲取到的空閑對(duì)象單元數(shù)除以活動(dòng)slab總數(shù)與每條slab所包含對(duì)象單元數(shù)的乘積得到所述活動(dòng)slab中空閑對(duì)象單元的占有率。5、如權(quán)利要求13任一權(quán)項(xiàng)所述的方法,其特征在于,根據(jù)所述緩沖池對(duì)應(yīng)的任務(wù)或模塊在運(yùn)行過(guò)程中對(duì)內(nèi)存的申請(qǐng)量、申請(qǐng)頻度和該任務(wù)或者模塊的功能重要性設(shè)定所述緩沖池的各閥值。6、如權(quán)利要求13任一權(quán)項(xiàng)所述的方法,其特征在于,在確定該緩沖池產(chǎn)生了內(nèi)存碎片后,該方法進(jìn)一步包括對(duì)所述內(nèi)存碎片的相關(guān)信息進(jìn)行告警。7、如權(quán)利要求6所述的方法,其特征在于,以web系統(tǒng)的短消息方式、在網(wǎng)絡(luò)設(shè)備的液晶屏上進(jìn)行信息告警顯示、通過(guò)控制終端的追蹤信息以及記錄曰志的方式中一種或幾種進(jìn)行告警。8、一種內(nèi)存監(jiān)控的裝置,網(wǎng)絡(luò)設(shè)備定期對(duì)自身內(nèi)存使用情況信息進(jìn)行采樣,并將釆樣數(shù)據(jù)存放于結(jié)構(gòu)體中,其特征在于,包括預(yù)處理模塊,用于選擇監(jiān)控的緩沖池,并設(shè)定監(jiān)控周期,根據(jù)設(shè)定的監(jiān)控周期從所述結(jié)構(gòu)體中獲取緩沖池的結(jié)構(gòu)體變量參數(shù)值,其中所述結(jié)構(gòu)體變量參數(shù)值用于記錄所述緩沖池內(nèi)存使用情況的相關(guān)信息;確定模塊,用于利用獲取到的變量參數(shù)值計(jì)算得到相應(yīng)的內(nèi)存性能指標(biāo),并將得到的每個(gè)內(nèi)存性能指標(biāo)與設(shè)定的對(duì)應(yīng)閥值進(jìn)行比較,如果所述內(nèi)存性能指標(biāo)的任一項(xiàng)超過(guò)對(duì)應(yīng)的閥值,則確定該緩沖池產(chǎn)生了內(nèi)存碎片。9、如權(quán)利要求8所述的裝置,其特征在于,該裝置還包括告警模塊,用于對(duì)所述內(nèi)存碎片的相關(guān)信息進(jìn)行告警。10、如權(quán)利要求8所述的裝置,其特征在于,該裝置還包括溯源模塊,根據(jù)所述結(jié)構(gòu)體中儲(chǔ)存的緩沖池與使用內(nèi)存的任務(wù)或模塊的對(duì)應(yīng)關(guān)系確定導(dǎo)致所述緩沖池產(chǎn)生內(nèi)存碎片的任務(wù)或者模塊。11、如權(quán)利要求8所述的裝置,其特征在于,所述預(yù)處理模塊還用于當(dāng)通過(guò)所述網(wǎng)絡(luò)設(shè)備提供的外部接口選擇監(jiān)控任務(wù)或者模塊的內(nèi)存使用情況,則通過(guò)結(jié)構(gòu)體中存儲(chǔ)的任務(wù)或模塊與緩沖池的對(duì)應(yīng)關(guān)系確定需要監(jiān)控的至少一個(gè)緩沖池;則所述確定模塊還用于在確定所述緩沖池中的任意一個(gè)產(chǎn)生了內(nèi)存碎片之后,判定所述任務(wù)或模塊出現(xiàn)了異常。12、如權(quán)利要求811任一權(quán)項(xiàng)所述的裝置,其特征在于,所述內(nèi)存性能指標(biāo)包括空閑slab總數(shù)和/或活動(dòng)slab中空閑對(duì)象單元的占有率,則所述確定模塊還用于從所述結(jié)構(gòu)體變量參數(shù)值中獲取緩沖池中活動(dòng)slab的總數(shù)和緩沖池中slab的總申請(qǐng)數(shù),利用所述緩沖池中slab的總申請(qǐng)數(shù)減去活動(dòng)slab的總數(shù)得到所述空閑slab總數(shù);從所述結(jié)構(gòu)體變量參數(shù)值中獲取半滿(mǎn)slab中的空閑對(duì)象單元數(shù),并用獲取到的空閑對(duì)象單元數(shù)除以活動(dòng)slab總數(shù)與每條slab所包含對(duì)象單元數(shù)的乘積得到所述活動(dòng)slab中空閑對(duì)象單元的占有率。全文摘要本發(fā)明公開(kāi)了一種內(nèi)存監(jiān)控的方法和裝置,網(wǎng)絡(luò)設(shè)備定期對(duì)自身內(nèi)存使用情況信息進(jìn)行采樣,并將采樣數(shù)據(jù)存放于結(jié)構(gòu)體中,該方法包括首先選擇監(jiān)控的緩沖池,并設(shè)定監(jiān)控周期;根據(jù)設(shè)定的監(jiān)控周期從所述結(jié)構(gòu)體中獲取所述緩沖池的結(jié)構(gòu)體變量參數(shù)值,其中所述結(jié)構(gòu)體變量參數(shù)值用于記錄所述緩沖池內(nèi)存使用情況的相關(guān)信息;利用獲取到的變量參數(shù)值計(jì)算得到相應(yīng)的內(nèi)存性能指標(biāo),并將得到的每個(gè)內(nèi)存性能指標(biāo)與設(shè)定的對(duì)應(yīng)閥值進(jìn)行比較,如果所述內(nèi)存性能指標(biāo)的任一項(xiàng)超過(guò)對(duì)應(yīng)的閥值,則確定該緩沖池產(chǎn)生了內(nèi)存碎片。應(yīng)用本發(fā)明所提供的方法能夠有效監(jiān)控系統(tǒng)內(nèi)存碎片現(xiàn)象,能夠大大縮短問(wèn)題發(fā)現(xiàn)周期;能夠進(jìn)行內(nèi)存碎片問(wèn)題模塊判斷。文檔編號(hào)G06F11/34GK101515247SQ200910132368公開(kāi)日2009年8月26日申請(qǐng)日期2009年3月30日優(yōu)先權(quán)日2009年3月30日發(fā)明者張明振申請(qǐng)人:福建星網(wǎng)銳捷網(wǎng)絡(luò)有限公司