本發(fā)明涉及Smart Rack及內(nèi)存領(lǐng)域,尤其涉及一種Smart Rack系統(tǒng)性能測(cè)試內(nèi)存優(yōu)化的方法。
背景技術(shù):
Smart Rack系統(tǒng)內(nèi)存管理機(jī)制分為物理內(nèi)存和虛擬內(nèi)存,物理內(nèi)存就是系統(tǒng)硬件提供的內(nèi)存大小,是真正的內(nèi)存,相對(duì)于物理內(nèi)存,在系統(tǒng)下還有一個(gè)虛擬內(nèi)存的概念,虛擬內(nèi)存就是為了滿足物理內(nèi)存的不足而提出的策略,它是利用磁盤空間虛擬出的一塊邏輯內(nèi)存,用作虛擬內(nèi)存的磁盤空間被稱為交換空間(Swap Space)。作為物理內(nèi)存的擴(kuò)展,系統(tǒng)會(huì)在物理內(nèi)存不足時(shí),使用交換分區(qū)的虛擬內(nèi)存,更詳細(xì)的說,就是內(nèi)核會(huì)將暫時(shí)不用的內(nèi)存塊信息寫到交換空間,這樣以來,物理內(nèi)存得到了釋放,這塊內(nèi)存就可以用于其它目的,當(dāng)需要用到原始的內(nèi)容時(shí),這些信息會(huì)被重新從交換空間讀入物理內(nèi)存。系統(tǒng)的內(nèi)存管理采取的是分頁(yè)存取機(jī)制,為了保證物理內(nèi)存能得到充分的利用,內(nèi)核會(huì)在適當(dāng)?shù)臅r(shí)候?qū)⑽锢韮?nèi)存中不經(jīng)常使用的數(shù)據(jù)塊自動(dòng)交換到虛擬內(nèi)存中,而將經(jīng)常使用的信息保留到物理內(nèi)存。系統(tǒng)會(huì)不時(shí)的進(jìn)行頁(yè)面交換操作,以保持盡可能多的空閑物理內(nèi)存,即使并沒有什么事情需要內(nèi)存,系統(tǒng)也會(huì)交換出暫時(shí)不用的內(nèi)存頁(yè)面。這可以避免等待交換所需的時(shí)間。
系統(tǒng)進(jìn)行頁(yè)面交換是有條件的,不是所有頁(yè)面在不用時(shí)都交換到虛擬內(nèi)存,系統(tǒng)內(nèi)核根據(jù)”最近最經(jīng)常使用“算法,僅僅將一些不經(jīng)常使用的頁(yè)面文件交換到虛擬內(nèi)存,一個(gè)占用很大內(nèi)存的進(jìn)程運(yùn)行時(shí),需要耗費(fèi)很多內(nèi)存資源,此時(shí)就會(huì)有一些不常用頁(yè)面文件被交換到虛擬內(nèi)存中,但后來這個(gè)占用很多內(nèi)存資源的進(jìn)程結(jié)束并釋放了很多內(nèi)存時(shí),剛才被交換出去的頁(yè)面 文件并不會(huì)自動(dòng)的交換進(jìn)物理內(nèi)存,除非有這個(gè)必要,那么此刻系統(tǒng)物理內(nèi)存就會(huì)空閑很多,同時(shí)交換空間也在被使用。
交換空間的頁(yè)面在使用時(shí)會(huì)首先被交換到物理內(nèi)存,如果此時(shí)沒有足夠的物理內(nèi)存來容納這些頁(yè) 面,它們又會(huì)被馬上交換出去,如此以來,虛擬內(nèi)存中可能沒有足夠空間來存儲(chǔ)這些交換頁(yè)面,最終會(huì)導(dǎo)致系統(tǒng)出現(xiàn)假死機(jī)、服務(wù)異常等問題,系統(tǒng)雖然可以在一段時(shí)間內(nèi)自行恢復(fù),但是恢復(fù)后的系統(tǒng)已經(jīng)基本不可用了。因此合理規(guī)劃和設(shè)計(jì)Smart Rack內(nèi)存的使用,是非常重要的。
在Smart Rack性能測(cè)試時(shí),往往是多個(gè)壓力工具同時(shí)進(jìn)行壓測(cè),往往會(huì)遇到上面的問題,其中DD進(jìn)行硬盤壓測(cè)會(huì)消耗掉幾乎所有的內(nèi)存資源,造成其他任務(wù)內(nèi)存資源不足出現(xiàn)任務(wù)執(zhí)行慢甚至測(cè)試停止的事件發(fā)生。
技術(shù)實(shí)現(xiàn)要素:
為了解決以上問題,本發(fā)明提出了一種Smart Rack系統(tǒng)性能測(cè)試內(nèi)存優(yōu)化的方法。
Smart Rack系統(tǒng)性能測(cè)試內(nèi)存優(yōu)化主要通過定期規(guī)律的偵測(cè)并釋放和通過調(diào)低內(nèi)存占用大的DD進(jìn)程的優(yōu)先級(jí)完成內(nèi)存釋放。
本發(fā)明的技術(shù)方案是:
1、在執(zhí)行DD時(shí)每間隔30秒完成一次內(nèi)存釋放。
在執(zhí)行硬盤DD讀寫時(shí)每間隔30秒完成一次內(nèi)存釋放,通過定期規(guī)律的偵測(cè)并釋放從而避免內(nèi)存過多被磁盤消耗導(dǎo)致內(nèi)存資源不足,在后臺(tái)執(zhí)行yesdd測(cè)試的時(shí)候,使用for 循環(huán)定時(shí)(每次執(zhí)行完畢sleep約30秒)執(zhí)行以下兩條命令即可釋放內(nèi)存。
sync #把內(nèi)存中的緩存寫入硬盤,保證清理內(nèi)存不丟失重要數(shù)據(jù)
echo 1 > /proc/sys/vm/drop_caches #釋放內(nèi)存
具體腳本如下:
for ((i=0; i<2880; ++i)) do sync echo 1 > /proc/sys/vm/drop_caches
Sleep 30 done
2、調(diào)低內(nèi)存占用大的進(jìn)程的優(yōu)先級(jí)完成內(nèi)存釋放。
通過調(diào)低內(nèi)存占用大的DD進(jìn)程的優(yōu)先級(jí)完成內(nèi)存釋放,由renice 完成DD磁盤讀寫的系統(tǒng)進(jìn)程優(yōu)先等級(jí)的調(diào)低,通過系統(tǒng)核心調(diào)度完成資源有效利用和內(nèi)存的釋放。 #renice +10 `ps aux | awk ’{ if ($3 > 0.8 && id -u $1 > 500) print $2}’`其中用到ps獲取進(jìn)程信息,其實(shí)ps中%CPU一列的意義是進(jìn)程實(shí)際占有CPU時(shí)間和他存活時(shí)間的比值,這個(gè)值能反應(yīng)進(jìn)程對(duì)CPU的消耗,但不能準(zhǔn)確反應(yīng) 進(jìn)程所占CPU時(shí)間占整個(gè)系統(tǒng)CPU的百分比。而top輸出中的%CPU這一列正是進(jìn)程所占CPU時(shí)間占整個(gè)系統(tǒng)CPU的百分比,用于限制進(jìn)程CPU占用 率更加合理,同時(shí)%MEM一列還反應(yīng)了進(jìn)程占用內(nèi)存的百分比,能夠用于限制進(jìn)程內(nèi)存占用率。具體腳本如下:#!/bin/shPIDS=`top -bn 1 | grep "^ *[1-9]" | awk ’{ if($9 > 50 || $10 > 25 && id -u $2 > 500) print $1}’` for PID in $PIDS do renice +10 $PID echo "renice +10 $PID" done 將腳本放到cron中運(yùn)行,每分鐘檢查一次,調(diào)整占用50%以上CPU或25%內(nèi)存的進(jìn)程的nice值,從而使這樣的進(jìn)程優(yōu)先級(jí)變低被系統(tǒng)調(diào)度而釋放內(nèi)存,同時(shí)會(huì)向root發(fā)郵件提示該進(jìn)程被調(diào)整過。#crontab -e * * * * * limit.sh
本發(fā)明的有益效果是:
測(cè)試內(nèi)存優(yōu)化,在性能測(cè)試時(shí)多個(gè)壓力工具同時(shí)進(jìn)行壓測(cè),避免了DD進(jìn)行硬盤壓測(cè)消耗掉幾乎所有的內(nèi)存資源,造成其他任務(wù)內(nèi)存資源不足出現(xiàn)任務(wù)執(zhí)行慢甚至測(cè)試停止的事件發(fā)生,大大提升了Smart Rack系統(tǒng)性能測(cè)試效率及均衡性。
具體實(shí)施方式
下面對(duì)本發(fā)明的內(nèi)容進(jìn)行更加詳細(xì)的闡述:
Smart Rack系統(tǒng)性能測(cè)試內(nèi)存優(yōu)化的方法包括兩大方面,主要通過定期規(guī)律的偵測(cè)并釋放和通過調(diào)低內(nèi)存占用大的DD進(jìn)程的優(yōu)先級(jí)完成內(nèi)存釋放。
首先,在執(zhí)行硬盤DD讀寫時(shí)每間隔30秒完成一次內(nèi)存釋放,通過定期規(guī)律的偵測(cè)并釋放從而避免內(nèi)存過多被磁盤消耗導(dǎo)致內(nèi)存資源不足,使用for 循環(huán)定時(shí)執(zhí)行同步操作sync和內(nèi)存釋放命令echo 1 > /proc/sys/vm/drop_caches。
其次,通過調(diào)低內(nèi)存占用大的DD進(jìn)程的優(yōu)先級(jí)完成內(nèi)存釋放,由renice 完成DD磁盤讀寫的系統(tǒng)進(jìn)程優(yōu)先等級(jí)的調(diào)低,通過系統(tǒng)核心調(diào)度完成資源有效利用和內(nèi)存的釋放。通過在cron中運(yùn)行,每分鐘檢查一次,調(diào)整占用50%以上CPU或25%內(nèi)存的進(jìn)程的nice值,從而使進(jìn)程優(yōu)先級(jí)變低而被系統(tǒng)調(diào)度釋放內(nèi)存。