欧美性猛交XXXX免费看蜜桃,成人网18免费韩国,亚洲国产成人精品区综合,欧美日韩一区二区三区高清不卡,亚洲综合一区二区精品久久

打開(kāi)APP
userphoto
未登錄

開(kāi)通VIP,暢享免費電子書(shū)等14項超值服

開(kāi)通VIP
eagle’s home ? Blog Archive ? Linux Hugepages

Linux Hugepages

Hugepages是從Linux kernal 2.6后被引入的,其目的是使用更大的memory page size以適應越來(lái)越大的系統內存。

在我上大學(xué)那會(huì ),買(mǎi)一條64M 133Mhz的內存(對,你沒(méi)看錯,64M)價(jià)格為500多人民幣,而現在4G 1600Mhz的內存的價(jià)格也就500多。

計算機硬件的發(fā)展速度太快了,所以操作系統的一些配置也要相應的隨之改變。

在Linux下,默認的page size大小為4k。顯然對于現在的SGA比較大的數據庫系統來(lái)說(shuō),4k的page size有點(diǎn)太小了。

我們來(lái)看看兩者之間有什么區別

1. Page Table大小

Page Table是用來(lái)存放虛擬內存也和物理內存頁(yè)對應關(guān)系的內存結構。因為page size較小,所以相應的改內存結構也會(huì )比較大。

而Hugepages的常見(jiàn)page size為2M,是4k size的500倍,所以可以大大減小page table的size。

我們來(lái)看兩個(gè)例子:

這是一個(gè)沒(méi)有配置Hugepage的系統,系統內存128G,pagetable大小大約為4G。

cat /proc/meminfo

MemTotal: 132086880 kB
PageTables: 4059612 kB

這是配置了Hugepage的系統,系統內存96G, PageTable大小僅為78M

MemTotal: 98999880 kB
PageTables: 79916 kB

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

進(jìn)程的虛擬內存地址段先連接到page tables然后再連接到物理內存。所以在訪(fǎng)問(wèn)內存時(shí)需要先訪(fǎng)問(wèn)page tables得到虛擬內存和物理內存的映射關(guān)系,然后再訪(fǎng)問(wèn)物理內存。

CPU cache中有一部分TLB(Translation Lookaside Buffer)用來(lái)存放部分page table以提高這種裝換的速度。因為page size變大了,所以同樣大小的TLB,所覆蓋的內存大小也變大了。提高了TBL命中率,也就是提高了地址轉換的速度。

3. 使用Hugepages的內存頁(yè)是不會(huì )被交換出去的,永遠常駐在內存中,所以也減少了內存也替換的額外開(kāi)銷(xiāo)

下面再說(shuō)說(shuō)在數據庫服務(wù)器上使用Hugepages要注意的幾點(diǎn)

1. Hugepages是在分配后就會(huì )預留出來(lái)的,其大小一定要比服務(wù)器上所有實(shí)例的SGA總和要大,差一點(diǎn)都不行。

比如說(shuō)Hugepages設置為90G,oracle SGA為91G,那么oracle在啟動(dòng)的時(shí)候就不會(huì )使用到這90G的Hugepages。這90G就浪費了。所以在設置Hugepages時(shí)要計算SGA的大小,后面會(huì )給出一個(gè)腳本來(lái)計算。

2. 其他進(jìn)程無(wú)法使用Hugepages的內存,所以不要設置太大,稍稍比SGA大一點(diǎn)保證SGA可以使用到hugepages就好了。

3. PGA不會(huì )使用Hugepages的內存。所以11g的AMM (Automatic Memory Management,memory_target參數)是不被支持的。而ASMM(Automatic Shared Memory Management, SGA_target參數)是被支持的,這兩個(gè)不要搞混淆了。

4. 在meminfo中和Hugepage相關(guān)的有四項(RHEL5)

HugePages_Total: 43000
HugePages_Free: 29493
HugePages_Rsvd: 23550
Hugepagesize: 2048 kB

HugePages_Total為所分配的頁(yè)面數目,和Hugepagesize相乘后得到所分配的內存大小。43000*2/1024大約為84GB
HugePages_Free為從來(lái)沒(méi)有被使用過(guò)的Hugepages數目。即使oracle sga已經(jīng)分配了這部分內存,但是如果沒(méi)有實(shí)際寫(xiě)入,那么看到的還是Free的。這是很容易誤解的地方
HugePages_Rsvd為已經(jīng)被分配預留但是還沒(méi)有使用的page數目。在Oracle剛剛啟動(dòng)時(shí),大部分內存應該都是Reserved并且Free的,隨著(zhù)oracle SGA的使用,Reserved和Free都會(huì )不斷的降低

HugePages_Free - HugePages_Rsvd 這部分是沒(méi)有被使用到的內存,如果沒(méi)有其他的oracle instance,這部分內存也許永遠都不會(huì )被使用到,也就是被浪費了。在該系統上有11.5GB的內存被浪費了。

Note: RHEL4上的meminfo有所區別,沒(méi)有HugePages_Rsvd這一項,并且當oracle instance啟動(dòng)時(shí),所分配的內存就從free list上被移除掉了。也就是啟動(dòng)后HugePages_Free就是沒(méi)有被SGA用到被浪費的內存。

最后說(shuō)說(shuō)如何設置HugePages:

1. 首先計算SGA大小已決定你要使用多少HugePages內存頁(yè)。

你可以手工計算,如果使用了ASMM可以用SGA_Target/Hugepagesize,否則可以將db_cache_size,large_pool_size, shared_pool_size,jave_pool_size, streams_pool_size五個(gè)部分加起來(lái)除以Hugepagesize。

或者可以先將oracle instance都起起來(lái),然后ipcs -m查看共享內存段大小來(lái)計算。oracle在401749.1中也提供了一個(gè)腳本來(lái)幫助計算,腳本如下:

#!/bin/bash
#
# hugepages_settings.sh
#
# Linux bash script to compute values for the
# recommended HugePages/HugeTLB configuration
#
# Note: This script does calculation for all shared memory
# segments available when the script is run, no matter it
# is an Oracle RDBMS shared memory segment or not.
#
# This script is provided by Doc ID 401749.1 from My Oracle Support
# http://support.oracle.com

# Welcome text
echo ”
This script is provided by Doc ID 401749.1 from My Oracle Support
(http://support.oracle.com) where it is intended to compute values for
the recommended HugePages/HugeTLB configuration for the current shared
memory segments. Before proceeding with the execution please make sure
that:
* Oracle Database instance(s) are up and running
* Oracle Database 11g Automatic Memory Management (AMM) is not setup
(See Doc ID 749851.1)
* The shared memory segments can be listed by command:
# ipcs -m

Press Enter to proceed…”

read

# Check for the kernel version
KERN=`uname -r | awk -F. ‘{ printf(”%d.%d\n”,$1,$2); }’`

# Find out the HugePage size
HPG_SZ=`grep Hugepagesize /proc/meminfo | awk ‘{print $2}’`

# Initialize the counter
NUM_PG=0

# Cumulative number of pages required to handle the running shared memory segments
for SEG_BYTES in `ipcs -m | awk ‘{print $5}’ | grep “[0-9][0-9]*”`
do
MIN_PG=`echo “$SEG_BYTES/($HPG_SZ*1024)” | bc -q`
if [ $MIN_PG -gt 0 ]; then
NUM_PG=`echo “$NUM_PG+$MIN_PG+1″ | bc -q`
fi
done

RES_BYTES=`echo “$NUM_PG * $HPG_SZ * 1024″ | bc -q`

# An SGA less than 100MB does not make sense
# Bail out if that is the case
if [ $RES_BYTES -lt 100000000 ]; then
echo “***********”
echo “** ERROR **”
echo “***********”
echo “Sorry! There are not enough total of shared memory segments allocated for
HugePages configuration. HugePages can only be used for shared memory segments
that you can list by command:

# ipcs -m

of a size that can match an Oracle Database SGA. Please make sure that:
* Oracle Database instance is up and running
* Oracle Database 11g Automatic Memory Management (AMM) is not configured”
exit 1
fi

# Finish with results
case $KERN in
‘2.4′) HUGETLB_POOL=`echo “$NUM_PG*$HPG_SZ/1024″ | bc -q`;
echo “Recommended setting: vm.hugetlb_pool = $HUGETLB_POOL” ;;
‘2.6′) echo “Recommended setting: vm.nr_hugepages = $NUM_PG” ;;
*) echo “Unrecognized kernel version $KERN. Exiting.” ;;
esac

# End

2. 關(guān)閉所有oracle實(shí)例

3. 用root設定oracle memlock limit,設置一個(gè)較大的數值或者unlimited

在/etc/security/limits.conf最后添加
oracle hard memlock unlimited
oracle soft memlock unlimited

4. 分配hugepages內存

在/etc/sysctl.conf中添加

vm.nr_hugepages =

執行sysctl -p使其生效。這時(shí)候內存就已經(jīng)被分配了,可以查看meminfo

grep Huge /proc/meminfo

HugePages_Total為設定的值大小,HugePages_Free應該和HugePages_Total一樣大,HugePages_Rsvd為0.

5. 啟動(dòng)Oracle instance

這時(shí)候再次查看meminfo

HugePages_Total為設定的值大小不變,HugePages_Free有所降低,HugePages_Rsvd為一個(gè)較大的數值(因為剛剛啟動(dòng)時(shí),大部分SGA被分配但是沒(méi)有被使用到)。

如果Hugepages沒(méi)有被使用,可能一些memory page被分配為4k大小了,那么需要重啟server來(lái)設置。

從我們的測試結果看,Hugepages可以提高OLTP系統10%的吞吐量,當然不同的數據庫應用結果可能不同,但是總體來(lái)說(shuō)這是一個(gè)nice to have的設置。

推薦一些Hugepages相關(guān)的文章:

Metalink Note: 361323.1,744769.1, 748637.1
Yong’s blog: http://yong321.freeshell.org/oranotes/HugePages.txt
Kevin Closson’s blog: http://kevinclosson.wordpress.com/2010/09/28/configuring-linux-hugepages-for-oracle-database-is-just-too-difficult-part-i/ http://kevinclosson.wordpress.com/2010/10/21/configuring-linux-hugepages-for-oracle-database-is-just-too-difficult-isn%E2%80%99t-it-part-%E2%80%93-ii/

本站僅提供存儲服務(wù),所有內容均由用戶(hù)發(fā)布,如發(fā)現有害或侵權內容,請點(diǎn)擊舉報。
打開(kāi)APP,閱讀全文并永久保存 查看更多類(lèi)似文章
猜你喜歡
類(lèi)似文章
Linux系統HugePage內存功能配置詳解
如何使linux擴展使用 大內存
系統投產(chǎn)前,Oracle數據庫優(yōu)化思路和9個(gè)典型問(wèn)題
ORACLE技術(shù)中國用戶(hù)討論組 - Oracle開(kāi)發(fā)應用 - TNS-12500解決過(guò)程(zt) - powered by ORACLE USER GROUP
LINUX對硬件支持有上限么?最大多少內存?多大硬盤(pán)容量?
對oracle實(shí)例的內存(SGA和PGA)進(jìn)行調整,優(yōu)化數據庫性
更多類(lèi)似文章 >>
生活服務(wù)
分享 收藏 導長(cháng)圖 關(guān)注 下載文章
綁定賬號成功
后續可登錄賬號暢享VIP特權!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服

欧美性猛交XXXX免费看蜜桃,成人网18免费韩国,亚洲国产成人精品区综合,欧美日韩一区二区三区高清不卡,亚洲综合一区二区精品久久