[20191202]關於oracle例項是否使用hugepages問題.txt
[20191202]關於oracle例項是否使用hugepages問題.txt
--//前幾天論壇的討論,別人問我為什麼什麼依據判斷是否使用hugepages問題,實際上我也不知道.
--//我自己也在想如何判斷oracle例項是否使用hugepages的問題.自己也做一點總結:
1.檢查/proc/meminfo的輸出:
# grep -i page /proc/meminfo
AnonPages: 90672 kB
PageTables: 5956 kB
AnonHugePages: 0 kB
HugePages_Total: 0
HugePages_Free: 0
HugePages_Rsvd: 0
HugePages_Surp: 0
Hugepagesize: 2048 kB
--//這是最直觀的方式,但是如果你伺服器啟動多了例項,那些例項使用,那些沒有透過這個就很難判斷.
--//而且還有一個問題,oracle現在可以設定use_large_pages=true,false,auto,only.
--//你查詢引數use_large_pages,描述上說明Use large pages if available (TRUE/FALSE/ONLY),預設就是true,如果設定false,實際上
--//就不用.
如果引數為True,那麼當系統的HugePage被使用盡,只有small pages的情況下,SGA也會繼續執行。此時,Oracle例項就執行在記憶體使用
混合模式(Mixed Mode)下。
如果引數為是Only,從含義上,表示Oracle例項只會使用HugePage作為記憶體使用。如果系統在AMM模式或者HugePage用盡的時候,資料庫
就不能啟動或者報錯。
如果引數為是false,就不使用HugePage.
2.使用smem觀察:
--//僅僅觀察例項對應的後臺程式的透過smem查詢發現.USS佔用很大,基本可以確定沒有使用.
# smem -tk -U oracle -P "ora_.*_xxxxx1"
PID User Command Swap USS PSS RSS
.....
21557 oracle ora_mman_xxxxx1 0 348.1M 687.7M 2.5G
21561 oracle ora_dbw1_xxxxx1 0 120.5M 1.0G 4.9G
21559 oracle ora_dbw0_xxxxx1 0 117.0M 1.1G 5.2G
21563 oracle ora_dbw2_xxxxx1 0 119.7M 1.1G 5.2G
21565 oracle ora_dbw3_xxxxx1 0 135.5M 1.1G 5.2G
21545 oracle ora_lms1_xxxxx1 0 755.5M 2.0G 6.9G
21541 oracle ora_lms0_xxxxx1 0 764.7M 2.1G 7.0G
21549 oracle ora_lms2_xxxxx1 0 791.2M 2.2G 7.4G
-------------------------------------------------------------------------------
54 1 0 3.6G 12.6G 54.4G
--//而使用hugepages根本看不到這樣的情況.當然僅僅時經驗之談,只要執行有一段時間,都可以看到這樣的情況.
3.檢視alert*.log檔案:
--//資料庫啟動時檢視alert日誌,可以發現如下資訊:
Fri Nov 29 10:10:47 2019
Adjusting the default value of parameter parallel_max_servers
from 480 to 170 due to the value of parameter processes (200)
Starting ORACLE instance (normal)
************************ Large Pages Information *******************
Parameter use_large_pages = ONLY
Per process system memlock (soft) limit = 51 GB
Total Shared Global Region in Large Pages = 618 MB (100%)
Large Pages used by this instance: 309 (618 MB)
Large Pages unused system wide = 0 (0 KB)
Large Pages configured system wide = 309 (618 MB)
Large Page size = 2048 KB
********************************************************************
4.檢視/proc/<spid>/numa_maps相關資訊:
$ ps -ef | grep "[o]ra_pmon_.*" | awk '{print $2}' | xargs -IQ grep 'huge dirty=' /proc/Q/numa_maps
60000000 default file=/SYSV00000000\040(deleted) huge dirty=1 mapmax=25 N0=1
60c00000 default file=/SYSV00000000\040(deleted) huge dirty=35 mapmax=25 N0=28 N1=7
86800000 interleave:0-1 file=/SYSVe8a8ec10\040(deleted) huge dirty=1 mapmax=25 N0=1
--//也就是查詢共享記憶體段時候包含huge dirty
--//補充執行以下命令更為準確.
$ ps -ef | grep "[o]ra_pmon_.*" | awk '{print $2}' | xargs -IQ grep "SYSV" /proc/Q/numa_maps
5.檢查oracle引數:
SYS@book> show parameter memory_
NAME TYPE VALUE
------------------------ ----------- -------
hi_shared_memory_address integer 0
memory_max_target big integer 0
memory_target big integer 0
shared_memory_address integer 0
--//檢查memory_*引數是否是0,不過這個並不能確定是否使用hugepages,僅僅能確定有可能.
6.問題:
--//問題在於如果是混合模式,以上判斷可能就不是很準.僅僅能判斷是否使用hugepages.
--//修改/etc/sysctl.conf如下:
vm.nr_hugepages = 104
vm.nr_overcommit_hugepages = 0
--//修改引數*.use_large_pages='TRUE'.
--//重啟啟動資料庫,alert提示如下:
Mon Dec 02 08:50:18 2019
Adjusting the default value of parameter parallel_max_servers
from 480 to 170 due to the value of parameter processes (200)
Starting ORACLE instance (normal)
************************ Large Pages Information *******************
Per process system memlock (soft) limit = 51 GB
Total Shared Global Region in Large Pages = 208 MB (33%)
Large Pages used by this instance: 104 (208 MB)
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Large Pages unused system wide = 0 (0 KB)
Large Pages configured system wide = 104 (208 MB)
Large Page size = 2048 KB
RECOMMENDATION:
Total System Global Area size is 618 MB. For optimal performance,
prior to the next instance restart:
1. Increase the number of unused large pages by
at least 205 (page size 2048 KB, total size 410 MB) system wide to
get 100% of the System Global Area allocated with large pages
********************************************************************
--//僅僅從alter看到相關資訊使用hugepages,而且是混合模式.
$ grep -i page /proc/meminfo
AnonPages: 149212 kB
PageTables: 14540 kB
AnonHugePages: 0 kB
HugePages_Total: 104
HugePages_Free: 51
HugePages_Rsvd: 51
HugePages_Surp: 0
Hugepagesize: 2048 kB
$ ps -ef | grep "[o]ra_pmon_.*" | awk '{print $2}' | xargs -IQ grep 'huge.*dirty=' /proc/Q/numa_maps
60000000 default file=/SYSV00000000\040(deleted) huge dirty=1 mapmax=20 N0=1
$ ps -ef | grep "[o]ra_pmon_.*" | awk '{print $2}' | xargs -IQ grep 'SYSV' /proc/Q/numa_maps
60000000 default file=/SYSV00000000\040(deleted) huge dirty=1 mapmax=20 N0=1
60c00000 default file=/SYSV00000000\040(deleted) huge
6a400000 default file=/SYSV00000000\040(deleted) huge
6c400000 default file=/SYSV00000000\040(deleted) huge
6cc00000 default file=/SYSV00000000\040(deleted) huge
6d000000 interleave:0-1 file=/SYSV00000000\040(deleted) dirty=737 mapmax=20 active=128 N0=372 N1=365
86800000 interleave:0-1 file=/SYSVe8a8ec10\040(deleted) dirty=1 mapmax=20 N1=1
--//這樣查詢更為準確.
$ ipcs
------ Shared Memory Segments --------
key shmid owner perms bytes nattch status
0x00000000 411860993 oracle 640 12582912 20
0x00000000 411893762 oracle 640 159383552 20
0x00000000 411926531 oracle 640 33554432 20
0x00000000 411959301 oracle 640 8388608 20
0x00000000 411992070 oracle 640 4194304 20
0x00000000 412024839 oracle 640 427819008 20
0xe8a8ec10 412057608 oracle 640 2097152 20
------ Semaphore Arrays --------
key semid owner perms nsems
0x6aa88594 334462976 oracle 640 204
------ Message Queues --------
key msqid owner perms used-bytes messages
--//這樣可以發現hugepages的共享記憶體段被分割好幾段,實際上我這裡是5段.
$ sysresv
IPC Resources for ORACLE_SID "book" :
Shared Memory:
ID KEY
411860993 0x00000000
411893762 0x00000000
411926531 0x00000000
411959301 0x00000000
411992070 0x00000000
412024839 0x00000000
412057608 0xe8a8ec10
Semaphores:
ID KEY
334462976 0x6aa88594
Oracle Instance alive for sid "book"
$ ps -ef | grep pmo[n]
oracle 54880 1 0 08:50 ? 00:00:00 ora_pmon_book
$ pmap -x 54880 | grep "SYSV\|shm\|^Address"
Address Kbytes RSS Dirty Mode Mapping
0000000060000000 12288 0 0 rw-s- SYSV00000000 (deleted)
0000000060c00000 155648 0 0 rw-s- SYSV00000000 (deleted)
000000006a400000 32768 0 0 rw-s- SYSV00000000 (deleted)
000000006c400000 8192 0 0 rw-s- SYSV00000000 (deleted)
000000006cc00000 4096 0 0 rw-s- SYSV00000000 (deleted)
000000006d000000 417792 2948 2948 rw-s- [ shmid=0x188f0007 ]
0000000086800000 2048 4 4 rw-s- [ shmid=0x188f8008 ]
--//這樣看來如果處於混合模式,使用smem檢視的經驗也未必準確,最佳的方式是檢視alert啟動日誌以及查詢
--///proc/<spid>/numa_maps包含相關SYSV相關行資訊.
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/267265/viewspace-2666410/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- [20191204]關於oracle例項是否使用hugepages問題2.txtOracle
- 2 Day DBA-管理Oracle例項-關於例項的啟動和關閉-關於例項關閉Oracle
- 2 Day DBA-管理Oracle例項-關於例項的啟動和關閉-關於例項啟動Oracle
- 請教一個關於JdonFrameworkTest例項的問題Framework
- 關於索引是否該rebuild的問題索引Rebuild
- 2 Day DBA-管理Oracle例項-關閉和啟動Oracle例項-使用OEMDC關閉和啟動Oracle例項Oracle
- linux上Oracle的sga(HugePages)分配問題LinuxOracle
- 【TUNE_ORACLE】Oracle資料庫與HugePages(三)HugePages常見問題和解決辦法Oracle資料庫
- 判斷oracle是否是rac例項Oracle
- 關於 Angular 應用 Components 和 Directives 的例項化問題Angular
- 線上問題排查例項分析|關於 Redis 記憶體洩漏Redis記憶體
- 線上問題排查例項分析|關於Redis記憶體洩漏Redis記憶體
- 關於涉及較大資料量時的物件例項化問題大資料物件
- 有關jbpm流程例項版本的問題
- 關於Oracle10g JOB執行是否會重疊的問題Oracle
- 2 Day DBA-管理Oracle例項-關於例項記憶體結構Oracle記憶體
- 關於是否需要同步的一個問題?
- [20221125]設定hugepages遇到的問題.txt
- 對於物件的動態建立例項問題物件
- oracle 關於例項恢復的一個討論Oracle
- 關於MQTT 使用遇到問題MQQT
- 關於oracle的監聽問題Oracle
- [20191202]awk使用陣列技巧.txt陣列
- JdonFramework 5.1例項問題?Framework
- 關於使用者 email 郵件地址是否允許有加號的問題AI
- 2 Day DBA-管理Oracle例項-關於後臺程式Oracle
- Oracle關於week的計算問題Oracle
- 關於Oracle字符集的問題Oracle
- 關於excelize庫的使用問題Excelize
- [20190320]關於使用smem檢視記憶體使用的問題.txt記憶體
- 關於建表欄位是否該使用not null這個問題你怎麼看?Null
- 【Oracle ASM】關於asm例項與db例項中的磁碟狀態_詳細分析過程OracleASM
- [20181229]關於字串的分配問題.txt字串
- 2 Day DBA-管理Oracle例項-關於例項的啟動和關閉-管理啟動和關閉許可權Oracle
- [20180211]關於oracle執行檔案許可權問題.txtOracle
- 2 Day DBA-管理Oracle例項-關於例項記憶體結構-程式全域性區(PGA)Oracle記憶體
- oracle rac 單個例項不能生成awr報告的問題Oracle
- oracle 10g srvctl 不能帶起節點例項問題Oracle 10g