CPU訪問(wèn)內(nèi)存方式簡(jiǎn)介_(kāi)第1頁(yè)
CPU訪問(wèn)內(nèi)存方式簡(jiǎn)介_(kāi)第2頁(yè)
CPU訪問(wèn)內(nèi)存方式簡(jiǎn)介_(kāi)第3頁(yè)
CPU訪問(wèn)內(nèi)存方式簡(jiǎn)介_(kāi)第4頁(yè)
CPU訪問(wèn)內(nèi)存方式簡(jiǎn)介_(kāi)第5頁(yè)
已閱讀5頁(yè),還剩10頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、CPU訪問(wèn)內(nèi)存方式簡(jiǎn)介1 介紹1) 首先,本文將對(duì)3種體系結(jié)構(gòu)的內(nèi)存訪問(wèn)方式進(jìn)行介紹,分別為:a) 對(duì)稱多處理器結(jié)構(gòu) (SMP:Symmetric Multi-Processor) b) 海量并行處理結(jié)構(gòu) (MPP:Massive Parallel Processing)c) 非一致存儲(chǔ)訪問(wèn)結(jié)構(gòu) (NUMA:Non-Uniform Memory Access)2) 然后,通過(guò)3種不同體系結(jié)構(gòu)的內(nèi)存訪問(wèn)實(shí)現(xiàn)原理,來(lái)對(duì)比它們?cè)谛阅?、擴(kuò)展以及應(yīng)用方面的優(yōu)缺點(diǎn)。3) 最后,對(duì)NUMA結(jié)構(gòu)的內(nèi)存分配策略以及如何使用numactl工具優(yōu)化程序進(jìn)行介紹。在詳細(xì)介紹不同體系架構(gòu)的內(nèi)存訪問(wèn)方式之前,先對(duì)CPU的

2、相關(guān)概念、各種總線技術(shù)以及內(nèi)存帶寬等概念進(jìn)行介紹。2 技術(shù)背景2.1 CPU相關(guān)概念1) 主頻(CPU Clock Speed):CPU工作的時(shí)鐘頻率(1秒內(nèi)發(fā)生的同步脈沖數(shù)),其速度由外頻乘以倍頻決定。2) 外頻:系統(tǒng)總線的工作頻率(系統(tǒng)時(shí)鐘頻率),是CPU與周邊設(shè)備傳輸數(shù)據(jù)的頻率。具體是指CPU到芯片組之間的總線速度(如CPU與主板之間同步運(yùn)行的速度)。3) 倍頻:主頻與外頻之比的倍數(shù)(主頻=外頻×倍頻),理論上從1.5到無(wú)限大,以0.5為一個(gè)間隔單位進(jìn)行增加。注:CPU的性能并不是完全由主頻決定,是由主頻、管線架構(gòu)或長(zhǎng)度、功能單元數(shù)目、緩存設(shè)計(jì)四個(gè)方面共同決定,通常將后面三個(gè)要

3、素統(tǒng)稱為CPU架構(gòu)。2.2 FSB(Front Side Bus)在Nehalem微架構(gòu)之前,Intel 的CPU和北橋芯片之間的通信都一直使用FSB,其體系架構(gòu)如下所示:說(shuō)明:1) 由于Intel使用了“四倍傳輸”技術(shù),可以使系統(tǒng)總線在一個(gè)時(shí)鐘周期內(nèi)傳送4次數(shù)據(jù),也就是傳輸效率是原來(lái)的4倍。如:在外頻為N時(shí),F(xiàn)SB的速度增加4倍變成了4N。2) FSB的速度指的是CPU和北橋芯片間總線的速度,更實(shí)質(zhì)性的表示CPU和外界數(shù)據(jù)傳輸?shù)乃俣取?) 外頻的概念是建立在數(shù)字脈沖信號(hào)震蕩的基礎(chǔ)上的,它更多的影響了其他總線的頻率(如PCI總線與SATA總線)。如:主板可以通過(guò)“二分頻”技術(shù)將外頻降一半,使得

4、PCI設(shè)備保持在標(biāo)準(zhǔn)工作頻率。優(yōu)點(diǎn):整體成本低。缺點(diǎn):由于只采用一條FSB總線,多處理器訪問(wèn)內(nèi)存時(shí)會(huì)對(duì)FSB總線進(jìn)行搶占,使得多處理器系統(tǒng)間互聯(lián)和可擴(kuò)展性差。2.3 QPI(Quick Path Interconnect)Intel在Nehalem微架構(gòu)的CPU中首次集成了內(nèi)存控制器(IMC,Integrated Memory Controller)和引入了QPI連接方式,這樣CPU和北橋芯片之間的通信使用QPI取代了前端總線,其體系架構(gòu)如下所示:說(shuō)明:1) Nehalem微架構(gòu)的CPU被設(shè)計(jì)為核心(Core)與非核心(UnCore)兩部分。CPU的執(zhí)行流水線、L1、L2 Cache都集成在核

5、心中,而L3 Cache、IMC、QPI以及功耗與時(shí)鐘控制單元都被集成在非核心中。2) QPI是在CPU中集成內(nèi)存控制器的體系架構(gòu),主要用于多CPU間互聯(lián)以及CPU與芯片組間互聯(lián)的通信,使用QPI后CPU可直接通過(guò)內(nèi)存控制器訪問(wèn)內(nèi)存資源,而不是以前繁雜的“前端總線北橋內(nèi)存控制器”模式。3) 由于QPI應(yīng)用于多CPU間互聯(lián)以及CPU與芯片組間互聯(lián),因此可以靈活的修改CPU中集成的QPI數(shù)量。如:在針對(duì)雙路CPU的系統(tǒng)中,將集成兩組QPI。4) 需要注意的是:QPI并非一種I/O接口, CPU仍然采用PCI-Express來(lái)處理I/O通訊問(wèn)題。優(yōu)點(diǎn):CPU集成內(nèi)存控制器,由于CPU和內(nèi)存之間的數(shù)據(jù)

6、傳輸不再需要經(jīng)過(guò)北橋芯片,因此可以縮短CPU與內(nèi)存之間的數(shù)據(jù)交換周期。缺點(diǎn):由于內(nèi)存控制器是集成在CPU內(nèi)部,因此內(nèi)存的工作頻率與CPU相同,而且不能進(jìn)行頻率異步設(shè)置,這樣的話在CPU超頻的時(shí)候會(huì)導(dǎo)致內(nèi)存的頻率同CPU的外頻一起升高,一旦超過(guò)內(nèi)存的承受能力,就會(huì)導(dǎo)致內(nèi)存無(wú)法工作,這會(huì)大大限制CPU的超頻能力。針對(duì)使用QPI的體系架構(gòu),對(duì)如下幾個(gè)時(shí)鐘概念進(jìn)行介紹:1) Base Clock(BCLK):也叫Bus Clock,即外頻。2) Core Clock:即主頻,Core Clock= Base Clock * 倍頻。3) UnCore Clock(UCLK):由BCLK乘以UnCore倍

7、頻得到。UCLK既不是內(nèi)存頻率也不是QPI頻率,UCLK不能低于內(nèi)存頻率的4倍,這也就是其內(nèi)存規(guī)格限制所在。4) QPI Clock:由BCLK乘以QPI倍頻得到。由于內(nèi)存控制器的集成,它的頻率大大超出了需要,所以在超頻時(shí)如果會(huì)碰到瓶頸,直接降低它的倍頻即可。(在BIOS里設(shè)置)5) Memory Clock:由BCLK乘以內(nèi)存倍頻得到,內(nèi)存性能直接受此頻率影響。2.4 內(nèi)存帶寬數(shù)據(jù)傳輸最大帶寬取決于所有同時(shí)傳輸數(shù)據(jù)的帶寬和傳輸頻率,公式如下所示:數(shù)據(jù)帶寬=頻率 * 數(shù)據(jù)位寬 / 8。使用FSB時(shí):1) 由于內(nèi)存與CPU進(jìn)行通信需要通過(guò)FSB,因此內(nèi)存帶寬會(huì)受到內(nèi)存頻率與FSB頻率的共同影響。

8、2) 在內(nèi)存采用多通道情況下,內(nèi)存帶寬往往會(huì)因?yàn)镕SB頻率而受限。如:外頻為200HZ,F(xiàn)SB頻率為800HZ,那么當(dāng)內(nèi)存為DDR2-800(表示工作頻率為400MHZ,等效工作頻率為1600MHZ,采用雙通道),F(xiàn)SB頻率就成了內(nèi)存帶寬的瓶頸。此時(shí),內(nèi)存帶寬并不是12.5GB/s而僅為6.25GB/s (800MHZ * 64bit / 8 )。使用QPI時(shí):1) QPI是一種基于包傳輸?shù)拇惺礁咚冱c(diǎn)對(duì)點(diǎn)連接協(xié)議,采用差分信號(hào)與專門的時(shí)鐘進(jìn)行傳輸。在延遲方面,QPI與FSB幾乎相同,卻可以提升更高的訪問(wèn)帶寬。2) 一組QPI具有20條數(shù)據(jù)傳輸線,以及發(fā)送(TX)和接收方(RX)的時(shí)鐘信號(hào)。在

9、每次傳輸?shù)?0bit數(shù)據(jù)中,有16bit是真實(shí)有效的數(shù)據(jù),其余四位用于循環(huán)冗余校驗(yàn),以提高系統(tǒng)的可靠性。3) QPI頻率以GT/s(QPI Data Rate),明確地表明了QPI總線實(shí)際的數(shù)據(jù)傳輸速率而不是時(shí)鐘頻率。(每個(gè)時(shí)鐘周期上下沿各傳輸一次數(shù)據(jù),實(shí)際的數(shù)據(jù)傳輸速率兩倍于QPI總線時(shí)鐘速率,如:QPI Data Rate為6.4GT/s,那么它的QPI頻率是3200MHZ)4) 由于每個(gè)QPI總線是雙向的,在發(fā)送的同時(shí)也可以接收另一端傳輸來(lái)的數(shù)據(jù),因此一組QPI帶寬為:25.6GB/s(6.4GT/s * 16bit * 2 / 8,每秒傳輸次數(shù) * 有效數(shù)據(jù)位)。5) Nehalem微

10、架構(gòu)CPU中的內(nèi)存控制器具有三個(gè)通道,支持三通道DDR3 1333內(nèi)存,對(duì)于三條通道全部啟用的情況下,內(nèi)存帶寬將高達(dá)32GB/s(1333*3*64bit/8=32GB/s)。6) 在Intel高端的安騰處理器系統(tǒng)中,QPI高速互聯(lián)方式使得CPU與CPU之間的峰值帶寬可達(dá)96GB/s,峰值內(nèi)存帶寬可達(dá)34GB/s。3 體系結(jié)構(gòu)原理3.1 SMP(Symmetric Multi-Processor)SMP體系結(jié)構(gòu)如下所示:說(shuō)明:1) SMP系統(tǒng)最大的特點(diǎn)就是所有CPU共享全部資源(如,系統(tǒng)總線、內(nèi)存和I/O系統(tǒng))。2) SMP中的多個(gè)CPU之間沒(méi)有區(qū)別,每個(gè)CPU 訪問(wèn)內(nèi)存中的任何地址所需時(shí)間是

11、相同的。3) 由于在SMP系統(tǒng)中所有CPU都共享系統(tǒng)總線,因此當(dāng)CPU的數(shù)目增多時(shí),系統(tǒng)總線的競(jìng)爭(zhēng)沖突迅速加大,系統(tǒng)總線成為了性能瓶頸,可擴(kuò)展性受到很大限制。實(shí)驗(yàn)證明, SMP 服務(wù)器 CPU 利用率最好的情況是2至4個(gè)CPU。4) 在SMP系統(tǒng)擴(kuò)展中,性能瓶頸除了系統(tǒng)總線外,搶占內(nèi)存以及內(nèi)存同步也是難點(diǎn)。a) 搶占內(nèi)存是指:當(dāng)多個(gè)CPU共同訪問(wèn)內(nèi)存中的數(shù)據(jù)時(shí),它們并不能同時(shí)去讀寫(xiě)數(shù)據(jù)。b) 內(nèi)存同步是指:各CPU通過(guò)Cache訪問(wèn)內(nèi)存數(shù)據(jù)時(shí),要求系統(tǒng)必須經(jīng)常保持內(nèi)存中的數(shù)據(jù)與 Cache中的數(shù)據(jù)一致,若Cache的內(nèi)容更新了,內(nèi)存中的內(nèi)容也應(yīng)該相應(yīng)更新,否則就會(huì)影響系統(tǒng)數(shù)據(jù)的一致性。3.2

12、MPP(Massive Parallel Processing)MPP體系結(jié)構(gòu)如下所示:說(shuō)明:1) MPP系統(tǒng)由多個(gè)SMP服務(wù)器通過(guò)一定的節(jié)點(diǎn)互聯(lián)網(wǎng)絡(luò)進(jìn)行連接,協(xié)同工作完成任務(wù),從用戶的角度來(lái)看是一個(gè)服務(wù)器系統(tǒng)。2) 在 MPP 系統(tǒng)中,每個(gè)SMP節(jié)點(diǎn)可以運(yùn)行自己的操作系統(tǒng)、數(shù)據(jù)庫(kù)等。3) MPP系統(tǒng)的基本特征是每個(gè)SMP節(jié)點(diǎn)只能訪問(wèn)自己的本地資源(如,內(nèi)存、存儲(chǔ)),是一種完全無(wú)共享結(jié)構(gòu)。SMP節(jié)點(diǎn)之間的信息交互是通過(guò)節(jié)點(diǎn)互聯(lián)網(wǎng)絡(luò)實(shí)現(xiàn)的,這個(gè)過(guò)程一般稱為數(shù)據(jù)重分配(Data Redistribution) 。 4) 由于MPP的完全無(wú)共享結(jié)構(gòu),其擴(kuò)展能力理論上無(wú)限制。目前的技術(shù)可實(shí)現(xiàn)512個(gè)節(jié)

13、點(diǎn)互聯(lián)數(shù)千個(gè)CPU。目前業(yè)界對(duì)節(jié)點(diǎn)互聯(lián)網(wǎng)絡(luò)暫無(wú)標(biāo)準(zhǔn),不同公司采用了不同的內(nèi)部實(shí)現(xiàn)機(jī)制(如,IBM采用了SP_Switch機(jī)制)。5) 在MPP系統(tǒng)中,由于各SMP節(jié)點(diǎn)之間的通信需要通過(guò)節(jié)點(diǎn)互聯(lián)網(wǎng)絡(luò)實(shí)現(xiàn),因此需要一種復(fù)雜的機(jī)制來(lái)調(diào)度和平衡各個(gè)節(jié)點(diǎn)的負(fù)載和并行處理過(guò)程。3.3 NUMA(Non-Uniform Memory Access)NUMA體系結(jié)構(gòu)如下所示:說(shuō)明:1) NUMA結(jié)構(gòu)綜合了SMP結(jié)構(gòu)和MPP結(jié)構(gòu)的特點(diǎn):邏輯上整個(gè)系統(tǒng)也是分為多個(gè)節(jié)點(diǎn),但每個(gè)節(jié)點(diǎn)可以訪問(wèn)本地內(nèi)存資源,也可以訪問(wèn)遠(yuǎn)程內(nèi)存資源。2) NUMA結(jié)構(gòu)的每個(gè)CPU都可以訪問(wèn)整個(gè)系統(tǒng)的內(nèi)存,但訪問(wèn)本地內(nèi)存資源遠(yuǎn)遠(yuǎn)快于遠(yuǎn)程內(nèi)存

14、資源。因此,為了更好地發(fā)揮系統(tǒng)性能,開(kāi)發(fā)應(yīng)用程序時(shí)需要盡量減少CPU跨節(jié)點(diǎn)訪問(wèn)內(nèi)存。3) 利用 NUMA 技術(shù),可以較好地解決原來(lái)SMP系統(tǒng)的擴(kuò)展問(wèn)題,在一個(gè)物理服務(wù)器內(nèi)可以支持上百個(gè)CPU,但由于訪問(wèn)遠(yuǎn)地內(nèi)存的延時(shí)遠(yuǎn)遠(yuǎn)超過(guò)本地內(nèi)存,因此當(dāng)CPU數(shù)量增加時(shí),系統(tǒng)性能無(wú)法線性增加。4) NUMA最大的特點(diǎn)是引入了node和distance的概念。a) node:資源組,每個(gè)資源組內(nèi)的CPU和內(nèi)存是幾乎相等。b) distance:用來(lái)定義各個(gè)node之間調(diào)用資源的開(kāi)銷,為資源調(diào)度優(yōu)化算法提供支持。5) 節(jié)點(diǎn)訪問(wèn)遠(yuǎn)程內(nèi)存的過(guò)程如下:(CPU0訪問(wèn)MEM1為例)a) CPU0通過(guò)QPI先向CPU1發(fā)

15、起訪問(wèn)請(qǐng)求b) CPU1的內(nèi)置內(nèi)存控制器發(fā)起MEM1訪問(wèn),MEM1的數(shù)據(jù)返回到CPU1的三級(jí)緩存中c) CPU1再通過(guò)QPI將數(shù)據(jù)返回給CPU0由于QPI延遲不高,內(nèi)置的內(nèi)存控制器延遲也很小,因此即便對(duì)遠(yuǎn)程內(nèi)存訪問(wèn),整體的訪問(wèn)延遲仍然會(huì)保持在一個(gè)較好的水平。4 體系結(jié)構(gòu)對(duì)比4.1 性能對(duì)比1) SMPSMP系統(tǒng)內(nèi)的所有CPU共享系統(tǒng)總線。因此,在CPU增加時(shí)總線競(jìng)爭(zhēng)沖突迅速加大,性能無(wú)法線性增加。2) MPPMPP系統(tǒng)是由多個(gè)SMP系統(tǒng)通過(guò)節(jié)點(diǎn)互聯(lián)機(jī)制實(shí)現(xiàn)的,每個(gè)節(jié)點(diǎn)只訪問(wèn)本地內(nèi)存和存儲(chǔ),節(jié)點(diǎn)之間的信息交互與節(jié)點(diǎn)本身的處理是并行進(jìn)行的。因此,MPP系統(tǒng)在增加節(jié)點(diǎn)時(shí)性能基本上可以實(shí)現(xiàn)線性增加。3

16、) NUMANUMA系統(tǒng)內(nèi)的各節(jié)點(diǎn)通過(guò)互聯(lián)機(jī)制連接,當(dāng)某個(gè)節(jié)點(diǎn)需要訪問(wèn)遠(yuǎn)程內(nèi)存時(shí),需要等待。因此,NUMA系統(tǒng)在增加節(jié)點(diǎn)時(shí)性能無(wú)法線性增加。4.2 擴(kuò)展對(duì)比1) SMPSMP擴(kuò)展能力很差,目前2個(gè)到4個(gè)CPU的利用率最好。但是IBM的BOOK技術(shù),能夠?qū)PU擴(kuò)展到8個(gè)。 2) MPPMPP理論上可以實(shí)現(xiàn)無(wú)限擴(kuò)展,目前技術(shù)比較成熟的能夠支持512個(gè)節(jié)點(diǎn),數(shù)千個(gè)CPU進(jìn)行擴(kuò)展。 3) NUMANUMA理論上可以無(wú)限擴(kuò)展,目前技術(shù)比較成熟的能夠支持上百個(gè)CPU進(jìn)行擴(kuò)展。4.3 應(yīng)用對(duì)比a) SMP在聯(lián)機(jī)事務(wù)處理系統(tǒng)(OLTP,On-Line Transaction Processing OTLP)

17、中,如果用戶訪問(wèn)一個(gè)中心數(shù)據(jù)庫(kù),那么采用SMP系統(tǒng)結(jié)構(gòu)的效率要比采用MPP結(jié)構(gòu)要好。 b) MPP由于MPP系統(tǒng)不共享資源,相對(duì)而言,資源要比SMP多。當(dāng)需要處理的事務(wù)達(dá)到一定規(guī)模時(shí),MPP的效率要比SMP好。由于MPP系統(tǒng)要在不同處理單元之間傳送信息,在通訊時(shí)間少的時(shí)候,那么MPP系統(tǒng)可以充分發(fā)揮資源的優(yōu)勢(shì),達(dá)到高效率。c) NUMA從NUMA系統(tǒng)內(nèi)部集成了多個(gè)CPU,使系統(tǒng)具有較高的事務(wù)處理能力。由于遠(yuǎn)地內(nèi)存訪問(wèn)時(shí)延遠(yuǎn)長(zhǎng)于本地內(nèi)存訪問(wèn),因此需要盡量減少不同CPU模塊之間的數(shù)據(jù)交互。 5 NUMA策略及應(yīng)用5.1 NUMA策略NUMA策略可以基于CPU和內(nèi)存設(shè)定,如下所示:1) CPU分配策

18、略:序號(hào)策略說(shuō)明1cpunodebind規(guī)定進(jìn)程運(yùn)行在某個(gè)或某幾個(gè)node上2physcpubind規(guī)定進(jìn)程運(yùn)行在某個(gè)或某幾個(gè)core上2) 內(nèi)存分配策略:序號(hào)策略說(shuō)明1localalloc(默認(rèn)模式)總是在本地節(jié)點(diǎn)分配,失敗則在其它節(jié)點(diǎn)上分配2preferred在指定節(jié)點(diǎn)上分配,失敗則在其它節(jié)點(diǎn)上分配3membind指定的節(jié)點(diǎn)上分配,失敗也不能從其它節(jié)點(diǎn)上分配4interleave在所有節(jié)點(diǎn)或者指定的節(jié)點(diǎn)上交織分配注:每個(gè)進(jìn)程(或線程)都會(huì)從父進(jìn)程繼承NUMA策略,并分配有一個(gè)優(yōu)先node。NUMA結(jié)構(gòu)下的系統(tǒng)會(huì)提供兩個(gè)工具:numastat與numactl。接下來(lái),分別對(duì)其詳細(xì)介紹:1)

19、numastatnumastat用于顯示每個(gè)numa節(jié)點(diǎn)的內(nèi)存統(tǒng)計(jì)信息,如下所示:rootlocalhost # numastat node0 node1numa_hit 215856030 218396123numa_miss 1438 24043numa_foreign 24043 1438interleave_hit 35970 36105local_node 215851724 218301862other_node 574 118304對(duì)numastat命令輸出的各個(gè)參數(shù)進(jìn)行如下說(shuō)明:序號(hào)參數(shù)說(shuō)明1numa_hit內(nèi)存原計(jì)劃分配在該node上,最終成功分配在該node上2numa_m

20、iss內(nèi)存原計(jì)劃分配在別的node上,最終卻被分配在該node上3numa_foreign內(nèi)存原計(jì)劃分配在該node上,最終卻被分配在別的node上4interleave_hit內(nèi)存原計(jì)劃交織分配在某node上,最終內(nèi)存成功分配在某node上5local_node內(nèi)存分配在該node上,程序運(yùn)行在該node上(這里指CPU)6other_node內(nèi)存分配在node上,程序運(yùn)行在別的node上(這里指CPU)需要特別注意的是:如果綁定一個(gè)進(jìn)程在node0上運(yùn)行,內(nèi)存在node1分配(如:numactl N 0 m 1 ./a.out),并不會(huì)產(chǎn)生numa_miss。因?yàn)閚uma_miss并不是指

21、運(yùn)行的CPU和分配的內(nèi)存不在一個(gè)node上就產(chǎn)生numa_miss,而是指原計(jì)劃分配的內(nèi)存與最終分配的內(nèi)存不在同一個(gè)node上時(shí)產(chǎn)生的。2) numactlnumactl用于查看與控制進(jìn)程的CPU和內(nèi)存分配策略,如下所示:序號(hào)參數(shù)說(shuō)明1numactl -s顯示NUMA當(dāng)前的策略2numactl -H顯示每個(gè)numa節(jié)點(diǎn)的詳細(xì)信息3numactl C cpus設(shè)置進(jìn)程的CPU分配策略(cpunodebind策略)4numactl N nodes設(shè)置進(jìn)程的node分配策略(physcpubind策略)5numactl l設(shè)置進(jìn)程的內(nèi)存分配策略(localalloc策略)6numactl prefe

22、rred=nodes設(shè)置進(jìn)程的內(nèi)存分配策略(preferred策略)7numactl m nodes設(shè)置進(jìn)程的內(nèi)存分配策略(membind策略)8numactl -i nodes設(shè)置進(jìn)程的內(nèi)存分配策略(interleave策略)5.2 NUMA應(yīng)用通過(guò)一個(gè)實(shí)例來(lái)說(shuō)明NUMA的應(yīng)用,該實(shí)例有兩個(gè)程序組成:(詳見(jiàn)附錄)序號(hào)程序說(shuō)明1test1實(shí)現(xiàn)的功能是向操作系統(tǒng)申請(qǐng)14GB內(nèi)存,然后進(jìn)行sleep。2test2實(shí)現(xiàn)的功能是向操作系統(tǒng)申請(qǐng)2GB內(nèi)存,然后訪問(wèn)內(nèi)存進(jìn)行寫(xiě)操作。注:測(cè)定的操作系統(tǒng)一個(gè)node上只有16GB內(nèi)存,故Case設(shè)計(jì)成14GB+2GB。程序的執(zhí)行通過(guò)一個(gè)腳本start_run.

23、sh來(lái)控制,流程如下所示:1) 后臺(tái)啟動(dòng)一個(gè)sar進(jìn)程采集CPU信息2) 后臺(tái)啟動(dòng)test1進(jìn)程(使用numactl綁定CPU和內(nèi)存到node0上)3) 后臺(tái)啟動(dòng)test2進(jìn)程4) 循環(huán)采集10次numastat信息5) 等待test2進(jìn)程測(cè)定結(jié)束,殺掉sar進(jìn)程和test1進(jìn)程,程序運(yùn)行結(jié)束。為了體現(xiàn)NUMA的應(yīng)用,對(duì)程序test2分兩種情況來(lái)運(yùn)行:1) 不綁定采集的numa_miss信息如下:numa_miss數(shù)程序運(yùn)行前程序運(yùn)行后30,91743,858采集的numa內(nèi)存分配信息如下:(某一時(shí)刻)rootlocalhost testdir# cat numastat.log | less

24、Per-node process memory usage (in MBs) for PID 9489 (test2) Node 0 Node 1 Total -Huge 0.00 0.00 0.00Heap 0.00 0.00 0.00Stack 0.01 0.00 0.01Private 1072.08 976.36 2048.44- - - -Total 1072.09 976.36 2048.45采集的sar信息如下:rootlocalhost testdir# sar -f sar.log -P ALL | lessAverage: all 5.25 0.00 3.34 0.00 0

25、.00 91.41Average: 0 0.00 0.00 0.06 0.00 0.00 99.94Average: 1 0.06 0.00 19.24 0.00 0.00 80.71Average: 2 62.67 0.00 19.69 0.00 0.00 17.64Average: 3 0.00 0.00 0.00 0.00 0.00 100.00Average: 4 0.06 0.00 0.06 0.00 0.00 99.88Average: 5 0.06 0.00 0.00 0.00 0.00 99.94Average: 6 0.00 0.00 0.00 0.00 0.00 100.0

26、0Average: 7 0.00 0.00 0.06 0.00 0.00 99.94Average: 8 0.00 0.00 0.00 0.00 0.00 100.00Average: 9 0.00 0.00 0.06 0.00 0.00 99.94Average: 10 0.24 0.00 0.77 0.00 0.00 99.00Average: 11 0.00 0.00 0.00 0.00 0.00 100.00說(shuō)明:a) 由sar采集的信息可以看出,test2始終運(yùn)行在node0上。b) 由numastat采集的信息以及NUMA的默認(rèn)策略,可知test2所需的內(nèi)存原計(jì)劃全部在node0上

27、分配,但是在node0上分配1GB的內(nèi)存后,發(fā)現(xiàn)內(nèi)存不夠了,被迫在node1上分配了1GB內(nèi)存,從而導(dǎo)致產(chǎn)生numa_miss。c) 由于程序test2跨node訪問(wèn)了內(nèi)存,性能表現(xiàn)較差。2) 使用numactl綁定(numactl N 1 m 1 ./test2)采集的numa_miss信息如下:numa_miss數(shù)程序運(yùn)行前程序運(yùn)行后43,85843,858采集的numa內(nèi)存分配信息如下:(某一時(shí)刻)rootlocalhost testdir# cat numastat.log | lessPer-node process memory usage (in MBs) for PID 628

28、9 (test2) Node 0 Node 1 Total - - - Huge 0.00 0.00 0.00 Heap 0.00 0.00 0.00 Stack 0.00 0.01 0.01 Private 0.00 2011.52 2011.52 - - - - Total 0.00 2011.53 2011.53采集的sar信息如下:rootlocalhost testdir# sar -f sar.log -P ALL | lessAverage: all 3.90 0.00 4.18 0.00 0.00 91.92Average: 0 0.00 0.00 0.17 0.00 0.00

29、 99.83 Average: 1 0.00 0.00 0.00 0.00 0.00 100.00Average: 2 0.08 0.00 26.89 0.00 0.00 73.02Average: 3 0.08 0.00 0.00 0.00 0.00 99.92Average: 4 0.00 0.00 0.00 0.00 0.00 100.00Average: 5 0.08 0.00 0.00 0.00 0.00 99.92Average: 6 0.00 0.00 0.00 0.00 0.00 100.00Average: 7 46.63 0.00 21.90 0.00 0.00 31.47

30、Average: 8 0.00 0.00 0.00 0.00 0.00 100.00Average: 9 0.00 0.00 0.00 0.00 0.00 100.00Average: 10 0.08 0.00 1.17 0.00 0.00 98.75Average: 11 0.00 0.00 0.08 0.00 0.00 99.92說(shuō)明:a) 有numastat采集的信息和sar采集的信息可以看出,由于使用numactl綁定test2在node1上運(yùn)行與分配內(nèi)存,因此沒(méi)有numa_miss產(chǎn)生。b) 由于程序test2運(yùn)行和訪問(wèn)在都在node1,不存在跨node訪問(wèn),性能表現(xiàn)較好。需要注意的是:由于RHEL7系提供了一個(gè)新特性: AUTOMATIC NUMA BALANCING(默認(rèn)自動(dòng)打開(kāi),配置文件為/proc/sys/kernel/numa_balancing),會(huì)自動(dòng)遷移CPU或Memory使其在同一個(gè)node上,從而減少跨node訪問(wèn),減少numa_miss的產(chǎn)生,提供程序性能。附錄 測(cè)試代碼test1.c#include <unistd.h> #include <stdio.h> #inc

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論