[發明專利]高性能計算機NUMA感知的線程和內存資源優化方法與系統有效
| 申請號: | 201410677736.2 | 申請日: | 2014-11-21 |
| 公開(公告)號: | CN104375899A | 公開(公告)日: | 2015-02-25 |
| 發明(設計)人: | 莫則堯;張愛清;楊章;田鴻運 | 申請(專利權)人: | 北京應用物理與計算數學研究所 |
| 主分類號: | G06F9/50 | 分類號: | G06F9/50 |
| 代理公司: | 北京三友知識產權代理有限公司 11127 | 代理人: | 王天堯 |
| 地址: | 100088*** | 國省代碼: | 北京;11 |
| 權利要求書: | 查看更多 | 說明書: | 查看更多 |
| 摘要: | |||
| 搜索關鍵詞: | 性能 計算機 numa 感知 線程 內存 資源 優化 方法 系統 | ||
技術領域
本發明涉及計算機技術領域,尤其涉及高性能計算機NUMA(Non-Uniform?Memory?Access,非一致內存訪問)感知的線程和內存資源優化方法與系統。
背景技術
當前,主流的高性能計算機結點大多采用DSM(Distributed?Shared?Memory,分布式共享存儲結構)設計。如圖1所示,基于DSM體系結構設計的計算結點,每塊CPU(Center?Process?unit,中央處理單元,及處理器)既可以通過CPU內的內存控制器訪問自身的內存模塊(本地內存),也可以通過高速互聯網絡訪問其它CPU的內存模塊(遠端內存)。訪問遠端內存的代價高于本地內存,在部分系統上甚至高出數倍,這樣的訪存特性稱為NUMA(Non-Uniform?Memory?Access,非一致內存訪問)。DSM的NUMA特征給應用程序,特別是科學工程計算領域的應用程序帶來巨大的性能挑戰。
對應用程序而言,要充分發揮DSM體系結構的性能,關鍵在于減少應用程序的遠地訪存行為,提高訪存局部性。然而當前的應用程序和操作系統存在如下兩方面的缺陷:
一、操作系統無法感知應用程序的訪存局部性需求
操作系統對線程的調度沒有考慮到應用程序的訪存局部性需求,可能會將執行線程調度到與其內存不相鄰的處理器核上,這就可能導致遠端訪存的發生,從而降低應用程序的執行性能。
二、應用程序編程模型內存管理無法做到NUMA感知
隨著高性能計算機規模的不斷增長,越來越多的高性能數值模擬程序采用基于MPI+OpenMP的“結點間多進程并行,結點內多線程并行”嵌套并行編程模型。在這樣的編程模型中,單結點內的多線程并行程序由于共享地址空間而無法分辨物理內存的位置,從而導致遠程內存分配,進而造成應用程序的性能損失。
現有技術中還提出First-Touch內存分配策略+Auto-Migration自動頁遷移技術,該技術實現為:物理內存頁在首次被訪問時分配,并盡可能分配在發起訪問的線程或進程所在的CPU本地內存上。其中,內存頁是操作系統進行內存管理的最小粒度。在常見的基于x86處理器的Linux操作系統上,內存頁的大小通常為4KB。如果在一段時間內某個頁面總是發生遠程訪問,則將該頁面遷移到發生訪問的線程運行所在的CPU本地內存上。然而,該方案存在如下技術缺陷:
(1)頁遷移的開銷大,且具有滯后性。
(2)First-Touch內存分配策略和Auto-Migration自動頁遷移技術無法準確預知程序的訪存行為,可能導致不恰當的內存遷移,造成應用程序的遠程內存訪問。譬如:操作系統將執行線程調度到線程初始執行CPU之外的其它CPU核上運行,此時會產生遠地訪存行為,經過一段時間的探測后,自動頁遷移技術將該內存頁遷移到線程所在CPU的本地內存上。如果操作系統再度將相應的執行線程調度到別的CPU核上,有可能再次引發內存頁遷移。來回的頁遷移會極大的增大應用程序的訪存開銷,降低應用程序執行性能。
現有技術還提出一種LibNUMA內存管理庫。該方案中,根據用戶設定的內存親近性策略,調用相應的內核態接口設置相應的內存區的內存親近性策略,為用戶分配指定SMP(Symmetrical?Multi-Processing,對稱多處理器共享存儲結構)模塊的內存頁。其中,SMP模塊是在一個DSM結點內部,由多個CPU以及掛載在該SMP模塊上的內存所組成的計算資源模塊,在SMP模塊內部的處理器核對該SMP模塊上的內存訪問具有相同的訪存性能。DSM結點是具有DSM體系結構特征的計算結點。LibNUMA內存管理庫對于內存的申請和釋放以操作系統的內存管理為基礎,采用固定大小的內存頁為基本粒度,例如對于常見的基于x86處理器的Linux操作系統而言,其內存頁面的大小通常為4KB,如果開啟了HugePage技術,其內存頁面更是可擴大到2MB。然而,仍然存在如下技術缺陷:
(1)管理粒度較大,不適應應用程序的細粒度訪存需求。對于數值模擬程序而言,其訪存需求以不定尺寸的內存塊(variable?size?block,由應用程序申請的一塊連續內存)為基本單位,這些內存塊可以從幾個Byte到幾個MB不等,而LibNUMA庫的最小管理單位為內存頁,很多時候,一個內存頁的大小可以包含很多個內存塊,如果應用程序頻繁的申請細粒度內存,將造成極大的內存資源浪費。
該專利技術資料僅供研究查看技術是否侵權等信息,商用須獲得專利權人授權。該專利全部權利屬于北京應用物理與計算數學研究所,未經北京應用物理與計算數學研究所許可,擅自商用是侵權行為。如果您想購買此專利、獲得商業授權和技術合作,請聯系【客服】
本文鏈接:http://www.szxzyx.cn/pat/books/201410677736.2/2.html,轉載請聲明來源鉆瓜專利網。





