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/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- Android 9.0的一些變化Android
- How to disable transparent Hugepage (THP) on Red Hat Enterprise Linux 8?Linux
- Linux 中的“大記憶體頁”(hugepage)是個什麼?Linux記憶體
- Oracle在Linux下對記憶體大頁HugePage的實踐OracleLinux記憶體
- Mojito Admin v2.0 的一些變化
- CentOS Linux 的未來和功能的巨大變化CentOSLinux
- [20210428]AnonHugePages與transparent hugepage.txt
- linux 監控檔案內容變化Linux
- [20210803]對比transparent hugepage的記憶體消耗.txt記憶體
- 2019年手遊市場頭部:固化中存在的一些變化
- [20220909]AnonHugePages與transparent hugepage 3.txt
- Linux 在過去幾年發生的六種變化Linux
- linux中的一些常用指令Linux
- [20191204]hugepage相關引數含義.txt
- [20220913]hugepage相關引數含義.txt
- Linux的一些工具使用技巧整理Linux
- Linux的一些常用命令Linux
- 【SQL】關於Oracle12c SQL調整中一些變化SQLOracle
- Linux學習教程-Linux下命令的一些異常情況Linux
- Linux 使用 inotify 監控檔案或目錄變化Linux
- 模組化的一些小研究
- 前端優化的一些小技巧前端優化
- 一些常用的linux命令(基於centos)LinuxCentOS
- 檢視Linux硬體的一些命令Linux
- Linux下一些操作的簡單整理Linux
- Linux伺服器的一些優點Linux伺服器
- Linux的ip地址變為127.0.0.1Linux127.0.0.1
- Linux一些基礎命令Linux
- linux一些命令(常更新)Linux
- 【練習】電影詳情頁面 (finished),版本更新後的一些變化,表單元件元件
- Linux Bash 提示符的一些騷操作Linux
- AndroidAPP效能優化的一些思考AndroidAPP優化
- webpack優化的一些基本方法Web優化
- Linux Shell變數Linux變數
- 雖小但改變世界的變化"Hugme
- Linux各種變數的含義Linux變數
- linux入門學習(二):linux圖形化介面與命令列介面之間的切換,以及一些系統命令Linux命令列
- 關於 變址影像(indexed image) 的一些總結Index