日本搞逼视频_黄色一级片免费在线观看_色99久久_性明星video另类hd_欧美77_综合在线视频

國內最全IT社區平臺 聯系我們 | 收藏本站
阿里云優惠2
您當前位置:首頁 > 服務器 > 使用HugePages優化內存性能

使用HugePages優化內存性能

來源:程序員人生   發布時間:2015-03-12 09:26:45 閱讀次數:6310次

版權聲明:轉載時請以超鏈接情勢標明文章原始出處和作者信息及本聲明
http://blog.csdn.net/wenshuangzhu/article/details/44095565


1. 引子

系統進程是通過虛擬地址訪問內存,但是CPU必須把它轉換程物理內存地址才能真正訪問內存。為了提高這個轉換效力,CPU會緩存最近的虛擬內存地址和物理內存地址的映照關系,并保存在1個由CPU保護的映照表中。為了盡可能提高內存的訪問速度,需要在映照表中保存盡可能多的映照關系。

而在Linux中,內存都是以頁的情勢劃分的,默許情況下每頁是4K,這就意味著如果物理內存很大,則映照表的條目將會非常多,會影響CPU的檢索效力。由于內存大小是固定的,為了減少映照表的條目,可采取的辦法只有增加頁的尺寸。


2. HugePages簡介


2.1 相干概念

HugePages是在Linux2.6內核被引入的,主要提供4k的page和比較大的page的選擇。

 

概念

概念說明

page table

page table是操作系統上的虛擬內存系統的數據結構模型,用于存儲虛擬地址與物理地址的對應關系。

當我們訪問內存時,首先訪問page table,然后Linux在通過page table的mapping來訪問真實物理內存(ram+swap)

TLB

A Translation Lookaside Buffer (TLB)

TLB是在cpu中分配的1個固定大小的buffer(or cache),用于保存page table的部份內容,使CPU更快的訪問并進行地址轉換。

hugetlb

hugetlb 是記錄在TLB 中的條目并指向Hugepages。

hugetlbfs

這是1個新的基于2.6 kernel之上的內存文件系統,猶如tmpfs。

在TLB中通過hugetlb來指向hugepage。這些被分配的hugepage作為內存文件系統hugetlbfs(類似tmpfs)提供給進程使用。


2.2 使用HugePages的意義

HugePages是linux內核的1個特性,使用hugepage可以用更大的內存頁來取代傳統的4K頁面。使用HugePage主要帶來以下好處:

1. HugePages 會在系統啟動時,直接分配并保存對應大小的內存區域。

2. HugePages 在開機以后,如果沒有管理員的參與,是不會釋放和改變的。

3. 沒有swap。

Notswappable: HugePages are not swappable. Therefore thereis no page-in/page-outmechanism overhead.HugePages are universally regarded aspinned.

4. 大大提高了CPU cache中寄存的page table所覆蓋的內存大小,從而提高了TLB命中率。

進程的虛擬內存地址段先連接到page table然后再連接到物理內存。所以在訪問內存時需要先訪問page tables得到虛擬內存和物理內存的映照關系,然后再訪問物理內存。

CPU cache中有1部份TLB用來寄存部份page table以提高這類轉換的速度。由于page size變大了,所以一樣大小的TLB,所覆蓋的內存大小也變大了。提高了TLB命中率,也提高了地址轉換的速度。

5. 減輕page table的負載。

進行XXX系統性能測試時,如果沒有使用HugePages,數據庫服務器上的pagetable大小大約為5G(這應當也是致使性能測試時數據庫服務器內存不足的主要緣由):

node74:/home/oracle # cat /proc/meminfo

MemTotal:       16323732 kB

PageTables:       5442384kB

配置了HugePages后,pagetable大小僅為124M(性能測試時內存使用率穩定在80%左右):

node74:/home/oracle # cat /proc/meminfo

MemTotal:       16323732 kB

PageTables:       127384 kB

Eliminated page tablelookup overhead: 由于hugepage是不swappable的,所有就沒有page table lookups。

Faster overall memory performance:  由于虛擬內存需要兩步操作才能實際對應到物理內存地址,因此更少的pages,減輕了page table訪問熱度,避免了page table熱門瓶頸問題。

6. 提高內存的性能,下降CPU負載,原理同上


2.3 使用HugePages需要注意的地方

1. Hugepages是在分配后就會預留出來的,其大小1定要比服務器上所有實例的SGA總和要大,差1點都不行。

比如說Hugepages設置為8G,oracle SGA為9G,那末oracle在啟動的時候就不會使用到這8G的Hugepages。這8G就浪費了。所以在設置Hugepages時要計算SGA的大小,后面會給出1個腳本來計算。

2. 其他進程沒法使用Hugepages的內存,所以不要設置太大,稍稍比SGA大1點保證SGA可使用到hugepages就行了。

3. 在meminfo中和Hugepage相干的有4項:

HugePages_Total:   4611

HugePages_Free:     474

HugePages_Rsvd:     467

Hugepagesize:      2048 kB

HugePages_Total為所分配的頁面數目,和Hugepagesize相乘后得到所分配的內存大小。4611*2/1024大約為9GB

HugePages_Free為歷來沒有被使用過的Hugepages數目。即便oraclesga已分配了這部份內存,但是如果沒有實際寫入,那末看到的還是Free的。這是很容易誤解的地方。

HugePages_Rsvd為已被分配預留但是還沒有使用的page數目。在Oracle剛剛啟動時,大部份內存應當都是Reserved并且Free的,隨著oracle SGA的使用,Reserved和Free都會不斷的下降。

HugePages_Free-HugePages_Rsvd 這部份是沒有被使用到的內存,如果沒有其他的oracle instance,這部份內存或許永久都不會被使用到,也就是被浪費了。

4. HugePages和oracle AMM(自動內存管理)是互斥的,所以使用HugePages必須設置內存參數MEMORY_TARGET / MEMORY_MAX_TARGET 為0。


3.  配置HugePages


3.1 修改內核參數memlock

修改內核參數memlock,單位是KB,如果內存是16G,memlock的大小要略微小于物理內存。計劃lock 12GB的內存大小。參數設置為大于SGA是沒有壞處的。

以root用戶登錄兩臺數據庫服務器,編輯limits.conf文件:

node74:~ # vi /etc/security/limits.conf

增加以下兩行內容:

*  soft  memlock    12582912

*  hard  memlock    12582912


3.2 驗證memlock limit

重新登錄root和oracle用戶,檢查memlocklimit

node74:~ # ulimit -l

12582912

oracle@node74:~> ulimit -l

12582912


3.3 禁用AMM

如果使用11G及以后的版本,AMM已默許開啟,但是AMM與Hugepages是不兼容的,必須先disable AMM。禁用AMM的步驟以下:


3.3.1 關閉數據庫實例

已oracle用戶登錄兩臺數據庫服務器,通過sqlplus關閉2個數據庫實例。

oracle@node74:~> sqlplus / as sysdba

SQL> shutdown immediate


3.3.2 創建pfile

以oracle用戶登錄其中1臺主機,履行以下命令創建pfile:

oracle@node74:~> sqlplus / as sysdba

SQL> create pfile='/home/oracle/pfile.ora' fromspfile=’+DG_ORA/orcl/spfileorcl.ora’;


3.3.3 編輯pfile

編輯pfile,刪除memory_max_target和memory_target參數:

oracle@node74:~> vi /home/oracle/pfile.ora

刪除下面幾行:

orcl1.memory_max_target=11114905600

orcl2.memory_max_target=11114905600

*.memory_max_target=0

orcl1.memory_target=11114905600

orcl2.memory_target=11114905600

*.memory_target=0

修改后保存文件。


3.3.4 創建spfile

履行以下命令創建spfile:

oracle@node74:~> sqlplus / as sysdba

SQL> create spfile='+DG_ORA/orcl/spfileorcl.ora'from pfile='/home/oracle/pfile.ora';


3.3.5 修改系統參數kernel.shmall

Kernel.shmall是系統1次可使用的最大同享內存大小。單位是page(4KB)。禁用AMM后,需要修改系統參數kernel.shmall,該參數設置太小的話,可能會致使數據庫啟動失敗ORA⑵7102(詳見附錄4.2)。

ORACLE建議將其設置為系統中所有數據庫實例的SGA總和。例如SGA總和為9GB,則需要設置kernel.shmall=9*1024*1024/4=2359296。 

以root用戶登錄兩臺數據庫服務器,編輯sysctl.conf文件。

node74:~ # vi /etc/sysctl.conf

修改kernel.shmall參數:

kernel.shmall = 2359296

履行sysctl

生活不易,碼農辛苦
如果您覺得本網站對您的學習有所幫助,可以手機掃描二維碼進行捐贈
程序員人生
------分隔線----------------------------
分享到:
------分隔線----------------------------
關閉
程序員人生
主站蜘蛛池模板: 亚洲成人xxx | 日本特黄a级高清免费大片 国产小视频在线 | 日本色一区 | 666av视频在线观看 | 看一级黄色片 | 成年人福利视频 | 黄色免费网站在线观看 | 性视频在线播放 | 精品国产一区二区三区在线观看 | 国产一区免费在线 | 性色av一区二区三区 | 在线地址一地址二免费看 | 亚洲精品视频一区 | 欧美日本韩国一区二区三区 | 99视频在线播放 | 精品国产三级 | 久久久一区二区三区 | 97成人在线视频 | 91啦国产 | 性xxxxx| 性史性dvd影片农村毛片 | 国产精品99久久久久 | 91精品久久久久久 | 色片网站在线观看 | 亚洲色图欧美激情 | 欧美天堂在线 | 中国性猛交xxxx乱大交3 | www.日韩av | 国产一区二区在线免费视频 | 欧洲精品久久 | 精品日韩在线观看 | 色婷婷91| 91精品一区二区三区久久久久久 | 婷婷涩五月 | 最近最好最新2019中文字幕免费 | 人成在线 | 国产精品欧美日韩 | 波多野结衣在线视频播放 | 国产四区 | 国产91一区 | 精品久久网 |