加入收藏 | 设为首页 | 会员中心 | 我要投稿 淮北站长网 (https://www.0561zz.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 服务器 > 搭建环境 > Unix > 正文

j2_inodeCacheSize调优操纵和内存DR操纵的潜匿伤害副浸染

发布时间:2016-10-27 07:36:19 所属栏目:Unix 来源:站长网
导读:副标题#e# 简介 大小适中的增强日志文件系统 (JFS2) inode 缓存对实现 IBM AIX 系统的高性能和稳定性至关重要。通常用户会通过 调优 j2_inodeCacheSize 来控制 inode 缓存的最大 内存 使用。inode 缓存大小也可通过 内存 动态重新配置 (DR) 操作 进行更改。

检测和修复错误的 maxtotalpg

可通过一些方法检测和修复 inode 缓存堆的错误 maxtotalpg 值。
使用 kdb

首先,我们可以使用 kdb 并运行 pile 命令来检查 maxtotalpg 是否等于 nPagesPerCacheClass,就像前面介绍的那样。如果 maxtotalpg 和 nPagesPerCacheClass 的值之间出现任何差异,那么我们可以重新启动系统,这样 maxtotalpg 就会恢复到默认值。我们还可以在 kdb 中手动将 maxtotalpg 修改为正确值。

还有另外一种更方便的方法。我们可以先将 j2_inodeCacheSize 增加为一个较大的值,然后将它降低到必要的值。类似的,可以先添加更多的内存,然后将内存删除到需要的内存量。这样就可以得到正确的 maxtotalpg 值。
编写一个程序来修复 maxtotalpg

我们还可以编写一个程序来自动检查和修复 maxtotalpg 值(参见 pilefix.c)。

首先,使用 kdb 获取 iCache 的内存地址:

(0)> ns
Symbolic name translation off
(0)> dd iCache
0285C158

然后,通过 /dev/kmem 界面读取和对比 maxtotalpg 和 nPagesPerCacheClass 的值。如果 maxtotalpg 的值不同于 nPagesPerCacheClass 的值,那么我们可写回正确的值:

open("/dev/kmem", O_RDWR, 0);
kread((unsigned long long )icachep, (char *)&icache, sizeof(icache));
ccp = (iCacheClass_t *)icache.cacheTable;        
for (i=0; i<icache.nCacheClass; i++, ccp++){
    kread((unsigned long long )ccp, (char *)&cc, sizeof(iCacheClass_t));
    kread((unsigned long long )pmaxtp, (char *)&max_total_pages, 8);
    if(icache.nPagesPerCacheClass != max_total_pages){
         max_total_pages = icache.nPagesPerCacheClass;
         kwrite((unsigned long long)pmaxtp, (char *)&max_total_pages, 8);
    }
}

结束语

在 AIX 6.1(高于 6100-04 的版本)和 AIX 7.1 中,在执行 j2_inodeCacheSize 调优操作或 DLPAR 内存操作后,inode 缓存类的最大堆大小只能降低。IBM 最近提供了一份特许程序分析师报告 (APAR),表明 IV41462 可以避免此问题。如果 AIX 系统没有应用 IV41462,那么可以使用本文中介绍的方法来避免 inode 缓存耗尽。

下载

(编辑:淮北站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

热点阅读