[發明專利]一種基于gperftools的內存管理方法在審
| 申請號: | 201711071210.X | 申請日: | 2017-11-03 |
| 公開(公告)號: | CN107766158A | 公開(公告)日: | 2018-03-06 |
| 發明(設計)人: | 劉長生 | 申請(專利權)人: | 鄭州云海信息技術有限公司 |
| 主分類號: | G06F9/50 | 分類號: | G06F9/50 |
| 代理公司: | 濟南舜源專利事務所有限公司37205 | 代理人: | 張亮 |
| 地址: | 450000 河南省鄭州市*** | 國省代碼: | 河南;41 |
| 權利要求書: | 查看更多 | 說明書: | 查看更多 |
| 摘要: | |||
| 搜索關鍵詞: | 一種 基于 gperftools 內存 管理 方法 | ||
技術領域
本發明涉及服務器內存管理領域,具體涉及一種基于gperftools的內存管理方法。
背景技術
glibc是GNU發布的libc庫,即c運行庫。glibc是linux系統中最底層的api,幾乎其它任何運行庫都會依賴于glibc。glibc除了封裝linux操作系統所提供的系統服務外,它本身也提供了許多其它一些必要功能服務的實現。由于glibc囊括了幾乎所有的UNIX通行的標準,可以想見其內容包羅萬象。而就像其他的UNIX系統一樣,其內含的檔案群分散于系統的樹狀目錄結構中,像一個支架一般撐起整個操作系統。在GNU/Linux系統中,其C函式庫發展史點出了GNU/Linux演進的幾個重要里程碑,用glibc作為系統的C函式庫,是GNU/Linux演進的一個重要里程碑。
在Linux操作系統中,目前使用的glibc庫中的內存管理在多線程環境中申請內存時會有大量的鎖的競爭,內存的申請與釋放的效率比較低,而gperftools提供了一種基于線程緩存的內存管理庫,提升多線程并發環境下訪存性能,通過基于gperftools改進后的內存管理庫可以結合內存大頁機制進一步提升多線程并發環境下的訪存性能。gperftools是google開發的一款非常實用的工具集,主要包括mallocfree內存分配器tcmalloc;基于tcmalloc的堆內存檢測和內存泄漏分析工具heap-profiler,heap-checker;基于tcmalloc實現的程序CPU性能監測工具cpu-profiler。上述所說的三種工具在服務器進程的性能分析監控,定位內存泄漏,尋找性能熱點,提高mallocfree內存分配性能的各個方面上都非常成功。
在Linux操作系統中,使用的是gperftools提供的內存管理方法,使用線程緩存減少內存申請時的鎖的競爭,通過替換當前環境中使用的malloc及free函數,使用新的malloc及free函數。Linux系統下使用gperftools雖然能夠利用線程緩存很好的解決內存申請時的鎖的競爭問題,但該庫在向系統申請內存頁時沒有使用大頁機制,在內存量比較大的環境中訪存的性能會由于TLB的大量miss而下降。
針對這種情況,本申請發明一種基于gperftools的內存管理方法,通過本發明所述的內存管理方法,可以改進并實現在內存申請時將線程緩存機制與內存的大頁機制相結合。
發明內容
本發明的主要實現方式為將基于線程緩存的內存管理與系統的大頁機制相結合,即減少了多線程環境中線程申請內存對鎖的競爭,同時提升了訪存時的TLB命中率,從而提升了訪存性能。
具體地,本申請請求保護一種基于gperftools的內存管理方法,其特征在于,該方法具體包括如下步驟:
在系統中預先設置一定數量的大頁;
在運行程序時,預先為每個線程緩存一部分內存;
如果線程申請內存,則直接從本線程的緩存中獲取內存;
當線程緩存中的內存不足時向系統申請內存時使用預先設置的內存大頁機制,并將內存放入線程緩存中。
如上所述的基于gperftools的內存管理方法,其特征還在于,在系統中預先設置一定數量的大頁是通過/proc/sys/vm/nr_hugepages在系統中設置一定數量的大頁。
如上所述的基于gperftools的內存管理方法,其特征還在于,該內存管理方法還可以擴展到smp環境下的多線程運行環境。
附圖說明
圖1、本發明所述內存管理方法的流程示意圖
具體實施方式
本方法的具體實現是由多線程內存分配管理模塊、系統內存申請模塊兩個模塊實現。其中多線程內存分配管理模塊用于基于線程緩存的內存分配管理,系統內存申請模塊用于當線程緩存中的內存不足時向系統申請內存。
多線程內存分配管理模塊的主要功能是,先為每個線程緩存一部分內存,當線程申請內存時直接從本線程的緩存中獲取內存,避免了鎖的競爭,加快內存分配效率;當線程緩存中的內存不足時向系統申請內存并將內存放入線程緩存中。
系統內存申請模塊的主要功能是,首先通過/proc/sys/vm/nr_hugepages在系統中設置一定數量的大頁,然后當向系統申請內存時使用內存大頁機制,提升訪存時的TLB命中率,從而提升系統的訪存性能。下面通過一個實施例對本發明所述的具體實現步驟進行說明。
具體流程如圖1所示。
在系統中預先設置一定數量的大頁;
在運行程序時,預先為每個線程緩存一部分內存;
該專利技術資料僅供研究查看技術是否侵權等信息,商用須獲得專利權人授權。該專利全部權利屬于鄭州云海信息技術有限公司,未經鄭州云海信息技術有限公司許可,擅自商用是侵權行為。如果您想購買此專利、獲得商業授權和技術合作,請聯系【客服】
本文鏈接:http://www.szxzyx.cn/pat/books/201711071210.X/2.html,轉載請聲明來源鉆瓜專利網。





