ITPub博客

首页 > 数据库 > Oracle > [20191211]hugepages pagetables.txt

[20191211]hugepages pagetables.txt

原创 Oracle 作者:lfree 时间:2019-12-13 09:50:29 0 删除 编辑

[20191211]hugepages pagetables.txt

--//前几天写的http://blog.itpub.net/267265/viewspace-2666410/=>[20191202]关于oracle实例是否使用hugepages问题.txt
--//里面提到查看/proc/<spid>/numa_maps相关信息,我实际上参考了http://www.ludovicocaldara.net/dba/oracle-hugepages-usage-linux/
--//里面看到huge dirty是否就是pagetables的数量呢?
--//我一直有1个疑问.重点是如何验证.例子:
$ 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

--//自己做一些探究可能完全不对,希望大家给一些建议或者有什么命令可以看进程使用页面表的数量以及大小.

1.环境:
SYS@book> @ ver1
PORT_STRING         VERSION        BANNER
------------------- -------------- --------------------------------------------------------------------------------
x86_64/Linux 2.4.xx 11.2.0.4.0     Oracle Database 11g Enterprise Edition Release 11.2.0.4.0 - 64bit Production

2.测试一:
--//首先想到的是设置*.pre_page_sga=true.
--//这样每个连接都会touch 页面表,至少11g是这样设计的.

SYS@book> show parameter pre_page_sga
NAME         TYPE    VALUE
------------ ------- -----
pre_page_sga boolean TRUE

SCOTT@book> @ spid

       SID    SERIAL# PROCESS                  SERVER    SPID       PID  P_SERIAL# C50
---------- ---------- ------------------------ --------- ------ ------- ---------- --------------------------------------------------
         1         13 63150                    DEDICATED 63151       24          6 alter system kill session '1,13' immediate;

$ grep 'huge dirty=' /proc/63151/numa_maps
60000000 default file=/SYSV00000000\040(deleted) huge dirty=3 mapmax=26 N0=2 N1=1
60c00000 default file=/SYSV00000000\040(deleted) huge dirty=302 mapmax=26 N0=49 N1=253
86800000 interleave:0-1 file=/SYSVe8a8ec10\040(deleted) huge dirty=1 mapmax=26 N0=1
--//huge dirty相加,3+302+1 = 306.

$ grep -i page /proc/meminfo
AnonPages:        479504 kB
PageTables:        15424 kB
AnonHugePages:         0 kB
HugePages_Total:     309
HugePages_Free:        0
HugePages_Rsvd:        0
HugePages_Surp:      205
Hugepagesize:       2048 kB

--//总hugepages页面表数量是309.我前面将huge dirty相加等于306,视乎非常接近.

$ ps -ef | egrep '[o]ra_.*_book|[o]raclebook'|awk '{print $2}' | xargs -IQ grep 'huge dirty=' /proc/Q/numa_maps | grep 60c00000 | uniq -c
     26 60c00000 default file=/SYSV00000000\040(deleted) huge dirty=302 mapmax=26 N0=49 N1=253
--//每个连接都是一样的.并且注意1个情况N0+N1=dirty.N0,N1表示什么不懂.

$ ps -ef | egrep '[o]ra_.*_book|[o]raclebook'|awk '{print $2}' | xargs -IQ grep 'huge dirty=' /proc/Q/numa_maps | grep 60000000 | uniq -c
      8 60000000 default file=/SYSV00000000\040(deleted) huge dirty=1 mapmax=26 N0=1
      3 60000000 default file=/SYSV00000000\040(deleted) huge dirty=3 mapmax=26 N0=2 N1=1
      1 60000000 default file=/SYSV00000000\040(deleted) huge dirty=5 mapmax=26 N0=2 N1=3
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
      2 60000000 default file=/SYSV00000000\040(deleted) huge dirty=4 mapmax=26 N0=2 N1=2
      1 60000000 default file=/SYSV00000000\040(deleted) huge dirty=1 mapmax=26 N0=1
      1 60000000 default file=/SYSV00000000\040(deleted) huge dirty=4 mapmax=26 N0=2 N1=2
      3 60000000 default file=/SYSV00000000\040(deleted) huge dirty=1 mapmax=26 N0=1
      1 60000000 default file=/SYSV00000000\040(deleted) huge dirty=3 mapmax=26 N0=2 N1=1
      3 60000000 default file=/SYSV00000000\040(deleted) huge dirty=1 mapmax=26 N0=1
      1 60000000 default file=/SYSV00000000\040(deleted) huge dirty=3 mapmax=26 N0=2 N1=1
      2 60000000 default file=/SYSV00000000\040(deleted) huge dirty=1 mapmax=26 N0=1
--//有1个huge dirty=5的情况.mapmax等于attach共享内存段的进程数量.

$ ps -ef |grep 6303[9]
oracle   63039     1  0 11:34 ?        00:00:01 ora_lgwr_book

$ cat /proc/63039/numa_maps | grep SYSV
60000000 default file=/SYSV00000000\040(deleted) huge dirty=5 mapmax=27 N0=2 N1=3
60c00000 default file=/SYSV00000000\040(deleted) huge dirty=302 mapmax=27 N0=49 N1=253
86800000 interleave:0-1 file=/SYSVe8a8ec10\040(deleted) huge dirty=1 mapmax=27 N0=1
--// 5+302+1 = 308,grep -i page /proc/meminfo看到的HugePages_Total=309,仅仅相差1.

--//而且你可以发现有趣的情况,如果出现没有active的行,N0+N1=huge dirty.或者N0=dirty(不存在N1的情况)

$ ipcs -m

------ Shared Memory Segments --------
key        shmid      owner      perms      bytes      nattch     status
0x00000000 419168256  oracle    640        12582912   27
0x00000000 419201025  oracle    640        633339904  27
0xe8a8ec10 419233794  oracle    640        2097152    27

--//12582912/2048/1024 = 6
--//633339904/2048/1024 = 302
--//2097152/2048/1024 = 1
--//合计 302+6+1 = 309

--//我特意找2台连接很多的服务器,一台没有打开hugepages.一台打开hugepages测试,只要查询不存在active的行都存在N0+N1=dirty的情况.注N1不存在当作是0.或者N0=dirty.

# ps -ef|egrep "[o]ra_.*_fyhis1|[o]raclefyhis1"|awk '{print $2}'|xargs -IQ grep "/SYSV" /proc/Q/numa_maps|grep -v active|awk '{print $4";"$5";"$6";"$7}'|tr 'N' 'n'| grep n1=|xargs -IQ echo 'Q;nx=n0+n1;nx;dirty'|bc|paste - -|awk ' $1!=$2 {print "not equal"}'
# ps -ef|egrep "[o]ra_.*_fyhis1|[o]raclefyhis1"|awk '{print $2}'|xargs -IQ grep "/SYSV" /proc/Q/numa_maps|grep -v active|awk '{print $4";"$5";"$6";"$7}'|tr 'N' 'n'| grep -v n1=|xargs -IQ echo 'Q;n0;dirty'|bc|paste - -|awk ' $1!=$2 {print "not equal"}'

--//使用hugepages执行如下:
ps -ef|egrep "[o]ra_.*_dbcn1|[o]racledbcn1"|awk '{print $2}'|xargs -IQ grep "/SYSV" /proc/Q/numa_maps|grep -v active|awk '{print $5";"$6";"$7";"$8}'|tr 'N' 'n'| grep n1=|xargs -IQ echo 'Q;nx=n0+n1;nx;dirty'|bc|paste - -|awk ' $1!=$2 {print "not equal"}'
ps -ef|egrep "[o]ra_.*_dbcn1|[o]racledbcn1"|awk '{print $2}'|xargs -IQ grep "/SYSV" /proc/Q/numa_maps|grep -v active|awk '{print $5";"$6";"$7";"$8}'|tr 'N' 'n'| grep -v n1=|xargs -IQ echo 'Q;n0;dirty'|bc|paste - -|awk ' $1!=$2 {print "not equal"}'

ps -ef|egrep "[o]ra_.*_book|[o]raclebook"|awk '{print $2}'|xargs -IQ grep "/SYSV" /proc/Q/numa_maps|grep -v active|awk '{print $5";"$6";"$7";"$8}'|tr 'N' 'n'| grep n1=|xargs -IQ echo 'Q;nx=n0+n1;nx;dirty'|bc|paste - -|awk ' $1!=$2 {print "not equal"}'
ps -ef|egrep "[o]ra_.*_book|[o]raclebook"|awk '{print $2}'|xargs -IQ grep "/SYSV" /proc/Q/numa_maps|grep -v active|awk '{print $5";"$6";"$7";"$8}'|tr 'N' 'n'| grep -v n1=|xargs -IQ echo 'Q;n0;dirty'|bc|paste - -|awk ' $1!=$2 {print "not equal"}'

--//另外很奇怪我在测试环境无论如何都看不到active的情况.
$ ps -ef | egrep '[o]ra_.*_book|[o]raclebook'|awk '{print $2}' | xargs -IQ grep 'huge dirty=' /proc/Q/numa_maps | grep active

3.继续测试:
$ ps -ef | egrep '[o]ra_.*_book|[o]raclebook'|awk '{print $2}' | xargs -IQ grep 'huge dirty=' /proc/Q/numa_maps | grep 60c00000 | uniq -c
     27 60c00000 default file=/SYSV00000000\040(deleted) huge dirty=302 mapmax=27 N0=49 N1=253

--//无论我做任何操作N0,N1都没有变化.我重启看到的情况
$ ps -ef | egrep '[o]ra_.*_book|[o]raclebook'|awk '{print $2}' | xargs -IQ grep 'huge dirty=' /proc/Q/numa_maps | grep 60c00000 | uniq -c
     23 60c00000 default file=/SYSV00000000\040(deleted) huge dirty=302 mapmax=23 N0=252 N1=50

--//不知道N0,N1表示什么.
--//另外我发现mapmax应该等于attache共享内存段的进程数量. 前面的23=mapmax
--//我反复启动数据库多次,都是出现这2种情况.N0=49 N1=253或者N0=252 N1=50.

3.测试:
--//继续测试不使用hugepages的情况:
*.use_large_pages='false'
*.pre_page_sga=true

$ ps -ef | egrep '[o]ra_.*_book|[o]raclebook'|awk '{print $2}' | xargs -IQ grep 'SYSV' /proc/Q/numa_maps | grep 60c00000| uniq -c
      1 60c00000 interleave:0-1 file=/SYSV00000000\040(deleted) dirty=42431 mapped=154624 mapmax=23 N0=77312 N1=77312
      1 60c00000 interleave:0-1 file=/SYSV00000000\040(deleted) dirty=42423 mapped=154624 mapmax=23 N0=77312 N1=77312
      1 60c00000 interleave:0-1 file=/SYSV00000000\040(deleted) dirty=42421 mapped=154624 mapmax=23 N0=77312 N1=77312
      1 60c00000 interleave:0-1 file=/SYSV00000000\040(deleted) dirty=42423 mapped=154624 mapmax=23 N0=77312 N1=77312
      1 60c00000 interleave:0-1 file=/SYSV00000000\040(deleted) dirty=42420 mapped=154624 mapmax=23 N0=77312 N1=77312
      1 60c00000 interleave:0-1 file=/SYSV00000000\040(deleted) dirty=42544 mapped=154624 mapmax=23 N0=77312 N1=77312
      1 60c00000 interleave:0-1 file=/SYSV00000000\040(deleted) dirty=42420 mapped=154624 mapmax=23 N0=77312 N1=77312
      1 60c00000 interleave:0-1 file=/SYSV00000000\040(deleted) dirty=44111 mapped=154624 mapmax=23 N0=77312 N1=77312
      4 60c00000 interleave:0-1 file=/SYSV00000000\040(deleted) dirty=42424 mapped=154624 mapmax=23 N0=77312 N1=77312
      1 60c00000 interleave:0-1 file=/SYSV00000000\040(deleted) dirty=42426 mapped=154624 mapmax=23 N0=77312 N1=77312
      1 60c00000 interleave:0-1 file=/SYSV00000000\040(deleted) dirty=43206 mapped=154624 mapmax=23 N0=77312 N1=77312
      1 60c00000 interleave:0-1 file=/SYSV00000000\040(deleted) dirty=42432 mapped=154624 mapmax=23 N0=77312 N1=77312
      1 60c00000 interleave:0-1 file=/SYSV00000000\040(deleted) dirty=44986 mapped=154624 mapmax=23 N0=77312 N1=77312
      1 60c00000 interleave:0-1 file=/SYSV00000000\040(deleted) dirty=42423 mapped=154624 mapmax=23 N0=77312 N1=77312
      1 60c00000 interleave:0-1 file=/SYSV00000000\040(deleted) dirty=42421 mapped=154624 mapmax=23 N0=77312 N1=77312
      1 60c00000 interleave:0-1 file=/SYSV00000000\040(deleted) dirty=42404 mapped=154624 mapmax=23 N0=77312 N1=77312
      1 60c00000 interleave:0-1 file=/SYSV00000000\040(deleted) dirty=47936 mapped=154624 mapmax=23 N0=77312 N1=77312
      1 60c00000 interleave:0-1 file=/SYSV00000000\040(deleted) dirty=42418 mapped=154624 mapmax=23 N0=77312 N1=77312
      1 60c00000 interleave:0-1 file=/SYSV00000000\040(deleted) dirty=42422 mapped=154624 mapmax=23 N0=77312 N1=77312
      1 60c00000 interleave:0-1 file=/SYSV00000000\040(deleted) dirty=42719 mapped=154624 mapmax=23 N0=77312 N1=77312
--//这次的情况是N0+N1=mapped.
--//77312+77312 = 154624

$ ps -ef | egrep '[o]ra_.*_book|[o]raclebook'|awk '{print $2}' | xargs -IQ grep 'SYSV' /proc/Q/numa_maps |grep  -v mapped | grep -v active| uniq -c
      1 86800000 interleave:0-1 file=/SYSVe8a8ec10\040(deleted) dirty=1 mapmax=25 N1=1
      1 60000000 interleave:0-1 file=/SYSV00000000\040(deleted) dirty=68 mapmax=25 N0=31 N1=37
      1 86800000 interleave:0-1 file=/SYSVe8a8ec10\040(deleted) dirty=1 mapmax=25 N1=1
      1 60000000 interleave:0-1 file=/SYSV00000000\040(deleted) dirty=68 mapmax=25 N0=31 N1=37
      1 86800000 interleave:0-1 file=/SYSVe8a8ec10\040(deleted) dirty=1 mapmax=25 N1=1
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~      
      1 60000000 interleave:0-1 file=/SYSV00000000\040(deleted) dirty=69 mapmax=25 N0=32 N1=37
      1 86800000 interleave:0-1 file=/SYSVe8a8ec10\040(deleted) dirty=1 mapmax=25 N1=1
      1 60000000 interleave:0-1 file=/SYSV00000000\040(deleted) dirty=68 mapmax=25 N0=31 N1=37
      2 86800000 interleave:0-1 file=/SYSVe8a8ec10\040(deleted) dirty=1 mapmax=25 N1=1
      1 60000000 interleave:0-1 file=/SYSV00000000\040(deleted) dirty=70 mapmax=25 N0=33 N1=37
      8 86800000 interleave:0-1 file=/SYSVe8a8ec10\040(deleted) dirty=1 mapmax=25 N1=1
      1 60000000 interleave:0-1 file=/SYSV00000000\040(deleted) dirty=87 mapmax=25 N0=43 N1=44
      3 86800000 interleave:0-1 file=/SYSVe8a8ec10\040(deleted) dirty=1 mapmax=25 N1=1
      1 60000000 interleave:0-1 file=/SYSV00000000\040(deleted) dirty=63 mapmax=25 N0=27 N1=36
      1 86800000 interleave:0-1 file=/SYSVe8a8ec10\040(deleted) dirty=1 mapmax=25 N1=1
      1 60000000 interleave:0-1 file=/SYSV00000000\040(deleted) dirty=57 mapmax=25 N0=23 N1=34
      2 86800000 interleave:0-1 file=/SYSVe8a8ec10\040(deleted) dirty=1 mapmax=25 N1=1
      1 60000000 interleave:0-1 file=/SYSV00000000\040(deleted) dirty=71 mapmax=25 N0=31 N1=40
      1 86800000 interleave:0-1 file=/SYSVe8a8ec10\040(deleted) dirty=1 mapmax=25 N1=1
      1 60000000 interleave:0-1 file=/SYSV00000000\040(deleted) dirty=70 mapmax=25 N0=31 N1=39
      1 86800000 interleave:0-1 file=/SYSVe8a8ec10\040(deleted) dirty=1 mapmax=25 N1=1
      1 60000000 interleave:0-1 file=/SYSV00000000\040(deleted) dirty=87 mapmax=25 N0=43 N1=44
      1 86800000 interleave:0-1 file=/SYSVe8a8ec10\040(deleted) dirty=1 mapmax=25 N1=1
      1 60000000 interleave:0-1 file=/SYSV00000000\040(deleted) dirty=72 mapmax=25 N0=33 N1=39
      1 86800000 interleave:0-1 file=/SYSVe8a8ec10\040(deleted) dirty=1 mapmax=25 N1=1
      1 60000000 interleave:0-1 file=/SYSV00000000\040(deleted) dirty=78 mapmax=25 N0=37 N1=41
      1 86800000 interleave:0-1 file=/SYSVe8a8ec10\040(deleted) dirty=1 mapmax=25 N1=1
--//奇怪这里仅仅出现N1没有N0的情况
--//一样满足前面的情况只要没有mapped,active

$ ps -ef | egrep '[o]ra_.*_book|[o]raclebook'|awk '{print $2}' | xargs -IQ grep 'SYSV' /proc/Q/numa_maps |grep  -v mapped | grep  active| uniq -c
      1 60000000 interleave:0-1 file=/SYSV00000000\040(deleted) dirty=89 mapmax=25 active=85 N0=42 N1=47
      1 60000000 interleave:0-1 file=/SYSV00000000\040(deleted) dirty=85 mapmax=25 active=84 N0=42 N1=43
      1 60000000 interleave:0-1 file=/SYSV00000000\040(deleted) dirty=72 mapmax=25 active=71 N0=34 N1=38
      1 60000000 interleave:0-1 file=/SYSV00000000\040(deleted) dirty=81 mapmax=25 active=77 N0=38 N1=43
      1 60000000 interleave:0-1 file=/SYSV00000000\040(deleted) dirty=78 mapmax=25 active=75 N0=35 N1=43
      1 60000000 interleave:0-1 file=/SYSV00000000\040(deleted) dirty=79 mapmax=25 active=75 N0=35 N1=44
      1 60000000 interleave:0-1 file=/SYSV00000000\040(deleted) dirty=1876 mapmax=25 active=72 N0=934 N1=942
      1 60000000 interleave:0-1 file=/SYSV00000000\040(deleted) dirty=167 mapmax=25 active=80 N0=79 N1=88
      1 60000000 interleave:0-1 file=/SYSV00000000\040(deleted) dirty=98 mapmax=25 active=90 N0=47 N1=51
      1 60000000 interleave:0-1 file=/SYSV00000000\040(deleted) dirty=111 mapmax=25 active=91 N0=52 N1=59
      1 60000000 interleave:0-1 file=/SYSV00000000\040(deleted) dirty=83 mapmax=25 active=81 N0=42 N1=41
      1 60000000 interleave:0-1 file=/SYSV00000000\040(deleted) dirty=103 mapmax=25 active=92 N0=50 N1=53
--//排除active行.无论是否active都出现 N0+N1=dirty ,dirty=N1(注这里不是N0).我仅仅找规律.

$ ipcs -m
------ Shared Memory Segments --------
key        shmid      owner      perms      bytes      nattch     status
0x00000000 419954688  oracle    640        12582912   25
0x00000000 419987457  oracle    640        633339904  25
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
0xe8a8ec10 420020226  oracle    640        2097152    25

--//12582912/4096 = 3072
--//633339904/4096 = 154624
--//2097152/4096 = 512
--//可以猜测pre_page_sga=true的情况下,实际上是映射中间部分.

--//我找一台设置pre_page_sga=false的机器,没有打开hugepages:
# ps -ef|egrep "[o]ra_.*_fyhis1|[o]raclefyhis1"|awk '{print $2}'|xargs -IQ grep "/SYSV" /proc/Q/numa_maps|grep  mapped
68000000 interleave:0-1 file=/SYSV00000000\040(deleted) dirty=3090 mapped=3100 mapmax=440 active=2485 N0=1558 N1=1542
--//仅仅出现1个存在mapped的行,而使用hugepages的,没有设置pre_page_sga=true的机器,没有输出.
#  ps -ef|egrep "[o]ra_.*_dbcn1|[o]racledbcn1"|awk '{print $2}'|xargs -IQ grep "/SYSV" /proc/Q/numa_maps|grep  mapped

--//确定出现mapped的是那个进程.
# ps -ef|egrep "[o]ra_.*_fyhis1|[o]raclefyhis1"|awk '{print $2}'|xargs -IQ bash -c "echo Q; grep "/SYSV" /proc/Q/numa_maps"| grep -B4 mapped
68000000 interleave:0-1 file=/SYSV00000000\040(deleted) dirty=36437 mapmax=424 active=36379 N0=18204 N1=18233
518000000 interleave:0-1 file=/SYSV5145def4\040(deleted) dirty=1 mapmax=424 N0=1
21527
60000000 interleave:0-1 file=/SYSV00000000\040(deleted) dirty=107 mapmax=424 N0=56 N1=51
68000000 interleave:0-1 file=/SYSV00000000\040(deleted) dirty=3090 mapped=3100 mapmax=424 active=2485 N0=1558 N1=1542

# ps -ef|  grep 2152[7]
oracle   21527     1  0 Nov01 ?        00:34:12 ora_diag_fyhis1
--//不知道为什么.

3.自己设计1个测试环境:
--//启动环境:
*.use_large_pages='false'
*.pre_page_sga=flase

SCOTT@book> create table t as select rownum id  from dual connect by level<=2;
Table created.

SCOTT@book> alter table t minimize records_per_block;
Table altered.

SCOTT@book> delete from t;
2 rows deleted.

SCOTT@book> commit ;
Commit complete.

SCOTT@book> insert into t  select rownum  from dual connect by level<=100;
100 rows created.

SCOTT@book> commit ;
Commit complete.

--//这样建立1块2条记录的表.
SCOTT@book> select 'select id from t where rowid='''||rowid||''';' c60 ,t.* from t where mod(id,2)=1;
C60                                                ID
-------------------------------------------------- --
select id from t where rowid='AAAWG7AAEAAAAeTAAA';  1
select id from t where rowid='AAAWG7AAEAAAAeUAAA';  3
select id from t where rowid='AAAWG7AAEAAAAeVAAA';  5
select id from t where rowid='AAAWG7AAEAAAAeWAAA';  7
select id from t where rowid='AAAWG7AAEAAAAeXAAA';  9
select id from t where rowid='AAAWG7AAEAAAAeYAAA'; 11
select id from t where rowid='AAAWG7AAEAAAAeZAAA'; 13
select id from t where rowid='AAAWG7AAEAAAAeaAAA'; 23
select id from t where rowid='AAAWG7AAEAAAAebAAA'; 25
select id from t where rowid='AAAWG7AAEAAAAecAAA'; 15
select id from t where rowid='AAAWG7AAEAAAAedAAA'; 17
select id from t where rowid='AAAWG7AAEAAAAeeAAA'; 19
select id from t where rowid='AAAWG7AAEAAAAefAAA'; 21
select id from t where rowid='AAAWG7AAEAAAAehAAA'; 35
select id from t where rowid='AAAWG7AAEAAAAeiAAA'; 37
select id from t where rowid='AAAWG7AAEAAAAejAAA'; 39
select id from t where rowid='AAAWG7AAEAAAAekAAA'; 27
select id from t where rowid='AAAWG7AAEAAAAelAAA'; 29
select id from t where rowid='AAAWG7AAEAAAAemAAA'; 31
select id from t where rowid='AAAWG7AAEAAAAenAAA'; 33
select id from t where rowid='AAAWG7AAEAAAAeoAAA'; 41
select id from t where rowid='AAAWG7AAEAAAAepAAA'; 43
select id from t where rowid='AAAWG7AAEAAAAeqAAA'; 53
select id from t where rowid='AAAWG7AAEAAAAerAAA'; 55
select id from t where rowid='AAAWG7AAEAAAAesAAA'; 45
select id from t where rowid='AAAWG7AAEAAAAetAAA'; 47
select id from t where rowid='AAAWG7AAEAAAAeuAAA'; 49
select id from t where rowid='AAAWG7AAEAAAAevAAA'; 51
select id from t where rowid='AAAWG7AAEAAAAexAAA'; 65
select id from t where rowid='AAAWG7AAEAAAAeyAAA'; 67
select id from t where rowid='AAAWG7AAEAAAAezAAA'; 69
select id from t where rowid='AAAWG7AAEAAAAe0AAA'; 57
select id from t where rowid='AAAWG7AAEAAAAe1AAA'; 59
select id from t where rowid='AAAWG7AAEAAAAe2AAA'; 61
select id from t where rowid='AAAWG7AAEAAAAe3AAA'; 63
select id from t where rowid='AAAWG7AAEAAAAe4AAA'; 71
select id from t where rowid='AAAWG7AAEAAAAe5AAA'; 73
select id from t where rowid='AAAWG7AAEAAAAe6AAA'; 83
select id from t where rowid='AAAWG7AAEAAAAe7AAA'; 85
select id from t where rowid='AAAWG7AAEAAAAe8AAA'; 75
select id from t where rowid='AAAWG7AAEAAAAe9AAA'; 77
select id from t where rowid='AAAWG7AAEAAAAe+AAA'; 79
select id from t where rowid='AAAWG7AAEAAAAe/AAA'; 81
select id from t where rowid='AAAWG7AAEAAAAfBAAA'; 95
select id from t where rowid='AAAWG7AAEAAAAfCAAA'; 97
select id from t where rowid='AAAWG7AAEAAAAfDAAA'; 99
select id from t where rowid='AAAWG7AAEAAAAfEAAA'; 87
select id from t where rowid='AAAWG7AAEAAAAfFAAA'; 89
select id from t where rowid='AAAWG7AAEAAAAfGAAA'; 91
select id from t where rowid='AAAWG7AAEAAAAfHAAA'; 93
50 rows selected.

--//保存前面的输出为文件z1.txt
--//修改如下:
$ cat z1.txt
select sysdate from dual;
select id from t where rowid='AAAWG7AAEAAAAeTAAA';
host sleep 2
select id from t where rowid='AAAWG7AAEAAAAeUAAA';
host sleep 2
select id from t where rowid='AAAWG7AAEAAAAeVAAA';
host sleep 2
select id from t where rowid='AAAWG7AAEAAAAeWAAA';
host sleep 2
select id from t where rowid='AAAWG7AAEAAAAeXAAA';
...

select sysdate from dual;
--//也就是中间加入host sleep 2.

SCOTT@book> alter system set cursor_sharing =force scope=memory;
System altered.
--//退出:

SCOTT@book> @ spid
       SID    SERIAL# PROCESS                  SERVER    SPID       PID  P_SERIAL# C50
---------- ---------- ------------------------ --------- ------ ------- ---------- --------------------------------------------------
        72          9 6003                     DEDICATED 6006        29          4 alter system kill session '72,9' immediate;

--//执行如下命令:
$ seq 100 | xargs -IQ bash -c "sleep 1;grep SYSV /proc/6006/numa_maps | grep 60c00000 | ts.awk" | tee /tmp/z3.txt

--//回到session 1:
SCOTT@book> @ z1.txt

--//查看/tmp/z3.txt文件:

$ seq 100 | xargs -IQ bash -c "sleep 2;grep SYSV /proc/8846/numa_maps | grep 60c00000 | ts.awk" | tee /tmp/z3.txt
[2019-12-12 08:21:25] 60c00000 interleave:0-1 file=/SYSV00000000\040(deleted) dirty=1404 mapmax=26 active=1403 N0=691 N1=713
[2019-12-12 08:21:27] 60c00000 interleave:0-1 file=/SYSV00000000\040(deleted) dirty=1404 mapmax=26 active=1403 N0=691 N1=713
[2019-12-12 08:21:29] 60c00000 interleave:0-1 file=/SYSV00000000\040(deleted) dirty=1404 mapmax=26 active=1403 N0=691 N1=713
[2019-12-12 08:21:31] 60c00000 interleave:0-1 file=/SYSV00000000\040(deleted) dirty=2169 mapmax=26 active=2168 N0=1089 N1=1080 <--脚本开始
[2019-12-12 08:21:33] 60c00000 interleave:0-1 file=/SYSV00000000\040(deleted) dirty=2175 mapmax=26 active=2174 N0=1091 N1=1084
[2019-12-12 08:21:35] 60c00000 interleave:0-1 file=/SYSV00000000\040(deleted) dirty=2181 mapmax=26 active=2180 N0=1093 N1=1088
[2019-12-12 08:21:37] 60c00000 interleave:0-1 file=/SYSV00000000\040(deleted) dirty=2187 mapmax=26 active=2186 N0=1097 N1=1090
[2019-12-12 08:21:39] 60c00000 interleave:0-1 file=/SYSV00000000\040(deleted) dirty=2194 mapmax=26 active=2193 N0=1102 N1=1092
[2019-12-12 08:21:41] 60c00000 interleave:0-1 file=/SYSV00000000\040(deleted) dirty=2197 mapmax=26 active=2196 N0=1104 N1=1093
[2019-12-12 08:21:43] 60c00000 interleave:0-1 file=/SYSV00000000\040(deleted) dirty=2204 mapmax=26 active=2203 N0=1108 N1=1096
[2019-12-12 08:21:45] 60c00000 interleave:0-1 file=/SYSV00000000\040(deleted) dirty=2211 mapmax=26 active=2210 N0=1111 N1=1100
[2019-12-12 08:21:47] 60c00000 interleave:0-1 file=/SYSV00000000\040(deleted) dirty=2217 mapmax=26 active=2216 N0=1113 N1=1104
[2019-12-12 08:21:49] 60c00000 interleave:0-1 file=/SYSV00000000\040(deleted) dirty=2224 mapmax=26 active=2223 N0=1117 N1=1107
[2019-12-12 08:21:51] 60c00000 interleave:0-1 file=/SYSV00000000\040(deleted) dirty=2232 mapmax=26 active=2231 N0=1120 N1=1112
[2019-12-12 08:21:53] 60c00000 interleave:0-1 file=/SYSV00000000\040(deleted) dirty=2238 mapmax=26 active=2237 N0=1123 N1=1115
[2019-12-12 08:21:55] 60c00000 interleave:0-1 file=/SYSV00000000\040(deleted) dirty=2246 mapmax=26 active=2245 N0=1129 N1=1117
[2019-12-12 08:21:57] 60c00000 interleave:0-1 file=/SYSV00000000\040(deleted) dirty=2266 mapmax=26 active=2265 N0=1131 N1=1135
[2019-12-12 08:21:59] 60c00000 interleave:0-1 file=/SYSV00000000\040(deleted) dirty=2273 mapmax=26 active=2272 N0=1135 N1=1138
[2019-12-12 08:22:01] 60c00000 interleave:0-1 file=/SYSV00000000\040(deleted) dirty=2279 mapmax=26 active=2278 N0=1136 N1=1143
[2019-12-12 08:22:03] 60c00000 interleave:0-1 file=/SYSV00000000\040(deleted) dirty=2285 mapmax=26 active=2284 N0=1139 N1=1146
[2019-12-12 08:22:05] 60c00000 interleave:0-1 file=/SYSV00000000\040(deleted) dirty=2291 mapmax=26 active=2290 N0=1143 N1=1148
[2019-12-12 08:22:07] 60c00000 interleave:0-1 file=/SYSV00000000\040(deleted) dirty=2300 mapmax=26 active=2299 N0=1148 N1=1152
[2019-12-12 08:22:09] 60c00000 interleave:0-1 file=/SYSV00000000\040(deleted) dirty=2306 mapmax=26 active=2305 N0=1153 N1=1153
[2019-12-12 08:22:11] 60c00000 interleave:0-1 file=/SYSV00000000\040(deleted) dirty=2313 mapmax=26 active=2312 N0=1155 N1=1158
[2019-12-12 08:22:13] 60c00000 interleave:0-1 file=/SYSV00000000\040(deleted) dirty=2316 mapmax=26 active=2315 N0=1156 N1=1160
[2019-12-12 08:22:15] 60c00000 interleave:0-1 file=/SYSV00000000\040(deleted) dirty=2322 mapmax=26 active=2321 N0=1160 N1=1162
[2019-12-12 08:22:17] 60c00000 interleave:0-1 file=/SYSV00000000\040(deleted) dirty=2327 mapmax=26 active=2326 N0=1162 N1=1165
[2019-12-12 08:22:19] 60c00000 interleave:0-1 file=/SYSV00000000\040(deleted) dirty=2331 mapmax=26 active=2330 N0=1165 N1=1166
[2019-12-12 08:22:21] 60c00000 interleave:0-1 file=/SYSV00000000\040(deleted) dirty=2336 mapmax=26 active=2335 N0=1167 N1=1169
[2019-12-12 08:22:23] 60c00000 interleave:0-1 file=/SYSV00000000\040(deleted) dirty=2350 mapmax=26 active=2349 N0=1169 N1=1181
[2019-12-12 08:22:25] 60c00000 interleave:0-1 file=/SYSV00000000\040(deleted) dirty=2356 mapmax=26 active=2355 N0=1173 N1=1183
[2019-12-12 08:22:27] 60c00000 interleave:0-1 file=/SYSV00000000\040(deleted) dirty=2364 mapmax=26 active=2363 N0=1178 N1=1186
[2019-12-12 08:22:29] 60c00000 interleave:0-1 file=/SYSV00000000\040(deleted) dirty=2372 mapmax=26 active=2371 N0=1185 N1=1187
[2019-12-12 08:22:31] 60c00000 interleave:0-1 file=/SYSV00000000\040(deleted) dirty=2379 mapmax=26 active=2378 N0=1187 N1=1192
[2019-12-12 08:22:33] 60c00000 interleave:0-1 file=/SYSV00000000\040(deleted) dirty=2388 mapmax=26 active=2387 N0=1190 N1=1198
[2019-12-12 08:22:35] 60c00000 interleave:0-1 file=/SYSV00000000\040(deleted) dirty=2395 mapmax=26 active=2394 N0=1196 N1=1199
[2019-12-12 08:22:37] 60c00000 interleave:0-1 file=/SYSV00000000\040(deleted) dirty=2402 mapmax=26 active=2401 N0=1199 N1=1203
[2019-12-12 08:22:39] 60c00000 interleave:0-1 file=/SYSV00000000\040(deleted) dirty=2410 mapmax=26 active=2409 N0=1204 N1=1206
[2019-12-12 08:22:41] 60c00000 interleave:0-1 file=/SYSV00000000\040(deleted) dirty=2416 mapmax=26 active=2415 N0=1209 N1=1207
[2019-12-12 08:22:43] 60c00000 interleave:0-1 file=/SYSV00000000\040(deleted) dirty=2423 mapmax=26 active=2422 N0=1213 N1=1210
[2019-12-12 08:22:45] 60c00000 interleave:0-1 file=/SYSV00000000\040(deleted) dirty=2431 mapmax=26 active=2430 N0=1215 N1=1216
[2019-12-12 08:22:47] 60c00000 interleave:0-1 file=/SYSV00000000\040(deleted) dirty=2438 mapmax=26 active=2437 N0=1218 N1=1220
[2019-12-12 08:22:49] 60c00000 interleave:0-1 file=/SYSV00000000\040(deleted) dirty=2445 mapmax=26 active=2444 N0=1222 N1=1223
[2019-12-12 08:22:51] 60c00000 interleave:0-1 file=/SYSV00000000\040(deleted) dirty=2453 mapmax=26 active=2452 N0=1227 N1=1226
[2019-12-12 08:22:53] 60c00000 interleave:0-1 file=/SYSV00000000\040(deleted) dirty=2460 mapmax=26 active=2459 N0=1232 N1=1228
[2019-12-12 08:22:55] 60c00000 interleave:0-1 file=/SYSV00000000\040(deleted) dirty=2466 mapmax=26 active=2465 N0=1234 N1=1232
[2019-12-12 08:22:57] 60c00000 interleave:0-1 file=/SYSV00000000\040(deleted) dirty=2472 mapmax=26 active=2471 N0=1236 N1=1236
[2019-12-12 08:22:59] 60c00000 interleave:0-1 file=/SYSV00000000\040(deleted) dirty=2477 mapmax=26 active=2476 N0=1238 N1=1239
[2019-12-12 08:23:01] 60c00000 interleave:0-1 file=/SYSV00000000\040(deleted) dirty=2489 mapmax=26 active=2488 N0=1242 N1=1247
[2019-12-12 08:23:03] 60c00000 interleave:0-1 file=/SYSV00000000\040(deleted) dirty=2493 mapmax=26 active=2492 N0=1244 N1=1249
[2019-12-12 08:23:05] 60c00000 interleave:0-1 file=/SYSV00000000\040(deleted) dirty=2495 mapmax=26 active=2494 N0=1244 N1=1251
[2019-12-12 08:23:07] 60c00000 interleave:0-1 file=/SYSV00000000\040(deleted) dirty=2503 mapmax=26 active=2502 N0=1250 N1=1253  
[2019-12-12 08:23:09] 60c00000 interleave:0-1 file=/SYSV00000000\040(deleted) dirty=2504 mapmax=26 active=2503 N0=1251 N1=1253  <-脚本结束
[2019-12-12 08:23:11] 60c00000 interleave:0-1 file=/SYSV00000000\040(deleted) dirty=2504 mapmax=26 active=2503 N0=1251 N1=1253

--//dirty增加没有规律.active视乎表示变化的次数.dirty至少跟touch pagetables有关.

$ cat /tmp/z3.txt |awk '{print $6}' | cut -f2 -d= | awk 'NR==1{a=$1} NR>1{print $1-a;a=$1}' | sort -nr | uniq -c
      1 765
      1 20
      1 14
      1 12
      2 9
      8 8
     13 7
     14 6
      3 5
      2 4
      2 3
      1 2
      1 1
      3 0
--//变化主要集中在6,7,8.我开始以为这样测试会出现每次2个的变化.因为每次执行要访问1个数据块(8K),相当于2个pagetables(每个4K).
--//可以测试情况不是,我不知道为什么.也许还要访问共享池,还是这些页面已经touch了.不理解.
--//我更加愿意相信dirty就是表示会话touch页面表的数量.

--//继续重复执行z1.txt脚本:
$ seq 100 | xargs -IQ bash -c "sleep 2;grep SYSV /proc/8846/numa_maps | grep 60c00000 | ts.awk" | tee /tmp/z4.txt
[2019-12-12 08:28:38] 60c00000 interleave:0-1 file=/SYSV00000000\040(deleted) dirty=2504 mapmax=26 active=2503 N0=1251 N1=1253
[2019-12-12 08:28:40] 60c00000 interleave:0-1 file=/SYSV00000000\040(deleted) dirty=2504 mapmax=26 active=2503 N0=1251 N1=1253
[2019-12-12 08:28:42] 60c00000 interleave:0-1 file=/SYSV00000000\040(deleted) dirty=2504 mapmax=26 active=2503 N0=1251 N1=1253
[2019-12-12 08:28:44] 60c00000 interleave:0-1 file=/SYSV00000000\040(deleted) dirty=2504 mapmax=26 active=2503 N0=1251 N1=1253
[2019-12-12 08:28:46] 60c00000 interleave:0-1 file=/SYSV00000000\040(deleted) dirty=2504 mapmax=26 active=2503 N0=1251 N1=1253
[2019-12-12 08:28:48] 60c00000 interleave:0-1 file=/SYSV00000000\040(deleted) dirty=2504 mapmax=26 active=2503 N0=1251 N1=1253
[2019-12-12 08:28:50] 60c00000 interleave:0-1 file=/SYSV00000000\040(deleted) dirty=2504 mapmax=26 active=2503 N0=1251 N1=1253
[2019-12-12 08:28:52] 60c00000 interleave:0-1 file=/SYSV00000000\040(deleted) dirty=2504 mapmax=26 active=2503 N0=1251 N1=1253
[2019-12-12 08:28:54] 60c00000 interleave:0-1 file=/SYSV00000000\040(deleted) dirty=2504 mapmax=26 active=2503 N0=1251 N1=1253
[2019-12-12 08:28:56] 60c00000 interleave:0-1 file=/SYSV00000000\040(deleted) dirty=2504 mapmax=26 active=2503 N0=1251 N1=1253
[2019-12-12 08:28:58] 60c00000 interleave:0-1 file=/SYSV00000000\040(deleted) dirty=2504 mapmax=26 active=2503 N0=1251 N1=1253
[2019-12-12 08:29:00] 60c00000 interleave:0-1 file=/SYSV00000000\040(deleted) dirty=2504 mapmax=26 active=2503 N0=1251 N1=1253
[2019-12-12 08:29:02] 60c00000 interleave:0-1 file=/SYSV00000000\040(deleted) dirty=2504 mapmax=26 active=2503 N0=1251 N1=1253
[2019-12-12 08:29:04] 60c00000 interleave:0-1 file=/SYSV00000000\040(deleted) dirty=2504 mapmax=26 active=2503 N0=1251 N1=1253
[2019-12-12 08:29:06] 60c00000 interleave:0-1 file=/SYSV00000000\040(deleted) dirty=2504 mapmax=26 active=2503 N0=1251 N1=1253
[2019-12-12 08:29:08] 60c00000 interleave:0-1 file=/SYSV00000000\040(deleted) dirty=2504 mapmax=26 active=2503 N0=1251 N1=1253
[2019-12-12 08:29:10] 60c00000 interleave:0-1 file=/SYSV00000000\040(deleted) dirty=2504 mapmax=26 active=2503 N0=1251 N1=1253
[2019-12-12 08:29:12] 60c00000 interleave:0-1 file=/SYSV00000000\040(deleted) dirty=2504 mapmax=26 active=2503 N0=1251 N1=1253
[2019-12-12 08:29:14] 60c00000 interleave:0-1 file=/SYSV00000000\040(deleted) dirty=2504 mapmax=26 active=2503 N0=1251 N1=1253
[2019-12-12 08:29:16] 60c00000 interleave:0-1 file=/SYSV00000000\040(deleted) dirty=2504 mapmax=26 active=2503 N0=1251 N1=1253
[2019-12-12 08:29:18] 60c00000 interleave:0-1 file=/SYSV00000000\040(deleted) dirty=2504 mapmax=26 active=2503 N0=1251 N1=1253
[2019-12-12 08:29:20] 60c00000 interleave:0-1 file=/SYSV00000000\040(deleted) dirty=2504 mapmax=26 active=2503 N0=1251 N1=1253
[2019-12-12 08:29:22] 60c00000 interleave:0-1 file=/SYSV00000000\040(deleted) dirty=2504 mapmax=26 active=2503 N0=1251 N1=1253
[2019-12-12 08:29:24] 60c00000 interleave:0-1 file=/SYSV00000000\040(deleted) dirty=2504 mapmax=26 active=2503 N0=1251 N1=1253
[2019-12-12 08:29:26] 60c00000 interleave:0-1 file=/SYSV00000000\040(deleted) dirty=2504 mapmax=26 active=2503 N0=1251 N1=1253
[2019-12-12 08:29:28] 60c00000 interleave:0-1 file=/SYSV00000000\040(deleted) dirty=2504 mapmax=26 active=2503 N0=1251 N1=1253
[2019-12-12 08:29:30] 60c00000 interleave:0-1 file=/SYSV00000000\040(deleted) dirty=2504 mapmax=26 active=2503 N0=1251 N1=1253
[2019-12-12 08:29:32] 60c00000 interleave:0-1 file=/SYSV00000000\040(deleted) dirty=2504 mapmax=26 active=2503 N0=1251 N1=1253
[2019-12-12 08:29:34] 60c00000 interleave:0-1 file=/SYSV00000000\040(deleted) dirty=2504 mapmax=26 active=2503 N0=1251 N1=1253
[2019-12-12 08:29:36] 60c00000 interleave:0-1 file=/SYSV00000000\040(deleted) dirty=2504 mapmax=26 active=2503 N0=1251 N1=1253
[2019-12-12 08:29:38] 60c00000 interleave:0-1 file=/SYSV00000000\040(deleted) dirty=2504 mapmax=26 active=2503 N0=1251 N1=1253
[2019-12-12 08:29:40] 60c00000 interleave:0-1 file=/SYSV00000000\040(deleted) dirty=2504 mapmax=26 active=2503 N0=1251 N1=1253
[2019-12-12 08:29:42] 60c00000 interleave:0-1 file=/SYSV00000000\040(deleted) dirty=2504 mapmax=26 active=2503 N0=1251 N1=1253
[2019-12-12 08:29:44] 60c00000 interleave:0-1 file=/SYSV00000000\040(deleted) dirty=2504 mapmax=26 active=2503 N0=1251 N1=1253
[2019-12-12 08:29:46] 60c00000 interleave:0-1 file=/SYSV00000000\040(deleted) dirty=2504 mapmax=26 active=2503 N0=1251 N1=1253
[2019-12-12 08:29:48] 60c00000 interleave:0-1 file=/SYSV00000000\040(deleted) dirty=2504 mapmax=26 active=2503 N0=1251 N1=1253
[2019-12-12 08:29:50] 60c00000 interleave:0-1 file=/SYSV00000000\040(deleted) dirty=2504 mapmax=26 active=2503 N0=1251 N1=1253
[2019-12-12 08:29:52] 60c00000 interleave:0-1 file=/SYSV00000000\040(deleted) dirty=2504 mapmax=26 active=2503 N0=1251 N1=1253
[2019-12-12 08:29:54] 60c00000 interleave:0-1 file=/SYSV00000000\040(deleted) dirty=2504 mapmax=26 active=2503 N0=1251 N1=1253
[2019-12-12 08:29:56] 60c00000 interleave:0-1 file=/SYSV00000000\040(deleted) dirty=2504 mapmax=26 active=2503 N0=1251 N1=1253
[2019-12-12 08:29:58] 60c00000 interleave:0-1 file=/SYSV00000000\040(deleted) dirty=2504 mapmax=26 active=2503 N0=1251 N1=1253
[2019-12-12 08:30:00] 60c00000 interleave:0-1 file=/SYSV00000000\040(deleted) dirty=2504 mapmax=26 active=2503 N0=1251 N1=1253
[2019-12-12 08:30:02] 60c00000 interleave:0-1 file=/SYSV00000000\040(deleted) dirty=2504 mapmax=26 active=2503 N0=1251 N1=1253
[2019-12-12 08:30:04] 60c00000 interleave:0-1 file=/SYSV00000000\040(deleted) dirty=2504 mapmax=26 active=2503 N0=1251 N1=1253
[2019-12-12 08:30:06] 60c00000 interleave:0-1 file=/SYSV00000000\040(deleted) dirty=2504 mapmax=26 active=2503 N0=1251 N1=1253
[2019-12-12 08:30:08] 60c00000 interleave:0-1 file=/SYSV00000000\040(deleted) dirty=2504 mapmax=26 active=2503 N0=1251 N1=1253
[2019-12-12 08:30:10] 60c00000 interleave:0-1 file=/SYSV00000000\040(deleted) dirty=2504 mapmax=26 active=2503 N0=1251 N1=1253
[2019-12-12 08:30:12] 60c00000 interleave:0-1 file=/SYSV00000000\040(deleted) dirty=2505 mapmax=26 active=2504 N0=1252 N1=1253
[2019-12-12 08:30:14] 60c00000 interleave:0-1 file=/SYSV00000000\040(deleted) dirty=2505 mapmax=26 active=2504 N0=1252 N1=1253
[2019-12-12 08:30:17] 60c00000 interleave:0-1 file=/SYSV00000000\040(deleted) dirty=2506 mapmax=26 active=2505 N0=1252 N1=1254
[2019-12-12 08:30:19] 60c00000 interleave:0-1 file=/SYSV00000000\040(deleted) dirty=2506 mapmax=26 active=2505 N0=1252 N1=1254
[2019-12-12 08:30:21] 60c00000 interleave:0-1 file=/SYSV00000000\040(deleted) dirty=2506 mapmax=26 active=2505 N0=1252 N1=1254
[2019-12-12 08:30:23] 60c00000 interleave:0-1 file=/SYSV00000000\040(deleted) dirty=2506 mapmax=26 active=2505 N0=1252 N1=1254
[2019-12-12 08:30:25] 60c00000 interleave:0-1 file=/SYSV00000000\040(deleted) dirty=2506 mapmax=26 active=2505 N0=1252 N1=1254
--//dirty基本不变化.

总结:
--//1.mapmax表示atach 共享内存段的进程数,这点没有问题.
--//2.*.pre_page_sga=true的情况下,最大的共享内存段每个连接进程要touch全部页面表.至少11g的情况是这样.12c,18c的情况未必.
--//3.dirty 我个人倾向与表示会话touch页面表的数量.
--//浪费上午1小时,整个下午3个小时探究这个,有点浪费时间,不知道自己的分析理解是否正确.本来不想贴出来.对于OS的许多理解是一篇空白.
--//许多仅仅是自己的异臆想和猜测.

补充:
SYS@orclcdb> select BANNER from v$version;
BANNER
----------------------------------------------------------------------
Oracle Database 18c Enterprise Edition Release 18.0.0.0.0 - Production

SYS@orclcdb> show parameter pre_page_sga
NAME         TYPE    VALUE
------------ ------- ------
pre_page_sga boolean TRUE

# ps -ef |grep lgwr
root      3801  3744  0 10:43 pts/0    00:00:00 grep --color=auto lgwr
oracle   13632     1  0 12月05 ?      00:00:15 asm_lgwr_+ASM
oracle   16189     1  0 12月05 ?      00:00:35 ora_lgwr_orclcdb

# cat /proc/16189/numa_maps | grep  SYSV
60000000 default file=/SYSV00000000\040(deleted)
60001000 default file=/SYSV00000000\040(deleted) dirty=104 mapmax=66 N0=104 kernelpagesize_kB=4
61000000 default file=/SYSV00000000\040(deleted) dirty=819 mapmax=66 active=785 N0=819 kernelpagesize_kB=4
185000000 default file=/SYSV00000000\040(deleted) dirty=13335 mapmax=20 active=13122 N0=13335 kernelpagesize_kB=4
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
189000000 default file=/SYSVd48cd3f0\040(deleted) dirty=1 mapmax=66 N0=1 kernelpagesize_kB=4
--//rh 7.0版本加入了,kernelpagesize_kB=4.
--//奇怪有1共享内存段的mapmax=20的情况.

$ ipcs -m
------ Shared Memory Segments --------
key        shmid      owner      perms      bytes      nattch     status
0x00000000 294912     oracle     777        16384      1          dest
0x00000000 327681     oracle     777        4325376    2          dest
0x00000000 589826     oracle     777        4325376    2          dest
0x00000000 557059     oracle     600        524288     2          dest
0x00000000 688132     oracle     600        524288     2          dest
0x56538844 720901     oracle     600        24576      25
0x00000000 753670     oracle     600        524288     2          dest
0x00000000 917512     oracle     600        524288     2          dest
0x00000000 983050     oracle     600        8908800    132
0x00000000 1015819    oracle     600        4898947072 66
0x00000000 1048588    oracle     600        58200064   66
0xd48cd3f0 1081357    oracle     600        24576      66

--//乱,看不懂. mapmax=20来自那个共享内存段.

来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/267265/viewspace-2668400/ ,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论
熟悉oracle相关技术,擅长sql优化,rman备份与恢复,熟悉linux shell编程。

注册时间:2008-01-03

  • 博文量
    4006
  • 访问量
    7969459