[20220909]AnonHugePages與transparent hugepage 3.txt
[20220909]AnonHugePages與transparent hugepage 3.txt
--//前一段時間生產系統exadata做了升級,更換了新核心.記憶體從384G-> 512G,CPU的主頻也做了升級,並且CPU數量從24->32.
--//當時的情況實際上exadata的linux核心配置CONFIG_TRANSPARENT_HUGEPAGE is not set.
--//以前的測試連結如下:
--//http://blog.itpub.net/267265/viewspace-2770237/=>[20210428]AnonHugePages與transparent hugepage.txt
--//當時的測試摘要如下(exadata沒有升級前的情況):
# grep -i page /proc/meminfo
AnonPages: 36422176 kB
PageTables: 2596604 kB
HugePages_Total: 70540
HugePages_Free: 3401
HugePages_Rsvd: 3391
HugePages_Surp: 0
Hugepagesize: 2048 kB
--//36422176/1024/1024 = 34.73G.
--//你可以發現沒有顯示的AnonHugePages列,很容易將這個問題與TRANSPARENT_HUGEPAGE聯絡起來,oracle的一些安裝文件要求關閉
--//TRANSPARENT_HUGEPAGE特性的。
# grep -i hugepage config-2.6.39-400.126.1.el5uek
# CONFIG_TRANSPARENT_HUGEPAGE is not set
--//你可以發現exadata使用的核心連TRANSPARENT_HUGEPAGE都沒有設定.grep -i page /proc/meminfo沒有出現AnonHugePages也正常了.
--//是否其它伺服器要關閉TRANSPARENT_HUGEPAGE嗎?我覺得沒必要.原因如下:
--//1.沒有因為開啟出現問題,儘管oracle有一些文件提到要關閉它,也許是早期版本它有一些問題.
--//2.理論講使用它能減少PageTables的大小,節約記憶體使用.
--//exadata升級後的情況:
# cat /proc/cmdline
BOOT_IMAGE=/vmlinuz-4.14.35-2047.510.5.5.el7uek.x86_64 root=LABEL=DBSYS bootarea=dbsys bootfrom=BOOT boot=LABEL=BOOT
fips=0 ro loglevel=7 panic=60 log_buf_len=1m nmi_watchdog=0 transparent_hugepage=never rd_NO_PLYMOUTH audit=1
~~~~~~~~~~~~~~~~~~~~~~~~~~
console=tty1 console=ttyS0,115200n8 crashkernel=548M numa=off pci=noaer ifnames_skip=100 biosdevname=0 net.ifnames=0
# cat /sys/kernel/mm/transparent_hugepage/enabled
always madvise [never]
--//可以確定新版本核心配置了CONFIG_TRANSPARENT_HUGEPAGE,但是在啟動核心的命令列上加入了transparent_hugepage=never。
--//也就是關閉了TRANSPARENT_HUGEPAGE。
# grep -i hugepage /boot/config-4.14.35-2047.510.5.5.el7uek.x86_64
CONFIG_HAVE_ARCH_TRANSPARENT_HUGEPAGE=y
CONFIG_HAVE_ARCH_TRANSPARENT_HUGEPAGE_PUD=y
CONFIG_ARCH_ENABLE_HUGEPAGE_MIGRATION=y
CONFIG_TRANSPARENT_HUGEPAGE=y
CONFIG_TRANSPARENT_HUGEPAGE_ALWAYS=y
# CONFIG_TRANSPARENT_HUGEPAGE_MADVISE is not set
--//很明顯exadata目前出於安全的需要,核心配置了TRANSPARENT_HUGEPAGE,但是啟動的核心還是關閉了這個特性
--//transparent_hugepage=never,並沒有開啟transparent_hugepage.
# grep -i page /proc/meminfo
AnonPages: 58448692 kB
PageTables: 4442536 kB
AnonHugePages: 0 kB
ShmemHugePages: 0 kB
HugePages_Total: 153600
HugePages_Free: 54037
HugePages_Rsvd: 4761
HugePages_Surp: 0
Hugepagesize: 2048 kB
--//AnonHugePages=0,也說明情況這樣.不像前面執行grep -i page /proc/meminfo,沒有AnonPages那行。
--//這樣AnonPages會變得很大,當前等於58448692KB,相當於58448692/1024 = 57078MB, 57078/1024 = 55G.
--//理論講現在開啟TRANSPARENT_HUGEPAGE是很安全的,不會出現問題,至少我目前的測試沒有遇到過這方面的問題.
--//測試開啟transparent_hugepage的情況:
# echo always >| /sys/kernel/mm/transparent_hugepage/enabled
# grep -i page /proc/meminfo
AnonPages: 59069912 kB
PageTables: 4495312 kB
AnonHugePages: 169984 kB
ShmemHugePages: 0 kB
~~~~~~~~~~~~~~~~~~~~~~~~~~~
HugePages_Total: 153600
HugePages_Free: 54035
HugePages_Rsvd: 4759
HugePages_Surp: 0
Hugepagesize: 2048 kB
--//現在可以使用了AnonHugePages.等幾天觀察看看.也就是一些新連線oracle程式可以使用TRANSPARENT_HUGEPAGE。
--//另外發現一些記憶體配置的問題,做一些記錄,對比前面grep -i page /proc/meminfo的輸出、
--//1.專案實施者設定hugepage佔用記憶體有點大。浪費了(HugePages_Free-HugePages_Rsvd)*Hugepagesize
--// = (54035-4759)*2 = 98552 M記憶體,相當於98552/1024 = 96G記憶體。這個問題先放一放。
--//2.ShmemHugePages=0,似乎標識在tmpfs裝置上使用HugePages的數量,似乎當前沒用。
--//3.AnonPages = 59069912 kB ,而前面顯示的是AnonPages = 36422176 kB ,主要原因是升級後例項2出現一些問題重啟了,現在資料庫
--//的連線全部執行在例項1上,我自己也沒有調整過來.
--// 這樣AnonPages的使用增加,以及PageTables也隨之增加是正常現象.
--//過了好幾天,當前時間 :
# zzdate
trunc(sysdate)+08/24+40/1440+13/86400 == 2022/09/23 08:40:13
# grep -i page /proc/meminfo
AnonPages: 47120620 kB
PageTables: 3292732 kB
AnonHugePages: 5402624 kB
ShmemHugePages: 0 kB
HugePages_Total: 153600
HugePages_Free: 53742
HugePages_Rsvd: 4466
HugePages_Surp: 0
Hugepagesize: 2048 kB
--//對比前幾天的輸出可以發現AnonHugePages增加不少,PageTables使用減少不少,理論講應該節省一些記憶體的使用.
--//(4495312-3292732)/1024/1024 = 1.15G,相當於減少了1.15G記憶體的使用.
--//看看後臺程式是否有使用AnonHugePages的程式,注意資料庫沒有重啟.
# grep -e AnonHugePages /proc/*/smaps |awk '{ if($2>0) print $0} ' | awk -F '/' '{print $3}'| paste -sd, | xargs ps -fp| grep ora[_] | grep dbcn1
*/
grep: /proc/43113/smaps: No such file or directory
grep: /proc/43389/smaps: No such file or directory
...
grep: /proc/45549/smaps: No such file or directory
grep: /proc/92989/smaps: No such file or directory
grep: /proc/97507/smaps: No such file or directory
oracle 64180 1 4 Aug15 ? 1-19:05:27 ora_dia0_dbcn1
oracle 378987 1 98 Sep22 ? 09:05:34 ora_j001_dbcn1
--//當前有2個後臺程式使用了AnonHugePages。
--//注:前面grep: /proc/43113/smaps: No such file or directory的錯誤主要是執行時間太長,一些連線已經退出,程式已經不存在了.
總結:
--//僅僅為了測試,還是有一點點風險,畢竟是生產系統環境。
--//從另外角度說明目前的核心在使用HugePages的情況下開啟TRANSPARENT_HUGEPAGE是很安全的。
--//看你應用的模式,我們目前的連線數量快過10000個連線,至少一定程度減少PageTables佔用的記憶體。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/267265/viewspace-2917015/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- [20210428]AnonHugePages與transparent hugepage.txt
- How to disable transparent Hugepage (THP) on Red Hat Enterprise Linux 8?Linux
- [20210803]對比transparent hugepage的記憶體消耗.txt記憶體
- Transparent Tribe行動
- [20200317]dmesg與時間戳3.txt時間戳
- CSS 搞事技巧:border+transparentCSS
- [20180602]函式與標量子查詢3.txt函式
- [20220913]hugepage相關引數含義.txt
- [20191204]hugepage相關引數含義.txt
- How to disable transparent hugepages (THP) on Red Hat Enterprise Linux 7Linux
- [20220413]shared pool latch與使用sga heap的疑問3.txt
- [20200212]使用DBMS_SHARED_POOL.MARKHOT與sql語句3.txtSQL
- Linux AS 5中hugepage的一些變化Linux
- [20220909]bbed關於刪除記錄恢復的問題.txt
- [20201126]使用cursor_sharing_exact與給sql打補丁3.txtSQL
- [20231027]Index ITL Limit 3.txtIndexMIT
- [20210904]如何實現3.txt
- [20190129]塊內重整3.txt
- [201804012]關於hugepages 3.txt
- [20191210]降序索引疑問3.txt索引
- Linux 中的“大記憶體頁”(hugepage)是個什麼?Linux記憶體
- [20210520]11g shared pool latch與library cache mutex的簡單探究3.txtMutex
- [20210524]分析library cache轉儲 3.txt
- [20191129]oracle Audit檔案管理3.txtOracle
- [20201203]探究library cache mutex X 3.txtMutex
- [20210418]CBC latch再討論3.txt
- 作業系統HugePage配置導致記憶體驟降探究作業系統記憶體
- Oracle在Linux下對記憶體大頁HugePage的實踐OracleLinux記憶體
- [20230922]dc命令複雜學習3.txt
- [20230206]整理awr佔用空間3.txt
- [20230216]奇怪的高邏輯讀3.txt
- [20190423]那個更快的疑問3.txt
- [20210319]bbed讀取資料塊3.txt
- [20210126]探究oracle記憶體分配3.txtOracle記憶體
- [20181124]關於降序索引問題3.txt索引
- [20231024]共享伺服器的問題3.txt伺服器
- [20220303]oracle如何定位使用library cache mutex 3.txtOracleMutex
- [20191104]數值累加的各種方法3.txt