成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

Linux大頁與透明大頁

IT那活兒 / 1892人閱讀
Linux大頁與透明大頁

點(diǎn)擊上方“IT那活兒”,關(guān)注后了解更多精彩內(nèi)容?。。?/span>




前言




最近看著手頭維護(hù)的數(shù)據(jù)庫服務(wù)器,發(fā)現(xiàn)物理內(nèi)存是越來越大,500G起步,TB也不在話下。都知道數(shù)據(jù)庫是一種吃內(nèi)存的軟件,但是面對(duì)如此巨大的物理內(nèi)存,如何高效的使用又成了一個(gè)話題,于是各家數(shù)據(jù)庫軟件廠商針對(duì)這個(gè)問題都引入了參數(shù)調(diào)優(yōu)。

比如oracle的use_large_pages,mysql的large_pages,postgres的huge_pages等參數(shù),都是用來告訴數(shù)據(jù)庫是否使用大頁模式的內(nèi)存策略。





大頁vs透明大頁




這里有個(gè)關(guān)鍵詞就是 大頁(huge page),我們以postgres為例來查一下他們的文檔解釋:

其中有2段話比較重要,第一段就是說使用大頁(huge page)能夠縮小page tables,減少cpu在內(nèi)存管理上的的系統(tǒng)開銷,提高性能注意依賴于操作系統(tǒng)的大頁配置情況。而第二段意思說在Linux/FreeBSD這類操作系統(tǒng)上還有一種自動(dòng)的大頁(huge page)管理策略稱之為透明大頁(transparent  huge page/ THP), 而THP經(jīng)常會(huì)導(dǎo)致數(shù)據(jù)庫性能下降,hang之類的,需要禁用這個(gè)THP策略。作為oracle老司機(jī)一看這個(gè)TPH就很懂,不管是MOS上的文檔,還是處理過的案例都是一茬一茬的。如下:

由于THP引起大量的重啟、以及性能問題 Oracle強(qiáng)烈建議客戶關(guān)閉THP特性。

經(jīng)過數(shù)據(jù)庫的文檔描述我們知道,數(shù)據(jù)庫廠商都建議啟用大頁來提升性能,并且都強(qiáng)烈建議關(guān)閉透明大頁以免引起各類故障。接下來我們就來深入了解一下這2個(gè)點(diǎn):

大頁(huge page/large page):

我們以rhel的文檔為參考,如下:

文檔主要描述linux大多數(shù)頁為標(biāo)準(zhǔn)頁4k,當(dāng)內(nèi)存較大時(shí)建議配置大頁,降低開銷之類的。

Linux內(nèi)存采用段頁式管理,這里我們不在深入探討。物理內(nèi)存會(huì)按照標(biāo)準(zhǔn)頁(page)4k來進(jìn)行劃分,所有的4k頁打包在一塊就是page tables,比較簡(jiǎn)單。當(dāng)物理內(nèi)存為100G時(shí) page tables=(100*1024*1024/4)。

由此可以確認(rèn)page tables與物理內(nèi)存成正比關(guān)系,隨著物理內(nèi)存的增長(zhǎng),page tables 則會(huì)越來越龐大不利于管理,損耗就會(huì)逐步上升。舉個(gè)例子:當(dāng)我們口袋里有1000塊的1元時(shí),錢包都炸裂了,可以想象這是多么恐怖的一件事。此時(shí)我們就需要使用50和100的單位了。這個(gè)單位就是具體的 huge page size,通常在linux中為2048k,也就是2M。當(dāng)巨量的數(shù)據(jù)庫內(nèi)存使用2M 的大頁時(shí),產(chǎn)生的page tables則相對(duì)較小,page table的理開銷則相對(duì)較小,從而提升系統(tǒng)性能。如下圖:

實(shí)際數(shù)據(jù)庫一般使用共享內(nèi)存,大量的用戶連接進(jìn)程attach到一個(gè)巨大的共享內(nèi)存段(page table)時(shí),也會(huì)產(chǎn)生隱性開銷,比如進(jìn)程fork過慢導(dǎo)致數(shù)據(jù)庫連接建立緩慢等等。搞清楚了大頁原理,我們?cè)谠O(shè)置數(shù)據(jù)庫大頁時(shí)則相對(duì)簡(jiǎn)單了,一般計(jì)算公式為:

大頁數(shù)=共享內(nèi)存(GB) *1024/2,當(dāng)我們算出頁量時(shí),設(shè)置Linux 參數(shù)vm.nr_hugepages就可以了,如下:

圖中我們使用計(jì)算器求出3G內(nèi)存的頁數(shù),然后設(shè)置nr_hugepages使之生效,就是HugePages_Total,當(dāng)然我們這里沒有使用所以大頁都是Free狀態(tài). 注意寫入sysctl.conf中后可以永久生效。

透明大頁(transparent huge page / THP)


老樣子先查一下rhel的文檔描述,如下:

主要描述由于上文的大頁配置為手動(dòng)模式,不是很靈活,于是內(nèi)核又搞出了一個(gè)自動(dòng)分配大頁的技術(shù),用來代替手動(dòng)分配大頁。以及THP主動(dòng)性的分配連續(xù)大頁內(nèi)存以及頻繁的page compact等可能會(huì)導(dǎo)致內(nèi)存分配延遲,引發(fā)性能問題。

關(guān)閉也很簡(jiǎn)單,如下:

# echo never > /sys/kernel/mm/transparent_hugepage/enabled

#
 或者修改/etc/grub.conf 添加transparent_hugepage=neve





總結(jié)



最后我們總結(jié)一下,實(shí)際在數(shù)據(jù)庫服務(wù)器上,巨大的共享內(nèi)存段屬于啟動(dòng)時(shí)的一次性分配,且大部分的啟動(dòng)操作都屬于計(jì)劃性的工作,不需要內(nèi)核給我們動(dòng)態(tài)分配,而數(shù)據(jù)庫連接的那些server process往往內(nèi)存較小也不需要用到大頁,也就是Oracle強(qiáng)烈建議關(guān)閉THP的原因,本文就到此為止。





END




本 文 原 創(chuàng) 來 源:IT那活兒微信公眾號(hào)(上海新炬王翦團(tuán)隊(duì))


文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/129728.html

相關(guān)文章

  • Swoole 源碼分析——內(nèi)存模塊之共享內(nèi)存

    摘要:前言我們知道,由于沒有多線程模型,所以更多的使用多進(jìn)程模型,因此代碼相對(duì)來說更加簡(jiǎn)潔,減少了各種線程鎖的阻塞與同步,但是也帶來了新的問題數(shù)據(jù)同步。相比多線程之前可以直接共享進(jìn)程的內(nèi)存,進(jìn)程之間數(shù)據(jù)的相互同步依賴于共享內(nèi)存。 前言 我們知道,由于 PHP 沒有多線程模型,所以 swoole 更多的使用多進(jìn)程模型,因此代碼相對(duì)來說更加簡(jiǎn)潔,減少了各種線程鎖的阻塞與同步,但是也帶來了新的問題...

    diabloneo 評(píng)論0 收藏0
  • Linux 30周年:Linux 5.14閃亮登場(chǎng)!添加新硬件和秘密內(nèi)存區(qū)域支持

    摘要:或許,最重要的是和內(nèi)核調(diào)度,兩者都是進(jìn)行清理工作,以緩解英特爾的和漏洞。說到英特爾,增加了對(duì)的平臺(tái)的更多支持,該平臺(tái)可根據(jù)需要優(yōu)先處理工作負(fù)載。另外,還將增加戴爾硬件隱私支持。linux之父Linus Torvald:慶祝完Linux 30 歲了吧,一起來看新的 Linux 5.14。linux5.14晉升為穩(wěn)定版,在精彩的2021年秋季linux發(fā)行版大量出現(xiàn)之前提供最新的功能、硬件支持和...

    NicolasHe 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<