Linux性能问题

我们的一些应用程序所有者说,几个进程正在花费双倍的时间来运行,他们应该。

这一个有我们的头挠。

我们无法理解为什么某些操作在服务器1上花费的时间比在服务器2上花费的时间多一倍。

服务器1:IBM x3850 M2(RHEL 4 Nahant Update 8)

从IO的angular度来看,服务器1大多是空闲的。 在RAID 5中,S1和S2都在SAS驱动器上。服务器1有4个驱动器,服务器2有4个驱动器。 Iostat从服务器1输出

Linux [hostname-removed] 2.6.9-89.ELsmp#1 SMP Mon Apr 20 10:34:33 EDT 2009 i686 i686 i386 GNU / Linux

/ proc / cpuinfo的输出

/ proc / meminfo的输出

服务器2:IBM x3650(RHEL 4 Nahant Update 8)

服务器2是两个服务器中更活跃的。 iostat输出看起来像是由于SAN多path而连接的大量设备。 dd操作和tar操作完成在本地存储上。 Iostat从服务器2输出

Linux [hostname-removed] 2.6.9-78.0.13.ELsmp#1 SMP Wed Jan 7 17:52:47 EST 2009 i686 i686 i386 GNU / Linux

/ proc / cpuinfo的输出

/ proc / meminfo的输出

正如所料,在服务器1上写入1GB文件的操作更快

[server1]$ time dd if=/dev/zero of=bigfile bs=1024 count=1048576 1048576+0 records in 1048576+0 records out real 0m15.032s user 0m0.961s sys 0m11.389s 

与服务器2,这似乎检查出来:

 [server2]$ time dd if=/dev/zero of=bigfile bs=1024 count=1048576 1048576+0 records in 1048576+0 records out real 0m27.519s user 0m0.531s sys 0m8.612s 

但是,在服务器1上同一个文件的tarballing在“用户”时间上花了两倍的时间,而实际上花了一点时间。

  [server1]$ time tar -czf server1.tgz bigfile real 0m27.696s user 0m20.977s sys 0m5.294s [server2]$ time tar -czf server2.tgz bigfile real 0m23.300s user 0m10.378s sys 0m3.603s 

海量的I / O操作性能取决于HDD的速度和当前的I / O负载,而不是CPU。

这正是像collectl这样的工具最适合解决的问题。 产生dd或tar运行所花的时间是一个好的开始,但是发生了什么? 你的I / O率是稳定的还是他们打谷和摊位? 有各种各样的东西从头到尾都可能出错。

既然你有一个已知的“良好”的性能configuration文件系统,你是在最好的位置来解决这个问题。 与collectl一起运行testing,并观察你的cpu,内存,networking和磁盘(全部在同一行上,使得真正容易看到趋势)。 你也可以看看像nfs,tcp,sockets和其他一些东西,但我怀疑这不适用于这种情况。

现在在箱子上重复testing,知道性能差,看看有什么不同。 答案将在那里。 可能是内存不足,CPU上的中断太多(collectl可以显示你),或者是大的I / O等待时间。 无论是collectl都可以为你识别,但是你必须弄清楚什么是根本原因。 可能是一个高度碎片,甚至坏的磁盘。 也许控制器有问题。 那部分是给你弄清楚的。

希望这可以帮助…

-标记