在 POWER5 上配置 SUSE Linux 实现性能最大化(来自ibm)

文档选项 <tr valign="top"><td width="8"><img alt="" height="1" width="8" src="//www.ibm.com/i/c.gif"/></td><td width="16"><img alt="" width="16" height="16" src="//www.ibm.com/i/c.gif"/></td><td class="small" width="122"><p><span class="ast">未显示需要 JavaScript 的文档选项</span></p></td></tr>

将此页作为电子邮件发送

级别: 中级

Mike Skelton, 性能分析师, IBM Yong Cai (ycai@us.ibm.com), 性能分析师, IBM

2007 年 8 月 06 日

IBM POWER5™ 和 POWER5+™ 系统提供了非常优秀的虚拟化能力。通过阅读本文,您将理解影响运行 SUSE Linux® Enterprise Server (SLES) 10 的 IBM POWER5 系统虚拟化性能的因素,并学习如何使用一些可以帮助诊断和解决性能问题的工具。您还将看到几个如何测试和改进性能的例子。

简介

SUSE Linux Enterprise Server (SLES) 10 操作系统中支持的 IBM System p™ 虚拟化特性包括虚拟 SCSI(VSCSI)和虚拟 LAN(VLAN)。VSCSI 和 VLAN 都提供了一些可以改进系统性能的配置和调优参数。本文着重介绍了一些调优建议,并展示了一些可以为性能监测和虚拟化性能问题诊断提供数据的评测工具特性。 有关初始设置和配置的信息,请参看 参考资料。

虚拟 SCSI 调优

对 VSCSI 进行调优的主要方法是选择正确的 I/O 调度程序。您可以为 VSCSI 服务器驱动器和/或 VSCSI 客户机驱动器选择 I/O 调度程序。所选择的调度程序应该要适合驱动器上的任务负载。默认安装使用的是 anticipatory I/O 调度程序。对于 VSCSI 服务器驱动器来说,最好的 I/O 调度程序是 noop。

可以使用的 I/O 调度程序包括:

noop —— fifo 排队 anticipatory —— 预期调度 deadline cfq —— 始终公平排队

要确定正在使用的是哪个 I/O 调度程序,可以查询 /sys 文件系统中的内容。例如,在 SLES 10 上,可以使用下面的命令:

cat /sys/block/<sd*>/queue/scheduler                  ^use drive of interestFor example using drive sda:cat /sys/block/sda/queue/scheduler[noop] anticipatory deadline cfq      

在这个例子中,使用的正是 [noop] 调度程序。您可以向上面例子中给出的文件中回转一个值来实时修改 I/O 调度程序。您也可以通过向 /etc/yaboot.conf 添加一行内容在引导时修改调度器,例如:

append = "elevator=noop"

使用 VSCSI 工具

SLES 10 通用的版本有一个 VSCSI 功能方面的 bug。用户可以从 SUSE Linux 门户(请参看 参考资料)获得 SLES 10 最新的内核更新(2.6.16.21-025-ppc 或更新版本)。这个更新包括了一些补丁修正。

iostat 命令是 sysstat 包中的一部分,可以通过 SUSE 中的 yast 实用工具获得。

    启动 yast。 选择 software。 选择 software management。 查找 sysstat。 高亮显示 systat 包裹。 选择 accept 操作。 按照提示,加载需要的安装盘。

运行 iostat -x 命令会提供很多有关对物理设备和虚拟设备进行读写流量的信息。要查看手册页,请参看 参考资料 中 iostat 列的定义。

诊断 VSCSI 问题

为了诊断与虚拟 SCSI 磁盘有关的性能问题,需要理解 VSCSI 的系统配置。您需要知道虚拟设备与物理硬件之间是如何映射的。

对 一个物理 SCSI 磁盘上所有磁盘分区进行操作的总和必须在物理 SCSI 设备的处理能力之内。首先,要查看一下对物理设备的需求。然后,如果对物理设备的需求很高,就查看一下对于每个分区的需求。还要根据需要调整虚拟设备到物 理设备的映射,以使对设备操作的需求在物理硬件的处理能力之内。这种调整需要修改虚拟设备到物理设备的映射,或者修改或添加硬件。

考虑这样一个 VSCSI 服务器的例子,它有一个名为 sdc 的 SCSI 磁盘,被划分成 3 个分区: (sdc1sdc2sdc3),每个分区都进行了虚拟化。在客户机使用虚拟化的分区时,都会被作为一个单独的驱动器使用。 iostat 工具显示对驱动器磁盘的使用情况。iostat 可以在客户机使用 sdc1sdc2sdc3 时对它们的使用情况进行度量。最好的方法是在 VSCSI 服务器上首先运行 iostat 来显示对 sdc 的总体使用情况。然后在每个客户机上运行 iostat 获取对分区 sdc1sdc2sdc3 的利用情况。

图 1. 虚拟 SCSI 例子

理解一个度量示例

下面让我们来看一个度量示例,它显示了为什么需要理解物理磁盘到虚拟磁盘的映射方式。如 图 1 所示, VIO 服务器从 sda 引导。VIO 服务器然后会对 sdbsdc 上的 3 个分区进行虚拟化。VIO 客户机从 sda 上引导,然后会将这 3 个虚拟分区作为 sdbsdcsdd 进行挂载。

本例的任务负载是由 Flexible File System Benchmark (FFSB)(请参看 参考资料 下载这个工具)提供的,它是一个开源工具,很容易配置来提供各种读/写、顺序/随机操作模式,还可以使用其他一些线程选项。对于本例来说,FFSB 被配置用来对客户机磁盘 sdbsdcsdd 的性能进行评测。大型顺序读操作是对 sdb 磁盘进行的。小型随机读操作是对 sdc 磁盘进行的。顺序写操作是对 sdd 磁盘的,如 清单 1 所示。 iostat 工具可以度量这些行为的结果。这个测试首先在每个磁盘上单独运行,然后在这 3 个磁盘上并行运行。

清单 1 给出了对 sdb 执行大型顺序读操作时 iostat 的结果。

清单 1. 大型顺序读操作时 iostat 的输出结果

                avg-cpu:  %user    %nice   %system %iowait      %steal    %idle           0.30     0.00    6.35    93.30       0.00      0.00Device:   rrqm/s   wrqm/s    r/s     w/s        rsec/s    wsec/s     rkB/s    sda        0.00     0.45    0.10    0.10        0.80      4.80       0.40     sdb        1.17     0.80  173.36    0.40    82818.59     11.19   41409.30     sdc        0.00     0.00    0.00    0.00        0.00      0.00       0.00     sdd        0.00     0.00    0.00    0.00        0.00      0.00       0.00     Device:    wkB/s   avgrq-sz   avgqu-sz    await   svctm   %utilsda        2.40      28.00      0.00      5.00     5.00    0.10sdb        5.60     476.68    102.99    592.19     5.75  100.00sdc        0.00       0.00      0.00      0.00     0.00    0.00sdd        0.00       0.00      0.00      0.00     0.00    0.00

清单 2 给出了对在 sdc 上执行小型随机读操作时 iostat 的输出结果。

清单 2. 执行小型随机读操作时 iostat 的输出结果

                avg-cpu:  %user    %nice   %system %iowait      %steal    %idle           0.05     0.00    0.95    99.00       0.00      0.05Device:   rrqm/s   wrqm/s    r/s     w/s        rsec/s    wsec/s     rkB/s    sda        0.00     0.45    0.00    0.10        0.00      4.80       0.00     sdb        0.00     0.00    0.00    0.00        0.00      0.00       0.00     sdc        0.00     0.80   98.85    0.40     2390.80     11.19    1195.40     sdd        0.00     0.00    0.00    0.00        0.00      0.00       0.00      Device:    wkB/s   avgrq-sz   avgqu-sz    await   svctm   %utilsda        2.40      48.00      0.00      0.00     0.00    0.00sdb        0.00       0.00      0.00      0.00     0.00    0.00sdc        5.60       8.03     31.56    105.50     3.34  100.00sdd        0.00       0.00      0.00      0.00     0.00    0.00

最后,清单 3 给出了对 sdd 执行随机写操作时 iostat 的结果。

清单 3. 执行随机写操作时 iostat 的结果

                avg-cpu:  %user    %nice   %system %iowait      %steal    %idle           0.00     0.00    1.00    98.95       0.00      0.00Device:   rrqm/s   wrqm/s    r/s     w/s        rsec/s    wsec/s     rkB/ssda        0.00     0.45    0.10    0.55        0.80      8.40       0.40     sdb        0.00     0.00    0.00    0.00        0.00      0.00       0.00     sdc        0.00     0.00    0.00    0.00        0.00      0.00       0.00     sdd        0.00   27.69     0.00  455.97        0.00   3866.87       0.00  Device:    wkB/s   avgrq-sz   avgqu-sz    await   svctm   %utilsda        4.20     14.15       0.01     15.38     4.62    0.30sdb        0.00      0.00       0.00      0.00     0.00    0.00sdc        0.00      0.00       0.00      0.00     0.00    0.00sdd     1933.43      8.48     143.49    297.71     2.19   99.95

这三个测试并行执行时客户机端的 iostat 命令的结果显示,在并行执行测试时,各个磁盘的吞吐量要低于在这些磁盘上单独运行测试时的吞吐量。清单 4 给出了这 3 个测试并行执行时 iostat 的结果。

清单 4. 3 个测试并行执行的结果

                avg-cpu:  %user    %nice   %system %iowait      %steal    %idle           0.05     0.00    1.60    98.30       0.00      0.00Device:   rrqm/s   wrqm/s    r/s     w/s        rsec/s    wsec/s     rkB/ssda        0.00     0.10    0.05    0.20        0.40      2.80       0.20     sdb        1.10     0.40   14.84    0.25     7084.86      7.60    3542.43     sdc        0.00     0.75   52.22    0.45      417.79     11.19     208.90     sdd        0.00    14.89    0.00  312.29        0.00   2618.29       0.00Device:    wkB/s   avgrq-sz   avgqu-sz    await   svctm   %utilsda        1.40     12.80       0.00      8.00     6.00    0.15sdb        3.80    469.93      91.77   4818.38    66.26  100.00sdc        5.60      8.14      30.72    641.45    18.98  100.00sdd     1309.15      8.38     142.79    451.13     3.20  100.00

现在来看一下服务器上物理磁盘的使用情况。回想一下 图 1 中服务器驱动器 sdc 有 3 个分区,客户机将它们分别作为驱动器 sdbsdcsdd 使用。服务器端的 iostat 度量显示物理磁盘 sdc 的利用率是 100%,如清单 5 所示。

清单 5. 服务器端 iostat 度量显示了物理驱动器的利用率

                avg-cpu:  %user    %nice   %system %iowait      %steal    %idle           0.00     0.00    1.40     0.00       0.00     98.60Device:   rrqm/s   wrqm/s    r/s     w/s        rsec/s    wsec/s     rkB/ssda        0.00     0.00    0.00    0.10        0.00      0.80       0.00sdb        0.00     0.00    0.00    0.00        0.00      0.00       0.00sdc        0.00     0.00   61.97  322.04     6821.79   2704.65    3410.89Device:    wkB/s   avgrq-sz   avgqu-sz    await   svctm   %utilsda        0.40      8.00       0.00     15.00    15.00    0.15sdb        0.00      0.00       0.00      0.00     0.00    0.00sdc     1352.32     24.81      27.50     70.54     2.60  100.00

这个例子展示了物理磁盘资源出现竞争情况时对吞吐量和响应时间的影响。当 VSCSI 设备的吞吐量或响应时间变差时,查看一下物理设备的利用率,从而确认是否是物理设备竞争的原因。

调优虚拟 LAN

虚 拟 LAN 是 POWER Hypervisor™ 的一个功能,它可以在逻辑分区之间启用安全通信,而不需要使用物理 I/O 适配器。当 VLAN 上的 LPAR 之间有 TCP/IP 通信数据时,有一些 TCP/IP 调优参数可以影响数据流的性能。您可以使用一组调优参数,它们在这种没有物理 I/O 适配器的环境中很好地工作。清单 6 给出了一些可获得更好的 VLAN 性能的调优建议。

清单 6. 对 MTU1500 的一些调优建议

                        /sbin/sysctl -w net.ipv4.tcp_timestamps=1        /sbin/sysctl -w net.ipv4.tcp_sack=1        /sbin/sysctl -w net.ipv4.tcp_window_scaling=1        /sbin/sysctl -w net.core.netdev_max_backlog=3000        /sbin/sysctl -w net.ipv4.tcp_wmem='4096 87380   30000000'        /sbin/sysctl -w net.ipv4.tcp_rmem='4096 87380   30000000'        /sbin/sysctl -w net.ipv4.ip_local_port_range='8096      131072'        /sbin/sysctl -w net.core.rmem_max=10485760        /sbin/sysctl -w net.core.rmem_default=10485760        /sbin/sysctl -w net.core.wmem_max=10485760        /sbin/sysctl -w net.core.wmem_default=10485760        /sbin/sysctl -w net.core.optmem_max=10000000        echo 128 > /sys/class/net/eth0/weight        echo 128 > /sys/class/net/eth1/weight

使用 VLAN 工具

对 VLAN 进行网络分析的主要工具是 netstat,它可以显示有关网络系统的大量信息。其中两个最有用的输出是接口信息和网络统计信息。您可以使用 netstat -i 显示网络接口信息,使用 netstat -s 显示 TCP/IP 的协议统计信息。

诊断 VLAN 问题

用来度量最大 TCP 带宽的工具是 iperf(请参看 参考资料,访问 National Laboratory for Applied Network Research Web 站点)。

对于本例来说,iperf 用来查看一个 POWER5 系统配置上的 VLAN 带宽,这个系统包括一个 4 处理器的计算机,每个服务器和客户机分区使用了 0.5 个物理 CPU。启用了同步多线程(Simultaneous multithreading,SMT)特性,系统中有 2GB 的内存。报告显示的吞吐量只有大约 500 Mbits/sec。如果使用的是千兆适配器,该值大约是 1000 Mbits/sec。清单 7 给出了 iperf 的吞吐量和 vmstat 的输出结果。 vmstat 是一个 Linux 实时性能监测工具。vmstat 可以在 id (倒数第 2 列)列中报告 CPU 的空闲比率。CPU 利用率的结果显示该列值是 100%,即 CPU 空闲。

清单 7. iperf 吞吐量和 vmstat 输出结果

                [root@power] /iperf_202/iperf-2.0.2/src > ./iperf -c en0host2 -w 1024KB -N------------------------------------------------------------Client connecting to en0host2, TCP port 5001TCP window size:   256 KByte (WARNING: requested 1.00 MByte)------------------------------------------------------------[  3] local 192.168.1.1 port 55990 connected with 192.168.1.2 port 5001[  3]  0.0-10.0 sec    632 MBytes    530 Mbits/secvmstat output:[root@power] /root > vmstat 1procs -----------memory---------- ---swap-- -----io---- --system-- ----cpu---- r  b   swpd   free   buff  cache   si   so    bi    bo   in    cs us sy id wa 0  0      0 360088  75136 681724    0    0     1     3   13    37  1  6 93  0 0  0      0 360088  75136 681724    0    0     0     0    6    18  0  0 100  0 0  0      0 360088  75136 681724    0    0     0     0    9    12  0  0 100  0 0  0      0 360088  75136 681724    0    0     0     0    6    10  0  0 100  0 3  0      0 359684  75136 681724    0    0     0     0  358    96  0  2 98  0 1  0      0 359808  75136 681724    0    0     0     0 14774  1464  0 63 37  0 1  0      0 359684  75136 681724    0    0     0     8 13913  1452  0 64 36  0 1  0      0 359808  75136 681724    0    0     0     0 14676  1359  1 65 35  0 1  0      0 359544  75136 681724    0    0     0     8 14260  1598 12 67 20  0 1  0      0 359668  75136 681724    0    0     0     0 12198  1882  0 62 38  0 2  0      0 359544  75136 681724    0    0     0     0 13844  1435  1 63 37  0 1  0      0 359544  75136 681724    0    0     0     0 14808  1372  0 64 37  0 1  0      0 359668  75136 681724    0    0     0     0 13934  1454  0 62 37  0 1  0      0 359700  75136 681724    0    0     0     0 11327  1886  0 64 35  0 0  0      0 359576  75136 681724    0    0     0     0 14650  1343  0 60 40  0

运行测试的分区只分配了 0.5 个物理 CPU,这使得 vmstat 所度量出来的 CPU 利用率看起来非常高。这可能会导致您认为 iperf 是一个 CPU 密集型的程序。我们对系统重新进行了配置,为每个服务器和客户机分区都分配 1 个物理 CPU。在新配置好的系统上再次运行测试就得到了如清单 8 所示的改进后的结果。

清单 8. 改进后的 iperf 测试结果

                [root@power] /iperf_202/iperf-2.0.2/src > ./iperf -c en0host2 -w 1024KB -N------------------------------------------------------------Client connecting to en0host2, TCP port 5001TCP window size:   256 KByte (WARNING: requested 1.00 MByte)------------------------------------------------------------[  3] local 192.168.1.1 port 39856 connected with 192.168.1.2 port 5001[  3]  0.0-10.0 sec  1.22 GBytes  1.05 Gbits/sec

通过增加 CPU 的处理能力,测试可以使以太网全速运行。了解了这一点,系统管理员就可以制定适当的 CPU 资源分配方案了。

结束语

理 解 SLES 10 所支持的 IBM System p 的虚拟 SCSI 和虚拟 LAN 特性可以帮助管理员对系统进行调优,以便实现更好的性能。本文说明物理磁盘出现资源竞争的情况可以导致 VSCSI 设备吞吐量或响应时间的下降。类似地,CPU 的限制也可能会限制 VLAN 的性能。这两种情况都可以通过向虚拟设备中添加额外的物理资源而得到缓解。

分享这篇文章……

将本文提交到 Digg 发布到 del.icio.us 提交到 Slashdot!

参考资料

学习 您可以参阅本文在 developerWorks 全球站点上的 英文原文。 有关设置 Suse 服务器的信息,请参看 POWER5 Virtualization: How to set up the SuSE Linux Virtual I/O Server ,developerWorks,2005 年 5 月。 请查看一些有用的 Linux 性能工具信息: vmstat top mpstat iostat netstat

请参看下面这些有关 Linux 性能的书籍:

Performance Tuning for Linux Servers ,Sandra K. Johnson. Linux – Debugging and Performance Tuning ,Steve Best. Optimizing Linux Performance – A Hands-On Guide to Linux Performance Tools ,Phillip G. Ezolt. 浏览 技术书店,寻找这些书籍以及有关其他技术主题的书籍。 还想了解更多内容?developerWorks IBM Systems 专区提供了数以百计的文章、简介、中级和高级教程。 随时关注 developerWorks 技术活动和网络广播。 获得产品和技术 从 SUSE Linux Portal 上获取为 SUSE Linux 准备的最新内核更新。 从 Flexible File System Benchmark (FFSB) 获得一个开源性能评测工具。 从 National Laboratory for Applied Network Research (NLANR) 的 Web 站点获得度量 TCP 最大带宽的 iperf 工具。 利用可直接从 developerWorks 下载的 IBM 试用软件 在 Linux 上构建您的下一个开发项目。 讨论 通过参与 developerWorks blogs 加入 developerWorks 社区。

作者简介

Mike Skelton 是 IBM Systems and Technology Group 的 Linux Technology Center 中的一员。他作为 IBM 性能分析师已经超过 20 年了,他拥有很多专利并且发表了很多文章。他现在为 IBM Software Group 工作。

Yong Cai 是 IBM System and Technology Group 中的一员。他在 IBM 从事网络、Java 和数据库方面的性能分析工作已经超过 8 年了。最近,他从事虚拟化和服务器整合方面的工作。

愚公因此敢移山,矢志不渝是前行,握紧拳头勇登攀,

在 POWER5 上配置 SUSE Linux 实现性能最大化(来自ibm)

相关文章:

你感兴趣的文章:

标签云: