天天看點

Intel PMEM的使用經驗和指南Optane Memory結構實驗系統和配置媒體性能特征Optane DIMM的最佳實踐

Optane Memory結構

結構總覽

英特爾的Cascade Lake處理器是第一個(也是目前唯一一個)支援Optane DIMM的CPU。Optane DIMM與普通的DRAM一樣位于記憶體總線上,并連接配接到處理器的iMC (integrated memory controller),如圖1(a)所示。圖中所示的CPU包含兩個iMC,每個iMC包含3個channel。

iMC位于ADR(asynchronous DRAM refresh )域中,其保證了資料從cache flush完成後,便可保證資料的持久性。或說ADR特性保證了在發生了掉電故障時,iMC可以将資料刷入3D-XPoint媒體(保證100us内,将資料寫入NVDIMM)。如圖1(b)所示,每個Optane DIMM的ADR區域都包含RPQ和WPQ( read and write pending queues ),當資料到達WPQ,便保證了資料不丢。因為,處理器的cache不屬于ADR域,是以隻有當屬于cache的資料寫入WPQ,才能保證持久性。

iMC與Optane DIMM 通過DDR-T接口以cache line粒度(64B)通信。DDR-T的接口允許異步指令和資料定時(asynchronous command and data timing)。

Intel PMEM的使用經驗和指南Optane Memory結構實驗系統和配置媒體性能特征Optane DIMM的最佳實踐

如圖1(b)所示, 對NVDIMM的通路首先到達DIMM上的控制器(本文中稱為XPController),該控制器協調對Optane媒體的通路。與SSD相似,Optane DIMM執行内部位址轉換以實作損耗均衡和壞塊管理,并為該轉換維護AIT (address indirection table)。

位址轉換後,将實際通路存儲媒體。由于3D-XPoint實體媒體的通路粒度為256B(文中稱為XPLine),是以,XPController會将較小的請求轉換為較大的256位元組的通路以提升性能。然而,因為同樣的原因,小資料量的存儲會變為RMW(read-modify-write)操作而導緻寫放大。 XPController有一個小的寫合并緩沖區(在本文中稱為XPBuffer),用于合并位址相鄰的寫操作。 由于XPBuffer屬于ADR域,是以到達XPBuffer的所有更新都是持久的。

Operation Modes

Optane DIMM支援兩種模式,Memory 模式和APP Direct模式。在Memory模式中,DRAM作為Optane DIMM的cache,而Optane DIMM作為易失的主存。在APP Direct模式中,Optane DIMM作為一個分開的PM,直接供其他應用如檔案系統使用。

如圖1(c)所示,Optane memory可以被配置為交錯模式(interleaved across channels and DIMMs)。在現有的平台中,支援的交錯大小為4 kB,這可以確定對單個page的通路将隻通路單個DIMM,而如果有六個DIMM,則大于24 kB的通路将通路所有DIMM。

ISA (Instruction Set Architecture) Support

在App Direct模式下,應用程式和檔案系統可以使用CPU指令通路Optane DIMM。 ISA為程式員提供了許多選擇來控制資料寫入的順序。

應用程式使用store指令來将資料寫入Optane DIMM,寫入的資料最終被持久化。 但是,store指令的順序可能被重排,而無法進行正确的故障恢複。 目前的Intel ISA提供了clflush和clflushopt指令可将cache line刷回記憶體,而clwb可以對高速緩存行進行write back(不會evict)。也可以使用非臨時性存儲(例如ntstore)繞過高速緩存,直接寫入記憶體。 所有這些指令都是非阻塞的,使用sfence指令可確定之前的高速緩存的重新整理,寫回或非臨時存儲操作是完整且持久的。

實驗系統和配置

系統描述

測試系統有兩個CPU槽(socket)。每個CPU為英特爾的Cascade Lake處理器。每個CPU有兩個iMC,每個iMC有3個記憶體通道(一個CPU共6個通道)。每個iMC記憶體通道綁定32GB DRR4 DIMM (2 socket × 6 channel × 32 GB/DIMM) 或 256GB Intel Optane DIMM (2 socket × 6 channel × 256 GB/DIMM) 。系統配置了384GB的DRAM和3TB的NVM。

實驗配置

本文主要測試,Optane DIMM作為一個持久性裝置(即APP Direct模式)的性能,同時總結其使用指南。

Linux通過在實體記憶體的連續範圍内建立pmem namespace 來管理持久記憶體。後背實際的媒體,可以由交錯(interleaved)或不交錯(non-interleaved)Optane memory支援,也可以通過DRAM仿真支援。 本文将測試這三種媒體的性能差異。

媒體性能特征

本章通過實驗資料從多元度的描述Optane DIMM的性能特征,其并不是簡單的比DRAM慢一些而已。這些特征的描述能夠使使用者更加高效的使用該媒體。

典型延遲(最好情況)

測試方法

讀延遲, 從順序和随機存儲器位址中讀取8B的資料的平均延遲。 為了消除cache和queue的影響,我們清空了CPU流水線,并在兩次讀操作之間使用memory fence(mfence)操作。

寫延遲,先将cache line 加載到cache中,然後測量下面兩個指令序列中的任意一個的延遲:

64-bit store +clwb + mfence; 
  ntstore + mfence。           

測試結果及說明

測量的結構反映的是軟體看到的媒體延遲,而不是底層媒體本身的延遲。

對于讀,包含以下部件産生的延遲:on-chip interconnect,iMC, XPController, 和實際的3D-Xpoint 媒體。

實驗結果(圖2)顯示,Optane的讀延遲比DRAM高2到3倍。 大部分差異是由于Optane的媒體延遲更大導緻的。 Optane也比DRAM更依賴于通路模式。 DRAM的随機通路和順序通路相比,性能差異為20%,而因為XPBuffer存在的原因,Optane的性能差異達80%。

對于寫,一旦資料到達iMC的ADR域,記憶體的store和fence指令就成功完成,是以DRAM和Optane的延遲相近。 非臨時存儲的開銷比使用高速緩存重新整理(clwb)的開銷更大。

Intel PMEM的使用經驗和指南Optane Memory結構實驗系統和配置媒體性能特征Optane DIMM的最佳實踐

一般來說,同一種測試下,Optane的延遲差異非常小,表現為測試資料的方差很小。 例外的是,Optane DIMM的順序讀操作的延遲方差更大,這是因為第一個高速緩存行(64B)通路将整個XPLine加載到XPBuffer中,随後的三個通路(因為測試讀時會清空高速緩存,這裡從存儲媒體的視角出發,故 256/64 - 1 = 3)可直接讀取緩沖區中的資料。

Tail Latency

測試中,load和store的延遲非常的穩定。然而,當通路集中在熱點(hot spot)時,延遲異常的store操作數會增加。圖3描述了尾部延遲和通路局部性之間的關系。 該圖描述了 99.9th、99.99th以及最大延遲與熱點大小的關系。

單個線程對一個熱點(為某個大小的循環緩沖區)進行2000萬個64位元組的寫操作。

Intel PMEM的使用經驗和指南Optane Memory結構實驗系統和配置媒體性能特征Optane DIMM的最佳實踐

異常點的數量(尤其是超過50μs的異常值)随着熱點大小的增加而減少,而DRAM不存在此種現象。這些峰值雖然出現頻率很低(占通路的0.006%),但是其延遲比普通的Optane通路高2個數量級。 懷疑這是由于磨損均衡(wear-leveling)或溫度過高(thermal concerns)造成的,但不确定。

帶寬

帶寬一般影響整個系統的吞吐。本文測試了不同并發下的随機/順序的讀/寫帶寬。

圖4展示了不同線程數目以256B的粒度通路相應媒體的順序讀寫的帶寬。對于寫操作使用了ntstore和clwb兩種方式。圖從左到右記錄的依次是interleaved DRAM、non-interleaved Optane、interleaved Optane的帶寬。對于non-interleaved Optane,所有的通路隻通路單個DIMM。

圖5展示的是通路的粒度變化的情況下的随機讀寫的帶寬。對于不同的測試,使用不同的線程數(圖中表示為 “讀線程數/ntstore線程數/store+clwb線程數”)以使得媒體獲得最佳性能。

實驗結果說明

DRAM帶寬不僅比Optane高,而且性能可以根據線程數進行可預測的擴充,直至DRAM帶寬飽和(圖4左),并且與通路大小無關(圖5左)。

Intel PMEM的使用經驗和指南Optane Memory結構實驗系統和配置媒體性能特征Optane DIMM的最佳實踐
Intel PMEM的使用經驗和指南Optane Memory結構實驗系統和配置媒體性能特征Optane DIMM的最佳實踐

Optane的結果截然不同。 首先,對于單個DIMM,最大讀帶寬是最大寫帶寬的2.9倍(圖5中,6.6 GB/s 和 2.3 GB/s),對于DRAM,讀寫性能差距較小(隻有1.3倍)。其次,除了交錯DIMM的讀操作之外,Optane的其他操作的性能與線程數的關系都是非單調的(圖4,具體原因見

):對于非交錯(即單個DIMM,圖4中)的情況,性能會在一到四個線程之間達到峰值,然後逐漸下降;對于交錯的情況,store + clwb操作的峰值可以保持到十二個線程,然後開始下降。 第三,Optane 256 B以下的随機讀寫的帶寬很低, 該拐點對應于XPLine的大小。

交錯(将通路分布在所有六個DIMM上)進一步增加了複雜性:圖4(右)和圖5(右)測試了六個交錯的NVDIMM的帶寬。 交錯将讀寫帶寬的峰值分别提高了5.8倍和5.6倍。 提升的倍數與DIMM的數量比對。 該圖的最顯着特征是當通路的粒度是4 kB時,有性能下降。這種下降是由iMC中的競争引起的,當每個線程随機通路的大小接近交錯大小時,下降将會達到最大值(具體原因見

)。

Optane DIMM的最佳實踐

為了建構基于Optane DIMM的系統并對其調優,基于實驗資料,本文将媒體的規律提煉為以下四個原則:

1.避免小于256 B的随機讀寫;

2.盡可能使用ntstore(non-temporal stores)進行大資料量的寫,以及控制CPU高速緩存的換出;

3.限制通路Optane DIMM的并發線程數;

4.避免NUMA通路(尤其對于是read-modify-write操作序列)。

下面詳細解釋這四個原則。

避免小資料量(小于256B)的随機讀寫

對于随機讀寫,圖5已說明了媒體帶寬與通路對象的大小關系。本節繼續探索小資料的随機寫。

Optane的資料更新,在内部媒體會進行read-modify-write操作。若更新的資料量小于内部操作的資料粒度(256B),會帶來寫放大,而使得更新效率低。

為了更好的描述下面的實驗現象,引入了EWR(Effective Write Ratio,由DIMM的硬體測量)的概念:其為iMC發出的位元組數除以實際寫入3D-XPoint媒體的位元組數,即為寫放大的倒數。EWR小于1表示,Optane媒體寫效率低。EWR也可以大于1,此時表示XP-Buffer做了寫合并(在記憶體模式中,因為DRAM的緩存作用,EWR也可以大于1)。

Intel PMEM的使用經驗和指南Optane Memory結構實驗系統和配置媒體性能特征Optane DIMM的最佳實踐

圖8展示了Optane DIMM的帶寬(三種store指令)與EWR的正相關的關系。一般而言,小資料量的存儲使得EWR小于1。 例如,當使用單個線程執行随機的ntstore時,對于64位元組的寫,EWR為0.25,對于256位元組通路,其EWR為0.98。

值得注意的是,雖然iMC僅以64B為機關通路DIMM,但是XPBuffer可以将多個64B的寫進行緩存,并合并為256B的Optane内部寫,是以256位元組更新是高效的。由上可知,如果Optane DIMM的通路具有足夠好的局部性,同樣可以高效地進行小資料量的存儲。 為了得到“怎樣的局部性才足夠”的命題結論,我們設計了一個實驗來測量XPBuffer的大小。 首先,我們配置設定N個XPLine大小(256B)的連續區域。 在實驗中,進行循環的寫資料。首先,依次更新每個XPLine的前半部分(128 B), 然後再更新每個XPLine的後半部分。 我們測量每一輪後EWR的值。 圖9顯示: N 小于64(即16 kB的區域大小)時,EWR接近于1,其表明,後半部分的通路命中了XPBuffer。 N 大于64時,寫放大進行了突變,其由XPBuffer miss急劇上升導緻。這表明,XPBuffer的大小為16KB。進一步的實驗表明,讀操作也會占用XPBuffer中的空間進而造成競争關系。

總結:避免小資料量随機寫,如果不可能避免,則将操作的資料集大小限制為每個Optane DIMM 16 KB。

Intel PMEM的使用經驗和指南Optane Memory結構實驗系統和配置媒體性能特征Optane DIMM的最佳實踐

使用ntstore進行大資料(大于256B)寫

一般通過下面操作進行資料寫入:store操作後,程式員可以通過clflush/clflushopt操作進行高速緩存evict或通過clwb操作進行寫回(write back),以将資料寫入至ADR域并最終寫至Optane DIMM;或者,通過ntstore指令繞過高速緩存直接寫入Optane DIMM。在進行完上述某種操作後,再進行sfence操作可確定先前的evict,write back和ntstore操作的資料變成持久的。寫資料時,采用上述何種操作對性能影響很大。

Intel PMEM的使用經驗和指南Optane Memory結構實驗系統和配置媒體性能特征Optane DIMM的最佳實踐

圖12 展示了順序寫操作的性能資料(圖左為帶寬,圖右為延遲)。測試中,使用三種寫方式:ntstore, store + clwb, 以及 store, 每次操作完後再進行一次 sfence操作。測試使用6個線程,因為該配置下所有的測試都能達到最好的性能。

對于寫超過64B的資料,每store 64B進行cache的flush操作(相比于不進行flush操作)獲得的帶寬會更大(圖12中的store+ clwb V.S. store)。我們認為,發生這種情況是因為,讓高速緩存自然地換出緩存行,會給到達Optane DIMM的資料流增加不确定性。 主動換出緩存可確定通路保持順序性。 EWR的值驗證了該猜想:增加cache換出邏輯可以将EWR從0.26增加到0.98。

對于超過512 B的通路,ntstore的延遲比store + clwb更低(圖12右)。對于超過256 B的通路,ntstore操作的帶寬也最高(圖12左)。這是因為: clwb必須在執行實際存儲操作之前,其需将資料加載到CPU的本地高速緩存中,進而占用了Optane DIMM的部分帶寬。 而ntstore通過繞過高速緩存,避免了這種不必要的讀取,進而獲得了更高的帶寬。

Intel PMEM的使用經驗和指南Optane Memory結構實驗系統和配置媒體性能特征Optane DIMM的最佳實踐

圖13顯示了sfence如何影響性能。 測試時,使一個線程在Optane-NI上進行大小不同的順序寫操作。 在每個高速緩存行store操作後(每64B)或在整個寫入store後(寫入大小),進行clwb操作。 每個寫操作後,再進行sfence操作,以確定整個寫操作是持久的(上述整個過程稱為一個“sfence間隔”)。 結果顯示當寫入大小為256 B時,帶寬達到峰值(clflushopt對中等大小的寫入進行了優化)。 在寫入中等大小的資料後,再進行重新整理操作不會影響帶寬,但是當寫入的大小超過8 MB時,寫入後再進行重新整理操作會導緻性能下降,因為其導緻了高速緩存容量的失效,進而使得EWR升高。

限制通路Optane DIMM的并發線程數

系統應盡量減少同時通路單個DIMM的并發線程數。Optane DIMM有限的存儲性能,以及iMC和Optane DIMM上有限的緩沖區共同限制了其同時處理多個線程請求的能力。 下面的兩種競争說明了,應限制通路Optane DIMM的并發線程數。

XPBuffer的競争。對XPBuffer中緩存空間的争用将導緻逐出次數增加,觸發寫3D-XPoint媒體,這将使EWR降低。 圖4(中)顯示了這種效果:線程數增加時,性能無法擴充。 例如,與具有0.98的EWR的單線程相比,8線程進行順序的ntstore操作,其EWR僅為0.62和帶寬也隻有69%。

iMC中的競争。圖15說明了,當多個核對單個DIMM操作時,iMC中有限的隊列容量如何影響性能。該實驗使用固定數量的線程(24個線程進行讀,6個線程進行ntstore)對6個交錯的Optane DIMM進行讀/寫操作。每個線程随機通路N個DIMM(線程間分布均勻)。随着N的增加,針對每個DIMM的寫入次數會增加,但是每個DIMM的帶寬會下降。可能的原因是XPBuffer的容量有限,但是EWR仍然非常接近1,是以性能問題肯定出在iMC中。

Intel PMEM的使用經驗和指南Optane Memory結構實驗系統和配置媒體性能特征Optane DIMM的最佳實踐

在我們測試平台中,單個線程多達256B的資料可在WPQ緩沖區中排隊。我們的假設是,由于Optane DIMM的速度相比于讀/寫鍊路的其他部件很慢,是以WPQ中的資料消耗的很慢,而導緻隊頭阻塞效應。N的增加會增加DIMM的争用,是以會增加“某個處理器因等待其之前的store操作完成而被阻塞”的可能性。

圖5(右)展示了此現象的另一個示例:當對交錯的Optane DIMM進行随機4 KB通路時,Optane帶寬急劇下降。 Optane記憶體交錯類似于磁盤陣列中的RAID-0:塊大小為4 KB,條帶大小為24 KB(一個記憶體插槽上的6個DIMM的每個都占用4 KB的連續塊)。圖5(右)中的工作負載的通路分布在這些交錯的DIMM上,導緻特定DIMM的競争激增。

随着通路大小的增加,線程饑餓發生的更加頻繁:在通路的大小等于交錯的大小(4 kB)時,下降最為嚴重。對于大于交錯大小的通路,每個核都開始将其通路分布在多個DIMM中,進而使得負載更加均勻。當寫入的資料大小為24 kB和48 kB,出現了性能的小峰值,其通路在6個DIMM上完美分布。

隻要在DIMM上不均勻地分布4 kB通路,就會出現這種性能下現象。同時,這可能是實踐中的常見情況。例如,具有4 kB頁的頁緩存系統可能會表現不佳。

避免對遠端NUMA節點的混合或多線程通路

Optane的NUMA效應遠大于DRAM,是以應更加努力地避免跨插槽的存儲器通信。對于讀寫混合且包含多線程通路的情況,其成本特别高。在本地和遠端Optane記憶體之間,典型的讀延遲差異分别為1.79倍(順序)和1.20倍(随機)。對于寫操作,遠端Optane的延遲是本地的2.53倍(ntstore)和1.68倍。而對于帶寬,遠端Optane可以在最佳線程數下實作本地讀/寫帶寬的59.2%和61.7%(本地讀取為16,遠端讀取為10,本地和遠端寫入為4)。

上面的性能下降的比例類似于遠端DRAM相較于本地DRAM。但是,當線程數增加或為讀寫混合負載時,Optane的帶寬将急劇下降。根據我們掃描測試的結果,在相同工作負載下,遠端Optane相比于本地的帶寬差距可能超過30倍,而DRAM的隻有3.3倍(未通過圖展示具體資料)。

Intel PMEM的使用經驗和指南Optane Memory結構實驗系統和配置媒體性能特征Optane DIMM的最佳實踐

在圖17中,我們展示了調整讀寫比例會改變本地和遠端通路Optane的帶寬。圖中展示了一個線程和四個線程的性能。針對所有測試的通路模式,本地Optane記憶體帶寬随着線程數增加(增加到4)而增加。對于本地和遠端通路,單線程帶寬差距不大。而對于多線程通路,随着通路壓力的提高,遠端通路性能會更快下降,進而導緻相對于本地通路而言性能較低。

繼續閱讀