1. 程式人生 > >Memory part 4:NUMA support

Memory part 4:NUMA support

1.硬體層面解決NUMA

在part2的figure2.3中,

我們瞭解到,在一些機器上,不同的區域訪問特定的記憶體花銷不一樣。例如,CPU1對它專屬的記憶體的訪問速度快於對CPU2專屬記憶體的訪問速度。CPU1訪問CPU2的記憶體需要‘多走路’,這個‘多走的路’叫做NUMA factor。

關於NUMA,這是大型計算機才有的問題。這個大型計算機有很多的CPU訪問同一個記憶體。就像上面的例子。我們使用的個人PC一般不涉及NUMA問題,對記憶體的訪問也都是通過一個北橋走的。對於需要解決NUMA問題的大型計算機,他們是如何設計CPU之間的路徑的?

這是關於CPU連線的拓撲。圖2.3的抽象就是圖5.1中的C=2的情況。
關於解決NUMA問題,很多廠商設計了不同的CPU,在此不表。

更常用的的一種方法是:商用計算機進行組網,通過高速網路相連。但這就不涉及NUMA問題,因為他們並沒有使用共享的地址空間,因而不在討論範圍內。

2.OS層面解決NUMA

我們還可以在軟體層面解決非一致記憶體訪問(NUMA)的問題。
在支援NUMA的機器中,OS必須考慮到記憶體分散這一特性(即不同的cpu有其本地的memory)。例如,在一個CPU中,建立一個程序,給這個程序分配的記憶體應該是當前CPU本地(local)的memory。否則,跨U訪問花銷就大了。當其他的CPU不得不訪問這個程序的記憶體時,那就得多走路了,但OS可以幫忙把這塊記憶體拷貝到其他cpu的記憶體中。但這實現起來也很麻煩。

為了避免情況更糟,一般OS不要把一個節點(CPU的記憶體)的程序或執行緒移動到另一個節點(另一個CPU的記憶體)。否則,處理很麻煩。但作死移了,有兩種解決方案:一是把落腳的記憶體當作暫時的,時機成熟(我也不知道)再移回去。二是移動的時候,儘量移動到和之前物理頁緊鄰的頁上。

由於NUMA,對於程序來說,並不是所有的記憶體都是同等的。有的記憶體都用完了,有的一點兒沒用。解決這個問題,需要在記憶體分配的時候,不要跨U(記憶體)分配,並且把所有記憶體stripe the memory(?).所有記憶體同等看待。但一個副作用就是,很容易就存在程序跨U(記憶體)移動。對於NUMA不明顯的機器,這種方法可以接受,但並非最優。

上面這種記憶體分配方法是最保守的,是為了不使OS出現致命錯誤。在linux中,os給了每個程序分配記憶體所用何種方法的自由。

3.後續

  • 系統關於CPU cache的資訊
  • 跨U訪問的花銷

請參考原文

相關推薦

Memory part 4NUMA support

1.硬體層面解決NUMA 在part2的figure2.3中, 我們瞭解到,在一些機器上,不同的區域訪問特定的記憶體花銷不一樣。例如,CPU1對它專屬的記憶體的訪問速度快於對CPU2專屬記憶體的訪問速度。CPU1訪問CPU2的記憶體需要‘多走路’,這個‘

《產品經理面試攻略》PART 4筆試與面試

筆試題型和答題注意事項 考察維度 1)產品知識類(讀書) 2)網際網路知識類(知乎、36Kr、人人都是產品經理、億歐網) 3)熱點知識類(微信公眾號:i199it、techxue)

An introduction to pmemobj (part 4) - transactional dynamic memory allocation

參考連結:https://pmem.io/2015/06/17/tx-alloc.html TX_** 系列函式的定義 參考連結:https://github.com/pmem/pmdk/blob/master/src/include/libpmemobj/tx.h Homework

每個程式設計師都應該瞭解的 CPU 快取記憶體 英文原文Memory part 2: CPU caches

現在的CPU比25年前要精密得多了。在那個年代,CPU的頻率與記憶體匯流排的頻率基本在同一層面上。記憶體的訪問速度僅比暫存器慢那麼一點點。但是,這一局面在上世紀90年代被打破了。CPU的頻率大大提升,但記憶體匯流排的頻率與記憶體晶片的效能卻沒有得到成比例的提升。並不是因為

Unreal Engine 4 系列教程 Part 1入門

原文:Unreal Engine 4 Tutorial for Beginners: Getting Started 作者:Tommy Tran譯者:Shuchang Liu 本篇教程將引導你安裝Unreal Engine 4引擎,瞭解基本操作介面,並建立你的第一個遊戲物體。 Unreal Eng

C++發哥筆記(4)類的繼承

rcp 繼承 特點 face 系列 表示 導致 編譯 代碼 繼承 在C++裏,有繼承的語法來表示is kind of的關系 class Tutorial { }; class VideoTutorial : public Tutorial { }; 語法:class

多線程編程-- part 4 線程間的通信

如果 方法 notify 實例 static monitor 相關 線程 異常 線程間的相互作用   線程之間需要一些協調通信,來共同完成一件任務。   Object類相關的方法:notify(),notifyAll(),wait()。會被所有的類繼承,這些方法是fin

【JAVAWEB學習筆記】網上商城實戰4訂單模塊

接收 筆記 網上商城 詳情 src head 分頁查詢 cnblogs logs 今日任務 完成訂單模塊的功能 1.1 訂單 模塊的功能 1.1.1 我的訂單: 【我的訂單的查詢】 * 在header.jsp中點擊我的訂單. * 提交到Servlet:

ESP8266學習筆記4ESP8266的SmartConfig

rtc 訂閱號 new 例程 detail smart ted tracking 不能 今天花了將近一天的時間來研究ESP8266的SmartConfig功能,這個應該算是wifi雲產品的標配。這篇文章先把SmartConfig操作一遍,我還寫了還有一篇文章梳理了物理層

Web前端開發實戰4導航菜單(一)

pan 解決 博文 xmlns 背景圖 20px mar 水平 經典 在前面的博文中我們提到橫向一級菜單,這裏我們來看看導航菜單。導航菜單種類非常多,可是制作原理都是大同 小異的。這裏看的比二級下拉式菜單還簡單。來看一些站點上的導航菜單:

node.js零基礎詳細教程(4)node.js事件機制、node異步IO操作

nod server nbsp node i++ 兩個 con 錯誤 定時器 第四章 建議學習時間3小時 課程共10章 學習方式:詳細閱讀,並手動實現相關代碼 學習目標:此教程將教會大家 安裝Node、搭建服務器、express、mysql、mongodb、編寫後臺業務邏

DCOS實踐分享(4)如何基於DC/OS整合SMACK(Spark, Mesos, Akka, Cassandra, Kafka)

lec attribute 種子 bst 均衡器 all connect www pro 這篇文章入選CSDN極客頭條 http://geek.csdn.net/news/detail/71572 當前,要保證業務的市場競爭力,僅靠設計一個可用並且好看的產品,已經完全不

Bat腳本學習-4Oracle自動備份還原腳本

我們 括號 div local delay != 產生 註意 路徑名 從同事那弄到一份Oracle自動備份還原的腳本,看上去很強大,苦在bat語法不熟,查了半天文檔,先弄明白了一小段 @echo off REM 在批處理中,我們可以用setloacl ENABLEDEL

深度學習 Deep Learning UFLDL 最新Tutorial 學習筆記 4Debugging: Gradient Checking

style inline add tom radi posit math size tutorial 1 Gradient Checking 說明前面我們已經實現了Linear Regression和Logistic Regression。關鍵在於代價函數Cost Fun

Azure Stack技術深入淺出系列4 Azure Stack自定義虛擬機鏡像和Gallery Item

azurestack 雲計算 微軟 混合雲Azure Stack環境中服務的提供者或運營者從微軟變成了Azure Stack集成環境的運營者,通過Azure Stack的MarketPlace,我們可以根據用戶的特定需求,提供一些定制化的應用,獲得與公有雲不一樣的用戶體驗。本文將主要介紹如何在Azure St

Linux 7個運行級別(0關機,停機模式、1單用戶模式、2多用戶模式、3完整的多用戶文本模式、4系統未使用,保留一般不用、5圖形化模式、6重啟模式)、重置root密碼方法

oca alt 開機重啟 正常 說明 特殊情況 其中 ice root權限 init是Linux系統操作中不可缺少的程序之一。init進程,它是一個由內核啟動的用戶級進程。內核會在過去曾使用過init的幾個地方查找它,它的正確位置(對Linux系統來說)是/

轉錄組入門(4)了解參考基因組及基因註釋

evel pin tps 下載安裝 剪切 坐標系 sem 2016年 ota 任務列表 1.在UCSC下載hg19參考基因組; 2.從gencode數據庫下載基因註釋文件,並且用IGV去查看感興趣的基因的結構,比如TP53,KRAS,EGFR等等。 3.截圖幾個基

強化學習(David Silver)4免模型學習

叠代 ack 方差 自舉 組合 a* 最小二乘 求和 效率 0、為什麽免模型學習? PS:課程中叠代的值是值函數;周誌華老師的西瓜書中叠代的是狀態值函數;課程中叠代的是狀態-動作值函數 1、蒙特卡洛方法:直接通過采樣求和(v(s) = S(s)/n(s),其中S(s) =

強化學習(David Silver)4免模型控制

sil 對比 rsa isod 頻率 模型 找到 使用 采樣 1、一般的策略叠代優化的方法 1)策略評估 2)策略改善 2、model free的策略叠代優化的方法 基於v(s)的優化需要MDP,基於Q的優化不需要,所以策略是 1)使用Q函數策略評估 2)使用厄普西隆貪心策

802.11ax前瞻4802.11ax與HiperLan

大小 思想 丟失 content 失敗 控制 ont col smi 序言在早期wi-fi發展過程中,歐洲還出現過一個同期的無線局域網協議。HiperLan 。所謂網絡發展始終是“分久必合。合久必分”。不管是有線網絡當前SDN的引入。還是無線網絡下802.11ax協議的