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

转载 2007年09月20日 02:34:00
 原贴:http://www.ibm.com/developerworks/cn/linux/es-power5virtualization/index.html

在 POWER5 上配置 SUSE Linux 实现性能最大化

虚拟 SCSI 和虚拟以太网

developerWorks
文档选项
将此页作为电子邮件发送

将此页作为电子邮件发送



级别: 中级

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 interest

For 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 实用工具获得。

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

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

诊断 VSCSI 问题

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

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

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


图 1. 虚拟 SCSI 例子
虚拟 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.00

Device: 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 %util
sda 2.40 28.00 0.00 5.00 5.00 0.10
sdb 5.60 476.68 102.99 592.19 5.75 100.00
sdc 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

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


清单 2. 执行小型随机读操作时 iostat 的输出结果
                
avg-cpu: %user %nice %system %iowait %steal %idle
0.05 0.00 0.95 99.00 0.00 0.05

Device: 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 %util
sda 2.40 48.00 0.00 0.00 0.00 0.00
sdb 0.00 0.00 0.00 0.00 0.00 0.00
sdc 5.60 8.03 31.56 105.50 3.34 100.00
sdd 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.00

Device: rrqm/s wrqm/s r/s w/s rsec/s wsec/s rkB/s
sda 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 %util
sda 4.20 14.15 0.01 15.38 4.62 0.30
sdb 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
sdd 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.00

Device: rrqm/s wrqm/s r/s w/s rsec/s wsec/s rkB/s
sda 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.00

Device: wkB/s avgrq-sz avgqu-sz await svctm %util
sda 1.40 12.80 0.00 8.00 6.00 0.15
sdb 3.80 469.93 91.77 4818.38 66.26 100.00
sdc 5.60 8.14 30.72 641.45 18.98 100.00
sdd 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.60

Device: rrqm/s wrqm/s r/s w/s rsec/s wsec/s rkB/s
sda 0.00 0.00 0.00 0.10 0.00 0.80 0.00
sdb 0.00 0.00 0.00 0.00 0.00 0.00 0.00
sdc 0.00 0.00 61.97 322.04 6821.79 2704.65 3410.89

Device: wkB/s avgrq-sz avgqu-sz await svctm %util
sda 0.40 8.00 0.00 15.00 15.00 0.15
sdb 0.00 0.00 0.00 0.00 0.00 0.00
sdc 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 5001
TCP 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/sec

vmstat output:

[root@power] /root > vmstat 1
procs -----------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 5001
TCP 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 将本文提交到 Digg
del.icio.us 发布到 del.icio.us
Slashdot 提交到 Slashdot!


参考资料

学习

获得产品和技术

讨论


作者简介

 

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 年了。最近,他从事虚拟化和服务器整合方面的工作。



举报

相关文章推荐

IBM X3650 M3服务器安装SUSE LINUX 10实战

背景知识:RAID就是一种由多块廉价磁盘构成的冗余阵列,在操作系统下是作为一个独立的大型存储设备出现的。RAID可以充分发挥出多块硬盘的优势,可以提升硬盘速度,增大容量,提供容错功能确保数据安全性,在...

IBM supervessel power云平台 之 linux系统下VPN 登录篇

好不容易找到一个免费的基于power架构的云平台,还是有很多不方便使用的地方,下面咱就说一说怎么通过VPN登录到 IBM power 云虚拟机

我是如何成为一名python大咖的?

人生苦短,都说必须python,那么我分享下我是如何从小白成为Python资深开发者的吧。2014年我大学刚毕业..

红帽企业 Linux 4 用于 IBM® POWER Architecture 体系的安装指南

<< Back to man.ChinaUnix.net 红帽企业 Linux 4用于 IBM ® POWER Architecture 体系的安装指南版权 © 2005 Red Hat,...

Linux on Power 上的调试工具和技术(IBM developverwork)

简介调试程序有很多方法,例如向屏幕上打印消息,使用调试器,或者只需仔细考虑程序如何运行,并对问题进行有根有据的猜测。在修复 bug 之前,首先要确定在源程序中的位置。例如,当一个程序产生崩溃或生成核心...

IBM linux on power 开发者技术大会记录

今日参见IBM举办的linux开发者大会,收获颇多。现在线简单记录于此。改日在详细总结。1. 对于业务的处理来说:目前来说听到了如下的几个特点,主要分为如下的两类:(1) 批处理类型的业务:如银行的报...

(IBM)最大限度利用 JavaScript 和 Ajax 性能

简介 在 web 早期,优化 web 页面的性能通常意味着避免了使用不必要的 HTML 标记,将 JavaScript 代码量控制到最小,并尽量减小所有图片文件大小,否则上网冲浪者会走开去泡杯咖啡来...

IBM Power虚拟化对金融行业的帮助

随着金融企业业务的不断发展,企业的IT环境也在不断进行演变,其中X86服务器与小型机之间的争夺历来已久,如今在虚拟化上也开始一争高下。 毕竟虚拟化是云计算的基础所在,通过虚拟化来实现应用整合是一重要...
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)