[20210803]對比transparent hugepage的記憶體消耗.txt
[20210803]對比transparent hugepage的記憶體消耗.txt
--//開啟transparent hugepage時:
--//時間是 20210427
# free -m
total used free shared buffers cached
Mem: 64302 61683 2618 0 434 36519
-/+ buffers/cache: 24729 39573
Swap: 16383 0 16383
# grep -i page /proc/meminfo
AnonPages: 12180556 kB
PageTables: 11196784 kB
AnonHugePages: 4888576 kB
HugePages_Total: 220
HugePages_Free: 184
HugePages_Rsvd: 157
HugePages_Surp: 0
Hugepagesize: 2048 kB
--//順便說一下該資料庫沒有使用hugepages,不然PageTables:11196784 kB不會這麼大,佔用11g。
# grep -e AnonHugePages /proc/*/smaps |awk '{ if($2>0) print $0} ' | awk -F '/' '{print $3}'| paste -sd, | xargs ps -fp | grep oracleywdb1|wc
241 2169 17189
*/
--//有241個oracle使用者程式使用AnonHugePages。
--//關閉transparent_hugepage看看呢?
# cat /sys/kernel/mm/transparent_hugepage/enabled
[always] madvise never
# echo never >| /sys/kernel/mm/transparent_hugepage/enabled
# cat /sys/kernel/mm/transparent_hugepage/enabled
always madvise [never]
--//等待明天觀察看看,結果第2天觀察發現變化不是很大:
# grep -e AnonHugePages /proc/*/smaps |awk '{ if($2>0) print $0} ' | awk -F '/' '{print $3}'| paste -sd, | xargs ps -fp | grep oracleywdb1|wc
70 630 5009
*/
--//昏還有70個連結,難道使用者從不退出應用程式嗎?依舊有這麼多oracle使用者程式使用AnonHugePages。
# free -m
total used free shared buffers cached
Mem: 64302 63015 1287 0 437 36655
-/+ buffers/cache: 25922 38380
Swap: 16383 0 16383
# grep -i page /proc/meminfo
AnonPages: 12245992 kB
PageTables: 12311564 kB
AnonHugePages: 4526080 kB
HugePages_Total: 220
HugePages_Free: 184
HugePages_Rsvd: 157
HugePages_Surp: 0
Hugepagesize: 2048 kB
--//可以發現AnonHugePages再減少,但是PageTables再增加,free -m 可以看出used使用增加,感覺採用transparent hugepage更好。
--//等待更長的時間觀察,結果等了3個月,主要原因時等保檢查改了口令,我沒有申請無法登陸伺服器。
# grep -e AnonHugePages /proc/*/smaps |awk '{ if($2>0) print $0} ' | awk -F '/' '{print $3}'| paste -sd, | xargs ps -fp | grep oracleywdb1|wc
7 63 536
--//還有7個連線沒有退出.
# grep -e AnonHugePages /proc/*/smaps |awk '{ if($2>0) print $0} ' | awk -F '/' '{print $3}'| paste -sd, | xargs ps -fp| grep ora[_] | grep ywdb1|wc
59 472 3721
--//後臺程式沒有退出,一直在使用AnonHugePages。
# free -m
total used free shared buffers cached
Mem: 64302 63261 1041 0 457 37732
-/+ buffers/cache: 25071 39231
Swap: 16383 0 16383
# grep -i page /proc/meminfo
AnonPages: 12085140 kB
PageTables: 11643576 kB
AnonHugePages: 4302848 kB
HugePages_Total: 220
HugePages_Free: 184
HugePages_Rsvd: 157
HugePages_Surp: 0
Hugepagesize: 2048 kB
# grep -e AnonHugePages /proc/*/smaps |awk '{ if($2>0) print $0} ' | awk '{print $2}' | paste -sd+ | bc
4302848
*/
--//看看生產系統exadata的情況更加明顯,資料庫使用hugepage,可以發現AnonPages很大大約38G,PageTables很小僅僅不到3G。
--//我前面已經提到exadata的伺服器核心預設沒有開啟transparent hugepage,可以發現根本沒有AnonHugePages項。
# grep -i hugepage config-2.6.39-400.126.1.el5uek
# CONFIG_TRANSPARENT_HUGEPAGE is not set
$ grep -i page /proc/meminfo
AnonPages: 40119940 kB
~~~~~~~~~~~~~~~~~~~~~~~~~~
PageTables: 2952044 kB
HugePages_Total: 70540
HugePages_Free: 3401
HugePages_Rsvd: 3391
HugePages_Surp: 0
Hugepagesize: 2048 kB
--//沒有AnonHugePages項
--//40119940/1024/1024 = 38.26G ,AnonPages佔用38G。
2.總結:
--//1.沒有因為開啟transparent hugepage出現問題,儘管oracle有一些文件提到要關閉它,也許是早期版本它有一些問題.
--//2.理論講使用transparent hugepage能減少PageTables的大小,節約記憶體使用.
--//3.我對transparent hugepage的理解,連續使用記憶體大於2048KB的程式自動使用它,小於2048KB,使用4K的pagetables。
--//4.感覺exadata的伺服器核心預設應該選擇編譯支援開啟transparent hugepage的選項,我想現在許多資料庫只要你安裝
--//不是oracle kenrel版本,應該都是開啟transparent hugepage的,根本不存在任何問題。有問題在一些論壇早發現了。
3.收尾,開啟transparent_hugepage:
# cat /sys/kernel/mm/transparent_hugepage/enabled
always madvise [never]
# echo always >| /sys/kernel/mm/transparent_hugepage/enabled
# cat /sys/kernel/mm/transparent_hugepage/enabled
[always] madvise never
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/267265/viewspace-2784887/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- [20170126]hugepage與記憶體碎片.txt記憶體
- LOGMINER的記憶體消耗記憶體
- Redis記憶體——記憶體消耗(記憶體都去哪了?)Redis記憶體
- Java不同資料結構記憶體消耗比較Java資料結構記憶體
- ABAP Memory Inspector 裡對動態記憶體物件的記憶體消耗度量方式記憶體物件
- Linux下HugePage記憶體功能配置Linux記憶體
- linux的hugepage的配置-優化oracle記憶體 .Linux優化Oracle記憶體
- OpenResty 和 Nginx 的共享記憶體區是如何消耗實體記憶體的RESTNginx記憶體
- 遊戲記憶體對比普通記憶體區別 遊戲記憶體和普通記憶體相差大嗎?遊戲記憶體
- Oracle在Linux下對記憶體大頁HugePage的實踐OracleLinux記憶體
- Spark效能優化:診斷記憶體的消耗Spark優化記憶體
- Linux 中的“大記憶體頁”(hugepage)是個什麼?Linux記憶體
- 一個導致JVM實體記憶體消耗大的BugJVM記憶體
- EEPROM與記憶體Flash消耗能量計算記憶體
- 【AIX 學習】記憶體和CPU消耗程式排序AI記憶體排序
- 如何在 Linux 中找出記憶體消耗最大的程式Linux記憶體
- linux下檢視最消耗CPU、記憶體的程式Linux記憶體
- linux 查詢最消耗CPU和記憶體的程式Linux記憶體
- 作業系統HugePage配置導致記憶體驟降探究作業系統記憶體
- 獲取 Laravel 執行時間和記憶體消耗Laravel記憶體
- Linux 記憶體管理:記憶體對映Linux記憶體
- How to disable transparent Hugepage (THP) on Red Hat Enterprise Linux 8?Linux
- 記憶體對映記憶體
- 記憶體對齊記憶體
- JavaScript對記憶體的使用JavaScript記憶體
- RMAN 對記憶體的使用記憶體
- 如何讓手遊記憶體佔用更小?從記憶體消耗iOS實時統計開始記憶體iOS
- DDR4記憶體頻率2400和3000的區別 高頻記憶體與低頻記憶體效能效能對比記憶體
- 記憶體快取系統memcached與redis實現的對比記憶體快取Redis
- 記憶體洩漏與記憶體溢位神比較記憶體溢位
- PHP 獲取程式碼執行時間和消耗的記憶體PHP記憶體
- 一次異常記憶體消耗的診斷與解決記憶體
- GO 記憶體對齊Go記憶體
- 理解記憶體對齊記憶體
- mmap記憶體對映記憶體
- iOS中的圖片使用方式、記憶體對比和最佳實踐iOS記憶體
- 記憶體資料庫解析與主流產品對比(三)記憶體資料庫
- 記憶體資料庫解析與主流產品對比(二)記憶體資料庫