优化 AIX 7 磁盘性能: 第 3 部分,用 ioo、filemon、fileplace、JFS 和 JFS2 进行调优

AIX 7 性能系列的第 3 部分讨论如何提高文件系统的总体性能、如何使用 ioo 命令优化系统以及如何使用 filemon 和 fileplace 实用工具。还要讨论 AIX 7 中的 JFS 和 JFS2。

Martin C. Brown, 自由撰稿人和咨询顾问

Martin C. Brown,马丁.布朗,是Studio B 工作室的作者,一个早期的IT主管,在跨平台集成方面经验丰富。作为一名热心的开发工程师,他曾经为一些特殊用户制作了动态站点,包括HP和Oracle,并且现在是Foodware.net的技术主管。目前他是一名自由撰稿人和咨询顾问,马丁是比较知名的,作为SME时与微软有过工作协作,他是LinuxWorld杂志的LAMP技术编辑,AnswerSquad.com团队的核心成员,并已经撰写了大量的不同主题的书籍,如微软认证,iMacs以及开放源码编程。除了这些努力外,马丁在很多平台和众多环境中依然保持是一名普通并且喜爱编程的程序员。



Ken Milberg, 作家/网站专家, Future Tech

Ken Milberg 是 PMP,同时也是 techtarget.com 的撰稿人/站点专家,他还为 searchopensource.com 提供 Linux 技术信息和支持。Ken 是 IBM Systems Magazine,Open Edition 的撰稿人和技术编辑。Ken 拥有 University of Maryland University College 的计算机与信息科学学士学位和技术管理科学硕士学位。他是 Long Island POWER-AIX 用户组的创始人和负责人。这些年以来,他在各种规模的企业工作过,并且担任过各种职位,包括 CIO 和高级 AIX 工程师。他现在在 Future Tech 工作,这是一家总部设在长岛的 IBM 业务合作伙伴。Ken 不仅是已通过 PMI 认证的项目管理专业人员(PMP),还是通过 IBM 认证的高级技术专家(CATE,IBM System p5 2006)。



2011 年 1 月 06 日

关于本系列

本系列共有三篇文章(见 参考资料),介绍 AIX® 磁盘和 I/O 子系统,重点关注在优化磁盘 I/O 性能时遇到的各种挑战。尽管磁盘调优很可能没有 CPU 或者内存优化那么激动人心,但它是优化服务器性能的关键方面。事实上,部分原因是因为磁盘 I/O 是最薄弱的子系统环节,与任何其他子系统相比,可以通过更多的措施提高磁盘 I/O 性能。

简介

本系列的 第 1 部分第 2 部分 讨论了设计系统架构的重要性,它对整体系统性能的影响,以及一个新的 I/O 优化工具 lvmo,可以使用该工具对逻辑卷进行调优。在这个部分中,将研究如何使用 ioo 命令优化系统,该命令可以对大多数 I/O 调优参数进行配置,显示所有 I/O 调优参数的当前值或下一次启动值。还将学习如何以及何时使用 filemon 和 fileplace 工具。通过使用增强型日志文件系统(AIX 中的默认文件系统),提高整体文件系统性能、优化文件系统以及让 JFS2 产生最好的性能,这些都是调优技术的重要部分。甚至还将研究一些可能影响性能的文件系统属性,比如顺序访问和随机访问。

文件系统概述

本节讨论 JFS2、文件系统性能以及对 JFS 所做的特定性能改进。正如您所知道的,在 AIX 中有两种类型的内核。它们是 32 位内核和 64 位内核。尽管它们共享一些共同的库、大多数的命令及实用工具,但了解它们的区别以及内核与整体性能调优之间的关系是非常重要的。JFS2 针对 64 位内核进行了优化,而 JFS 则针对 32 位内核进行了优化。尽管日志文件系统可以提供更高的安全性,但在以前往往会带来性能方面的开销。在更重视性能(以牺牲可用性为代价)的情况下,可能会禁用元数据日志记录功能以提高 JFS 的性能。对于 JFS2,也可以通过禁用日志记录(在 AIX 6.1 和更高版本中)帮助提高性能。可以在挂载文件系统时禁用日志记录功能,这意味着不需要担心修改或重新配置文件系统。只需修改挂载选项。例如,使用以下命令禁用文件系统上的日志记录功能:mount -i log=NULL /database

尽管 JFS2 为提高元数据操作(即通常由日志记录框架处理的那些操作)的性能做了优化,但是对于文件修改和创建/删除操作比例很高的文件系统,关闭日志记录功能仍然会显著提高性能。例如,对于开发文件系统,可能会看到性能提升。对于使用比较静态的文件的数据库,性能改进可能不太显著。

但是,对于使用压缩功能,应该谨慎。尽管压缩可以节省磁盘空间(因为对磁盘物理地读写的数据更少,还会减少磁盘读写操作),但是会加重系统的 CPU 负载,实际上会降低性能。

增强的 JFS2 在执行索引节点搜索时使用二叉树表示形式,与 JFS 使用的线性方法相比,这种方法要好得多。另外,在创建文件系统的时候不再需要分配索引节点,因为现在它们是由 JFS2 动态分配的(这意味着将不会耗尽索引节点)。

尽管在本系列的第 1 部分中已经介绍过并发 I/O,但在这里有必要再次提及这个主题。并发 I/O 的实现允许多个线程并发地对同一个文件进行读写数据的操作。这是由于在实现 JFS2 时采用了写独占 (write-exclusive) 索引节点锁。这种方式允许多个用户同时读取同一个文件,当多个用户需要读取相同的数据文件时,这能够显著地提高性能。要想启用并发 I/O,只需使用合适的标志挂载文件系统(见 清单 1)。建议在使用 Oracle 等数据库时考虑使用并发 I/O。

清单 1. 启用并发 I/O
root@lpar29p682e_pub[/] mount -o cio /test
root@lpar29p682e_pub[/] > df -k /test
Filesystem    1024-blocks      Free %Used    Iused %Iused Mounted on
/dev/fslv00        131072    130724    1%        4     1% /test

表 1 说明 JFS2 的各种增强功能,以及它们与系统性能之间的关系。在优化 I/O 系统时,许多可调项本身(稍后将深入讨论)也存在差别,这取决于正在使用的是 JFS 还是 JFS2,了解这一点也非常重要。

表 1. JFS2 的增强功能
功能JFSJFS2
压缩
配额
延迟的更新
直接 I/O 支持
优化32 位64 位
最大文件系统大小1 TB4 PB
最大文件大小64 GB4 PB
索引节点的数量在创建文件系统时确定动态
大文件支持作为挂载选项默认
联机碎片整理
Namefs
DMAPI

filemon 和 fileplace

本节介绍两个重要的 I/O 工具 filemon 和 fileplace,并讨论如何在日常系统管理工作中使用它们。

filemon 使用一种跟踪设施来报告物理和逻辑存储(包括实际文件)的 I/O 活动。按照在运行跟踪时指定的时间间隔,对 I/O 活动进行监视。它报告文件系统的所有层的使用率,包括逻辑卷管理器 (LVM)、虚拟内存和物理磁盘层。如果不使用任何标志,那么在要监视的应用程序或者系统命令运行时,它在后台运行。跟踪自动启动,直到停止它为止。此时,命令生成 I/O 活动报告,然后退出。它还可以处理跟踪设施已经记录的跟踪文件。然后,可以根据此文件生成报告。因为发送到标准输出的报告常常会在屏幕上一滚而过,所以建议使用 -o 选项将输出写到一个文件中(见 清单 2)。

清单 2. 使用带 -o 选项的 filemon
l488pp065_pub[/] > filemon -o dbmon.out -O all

Run trcstop command to signal end of trace.
Thu Aug 12 09:07:06 2010
System: AIX 7.1 Node: l488pp065_pub Machine: 00F604884C00
l488pp065_pub[/] > trcstop

l488pp065_pub[/] > cat dbmon.out
Thu Aug 12 09:10:09 2010
System: AIX 7.1 Node: l488pp065_pub Machine: 00F604884C00
Cpu utilization:  72.8%
Cpu allocation:  100.0%

21947755 events were lost.  Reported data may have inconsistencies or errors.

Most Active Files
------------------------------------------------------------------------
  #MBs  #opns   #rds   #wrs  file                     volume:inode
------------------------------------------------------------------------
   0.4      1    101      0  unix                     /dev/hd2:82241
   0.0      9     10      0  vfs                      /dev/hd4:9641
   0.0      4      6      1  db.sql                 
   0.0      3      6      2  ksh.cat                  /dev/hd2:111192
   0.0      1      2      0  cmdtrace.cat             /dev/hd2:110757
   0.0     45      1      0  null                   
   0.0      1      1      0  dd.cat                   /dev/hd2:110827
   0.0      9      2      0  SWservAt                 /dev/hd4:9156
   0.0      1      0      3  db2.sql                
   0.0      9      2      0  SWservAt.vc              /dev/hd4:9157

Most Active Segments
------------------------------------------------------------------------
  #MBs  #rpgs  #wpgs  segid  segtype                  volume:inode
------------------------------------------------------------------------
   0.1      2     13   8359ba  client                 

Most Active Logical Volumes
------------------------------------------------------------------------
  util  #rblk  #wblk   KB/s  volume                   description
------------------------------------------------------------------------
  0.04      0     32    0.3  /dev/hd9var              /var
  0.00      0     48    0.5  /dev/hd8                 jfs2log
  0.00      0      8    0.1  /dev/hd4                 /

Most Active Physical Volumes
------------------------------------------------------------------------
  util  #rblk  #wblk   KB/s  volume                   description
------------------------------------------------------------------------
  0.00      0     72    0.7  /dev/hdisk0              N/A

Most Active Files Process-Wise
------------------------------------------------------------------------
  #MBs  #opns   #rds   #wrs  file                     PID(Process:TID)
------------------------------------------------------------------------
   0.0      3      6      0  db.sql                  7667828(ksh:9437345)
   0.0      1      2      0  ksh.cat                 7667828(ksh:9437345)
   0.0      1      0      3  db2.sql                 7667828(ksh:9437345)
   0.0      1      0      1  db.sql                  7733344(ksh:7405633)
   0.4      1    101      0  unix                    7667830(ksh:9437347)
   0.0      1      2      0  cmdtrace.cat            7667830(ksh:9437347)
   0.0      1      2      0  ksh.cat                 7667830(ksh:9437347)
   0.0      9      2      0  SWservAt                7667830(ksh:9437347)
   0.0      9      2      0  SWservAt.vc             7667830(ksh:9437347)
   0.0      1      0      0  systrctl                7667830(ksh:9437347)
   0.0     44      0     44  null                    4325546(slp_srvreg:8585241)
   0.0      1      2      2  ksh.cat                 7667826(ksh:23527615)
   0.0      1      1      0  dd.cat                  7667826(ksh:23527615)
   0.0      1      1      0  null                    7667826(ksh:23527615)
   0.0      1      0      0  test                    7667826(ksh:23527615)
   0.0      8      8      0  vfs                     3473482(topasrec:13566119)
   0.0      1      0      0  CuAt.vc                 3473482(topasrec:13566119)
   0.0      1      0      0  CuAt                    3473482(topasrec:13566119)
   0.0      1      2      0  vfs                     2097252(syncd:2490503)
   0.0      1      0      0  installable             4260046(java:15073489)

Most Active Files Thread-Wise
------------------------------------------------------------------------
  #MBs  #opns   #rds   #wrs  file                     TID(Process:PID)
------------------------------------------------------------------------
   0.0      3      6      0  db.sql                  9437345(ksh:7667828)
   0.0      1      2      0  ksh.cat                 9437345(ksh:7667828)
   0.0      1      0      3  db2.sql                 9437345(ksh:7667828)
   0.0      1      0      1  db.sql                  7405633(ksh:7733344)
   0.4      1    101      0  unix                    9437347(ksh:7667830)
   0.0      1      2      0  cmdtrace.cat            9437347(ksh:7667830)
   0.0      1      2      0  ksh.cat                 9437347(ksh:7667830)
   0.0      9      2      0  SWservAt                9437347(ksh:7667830)
   0.0      9      2      0  SWservAt.vc             9437347(ksh:7667830)
   0.0      1      0      0  systrctl                9437347(ksh:7667830)
   0.0     44      0     44  null                    8585241(slp_srvreg:4325546)
   0.0      1      2      2  ksh.cat                 23527615(ksh:7667826)
   0.0      1      1      0  dd.cat                  23527615(ksh:7667826)
   0.0      1      1      0  null                    23527615(ksh:7667826)
   0.0      1      0      0  test                    23527615(ksh:7667826)
   0.0      8      8      0  vfs                     13566119(topasrec:3473482)
   0.0      1      0      0  CuAt.vc                 13566119(topasrec:3473482)
   0.0      1      0      0  CuAt                    13566119(topasrec:3473482)
   0.0      1      2      0  vfs                     2490503(syncd:2097252)
   0.0      1      0      0  installable             15073489(java:4260046)
dbmon.out: END

应该寻找比较长的寻道时间,因为它们会导致应用程序性能降低。通过仔细地观察读写序列计数,可以进一步确定访问是顺序的还是随机的。当进行 I/O 调优时,此信息可以提供帮助。此输出清楚地说明这里不存在任何 I/O 瓶颈。filemon 可以提供大量信息,事实上,我常常发现它提供的信息太多了。另外,在使用 filemon 时可能带来性能损失,这取决于在运行 filemon 时有多少一般性文件活动。让我们看一下在运行 filemon 时 topaz 的结果(见 图 1)。

图 1. 在运行 filemon 时 topaz 的结果
在运行 filemon 时 topaz 的结果

在上图中,filemon 几乎占用了 60% 的 CPU!这个数字实际上比以前的 AIX 版本中小,但是仍然会显著影响总体系统性能。通常,不推荐使用开销如此巨大的性能工具,所以我要重申一下,尽管 filemon 的确有其价值,但在使用它的时候仍需非常小心。

fileplace 又如何呢?fileplace 报告文件块在文件系统中的位置。它通常用于检查和评估文件在磁盘中的放置效率。为什么要使用它呢?一个原因是,它可以帮助确定一些经常使用的文件是否严重碎片化。它还可以帮助确定使用率最高的物理卷,确定驱动器或者 I/O 适配器是否会导致瓶颈。

我们来看看 清单 3 中的示例,这是一个频繁访问的文件。

清单 3. 频繁访问的文件
fileplace -pv /tmp/logfile
File: /tmp/logfile  Size: 63801540 bytes  Vol: /dev/hd3
Blk Size: 4096  Frag Size: 4096  Nfrags: 15604 
Inode: 7  Mode: -rw-rw-rw-  Owner: root  Group: system  

  Physical Addresses (mirror copy 1)                                    Logical Extent
  ----------------------------------                                  ----------------
  02884352-02884511  hdisk0        160 frags    655360 Bytes,   1.0%  00000224-00000383
  02884544-02899987  hdisk0      15444 frags  63258624 Bytes,  99.0%  00000416-00015859
        unallocated           -27 frags      -110592 Bytes      0.0%

  15604 frags over space of 15636 frags:   space efficiency = 99.8%
  2 extents out of 15604 possible:   sequentiality = 100.0%

在这里,应该关注空间效率和顺序性。较高的空间效率意味着文件的碎片较少,能够提供更好的顺序文件访问。较高的顺序性意味着文件的分配更连续,这也对顺序文件访问有利。在这个示例中,当顺序性很高的时候,空间效率会更好。如果空间效率和顺序性都很低,那么可能应该考虑重组此文件系统。可以使用 reorgvg 命令来执行重组,此命令可以提高逻辑卷的使用率和效率。还可以考虑使用 degrafs 命令,此命令有助于确保文件系统上的空闲空间是连续的,这对以后的写操作和文件创建操作有帮助。在您使用文件系统时在后台执行碎片整理。

使用 ioo 进行调优

本节讨论 ioo 命令的使用,此命令适用于几乎所有与 I/O 相关的调优参数。

vmo 一样,在更改 ioo 参数时需要格外小心,因为动态地更改参数可能导致严重的性能降低。表 2 详细说明一些通常用于 JFS 文件系统的特定调优参数。如您所见,大部分 I/O 调优命令都利用 ioo 实用工具。

表 2. 特定的优化参数
功能JFS 调优参数增强型 JFS 优化参数
设置用于缓存文件的最大内存量vmo -o maxperm=valuevmo -o maxclient=value (小于或等于 maxperm)
设置用于缓存的最小内存量vmo -o minperm=value不适用
设置用于缓存的内存限制(硬限制)vmo -o strict_maxpermvmo -o maxclient (硬限制)
设置用于提前顺序读取的最大页面数ioo -o maxpgahead=valueioo -o j2_maxPageReadAhead=value
设置用于提前顺序读取的最小页面数ioo -o minpgaheadioo -o j2_minPageReadAhead=value
设置对一个文件的未完成写 I/O 的最大数量chhdev -l sys0 -a maxpout maxpoutchdev -l sys0 -a maxpout maxpout
设置对一个文件的未完成写 I/O 的最小数量,在此情况下被 maxpout 阻塞的程序可以继续执行chdev -l sys0 -a minpout minpoutchdev -l sys0 -a minpout minpout
设置用于文件随机写操作的已修改数据缓存量ioo -o maxrandwrt=valueioo -o j2_maxRandomWrite ioo -o j2_nRandomCluster
控制用于延迟顺序写操作的 I/O 的收集ioo -o numclust=valueioo -o j2_nPagesPerWriteBehindCluster=value
设置文件系统 bufstruct 的数量ioo -o numfsbufs=valueioo -o j2_nBufferPerPagerDevice=value

下面深入地讨论一些比较重要的参数,之前已经在内存调优系列(见 参考资料)中介绍过所有 vmo 调优参数。

可以使用几种方式来确定系统中现有的 ioo 值。ioo 显示很长的清单,清楚地提供了大部分信息(见 清单 4)。它列出由 ioo 管理的所有可调项的当前值、重新引导值、范围、单位、类型和依赖关系。

清单 4. ioo 的显示
root@lpar29p682e_pub[/] > ioo -L
NAME                      CUR    DEF    BOOT   MIN    MAX    UNIT           TYPE
     DEPENDENCIES

j2_atimeUpdateSymlink     0      0      0      0      1      boolean           D
j2_dynamicBufferPreallo   16     16     16     0      256    16K slabs         D
j2_inodeCacheSize         400    400    400    1      1000                     D
j2_maxPageReadAhead       128    128    128    0      64K    4KB pages         D
j2_maxRandomWrite         0      0      0      0      64K    4KB pages         D
j2_maxUsableMaxTransfer   512    512    512    1      4K     pages             M
j2_metadataCacheSize      400    400    400    1      1000                     D
j2_minPageReadAhead       2      2      2      0      64K    4KB pages         D
j2_nBufferPerPagerDevice  512    512    512    512    256K                     M
j2_nPagesPerWriteBehindC  32     32     32     0      64K                      D
j2_nRandomCluster         0      0      0      0      64K    16KB clusters     D
j2_nonFatalCrashesSystem  0      0      0      0      1      boolean           D
j2_syncModifiedMapped     1      1      1      0      1      boolean           D
j2_syncdLogSyncInterval   1      1      1      0      4K     iterations        D
jfs_clread_enabled        0      0      0      0      1      boolean           D
jfs_use_read_lock         1      1      1      0      1      boolean           D
lvm_bufcnt                9      9      9      1      64     128KB/buffer      D
maxpgahead minpgahead     8      8      8      0      4K     4KB pages         D
maxrandwrt                0      0      0      0      512K   4KB pages         D
memory_frames             512K          512K                 4KB pages         S
Minpgahead maxpgahead     2      2      2      0      4K     4KB pages         D
numclust                  1      1      1      0      2G-1   16KB/cluster      D
numfsbufs                 196    196    196    1      2G-1                     M
pd_npages                 64K    64K    64K    1      512K   4KB pages         D
pgahd_scale_thresh        0      0      0      0      419430 4KB pages         D
pv_min_pbuf               512    512    512    512    2G-1                     D
sync_release_ilock        0      0      0      0      1      boolean           D

n/a means parameter not supported by the current platform or kernel

Parameter types:
    S = Static: cannot be changed
    D = Dynamic: can be freely changed
    B = Bosboot: can only be changed using bosboot and reboot
    R = Reboot: can only be changed during reboot
    C = Connect: changes are only effective for future socket connections
    M = Mount: changes are only effective for future mountings
    I = Incremental: can only be incremented
    d = deprecated: deprecated and cannot be changed

清单 5 说明如何更改一个可调项。

清单 5. 更改可调项
root@lpar29p682e_pub[/] > ioo -o maxpgahead=32
Setting maxpgahead to 32
root@lpar29p682e_pub[/] >

这个参数仅用于 JFS。对于 JFS2,有更多文件系统性能改进,包括提前顺序页面读取以及延迟的顺序和随机写操作。通过观察文件的访问模式,AIX 的虚拟内存管理器(Virtual Memory Manager,VMM)可以预测页面需求。当程序要访问一个文件的两个页面时,VMM 假定此程序将采用顺序的方法继续尝试访问此文件。可以使用 VMM 阈值配置要提前读取的页面数量。对于 JFS2,注意下面这两个重要的参数:

  • J2_minPageReadAhead:决定当 VMM 最初探测到顺序模式时提前读取的页面数量。
  • J2_maxPageReadAhead:决定 VMM 可以在一个顺序文件中读取的最大页面数量。

延迟的顺序和随机写操作与(达到某个阈值之后)将内存中经过修改的页面写到磁盘相关。通过采用这种方式,它无需等待 syncd 将页面写到磁盘。这么做可以限制内存中 “脏” 页面的数量,从而进一步减少 I/O 开销和磁盘碎片。延迟的写操作分为顺序和随机两类。在使用延迟的顺序写操作时,在 syncd 守护进程运行之前,页面并不留在内存中,这可能会导致实际的瓶颈。在使用延迟的随机写操作时,如果内存中的页面数量超过指定的数量,则将所有后续的页面写到磁盘。

对于延迟的顺序写操作,应该指定要安排写的页面数量;通过 j2_nPagesPerWriterBehindCluster 参数指定这个值。在默认情况下,这个值是 32(即 128KB);对于现代磁盘和有大量写操作的环境,比如数据库,可能需要提高这个参数值,以便当需要把数据同步到磁盘时在一个块中写更多数据。

可以通过更改 j2_nRandomClusterj2_maxRandomWrite 的值配置延迟的随机写操作。j2_maxRandomWrite 参数指定一个文件可以留在内存中的页面数量。默认值为 0(表示尽快写出信息),这用于确保数据完整性。如果愿意在发生系统故障时牺牲一定的完整性,以此换取更好的写操作性能,可以提高这个值。延迟的随机写操作把页面留在内存中,所以在发生系统故障时数据可能还没有写到磁盘上。j2_nRandomCluster 定义间隔多少个簇的两个写操作必须被认为是随机的。如果同时修改许多文件,提高这个值会降低写操作效率。

另一个值得一提的重要领域是大量顺序 I/O 的处理。当对文件系统同时进行大量 I/O 操作的时候,可能会在文件系统级上出现 I/O 瓶颈。在这种情况下,应该增大 j2_nBufferPerPagerDevice 参数(如果使用 JFS 的话,就是 numfsbus 参数)。如果使用的是原始 I/O 而不是文件系统,那么相同类型的瓶颈可能通过 LVM 出现。在这种情况下,可能希望调整 lvm_bufcnt 参数。

结束语

本文重点关注文件系统的性能。您研究了 JFS2 中的各种增强功能,以及为什么将它作为首选的文件系统。另外,使用了 filemon 和 fileplace 等工具收集关于实际文件结构以及它们与 I/O 性能之间关系的详细信息。最后,使用 ioo 命令优化了 I/O 子系统。了解了在碰到顺序 I/O 的情况下更改 J2_minPageReadAheadJ2_maxPageReadAhead 参数对性能的影响。

本系列共有三篇关于 I/O 的文章。在本系列中您学到,与其他子系统相比 I/O 子系统可以采用更多调优措施,必须在对系统进行压力测试之前开始调优。与优化 I/O 参数相比,正确地设计系统架构对于提高性能更重要。这包括战略性磁盘布置,以及确保有足够多的适配器以处理磁盘的吞吐量。另外,尽管本系列重点关注 I/O,但是 VMM 也与 I/O 性能紧密相关,必须对其进行优化,才能实现最佳的 I/O 性能。

参考资料

学习

  • Use direct I/O to improve performance of your AIX applications”(Shiv Dutta,developerWorks,2002 年 11 月):这篇文章讨论直接 I/O 的好处并介绍如何实现它。
  • Improving database performance with AIX concurrent I/O:通过阅读这份白皮书进一步了解如何提高数据库性能。
  • AIX memory affinity support:通过 IBM System p and AIX 信息中心了解关于 AIX 内存关联支持的更多信息。
  • nmon 性能:分析 AIX 和 Linux 性能的免费工具”(Nigel Griffiths,developerWorks,2006 年 2 月):这篇文章对 nmon 工具做了精彩的介绍。
  • nmon analyser —— 生成 AIX 性能报告的免费工具”(Steven Atkins,developerWorks,2006 年 4 月):通过阅读这篇文章了解关于 nmon 分析程序的更多信息。
  • AIX 7.1 信息中心 提供 AIX 操作系统的技术信息。
  • IBM RedbooksDatabase Performance Tuning on AIX 旨在帮助系统设计者、系统管理员和数据库管理员设计、规划、实现、维护、监控和调优 AIX 上的 Relational Database Management System (RDMBS),从而实现最佳性能。
  • Power to the People: A history of chip making at IBM”(developerWorks,2005 年 12 月):这篇文章讨论 IBM power 架构。
  • AIX 中的处理器关联”(developerWorks,2006 年 11 月):使用进程关联设置对线程进行绑定或取消绑定,这有助于找到麻烦的挂起或死锁问题的原因。通过阅读这篇文章了解如何使用处理器关联对进程进行限制,让进程只在指定的中央处理单元(CPU)上运行。
  • CPU Monitoring and Tuning”(2002 年 3 月):了解如何使用标准的 AIX 工具帮助判断 CPU 瓶颈。
  • Operating System and Device Management:IBM 的这份文档向用户和系统管理员提供全面的系统管理和设备管理信息,可以帮助您在执行各种任务时选择适当的选项,比如系统备份和恢复系统、管理物理和逻辑存储以及调整分页空间。
  • AIX and UNIX 专区:developerWorks 的“AIX and UNIX 专区”提供了大量与 AIX 系统管理的所有方面相关的信息,您可以利用它们来扩展自己的 UNIX 技能。
  • AIX and UNIX 新手入门:访问“AIX and UNIX 新手入门”页面可了解更多关于 AIX 和 UNIX 的内容。
  • AIX and UNIX 专题汇总:AIX and UNIX 专区已经为您推出了很多的技术专题,为您总结了很多热门的知识点。我们在后面还会继续推出很多相关的热门专题给您,为了方便您的访问,我们在这里为您把本专区的所有专题进行汇总,让您更方便的找到您需要的内容。
  • AIX and UNIX 下载中心:在这里你可以下载到可以运行在 AIX 或者是 UNIX 系统上的 IBM 服务器软件以及工具,让您可以提前免费试用他们的强大功能。
  • IBM Systems Magazine for AIX 中文版:本杂志的内容更加关注于趋势和企业级架构应用方面的内容,同时对于新兴的技术、产品、应用方式等也有很深入的探讨。IBM Systems Magazine 的内容都是由十分资深的业内人士撰写的,包括 IBM 的合作伙伴、IBM 的主机工程师以及高级管理人员。所以,从这些内容中,您可以了解到更高层次的应用理念,让您在选择和应用 IBM 系统时有一个更好的认识。
  • 在 AIX 和 UNIX 库中搜索以下主题:
  • Safari 书店:访问这个电子资料库,寻找各种技术参考资料。
  • developerWorks 技术活动网络广播:随时关注 developerWorks 技术活动和网络广播。
  • 播客:收听播客并了解 IBM 技术专家的最新想法。
  • Future Tech:访问 Future Tech 的网站,了解他们的最新产品。

获得产品和技术

  • 这里 下载 nmon 分析程序。
  • IBM 试用软件:使用可以直接从 developerWorks 下载的软件构建您的下一个开发项目。

讨论

条评论

developerWorks: 登录

标有星(*)号的字段是必填字段。


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


忘记密码?
更改您的密码

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

 


在您首次登录 developerWorks 时,会为您创建一份个人概要。您的个人概要中的信息(您的姓名、国家/地区,以及公司名称)是公开显示的,而且会随着您发布的任何内容一起显示,除非您选择隐藏您的公司名称。您可以随时更新您的 IBM 帐户。

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

选择您的昵称



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

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

标有星(*)号的字段是必填字段。

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

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

 


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


static.content.url=http://www.ibm.com/developerworks/js/artrating/
SITE_ID=10
Zone=AIX and UNIX
ArticleID=606592
ArticleTitle=优化 AIX 7 磁盘性能: 第 3 部分,用 ioo、filemon、fileplace、JFS 和 JFS2 进行调优
publish-date=01062011