oracle event heapdump_sga dump_shared pool_pga_uga

/*******dump pga******也即level 1导出pga的信息*****/
SQL> alter session set events 'immediate trace name heapdump level 1';
 
Session altered

/****pga trace如下***********/
******************************************************
/****pga是采用内存堆方面管理,由多个heap组成*********/
HEAP DUMP heap name="pga heap"  desc=00000000177ABD20
 extent sz=0x20c0 alt=216 het=32767 rec=0 flg=2 pc=2
 parent=0000000000000000 wner=0000000000000000 nex=0000000000000000 xsz=0xfff0 heap=0000000000000000
 fl2=0x60, nex=0000000000000000
 
/**********多个区extent组成************/
EXTENT 0 addr=000000001FA90010
  Chunk        01fa90020 sz=    61280    free      "               "
  Chunk        01fa9ef80 sz=     4224    freeable  "diag pga       "  ds=000000001DA20708
EXTENT 1 addr=000000001FA80010
/*******每个区由多个chunk组成************/
  Chunk        01fa80020 sz=     9736    perm      "perm           "  alo=9736
  Chunk        01fa82628 sz=     2504    freeable  "diag pga       "  ds=000000001DA20708
  Chunk        01fa82ff0 sz=     6112    freeable  "diag pga       "  ds=000000001DA20708
  Chunk        01fa8f980 sz=      592    freeable  "kopolal void   "
  Chunk        01fa8fbd0 sz=     1072    freeable  "kopolal void   "
EXTENT 2 addr=000000001DA366F8
/**********每个chunk有地址,大小,状态,所对应的latch**************/
  Chunk        01da36708 sz=     3952    perm      "perm           "  alo=3952
  Chunk        01da37678 sz=       48    free      "               "
  Chunk        01da376a8 sz=     4104    recreate  "dbgdInitEventG "  latch=0000000000000000
     ds        01efd8d60 sz=     4104 ct=        1
  Chunk        01da386b0 sz=      264    freeable  "dbgdInitEventGr"
EXTENT 3 addr=000000001DA32438
  Chunk        01da32448 sz=    17024    freeable  "kgh stack      "
  Chunk        01da23458 sz=     8256    freeable  "diag pga       "  ds=000000001DA20708
---中间略----------
/***********上述extent的总计*********即heap由多个区组成,而每个区又是由多个chunk组成**********/
Total heap size    =   380680

/************自由列表**************/
FREE LISTS:
/********自由列表也是由多个bucket桶组成***********/
 Bucket 0 size=56
 /********每个桶由多个chunk组成*************/
  Chunk        01da37678 sz=       48    free      "               "
  Chunk        01da67b20 sz=        0    kghdsx
 Bucket 1 size=88
 Bucket 2 size=152
 Bucket 17 size=2097176
 /**********自由列表的总计***************/
Total free space   =    61328
/******未pin住可重建状态的chunks即lru first******也即pin chunks不能重用*******/
UNPINNED RECREATABLE CHUNKS (lru first):

/********永久性的chunks分配情况******这个永久性的chunks源来上述的free list和heap中的chunk**********/
PERMANENT CHUNKS:
  Chunk        01fa80020 sz=     9736    perm      "perm           "  alo=9736
  Chunk        01efd8d00 sz=       72    perm      "perm           "  alo=72
---中间略
  Chunk        01da67b50 sz=       80    perm      "perm           "  alo=80
  Chunk        01da67b00 sz=       80    perm      "perm           "  alo=80
/******永久性chunk总计*************/ 
Permanent space    =   133248
******************************************************
******************************************************
HEAP DUMP heap name="top call heap"  desc=00000000177B1520
 extent sz=0x20c0 alt=232 het=32767 rec=0 flg=2 pc=3
 parent=0000000000000000 wner=0000000000000000 nex=0000000000000000 xsz=0xfff8 heap=0000000000000000
 fl2=0x20, nex=0000000000000000
 
/**********区号0的chunk分配信息**********/
EXTENT 0 addr=000000001FA70008
  Chunk        01fa70018 sz=       80    perm      "perm           "  alo=80
  Chunk        01fa70068 sz=    32752    perm      "perm           "  alo=560
  Chunk        01fa78058 sz=    31648    free      "               "
  Chunk        01fa7fbf8 sz=     1032    recreate  "callheap       "  latch=0000000000000000
     ds        0177b0620 sz=     1032 ct=        1
Total heap size    =    65512
FREE LISTS:
 Bucket 0 size=56
  Chunk        01fa70038 sz=        0    kghdsx
 Bucket 1 size=88
 Bucket 2 size=152
 Bucket 17 size=2097176
Total free space   =    31648
UNPINNED RECREATABLE CHUNKS (lru first):
PERMANENT CHUNKS:
  Chunk        01fa70068 sz=    32752    perm      "perm           "  alo=560
  Chunk        01fa70018 sz=       80    perm      "perm           "  alo=80
Permanent space    =    32832
******************************************************
******************************************************
HEAP DUMP heap name="top uga heap"  desc=00000000177B1740
 extent sz=0xffc0 alt=232 het=32767 rec=0 flg=2 pc=0
 parent=0000000000000000 wner=0000000000000000 nex=0000000000000000 xsz=0x0 heap=0000000000000000
 fl2=0x20, nex=0000000000000000
 

/************开启level 2 heapdump******************/
SQL> alter session set events 'immediate trace name heapdump level 2';
 
Session altered


 
/********主要看下level 2包括什么内容************/
KGH Latch Directory Information
ldir state: 2  last allocated slot: 104 --记录上次分配的slot位置
/*******共计104个slot**********/
Slot [  1] Latch: 00000000082173D0  Index: 1  Flags:  3  State: 2  next:  0000000000000000
Slot [  2] Latch: 000000000821A760  Index: 1  Flags:  3  State: 2  next:  0000000000000000
Slot [  3] Latch: 000007FF3E339A18  Index: 1  Flags:  3  State: 2  next:  0000000000000000
Slot [  4] Latch: 000007FF3E339AF8  Index: 1  Flags:  3  State: 2  next:  000000000FE6BF30
Slot [  5] Latch: 000000000821AB20  Index: 1  Flags:  3  State: 2  next:  0000000000000000
--中间略
Slot [104] Latch: 00000000082507A0  Index: 1  Flags:  3  State: 2  next:  000000000FE6C818
******************************************************
/*****sga开始dump**********/
HEAP DUMP heap name="sga heap"  desc=000000000820E730
 extent sz=0x9800 alt=248 het=32767 rec=9 flg=-126 pc=0
 parent=0000000000000000 wner=0000000000000000 nex=0000000000000000 xsz=0x0 heap=0000000000000000
 fl2=0x60, nex=0000000000000000
 ds for latch 1: 0xfdb8a30 0xfdba288 0xfdbbae0 0xfdbd338
 reserved granule count 48 (granule size 4194304)--与下面的RESERVED EXTENTS呼应
/*********保留的区个数*****共计48个******/
RESERVED EXTENTS
  0x28c00000 0x2d800000 0x2d400000 0x2d000000
  0x2cc00000 0x2c800000 0x2c400000 0x2c000000
---中间略
  0x35c00000 0x35800000 0x35400000 0x35000000
Counted elements on list: 48 --前后呼应
******************************************************
HEAP DUMP heap name="sga heap(1,0)"  desc=000000000FDB8A30
/******rec我理解即有几个sub heap个数*********/
 extent sz=0xfe0 alt=248 het=32767 rec=9 flg=-126 pc=0
 parent=0000000000000000 wner=0000000000000000 nex=0000000000000000 xsz=0x400000 heap=0000000000000000
 fl2=0x20, nex=0000000000000000
 latch set 1 of 1
 durations enabled for this heap
 reserved granules for root 48 (granule size 4194304)
/*****区分配********/
EXTENT 0 addr=000007FF29400000
  Chunk      7ff29400058 sz=       48  R-freeable  "reserved stoppe"
  Chunk      7ff29400088 sz=   212808  R-free      "               "
  Chunk      7ff29433fd0 sz=       48  R-freeable  "reserved stoppe"
  Chunk      7ff29434000 sz=  3981312    perm      "perm           "  alo=185728
  ---中间略
EXTENT 21 addr=000007FF3EC00000
  Chunk      7ff3ec00058 sz=       80    perm      "perm           "  alo=80
  Chunk      7ff3ec000a8 sz=       48  R-freeable  "reserved stoppe"
  Chunk      7ff3ec000d8 sz=   212728  R-free      "               "
  Chunk      7ff3ec33fd0 sz=       48  R-freeable  "reserved stoppe"
  Chunk      7ff3ec34000 sz=  3978016    perm      "perm           "  alo=3978016
  Chunk      7ff3efff320 sz=     3296    perm      "perm           "  alo=3272
Total heap size    = 92272752
/********自由列表*************/
FREE LISTS:
 Bucket 0 size=32
  Chunk      7ff3ec00078 sz=        0    kghdsx
 Bucket 1 size=40
---中间略
 Bucket 254 size=65560
Total free space   =    18272

/********上述的自由列表的增强,即保留的自由列表,结构和free list一样******/
RESERVED FREE LISTS:
 Reserved bucket 0 size=32
  Chunk      7ff39bff288 sz=     3400  R-free      "               "
 Reserved bucket 1 size=4400
 --中间略
  Chunk      7ff3a2000a8 sz=  2096936  R-free      "               "
  /********保留自由列表总计*********/
Total reserved free space   =  8031576 

/*******未pin可重构的chunk 即lru first列表的详细信息*************/
UNPINNED RECREATABLE CHUNKS (lru first):
  Chunk      7ff3eb95550 sz=       56    recreate  "fixed allocatio"  latch=0000000008228660
 --中间略
     ds      7ff393fc3b0 sz=     4096 ct=        1
  Chunk      7ff38fff000 sz=     4096    recreate  "SQLA^aa0beccb  "  latch=0000000000000000
     ds      7ff393f67d0 sz=    12288 ct=        3
             7ff38f58d20 sz=     4096
             7ff38fef000 sz=     4096
Total heap size    = 41942160
/******自由列表************/
FREE LISTS:
 Bucket 0 size=32
  Chunk      7ff38c00078 sz=        0    kghdsx
 Bucket 1 size=40
 --中间略
 Bucket 254 size=65560
  Chunk      7ff29034000 sz=  2739952    free      "               "
Total free space   =  2766232

/*****保留自由列表*******/
RESERVED FREE LISTS:
 Reserved bucket 0 size=32
 ---中间略
  Chunk      7ff38c000d8 sz=   212728  R-free      "               "
 Reserved bucket 14 size=1990644
Total reserved free space   =  2128000
UNPINNED RECREATABLE CHUNKS (lru first):
SEPARATOR
Unpinned space     =        0  rcr=0 trn=0
PERMANENT CHUNKS:
  Chunk      7ff38c00058 sz=       80    perm      "perm           "  alo=80
Permanent space    =       80
******************************************************

 


/****level 3 trace如下*******添加了uga trace********/
******************************************************
HEAP DUMP heap name="top uga heap"  desc=0000000017A67520
 extent sz=0xffc0 alt=232 het=32767 rec=0 flg=2 pc=0
 parent=0000000000000000 wner=0000000000000000 nex=0000000000000000 xsz=0x0 heap=0000000000000000
 fl2=0x20, nex=0000000000000000
 
小结:1,alter session set events 'immediate trace name heapdump level 3';
        dump sga内部结构:即shared pool,pga,uga的组成,free list,reversed free list,latch,extent,chunk
      2,level 3>level 2>level 1

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

转载于:http://blog.itpub.net/9240380/viewspace-757358/

rte_malloc_heap_dump() 函数可以用于打印当前 DPDK 内存堆的使用情况。其函数原型如下: ```c void rte_malloc_heap_dump(FILE *f); ``` 其中,参数 f 是指向 FILE 结构的指针,用于指定输出的文件句柄。如果 f 为 NULL,则输出到标准输出。 以下是一个简单的示例代码,展示如何使用 rte_malloc_heap_dump() 函数: ```c #include <stdio.h> #include <rte_malloc.h> int main(int argc, char **argv) { // 初始化 DPDK 环境 rte_eal_init(argc, argv); // 分配一块内存 void *mem = rte_malloc(NULL, 1024, 0); if (mem == NULL) { printf("Failed to allocate memory!\n"); return -1; } // 输出内存使用情况 rte_malloc_heap_dump(stdout); // 释放内存 rte_free(mem); return 0; } ``` 在上述代码中,我们首先使用 rte_eal_init() 函数初始化 DPDK 环境,然后使用 rte_malloc() 函数分配了一块 1024 字节的内存。接着,我们使用 rte_malloc_heap_dump() 函数打印内存使用情况,将结果输出到标准输出中。最后,我们使用 rte_free() 函数释放了分配的内存。 当运行该程序时,屏幕上将输出类似以下的信息: ``` DPDK memory heap Heap name: rte_malloc_heap Total size: 268435456 bytes Free size: 267438584 bytes Free blocks: 2 Allocated blocks: 3 Minimum alloc size: 64 bytes Maximum alloc size: 268435392 bytes Total allocations: 3072 bytes Total frees: 3072 bytes ``` 可以看到,我们在程序中分配了一块 1024 字节的内存,而该内存块的信息也被打印出来了。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值