当我们对db2内存使用清理进行监控检查的时候,经常需要知道db2当前的内存使用情况。通过参数instance_memory并不能准确的看到这些信息,因为instance_memory包括了mon_heap, audit_buf_sz and FCM, database shared memory segment (bufferpool, locklist, dbheap, pckcache, util_heap, catalogcache)这些内存池集合,而db2mtrk就可以指定数据库和实例级别查看实时的内存使用情况
所以在DB2中,db2mtrk工具就是一个查看当前内存使用情况的非常好的的工具。
db2mtrk的命令语法:(unix,linux,window平台之间可能有稍许差异)db2inst1@marven ~]$ db2mtrk -h
Usage: db2mtrk -i | -d | -a | -p [-m | -w] [-v] [-r interval [count]] [-h]
-i Display instance level memory usage
-d Display database level memory usage
-a Display application level memory usage
-p Display agent private memory usage
-m Display maximum usage information
-w Display watermark usage information
-v Display verbose memory usage information
-r Run in repeat mode
interval Amount of seconds to wait between reports
count Number of reports to generate before quitting
-h Display this help screen
Notes:
1. One of -i -d -a -p must be specified.
2. The -w and -m flags are optional. An invocation of the application
is invalid if both flags are specified.
3. The -m flag reports the maximum allowable size for a given heap
while the -w flag reports the largest amount of memory allocated
from a given heap at some point in its history.
Usage scenarios:
db2mtrk -i -d
Report current memory usage for instance and all databases
db2mtrk -i -p -m
Report maximum allowable size for instance and agent private memory
db2mtrk -p -r 1 5
Report agent private memory five times at one second intervals
Heap Legend:
When running in normal mode (i.e. -v flag not specified) heaps are named
using the following codes:
agsh - Application Group Shared Heap lockh - Lock Manager Heap
appctlh - Application Control Heap monh - Database Monitor Heap
apph - Application Heap other - Other Memory
appshrh - Applications Shared Heap pckcacheh - Package Cache
bph - Buffer Pool Heap queryh - Query Heap
catcacheh - Catalog Cache Heap shsorth - Shared Sort Heap
dbh - Database Heap sorth - Sort Heap
dlfmh - DFM Heap stath - Statistics Heap
fcmbp - FCMBP Heap stmth - Statement Heap
ip - Import Pool utilh - Backup/Restore/Util Heap
-m 参数选项是显示最大的内存使用上线
-w 参数选项是显示使用过程中内存达到的最大值,既watermark
-r 参数选项是重复显示 interval是重复显示的时间间隔数 count是要重复显示的次数
如下使用示例结果输出:
[db2inst1@marven ~]$ db2 list active databases
Active Databases
Database name = SAMPLE
Applications connected currently = 0
Database path = /home/db2inst1/db2inst1/NODE0000/SQL00002/
Database name = ORACLE
Applications connected currently = 0
Database path = /home/db2inst1/db2inst1/NODE0000/SQL00004/
如上我的实例中存在两个激活的数据库,如下分别显示数据库的内存使用情况:
[db2inst1@marven ~]$ db2mtrk -i -d
Tracking Memory on: 2012/02/13 at 09:38:24
Memory for instance
other fcmbp monh
17.1M 832.0K 576.0K
Memory for database: SAMPLE
utilh pckcacheh other catcacheh bph (1) bph (S32K)
64.0K 256.0K 192.0K 192.0K 8.2M 832.0K
bph (S16K) bph (S8K) bph (S4K) shsorth lockh dbh
576.0K 448.0K 384.0K 0 16.8M 18.9M
apph (258) apph (257) apph (256) apph (255) apph (254) apph (253)
64.0K 64.0K 64.0K 192.0K 64.0K 64.0K
apph (252) appshrh
64.0K 320.0K
Memory for database: ORACLE
utilh pckcacheh other catcacheh bph (1) bph (S32K)
64.0K 256.0K 192.0K 192.0K 40.3M 832.0K
bph (S16K) bph (S8K) bph (S4K) shsorth lockh dbh
576.0K 448.0K 384.0K 128.0K 16.8M 18.9M
apph (267) apph (266) apph (265) apph (264) apph (263) apph (262)
64.0K 64.0K 64.0K 192.0K 64.0K 64.0K
apph (261) appshrh
64.0K 320.0K