跳转到主要内容

单击提交则表示您同意developerWorks 的条款和条件。 查看条款和条件.

这是您第一次登陆到 developerWorks,已经自动为您创建了您的概要文件。 选择您概要文件中可以公开的信息的信息(如姓名、国家/地区,以及公司),这些信息同时也会与您所发布的内容相关联。 您可以随时更新您的 IBM 账号。

所有提交的信息确保安全。

  • 关闭 [x]

当您初次登录到 developerWorks 时,将会为您创建一份概要信息,您需要指定一个昵称。您的昵称将和您在 developerWorks 发布的内容显示在一起。

昵称长度在 3 至 31 个字符之间。 您的昵称在 developerWorks 社区中必须是唯一的,并且出于隐私保护的原因,不能是您的电子邮件地址。

单击提交则表示您同意developerWorks 的条款和条件。 查看条款和条件.

所有提交的信息确保安全。

  • 关闭 [x]

DB2 自调优内存管理器日志分析器

Askari Naqvi, 软件开发分析师, WSO2 Inc
作者照片:Askari Naquvi
Askari Naqvi 是 IBM Toronto Lab 的 DB2 部门的成员。在过去六年,他从事过多个 DB2 版本的多项关键特性和改进。重要的一些项目包括 DB2 Satellite、DB2 Query Patroller、Autonomics、Automatic Tablespaces 和 STMM。当前,他主要从事 Workload Management 和改进的 Storage Management。Askari 拥有蒙特利尔 McGill University 的计算机科学硕士学位。
Christian Garcia-Arellano, 软件开发人员, WSO2 Inc
作者照片:Christian Garcia-Arellano
Christian Garcia-Arellano 是 IBM Toronto Lab 的 DB2 Engine Development 团队的成员。在过去五年,他主要从事与内存相关的几项 DB2 改进,包括 STMM 的设计和开发。其他项目包括改进 Configuration Advisor、排序内存管理和研究联机内存调优对正在运行的工作负载的影响。他还从事过 Design Advisor 等自治项目。
Haysam Alsayed, 软件测试员, WSO2 Inc
作者照片:Haysam Alsayed
Haysam Alsayed 是 IBM Toronto Lab 的 DB2 System Verification 团队的成员。Haysam 于 2006 年 5 月加入 IBM 并在 University of Calgary 的 Schulich School of Engineering 学习软件工程。到目前为止,Haysam 的主要工作是在 z/os 和 iSeries 等各种主机服务器上测试 DB2 Connect 产品。Haysam 还参与了 DB2 9 的测试,包括 STMM、DB2 Connect 和 Security 的集成特性。
Adam Storm, 软件开发人员, WSO2 Inc
作者照片:Adam Storm
Adam Storm 是 IBM Toronto Lab 的 DB2 Engine Development 团队的成员。在过去七年,他主要从事与内存相关的几项 DB2 改进。这些项目包括改进 DB2 Configuration Advisor、开发 DB2 Memory Tracker 和 DB2 Memory Visualizer。他还从事过其他自治项目,包括 db2support 工具和 DB2 Design Advisor。最近,Adam 担任 STMM for DB2 9 的开发负责人。

简介: 从 IBM® DB2® for Linux®, UNIX®, and Windows® 9 开始,DB2 有了一个新的内存调优特性 —— 自调优内存管理器(Self-tuning Memory Manager,STMM),它会自动设置几个重要的内存配置参数,从而简化内存配置任务。本文介绍一个用来分析 STMM 日志文件的简单工具,从而帮助监视内存管理器做出的决策。本文已经更新以反映日志分析器的重要改进。

发布日期: 2009 年 2 月 09 日
级别: 中级 原创语言: 英文
访问情况 : 5194 次浏览
评论: 


IBM 为社区提供了 DB2 免费版本 DB2 Express-C,它提供了与 DB2 Express Edition 相同的核心数据特性,为构建和部署应用程序奠定了坚实的基础。

要点:在阅读本文之前,请先阅读 免责声明

简介

在启用时,内存调优器会动态地把可用的内存资源分配给多个内存消耗者,包括排序堆、包缓存、锁列表和缓冲区池。此特性会反复地小幅修改内存配置,以改进系统的总体性能。

STMM 所做的所有修改会记录在两个位置:db2diag.log 和 STMM 日志文件。下面讨论这两个日志文件的内容,以及如何使用 db2diag 工具和 parseStmmLogFile.pl 工具监视 STMM 所做的修改。


STMM 的工作方式

STMM 在新的内部指标的帮助下做出决策,这些指标预测增加内存对给定的堆的影响。通过与 STMM 的高级调优算法结合使用,在大多数情况下,这些指标可以在一小时内把系统从开箱即用配置调整到接近最优的内存使用状态。但是,在系统调优过程中,STMM 可能做出数百个调优决策,每个决策都会导致修改配置参数或缓冲区池大小。配置文件只反映最近的修改,所以要想了解配置参数或缓冲区池的修改历史,就需要查看 db2diag.log 和 STMM 日志文件。


通过 db2diag.log 文件监视修改

db2diag.log 文件存储内存管理器所做的每次配置修改的简单信息。在此文件中,可以看到表示配置修改的记录,见清单 1:


清单 1. 表示配置修改的记录
				
2006-10-17-19.10.00.912218-240 I408210A457        LEVEL: Event
PID     : 946302               TID  : 1           PROC : db2stmm (MYDB1) 1
INSTANCE: ewhhr                NODE : 001         DB   : MYDB1
APPHDL  : 1-52                 APPID: *N1.cgarciaa.060809150048
AUTHID  : CGARCIAA
FUNCTION: DB2 UDB, config/install, sqlfLogUpdateCfgParam, probe:20
CHANGE  : STMM CFG DB DEWHR000: "Sheapthres_shr" From: "109306" <automatic>
                                                 To: "105115" <automatic>

注意,上面的记录在配置修改前面加上了 “STMM CFG”,这表示这项修改是由 STMM 执行的,而不是用户所做的配置更新。还可以看到表示缓冲区池修改的记录,见清单 2:


清单 2. 表示缓冲区池修改的记录
				
2006-10-17-19.03.58.672185-240 I395047A488        LEVEL: Event
PID     : 946302               TID  : 1           PROC : db2stmm (MYDB1) 1
INSTANCE: ewhhr                NODE : 001
APPHDL  : 1-52                 APPID: *N1.cgarciaa.060809150048
AUTHID  : CGARCIAA
FUNCTION: DB2 UDB, buffer pool services, sqlbAlterBufferPoolAct, probe:90
MESSAGE : Altering bufferpool “BUFFERPOOL_16K" From: “117268" <automatic>
                                               To: “109666" <automatic> 

可以使用 db2diag 工具过滤出 db2diag.log 中的这些记录。例如,下面的命令查看对缓冲区池大小所做的所有修改:


清单 3. 查看缓冲区池修改的 db2diag 命令
				
db2diag -g "message:=Altering bufferpool" db2diag.log

对于通过使用 DB2 的数据分区特性建立多个分区的数据库,可以使用 -node 选项过滤出对每个分区所做的修改。例如,下面的命令过滤出对分区 1 的所有数据库配置更新:


清单 4. 查看配置修改的 db2diag 命令
				
db2diag -node 1 -g "changeevent:=CFG DB" db2diag.log


STMM 日志

除了 db2diag.log 文件中的日志项之外,还在 STMM 日志中记录更详细的修改信息。STMM 日志存储在 db2diag.log 文件所在的目录中的 stmmlog 子目录中。STMM 日志的主要用途是供 DB2 支持人员在判断问题时使用。但是,STMM 日志中的一些调优信息可以帮助 DBA 理解 STMM 所做的调优决策。STMM 日志中的每个日志项记录在做出调优决策之前收集的统计数据,以及根据这些统计数据执行的操作。STMM 分割为最多五个文件,每个文件的最大大小为 10MB。按照一种循环方式维护这些日志文件,在创建新文件之前会删除最老的文件。

STMM 日志文件分析器的目的是过滤出重要的调优信息并进行格式化,从而便于了解内存配置的修改过程。


分析 STMM 日志文件

分析工具 parseStmmLogFile.pl 采用以下语法:


清单 5. parseStmmLogFile.pl 语法
				
parseStmmLogFile.pl <log file> <database name> <options>

此工具生成的输出采用表格形式。无论用户选择什么选项,表格的前四列都是相同的。前四列是:

  • 调优号
  • 发生这次调优的时间
  • 从日志文件中第一次调优以来的总秒数
  • 从前一次调优开始以来的秒数。这个值包含调整内存堆大小花费的时间和收集调优决策所需的统计数据花费的时间。

清单 6 给出前四列的一个示例,其中包含两次调优。


清单 6. parseStmmLogFile.pl 示例输出
				
[ MEMORY TUNER - LOG ENTRIES ]
[ Interv ] [        Date         ] [ totSec ] [ secDif ]
[        ] [                     ] [        ] [        ]
[      1 ] [ 02/01/2006 09:45:02 ] [     76 ] [     76 ]
[      2 ] [ 02/01/2006 09:46:03 ] [    137 ] [     61 ]

根据选择的选项不同,此工具会分析 STMM 日志文件并收集相关的详细信息。下面是可以选用的四个选项:

  • (s) — 显示所有内存消耗者的新大小(默认选项)。
  • (m) — 显示所有内存消耗者的最小大小。
  • (b) — 显示所有内存消耗者的收益数据。收益数据表示增加内存给所有内存消耗者带来了多大好处。
  • (o) — 显示 DATABASE_MEMORY 调优信息。

另外,还有两个用来调整输出的可选标志(必须与上面的选项之一一起使用):

  • (4) — 把所有内存消耗者转换为以 4KB 页面作为大小单位。
  • (d) — 生成以分号分隔的输出。此选项有助于把分析器输出导入到电子表格中。

示例 1. 调整堆大小的历史

此示例显示 STMM 执行的配置参数和缓冲区池修改。

在清单 7 中,parserStmmLogfile.pl 命令显示两次调优的信息。第一次调优开始于创建这个 STMM 日志文件后 76 秒,调整的两个参数是 SHEAPTHRES_SHR 和 PCKCACHESZ。第二行显示的第二次调优开始于 61 秒之后,它把 1000 个页面从 PCKCACHESZ 转移到 SHEAPTHRES_SHR。


清单 7. 调优的示例输出
				
$ parseStmmLogFile.pl stmm.0.log mydbname s
                      
  [ MEMORY TUNER - LOG ENTRIES ] 
  [ Interv ] [        Date         ] [ totSec ] [ secDif ] [ newSz ]
  [        ] [                     ] [        ] [        ] [ SHEAPTHRES_SHR  PCKCACHESZ ] 
  [      1 ] [ 02/01/2006 09:45:02 ] [     76 ] [     76 ] [ 31482 19438 ]       
  [      2 ] [ 02/01/2006 09:46:03 ] [    137 ] [     61 ] [ 32482 18438 ]

示例 2. 调整数据库内存大小的历史

下面的命令输出数据库内存调优决策的基本信息。输出的信息包括内存调优器判断出的系统内存总量 (configMem)、DB2 可以使用的物理内存量 DB2 (memAvail) 以及由 DATABASE_MEMORY 配置参数指定的当前数据库共享内存量 (setConfSz)。


清单 8. 数据库内存调优的示例输出
				
$ parseStmmLogFile.pl stmm.0.log mydbname o

[ MEMORY TUNER - DATABASE MEMORY AND OVERFLOW BUFFER TUNING - OG ENTRIES ]
[ Interv ][ Date                ][ totSec ][ secDif ][ configMem ][ memAvail ][ setCfgSz ]
[      1 ][ 02/01/2006 09:45:02 ][     76 ][     76 ][       N/A ][      N/A ][      N/A ]
[      2 ][ 02/01/2006 09:46:03 ][    137 ][     61 ][   4194304 ][  1559966 ][    62224 ]

示例 3. 调整 SORTHEAP 大小的历史

下面的命令输出 SORTHEAP 配置参数值的调优信息。每行表示对 SORTHEAP 值的一次成功的自动更新。输出的信息包括 SORTHEAP 配置参数以前的值 (OLD)、当前值 (NEW) 以及内存调优器计算出的最小值和最大值 (min 和 max)。


清单 9. SORTHEAP 调优的示例输出
				
$ parseStmmLogFile.pl stmm.0.log mydbname v

[ SORTHEAP TUNING - SORTHEAP CHANGE VALIDATION RECORDS ]
[ Date                ][ totSec ][ secDif ][ SHEAPTHRES_SHR ][ OLD ][ NEW ][ min ][  max ]
[ 02/01/2006 14:51:01 ][    184 ][    184 ][          11212 ][ 373 ][ 560 ][ 224 ][ 2243 ]


提示和技巧

  • 在运行此工具时指定的数据库名必须在 STMM 日志文件中存在。
  • 为了获得最佳结果,在每次运行此工具时只指定一个选项(mso),这可以确保结果便于理解。
  • 如果在运行时不指定选项,那么默认显示新的大小,相当于使用 s 选项。
  • 脚本中包含选项的详细列表,包括上面给出的示例。
  • 在运行此工具的系统上,要求安装 Perl 解释器。如果系统上没有 Perl 解释器,可以从 http://www.perl.org 下载。在下载并安装此软件之前,一定要检查您的单位对使用第三方软件的管理策略,确保不会违反规定。
  • 此工具是用 Perl 脚本语言开发的,所以 DBA 可以根据自己的需要修改它。例如,可以改为使用另一种能够导入其他工具的输出格式,从而允许绘制历史数据图。

免责声明

IBM 对于本文档中提到或链接的任何非 IBM 网站或第三方资源不承担任何代表、担保或其他义务。链接到非 IBM 网站并不意味着 IBM 认可这些网站的内容及其使用,或支持这些内容的所有者。另外,即使您从 IBM 网站了解到这些第三方(或通过链接访问它们),您和这些第三方之间的任何交易与 IBM 无关,IBM 不对此负责。因此,IBM 不对这些外部站点或资源的可用性负责,也不对这些站点或资源提供的任何内容、服务、产品或其他东西负责。第三方提供的任何软件受到软件所附的许可协议条款和条件的约束。



下载

描述名字大小下载方法
分析 STMM 日志文件的工具parseStmmLogFile.pl44KBHTTP

关于下载方法的信息


参考资料

学习

获得产品和技术

  • 使用可从 developerWorks 直接下载的 IBM 试用软件 构建您的下一个开发项目。

讨论

作者简介

作者照片:Askari Naquvi

Askari Naqvi 是 IBM Toronto Lab 的 DB2 部门的成员。在过去六年,他从事过多个 DB2 版本的多项关键特性和改进。重要的一些项目包括 DB2 Satellite、DB2 Query Patroller、Autonomics、Automatic Tablespaces 和 STMM。当前,他主要从事 Workload Management 和改进的 Storage Management。Askari 拥有蒙特利尔 McGill University 的计算机科学硕士学位。

作者照片:Christian Garcia-Arellano

Christian Garcia-Arellano 是 IBM Toronto Lab 的 DB2 Engine Development 团队的成员。在过去五年,他主要从事与内存相关的几项 DB2 改进,包括 STMM 的设计和开发。其他项目包括改进 Configuration Advisor、排序内存管理和研究联机内存调优对正在运行的工作负载的影响。他还从事过 Design Advisor 等自治项目。

作者照片:Haysam Alsayed

Haysam Alsayed 是 IBM Toronto Lab 的 DB2 System Verification 团队的成员。Haysam 于 2006 年 5 月加入 IBM 并在 University of Calgary 的 Schulich School of Engineering 学习软件工程。到目前为止,Haysam 的主要工作是在 z/os 和 iSeries 等各种主机服务器上测试 DB2 Connect 产品。Haysam 还参与了 DB2 9 的测试,包括 STMM、DB2 Connect 和 Security 的集成特性。

作者照片:Adam Storm

Adam Storm 是 IBM Toronto Lab 的 DB2 Engine Development 团队的成员。在过去七年,他主要从事与内存相关的几项 DB2 改进。这些项目包括改进 DB2 Configuration Advisor、开发 DB2 Memory Tracker 和 DB2 Memory Visualizer。他还从事过其他自治项目,包括 db2support 工具和 DB2 Design Advisor。最近,Adam 担任 STMM for DB2 9 的开发负责人。

关于报告滥用的帮助

报告滥用

谢谢! 此内容已经标识给管理员注意。


关于报告滥用的帮助

报告滥用

报告滥用提交失败。 请稍后重试。


developerWorks:登录


需要一个 IBM ID?
忘记 IBM ID?


忘记密码?
更改您的密码

单击提交则表示您同意developerWorks 的条款和条件。 使用条款

 


当您初次登录到 developerWorks 时,将会为您创建一份概要信息。您在 developerWorks 概要信息中选择公开的信息将公开显示给其他人,但您可以随时修改这些信息的显示状态。您的姓名(除非选择隐藏)和昵称将和您在 developerWorks 发布的内容一同显示。

请选择您的昵称:

当您初次登录到 developerWorks 时,将会为您创建一份概要信息,您需要指定一个昵称。您的昵称将和您在 developerWorks 发布的内容显示在一起。

昵称长度在 3 至 31 个字符之间。 您的昵称在 developerWorks 社区中必须是唯一的,并且出于隐私保护的原因,不能是您的电子邮件地址。

(长度在 3 至 31 个字符之间)


单击提交则表示您同意developerWorks 的条款和条件。 使用条款.

 


为本文评分

评论

static.content.url=http://www.ibm.com/developerworks/js/artrating/
SITE_ID=10
Zone=Information Management, Open source
ArticleID=368638
ArticleTitle=DB2 自调优内存管理器日志分析器
publish-date=02092009
author1-email=askarin_cnnew1@ca.ibm.com
author1-email-cc=
author2-email=cmgarcia_cnnew1@ca.ibm.com
author2-email-cc=
author3-email=halsayed_cnnew1@ca.ibm.com
author3-email-cc=
author4-email=ajstorm_cnnew1@ca.ibm.com
author4-email-cc=