Linux AS 5中hugepage的一些變化
以前一直用的是Linux AS4,在大記憶體情況下,也一直在用hugepage,沒有發現什麼讓人不省心的問題,但最近的Oracle專案用到了AS 5,且用到的機器記憶體都較大,有128GB,使用hugepage時遇到一些怪異的現象。
[@more@]配置hugepage很簡單,只需要在/etc/sysctl.conf加入如下行就可以:vm.nr_hugepages=25100 #50000M SGA
修改後sysctl -p使得設定生效,但如果沒有足夠的空閒記憶體,則需要重啟機器。
當修改好這個重啟機器,並啟動Oracle後,眼前看到的景象嚇我一跳:
more /proc/meminfo
......
PageTables: 24660 kB
......
HugePages_Total: 25650
HugePages_Free: 21820
HugePages_Rsvd: 21234
Hugepagesize: 2048 kB
PageTables只用了不到25M,這是正常的,說明系統啟用了hugepage了,如果 用預設的4K頁,這部分可能佔用上G的大小。
但是看到下面的HugePages_Free就不淡定了,因為我設定的SGA是50000M,而機器又是剛剛啟動的,HugePages_Total和空閒記憶體都足夠放下SGA了,從表面上看,SGA沒有用到Hugepage那部分記憶體。
後來做了一些研究,發現了原因。先來解析一下幾個相關的引數:
HugePages_Total: Hugepage的頁面數量
HugePages_Free: 剩餘的頁面數量
HugePages_Rsvd: 被分配預留但是還沒有使用的page數目
Hugepagesize: 每單位數量大小
在以前版本中,只要Oracle一啟動,SGA用到了hugepage,HugePages_Free馬上就變少(目標是0)。
但在新版本(AS 5)中,這種情況發生變化:雖然SGA在Hugepage中,但是隻有SGA內使用時(非空閒),HugePages_Free才會減少。
所以我們剛才看到的現象是正常的,只是因為資料庫剛剛啟動,SGA還沒有被使用,所以看到HugePages_Free很大,接近於HugePages_Total,但是HugePages_Rsvd也很大,說明大部分hugepage的記憶體已經被分配出去了,只是目前還沒有使用。
下面透過一個例子來說明:
1. 原始資訊
[root@dwdb01 ~]# more /proc/meminfo |grep Huge
HugePages_Total: 25650
HugePages_Free: 21820
HugePages_Rsvd: 21234
Hugepagesize: 2048 kB
2. 建立一個表,佔用部分SGA
SQL> create table aaa tablespace test as select * from dba_objects;
Table created.
SQL> insert into aaa select * from aaa;
42681 rows created.
SQL> /
85362 rows created.
3. 此時的hugepage資訊
[root@dwdb01 ~]# more /proc/meminfo |grep Huge
HugePages_Total: 25650
HugePages_Free: 21811
HugePages_Rsvd: 21225
Hugepagesize: 2048 kB
可以看到HugePages_Free和HugePages_Rsvd都在減少。
4. 繼續insert資料,佔用更多SGA
SQL> /
170724 rows created.
SQL> /
341448 rows created.
5. 此時的hugepage資訊
[root@dwdb01 ~]# more /proc/meminfo |grep Huge
HugePages_Total: 25650
HugePages_Free: 21783
HugePages_Rsvd: 21197
Hugepagesize: 2048 kB
可以看到HugePages_Free和HugePages_Rsvd在繼續減少。
這個例子證明了,SGA是在hugepage裡面的,但SGA被使用時,HugePages_Free才會減少。因此,看到HugePages_Free很大不用過於擔心,只要證明SGA用到hugepage就沒有問題了。
PS: HugePages_Free - HugePages_Rsvd部分的記憶體是浪費的,且不能被其他程式使用。在實際應用中,儘可能讓HugePages_Free - HugePages_Rsvd=0
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/231499/viewspace-1043961/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- linux的hugepage的配置-優化oracle記憶體 .Linux優化Oracle記憶體
- 【HugePage】在Linux 64位系統下使用hugepageLinux
- Linux HugePage技術簡介Linux
- Android 9.0的一些變化Android
- 用好HugePage,告別Linux效能故障Linux
- Linux下HugePage記憶體功能配置Linux記憶體
- Android Studio 3.0 的一些小變化Android
- 在CentOS Linux 5中為oracle配置hugepage的方法CentOSLinuxOracle
- 在Linux 64位系統下使用hugepageLinux
- Linux Hugepage ,AMM及 USE_LARGE_PAGES - 4Linux
- Linux Hugepage ,AMM及 USE_LARGE_PAGES - 3Linux
- Linux Hugepage ,AMM及 USE_LARGE_PAGES - 2Linux
- Linux Hugepage ,AMM及 USE_LARGE_PAGES - 1Linux
- Mojito Admin v2.0 的一些變化
- 為Linux版本Oracle 11gR2配置HugePageLinuxOracle
- Oracle在Linux下對記憶體大頁HugePage的實踐OracleLinux記憶體
- Linux 中的“大記憶體頁”(hugepage)是個什麼?Linux記憶體
- ORACLE與hugepage(二)Oracle
- ORACLE與hugepage(一)Oracle
- HugePage在mysql中的應用MySql
- HugePage在oracle中的應用Oracle
- How to disable transparent Hugepage (THP) on Red Hat Enterprise Linux 8?Linux
- LINUX下為ORACLE資料庫設定大頁--hugepageLinuxOracle資料庫
- linux系統中配置hugepage,提升oracle資料庫效能LinuxOracle資料庫
- Linux Hugepage ,AMM及 USE_LARGE_PAGES for oracle 11GLinuxOracle
- mysql5.1關於自動重連的一些變化MySql
- CentOS Linux 的未來和功能的巨大變化CentOSLinux
- 關於一些變數的使用變數
- linux 監控檔案內容變化Linux
- MySQL8.0 · 引擎特性 · 關於undo表空間的一些新變化MySql
- linux一些命令的小記(解壓 環境變數 查詢檔案)Linux變數
- Oracle Memory Management and HugePage (連載一)Oracle
- Oracle Memory Management and HugePage (連載二)Oracle
- Oracle Memory Management and HugePage (連載三)Oracle
- ORACLE hugepage好處與壞處Oracle
- 模組化的一些小研究
- Linux 在過去幾年發生的六種變化Linux
- 一些常用的linux命令Linux