一種基于ITP工具的MemoryDemandScrub測(cè)試方法【專利摘要】本發(fā)明公開(kāi)了一種基于ITP工具的MemoryDemandScrub測(cè)試方法,其具體實(shí)現(xiàn)過(guò)程為:安裝使用ITP工具,在python平臺(tái)上通過(guò)Cscripts腳本,在開(kāi)啟和關(guān)閉DemandScrub的兩種情況下,給內(nèi)存注入單BitECCError,再遍歷內(nèi)存地址,通過(guò)讀取內(nèi)存中ECCError的數(shù)目來(lái)判斷DemandScrub的功能是否生效。該一種基于ITP工具的MemoryDemandScrub測(cè)試方法與現(xiàn)有技術(shù)相比,可應(yīng)用于所有支持MemoryRAS功能的X86服務(wù)器產(chǎn)品,模擬用戶的實(shí)際應(yīng)用中內(nèi)存出現(xiàn)的ECCError,確保DemandScrub的功能實(shí)現(xiàn),也有效確保服務(wù)器的可靠性和安全性?!緦@f(shuō)明】—種基于ITP工具的MemoryDemandScrub測(cè)試方法【
技術(shù)領(lǐng)域:
】[0001]本發(fā)明涉及計(jì)算機(jī)【
技術(shù)領(lǐng)域:
】,具體地說(shuō)是一種實(shí)用性強(qiáng)、基于ITP工具的MemoryDemandScrub測(cè)試方法?!?br>背景技術(shù):
】[0002]隨著IT領(lǐng)域技術(shù)的不斷發(fā)展,傳統(tǒng)信息化服務(wù)以及日趨強(qiáng)大的云計(jì)算服務(wù),對(duì)服務(wù)器的安全可靠要求越來(lái)越高。作為服務(wù)器產(chǎn)品提供商,一款服務(wù)器無(wú)論是在研發(fā)階段還是生產(chǎn)階段都需要對(duì)產(chǎn)品進(jìn)行安全性測(cè)試,從而嚴(yán)格保證該產(chǎn)品的安全性,其主要體現(xiàn)在RAS性能上。[0003]RAS特性中重要的一點(diǎn)就是內(nèi)存的RAS特性。內(nèi)存是一種電子器件,在其工作過(guò)程中難免會(huì)出現(xiàn)錯(cuò)誤,而對(duì)于穩(wěn)定性要求高的用戶來(lái)說(shuō),內(nèi)存錯(cuò)誤可能會(huì)引起致命性的問(wèn)題。內(nèi)存錯(cuò)誤根據(jù)其原因還可分為硬錯(cuò)誤和軟錯(cuò)誤。硬件錯(cuò)誤是由于硬件的損害或缺陷造成的,因此數(shù)據(jù)總是不正確;軟錯(cuò)誤是隨機(jī)出現(xiàn)的,例如在內(nèi)存附近突然出現(xiàn)電子干擾等因素都可能造成內(nèi)存軟錯(cuò)誤的發(fā)生。[0004]RAS性能指的是機(jī)器的可靠性(Reliability)、可用性(Availability)和可服務(wù)性(Serviceability),系統(tǒng)必須盡可能的可靠,不會(huì)意外的崩潰,重啟甚至導(dǎo)致系統(tǒng)物理?yè)p壞,這意味著一個(gè)具有可靠性的系統(tǒng)必須能夠?qū)τ谀承┬〉腻e(cuò)誤導(dǎo)致的硬件功能失效做出熱備。MemoryRAS中的DemandScrub功能可以對(duì)內(nèi)存出現(xiàn)的ECCError糾錯(cuò),并且防止反復(fù)讀取該地址時(shí)產(chǎn)生不可修復(fù)的error?;诖?現(xiàn)提供一種MemoryDemandScrub測(cè)試方法,該方法使用ITP工具給內(nèi)存注入單BitECCError,模擬實(shí)際應(yīng)用中內(nèi)存出錯(cuò)情況,通過(guò)讀取寄存器的值來(lái)考量MemoryDemandScrub功能是否成功實(shí)現(xiàn)?!?br/>發(fā)明內(nèi)容】[0005]本發(fā)明的技術(shù)任務(wù)是針對(duì)以上不足之處,提供一種實(shí)用性強(qiáng)、基于ITP工具的MemoryDemandScrub測(cè)試方法。[0006]一種基于ITP工具的MemoryDemandScrub測(cè)試方法,其具體實(shí)現(xiàn)過(guò)程為:一、準(zhǔn)備Windows測(cè)試機(jī)和Windows控制端;二、用ITP工具連接測(cè)試機(jī)和控制端;三、測(cè)試機(jī)上電開(kāi)機(jī),進(jìn)入B1SSetup界面;四、設(shè)置DemandScrub為[Disabled],即關(guān)閉MemoryRASDemandScrub功能;五、保存設(shè)置后退出,重啟測(cè)試機(jī),待測(cè)試機(jī)進(jìn)入Windows系統(tǒng);六、在控制端輸入指令,給測(cè)試機(jī)的一個(gè)rank注入單bitECCError;七、待注錯(cuò)結(jié)束后,輸入指令查看該Rank上ECCError數(shù)目增加I;八、反復(fù)輸入指令,遍歷內(nèi)存地址;九、再查看該Rank上ECCError數(shù)目,即每遍歷一次內(nèi)存地址,Error數(shù)目增加I;十、重啟測(cè)試機(jī),設(shè)置DemandScrub為[Enabled],即打開(kāi)MemoryRASDemandScrub功能;1、控制端輸入指令,給測(cè)試機(jī)的一個(gè)內(nèi)存rank注入單bitECCError;十二、輸入指令查看該Rank上ECCError數(shù)目增加I;十三、反復(fù)輸入指令遍歷內(nèi)存地址;十四、查看該Rank上ECCError數(shù)目,當(dāng)數(shù)目保持不變時(shí),即DemandScrub功能生效。[0007]所述Windows測(cè)試機(jī)是指安裝Windows操作系統(tǒng)的測(cè)試平臺(tái);Windows控制端是指安裝.Netframework3.5和.Netframework4.0、安裝工具Intel?PlatformDebugToolkit,并且拷貝Cscripts腳本的Windows控制端平臺(tái)。[0008]所述步驟二的詳細(xì)過(guò)程為:將測(cè)試平臺(tái)斷電,然后將ITP工具的數(shù)據(jù)線XDP接口端插在主板的XDP接口,USB口插在控制端的USB端口上,并插上ITP電源。[0009]所述步驟六及步驟^--中給內(nèi)存的一個(gè)Rank注入單bitECCError過(guò)程均為:在控制端打開(kāi)工具Intel?PlatformDebugToolkit中的ConfigConsole,選擇系統(tǒng)相應(yīng)的平臺(tái)后,點(diǎn)擊Apply連接上測(cè)試機(jī);控制端系統(tǒng)中打開(kāi)Cscripts腳本文件中的Python控制臺(tái)“startivt_oem.py”;Python控制臺(tái)中輸入指令,給內(nèi)存的一個(gè)Rank注入單bitECCError。[0010]本發(fā)明的一種基于ITP工具的MemoryDemandScrub測(cè)試方法,具有以下優(yōu)點(diǎn):該發(fā)明的一種基于ITP工具的MemoryDemandScrub測(cè)試方法適用于帶有XDP接口,支持DemandScrub功能的X86服務(wù)器產(chǎn)品,適用范圍廣泛;開(kāi)啟和關(guān)閉DemandScrub的兩種情況下,給內(nèi)存注入單BitECCError來(lái)模擬實(shí)際應(yīng)用中出現(xiàn)的情況,再遍歷內(nèi)存地址,通過(guò)讀取內(nèi)存中ECCError的數(shù)目來(lái)判斷DemandScrub的功能是否生效,該測(cè)試方法操作簡(jiǎn)單,卻能夠多角度、全方位的檢測(cè)MemoryRASDemandScrub功能,實(shí)用性較強(qiáng),有效確保了服務(wù)器的可靠性和安全性,易于推廣?!緦@綀D】【附圖說(shuō)明】[0011]附圖1為本發(fā)明實(shí)現(xiàn)流程圖?!揪唧w實(shí)施方式】[0012]下面結(jié)合附圖和具體實(shí)施例對(duì)本發(fā)明作進(jìn)一步說(shuō)明。[0013]IMC讀取內(nèi)存如果遇到ECC錯(cuò)誤,那么糾正這個(gè)錯(cuò)誤,并且把錯(cuò)誤的數(shù)據(jù)寫(xiě)入出問(wèn)題的DMM里。這種RAS特性主要防止反復(fù)需要訪問(wèn)的內(nèi)存地址如果出錯(cuò),則每次需要ECC糾錯(cuò),造成帶寬的浪費(fèi),而且有可能導(dǎo)致最終變成uncorrectableerror0基于該思路,現(xiàn)提供一種基于ITP工具的MemoryDemandScrub測(cè)試方法,如附圖1所示,其具體實(shí)現(xiàn)過(guò)程為:一、準(zhǔn)備好Windows測(cè)試平臺(tái),該Windows測(cè)試平臺(tái)即為安裝Windows操作系統(tǒng)的測(cè)試機(jī)。[0014]二、準(zhǔn)備好Windows控制端平臺(tái),該控制端平臺(tái)需要安裝.Netframework3.5和.Netframework4.0,安裝工具Intel?PlatformDebugToolkit,即Intel?PDT,并且拷貝Cscripts腳本。[0015]三、測(cè)試平臺(tái)斷電情況下,將ITP工具的數(shù)據(jù)線XDP接口端插在主板的XDP接口,USB口插在控制端的USB端口上,并插上ITP電源。[0016]四、測(cè)試機(jī)上電開(kāi)機(jī),進(jìn)入B1SSetup界面。[0017]五、設(shè)置DemandScrub為[Disabled],即關(guān)閉MemoryRASDemandScrub功能。[0018]六、保存設(shè)置后退出,重啟測(cè)試機(jī)臺(tái),待測(cè)試機(jī)進(jìn)入Windows系統(tǒng)。[0019]七、在控制端打開(kāi)工具Intel?PlatformDebugToolkit(Intel?PDT)中的ConfigConsole,選擇系統(tǒng)相應(yīng)的平臺(tái)后,點(diǎn)擊Apply連接上測(cè)試機(jī)。[0020]八、控制端系統(tǒng)中打開(kāi)Cscripts腳本文件中的Python控制臺(tái)“startivt—oem.py”。[0021]九、Python控制臺(tái)中輸入指令,給內(nèi)存的一個(gè)Rank注入單bitECCError。輸入:#halt#e1.1njectMemError(socket=5^,channel=木],dimm=*,rank=^)SgOO[0022]在上述腳本中,代表需要注錯(cuò)的內(nèi)存所在的socket,channel,dimm。[0023]十、待注錯(cuò)結(jié)束后,查看相應(yīng)內(nèi)存中的ECCEitot數(shù)目增加I。輸入:#halt#e1.disp_ecc_cntO。[0024]十一、輸入指令,遍歷內(nèi)存地址:#halt#mem(0x0,8)SgOO[0025]十二、再查看該內(nèi)存中的ECCError數(shù)目,發(fā)現(xiàn)Error又增加I。[0026]十三、反復(fù)遍歷內(nèi)存地址,再讀取該內(nèi)存中的ECCError數(shù)目,會(huì)發(fā)現(xiàn)每遍歷一次內(nèi)存地址,ECCEitot數(shù)目就會(huì)增加I。[0027]十四、重啟測(cè)試機(jī)臺(tái),進(jìn)入B1SSetup界面。[0028]十五、設(shè)置DemandScrub為[Enabled],即打開(kāi)MemoryRASDemandScrub功能。[0029]十六、保存設(shè)置后退出,重啟測(cè)試機(jī)臺(tái),待測(cè)試機(jī)進(jìn)入Windows系統(tǒng)。[0030]十七、在控制端打開(kāi)工具Intel?PlatformDebugToolkit(Intel?PDT)中的ConfigConsole,選擇系統(tǒng)相應(yīng)的平臺(tái)后,點(diǎn)擊Apply連接上測(cè)試機(jī)。[0031]十八、控制端系統(tǒng)中打開(kāi)Cscripts腳本文件中的Python控制臺(tái)“startivt—oem.py”。[0032]十九、Python控制臺(tái)中輸入指令,給內(nèi)存的一個(gè)Rank注入單bitECCError。輸Λ:#halt#e1.1njectMemError(socket=5^,channel=木],dimm=*,rank=^)SgOO[0033]上述腳本中,代表需要注錯(cuò)的內(nèi)存所在的socket,channel,dimm。[0034]二十、待注錯(cuò)結(jié)束后,查看相應(yīng)內(nèi)存中的ECCEitot數(shù)目增加I。輸入:#halt#e1.disp_ecc_cntO。[0035]二^、輸入指令,遍歷內(nèi)存地址:#halt#mem(0x0,8)#go。[0036]二十二、再輸入指令,查看相應(yīng)內(nèi)存中的ECCError數(shù)目,此時(shí)發(fā)現(xiàn)其保持不變,證明DemandScrub功能生效,它在第一次發(fā)現(xiàn)ECCError后將數(shù)據(jù)其寫(xiě)入了該DIMM中,防止以后再訪問(wèn)該內(nèi)存地址時(shí),每次需要ECC糾錯(cuò),造成帶寬的浪費(fèi),而且有可能導(dǎo)致最終變成uncorrectableerror。[0037]上述【具體實(shí)施方式】?jī)H是本發(fā)明的具體個(gè)案,本發(fā)明的專利保護(hù)范圍包括但不限于上述【具體實(shí)施方式】,任何符合本發(fā)明的一種基于ITP工具的MemoryDemandScrub測(cè)試方法的權(quán)利要求書(shū)的且任何所屬【
技術(shù)領(lǐng)域:
】的普通技術(shù)人員對(duì)其所做的適當(dāng)變化或替換,皆應(yīng)落入本發(fā)明的專利保護(hù)范圍?!緳?quán)利要求】1.一種基于ITP工具的MemoryDemandScrub測(cè)試方法,其特征在于,其具體實(shí)現(xiàn)過(guò)程為:一、準(zhǔn)備Windows測(cè)試機(jī)和Windows控制端;二、用ITP工具連接測(cè)試機(jī)和控制端;三、測(cè)試機(jī)上電開(kāi)機(jī),進(jìn)入B1SSetup界面;四、設(shè)置DemandScrub為[Disabled],即關(guān)閉MemoryRASDemandScrub功能;五、保存設(shè)置后退出,重啟測(cè)試機(jī),待測(cè)試機(jī)進(jìn)入Windows系統(tǒng);六、在控制端輸入指令,給測(cè)試機(jī)的一個(gè)rank注入單bitECCError;七、待注錯(cuò)結(jié)束后,輸入指令查看該Rank上ECCError數(shù)目增加I;八、反復(fù)輸入指令,遍歷內(nèi)存地址;九、再查看該Rank上ECCError數(shù)目,即每遍歷一次內(nèi)存地址,Error數(shù)目增加I;十、重啟測(cè)試機(jī),設(shè)置DemandScrub為[Enabled],即打開(kāi)MemoryRASDemandScrub功能;1、控制端輸入指令,給測(cè)試機(jī)的一個(gè)內(nèi)存rank注入單bitECCError;十二、輸入指令查看該Rank上ECCError數(shù)目增加I;十三、反復(fù)輸入指令遍歷內(nèi)存地址;十四、查看該Rank上ECCError數(shù)目,當(dāng)數(shù)目保持不變時(shí),即DemandScrub功能生效。2.根據(jù)權(quán)利要求1所述的一種基于ITP工具的MemoryDemandScrub測(cè)試方法,其特征在于,所述Windows測(cè)試機(jī)是指安裝Windows操作系統(tǒng)的測(cè)試平臺(tái);Windows控制端是指安裝.Netframework3.5和.Netframework4.0、安裝工具Intel?PlatformDebugToolkit,并且拷貝Cscripts腳本的Windows控制端平臺(tái)。3.根據(jù)權(quán)利要求2所述的一種基于ITP工具的MemoryDemandScrub測(cè)試方法,其特征在于,所述步驟二的詳細(xì)過(guò)程為:將測(cè)試平臺(tái)斷電,然后將ITP工具的數(shù)據(jù)線XDP接口端插在主板的XDP接口,USB口插在控制端的USB端口上,并插上ITP電源。4.根據(jù)權(quán)利要求2所述的一種基于ITP工具的MemoryDemandScrub測(cè)試方法,其特征在于,所述步驟六及步驟1--中給內(nèi)存的一個(gè)Rank注入單bitECCError過(guò)程均為:在控制端打開(kāi)工具Intel?PlatformDebugToolkit中的ConfigConsole,選擇系統(tǒng)相應(yīng)的平臺(tái)后,點(diǎn)擊Apply連接上測(cè)試機(jī);控制端系統(tǒng)中打開(kāi)Cscripts腳本文件中的Python控制臺(tái)“startivt_oem.py”;Python控制臺(tái)中輸入指令,給內(nèi)存的一個(gè)Rank注入單bitECCError?!疚臋n編號(hào)】G06F11/26GK104317690SQ201410561599【公開(kāi)日】2015年1月28日申請(qǐng)日期:2014年10月21日優(yōu)先權(quán)日:2014年10月21日【發(fā)明者】齊煜,王守昊申請(qǐng)人:浪潮電子信息產(chǎn)業(yè)股份有限公司