首页 | 新闻 | 新品 | 文库 | 方案 | 视频 | 下载 | 商城 | 开发板 | 数据中心 | 座谈新版 | 培训 | 工具 | 博客 | 论坛 | 百科 | GEC | 活动 | 主题月 | 电子展
返回列表 回复 发帖

用于 PowerPC 上的 Linux 的五个易用的性能分析工具(1)

用于 PowerPC 上的 Linux 的五个易用的性能分析工具(1)

Performance InspectorPerformance Inspector 程序包中包括一套用于 Linux 的性能分析工具。这些工具可以用来分析您的 C/C++ 和 Java 应用程序的性能,以及您的系统的整体性能。本文所涵盖的五个易用的工具是:        
  • Timer Profiler(Tprof)
  • CPU utilization(AI)
  • Per thread time(PTT)
  • Java lock monitor(JLM)
  • Java heap dump(heap dump)
Performance Inspector 由 Tprof、AI、PTT、JLM、post、jprof、a2n、swtrace 和 heap dump 组成。      
平台当前,Performance Inspector 可用于运行在下列机器体系结构上的 SUSE United Linux 1.0 发行版本:i386、ia64、x86_64、ppc、ppc64、390x 和 s390。Performance Inspector 也可用于运行在这些机器体系结构上的另外的 Linux发行版本。
对 PowerPC 机器体系结构(即 ppc 和 ppc 64)来说 ,Performance Inspector 只得到了 2.4.19 内核的支持,即SUSE Linux Enterprise Server 8(SLES 8)所用的内核。代码正在被移植到 2.6 内核,所以您应该查看 Performance Inspector站点以获得最新的信息。
收集性能分析数据Performance Inspector 程序包包括一个内核补丁文件和一个驱动程序补丁文件。通过添加内核和驱动程序补丁、重新编译内核并引导修补后的内核来完成 Performance Inspector 的安装。内核补丁是一个用于特定硬件的补丁,将追踪挂钩(trace hooks)插入到内核例程中,比如 schedule、dispatch、interrupt、fork、exec、timer 和 vma 中。驱动程序补丁中包含 Performance Inspector 设备驱动程序代码。内核追踪挂钩调用设备驱动程序代码中的函数,那些函数将内核追踪挂钩在固定缓冲区(pinned buffer)中给出的信息记录下来。swtrace 等 Performance Inspector 工具与驱动程序相互协作以利用存储在固定缓冲区中的信息。每个 CPU 有一个固定缓冲区。
下载并安装 Performance Inspector
安装程序包
  • 您必须是 root 用户。要成为 root 用户,请输入命令           # su –
  • 使用下面的命令在您的 Linux 机器上解开 Performance Inspector 程序包:           
    1
    # tar -xzf pi.package.2004-04-14.tar.gz





    如果程序包的名称已经更新,那么请使用新的程序包名。
  • 解开程序包后将得到两个文件,即 piinstall 和 pi_tools.tar.gz。执行脚本           # ./piinstall运行这个脚本将创建出一个目录,默认情况下是 /piperf,然后将 pi_tools.tar.gz 文件解包到那个目录及其子目录中。如果您不想接受 /piperf 这一默认值,脚本会允许您指定您自己的目录。
安装 Java五个工具中的两个,即 JLM 和 heap dump,需要与 IBM 32 位和 64 位的 RuntimeEnvironment for Linux v1.4.0 或者更新的版本一起使用。JLM 工具不能与非 IBM JVM 一起使用,因为这个工具使用了 IBM 对JVM Profiler Interface(JVMPI)的扩展。heap dump 工具可以工作于其他非 IBM JVM,因为它使用的只是标准的 JVMPI 事件。
IBM 的 32 位和 64 位 Runtime Environment for Linux 可以作为 IBM Developer Kit for Java 的一部分获得。SLES 8 不再支持 64 位的 IBM Developer Kit for Java,所以您需要使用 32 位的 IBM Developer Kit for Java。通过下面的步骤下载并安装 IBM Developer Kit for Java。
  • 下载 IBM Developer Kit for Java,它叫做 SDK。点击页面上右边的           Download。选择          IBM SDK for 32-bit iSeries/pSeries,下载 32 位的SDK。可能会有多个可用的版本,所以,除非您需要特定的版本,您可能都会希望下载最新的版本。当前最新的版本是1.4.1 SR2。选择版本后,再选择           Continue,系统会向您询问注册信息。给出这些信息后,您将被重定向到一个下载页面,类似于图 1 所示。          图 1. 下载您既可以以 .tgz 程序包的形式也可以以 .rpm 程序包的形式下载 SDK。安装 SDK 的最简单的方法是下载 .rpm 程序包。要这样做,请在标识为 SDK 的方框中查找名为 IBMJava2-SDK-ppc-1.4.1-2.0.ppc.rpm 的程序包(取决于您所选择的版本,这个名称可能是其他类似的名称)。点击程序包名右边的             Accept License。         
  • 下载完 .rpm 程序包后,就可以通过运行下面的命令来安装它了,必要时,请用您的程序包名替换掉这里给出的程序包名:           
    1
    # rpm –i IBMJava2-SDK-ppc-1.4.1-2.0.ppc.rpm




  • 安装完 SDK 后,使用正确的信息设置 PATH 和 JDKDIR 环境变量。下面给出的只是示例,取决于您的安装的 SDK 的版本,路径可能会不同:           
    1
    2
    3
    # export PATH=/opt/IBMJava2-ppc-141/jre/bin:
    /opt/IBMJava2-ppc-141/binPATH
    # export JDKDIR=/opt/IBMJava2-ppc-141





    如果您使用的是老的、得到支持的 64 位 SDK,那么您还需要设置下面的变量:           
    1
    # export JAVA64=64




接下来的步骤是修补、编译并引导内核。
修补、编译并引导内核
  • 如果您的系统中没有内核源代码,那么需要从 SLES 8 的原始安装 CD 中安装它。内核源代码的程序包名是 kernel-source。确保您是从原始 CD 而不是从服务包 CD 安装源代码。Performance Inspector 补丁当前只能用于 2.4.19 内核。服务包 CD 中所包含的是内核最新版本的内核源代码,不能与此补丁一起使用。图 2 展示的是在 yast2 工具中选择安装的 kernel-source 程序包。          图 2. Kernel-source 程序包
  • 您还需要安装一个 64 位交叉编译器(cross-compiler),如果原来没有安装的话。编译 64 位内核需要这个编译器。您必须以 64 位模式编译内核,因为用于 PowerPC 的 SLES 8 不支持 32 位内核。这个程序包的名称是 cross-ppc64-gcc。您可以自原始 CD 或服务包 CD 安装这个编译器程序包。          安装完这个程序包后,确保您的 $PATH 环境变量中有 /opt/cross/bin,以使得在内核编译过程中可以使用这个程序包中的工具。图 3 展示的是在 yast2 工具中选择安装的 cross-ppc64-gcc 程序包。
    图 3. 选择安装的程序包
  • 确认 /usr/src/linux 链接指向 2.4.19 内核源代码(           -l 标记指的是字母 l,而不是数字 1):           
    1
    # ls –l /usr/src/linux





    您应该得到类似如下的输出:           
    1
    2
    lrwxrwxrwx    1 root     root     17 May 19 09:56
       /usr/src/linux -> linux-2.4.19.SuSE




    使用下面的命令制作内核源代码树的一个备份拷贝:            
    1
    # cp -r /usr/src/linux-2.4.19.SuSE /usr/src/linux-2.4.19.SuSE.bak




    通过内核源代码的一个干净版本来进行编译,以避免出错。如果您以前曾经尝试自 /usr/src/linux 链接当前指向的目录进行编译,那么将 /usr/src/linux 链接重新指向一个干净的内核源代码目录,比如您的备份目录:            
    1
    2
    # rm /usr/src/linux
    # ln -s /usr/src/linux-2.4.19.SuSE.bak /usr/src/linux




    如果您的内核源代码已经经过了修改,而且没有可用的备份目录,那么可以将内核源代码程序包缷载,然后再重新安装。重新安装后,确认 /usr/src/linux 链接指向您刚刚重新安装的干净的内核源代码树,然后继续后面的步骤。
  • 确保您处在 /usr/src/linux 目录中,这样您就可以安装内核和驱动程序补丁:           
    1
    # cd /usr/src/linux




  • 安装内核补丁(strip 后面的 1 是数字 1 而不是字母 l):           
    1
    2
    3
    # patch --strip 1 -–verbose
    </piperf/patches/ppc64/pi.SuSE.2419.patch  
           >/tmp/patch.log




  • 运行下面的 grep 命令,以确保补丁成功安装。这个命令应该不会返回任何内容:           
    1
    # grep –i fail /tmp/patch.log




  • 安装驱动程序补丁。驱动程序补丁的名称可能会有所改变,所以您可能需要查看 /piperf/patches 目录以找到最新的 pi.driver 补丁(strip 后面的 1 是数字 1 而不是字母 l):           
    1
    2
    3
    # patch --strip 1 --verbose  
    </piperf/patches/pi.driver.2004-04-01.patch
       >/tmp/driver.log




  • 运行下面的 grep 命令,以确保补丁成功安装。这个命令应该不会返回任何内容:           
    1
    # grep –i fail /tmp/driver.log




  • 您将需要创建一个在内核编译过程中会用到的 .config 文件。要创建一个 .config 文件,首先通过执行           # cd /usr/src/linux 以确保您在 /usr/src/linux 目录中,然后运行           # make xconfig 命令。          make xconfig 需要 Xwindows。如果您没有在您的 Linux 机器上运行 Xwindows,那么首先需要将显示输出到一台运行着 Xwindows 的机器上,在那台运行着 Xwindows 的机器上输入             # xhost + 命令。然后在运行着 Linux 的机器上,输入下面的命令,用运行着 Xwindows 的机器名替换 minotaur.austin.ibm.com:            
    1
    # export DISPLAY=minotaur.austin.ibm.com:0.0




    当您运行             make xconfig 命令时,将显示出一个类似于图 4 的窗口。         
    图 4. 内核配置
    图 5. Performance Inspector
  • 现在您将需要编译内核。在 /usr/src/linux 目录中,运行下面的命令:           
    1
    2
    # make dep CROSS_COMPILE=powerpc64-linux- SUBARCH=ppc64
    ARCH=ppc64 zImage modules modules_install




  • 将新内核拷贝到 boot 目录中:           
    1
    # cp arch/ppc64/boot/zImage  /boot/piperf.zImage




  • 将下面的一组配置添加到 /etc/yaboot.conf 文件中以更新引导加载器:           
    1
    2
    3
    image=/boot/piperf.zImage
    label=piperf.zImage
    root=/dev/sda3




    root 域指定的是您想用哪个磁盘分区作为 root 分区。指派给这个域的值取决于您具体的配置,所以上面所展示的值 /dev/sda3 可能是不对的。您可以运行             # df / 命令来确定指派给 root 域的正确的值。         
  • 使用           # shutdown –r now 重新引导。
  • 当 yaboot 开始运行时,您可以按下 Tab 键来查看所有可用内核的列表。您的新内核应该会显示在那个列表中。输入您的内核的名称并按下 Enter。新内核现在将引导起来。
接下来的步骤将是编译 Performance Inspector 工具。
返回列表