如何诊断基于Intel Atom的Ubuntu服务器的瓶颈?


1

我家里有一个小型媒体服务器,它有软件RAID和一个到我网络其余部分的千兆链接。

但是出于某种原因,我在向/从服务器复制时只能获得~10MB / s的传输。

我在4个1TB磁盘上使用软件RAID5(mdadm)。最重要的是,然后我使用LVM为我提供了一个巨大的磁盘空间池,然后将其分成多个分区,可以在需要时调整大小。我猜这很可能是原因,但我想知道根本原因在哪里。

那么,我如何对网络吞吐量(Windows 7桌面< - > Ubuntu服务器)和硬盘性能进行基准测试,以尝试确定我的瓶颈可能在哪里?

[编辑]如果有人有兴趣,主板是英特尔台式机主板D945GCLF2。这是一款采用英特尔®945GC高速芯片组300系列Atom处理器

[编辑2]我觉得这样的傻瓜!我刚刚检查了我的桌面,我插入了两个板载网卡中较慢的一个,所以服务器可能没有错。根据Windows 7,从服务器上传输ubuntu的副本我得到~35-40MB / s。当我有机会时,我会进行那些高清测试(仅仅是为了完整性)。


4
带有Atom CPU的软件RAID ......不要再看了。特别是做奇偶校验计算的RAID5。另外我想你的网络是100Mbps,最大吞吐量为12Mbps,所以10MB / s是好的=)
Antoine Benkemoun 2010年

Jon有一个千兆链路。
lajuette 2010年

@lajuette - 拥有gbit组件并不总是足够的,您需要验证链中的每个链路是否已经协商了gbit连接,并且由于奇怪的不兼容性,电缆故障或随机偶然事件而没有回落到较慢的链路速度。
David Spillett 2010年

这不是答案,而是建议修复 - 最简单的解决方案似乎是添加基于硬件的RAID卡。它会从你有限的CPU卸载IO开销,如果你得到一个合理的缓存(你应该!),你会看到额外的好处。在这一点上,这似乎是您最简单的即插即用选项。此外,如果所有套件都支持Jumbo Frames,您将受益。

Answers:


4

就像Antoine所说:Atom CPU和SW RAID是一个坏主意。要测量磁盘的吞吐量,您可以使用hdparm

看看这个:http//www.cyberciti.biz/tips/how-fast-is-linux-sata-hard-disk.html

您应该单独测量磁盘设备和raid设备。这样你可以看到磁盘是慢速(损坏?)还是RAID很慢。另外,top在测量或访问RAID时,请查看您的CPU使用情况(例如)。

如果这不是瓶颈,请检查您的GBEthernet链路是否正在使用其全部容量。看看输出啊ifconfig。我的内容如下(Mac OS X 10.6,在Ubuntu上看起来应该类似):

en0: flags=8863<UP,BROADCAST,SMART,RUNNING,SIMPLEX,MULTICAST> mtu 1500
    ether 64:b9:e8:bf:8f:b4 
    inet 192.168.0.5 netmask 0xffffff00 broadcast 192.168.0.255
    media: autoselect (1000baseT <full-duplex,flow-control>)
    status: active

从底部开始的第二行:1000baseT意味着:GB以太网!

[edit]我发现这篇文章:http//www.performancewiki.com/diskio-monitoring.html 它建议sariostat监控磁盘IO。


听起来很好的建议 - 我会试试你的建议。
Jon Cage 2010年

我对你的结果很感兴趣。如果原子(一个顺便说一句?)能够做这样的东西我想在家里尝试这个。我在ION板上运行媒体中心。
lajuette 2010年

@lajuette - 如果这是你的意思,Atom应该可以作为基本的文件服务器。我没有使用Gbit网卡测试过,但是Jon的结果显示它能够通过RAID5阵列显示10Mbit的速度,理论上应该能够显着提高速度。我曾经在我的上网本上做了一些测试,看看Atom如何做VPN服务器,当使用OpenVPN作为安全传输层时,它可以推/拉100Mbit链路的85-90%,你的ION板可能有来自Atom系列的更强大的芯片,所以可能会更好。
David Spillett 2010年

2

要检查的几件事:

  • 确保NIC实际上在Gbit中,而不是10Mbit ethtool eth0eth0如果不同则替换相关NIC的设备ID),查找当前模式的“速度”读数
  • 验证Windows当前是否也在Gbit模式下使用其卡
  • 检查传输期间服务器上的CPU和I / O负载是什么 - 如果你看到(在top或类似)一个核心接近100%I / O等待状态,那么你的驱动器是瓶颈,如果你看到高“系统”CPU然后CPU使用瓶颈(由于RAID 5的“写 - >读+读+写+写”性能在四个驱动器上命中,它可能是两者的混合,并且奇偶校验计算由CPU,如果系统或IO读数都不高,那么网络很可能是瓶颈。
  • 仅在服务器上测试批量读取性能(测试原始IO性能,不管网络如何):cat一个大文件,/dev/null以查看它到底有多远(echo 3 > /proc/sys/vm/drop_caches首先要知道IO实际上是在击中磁盘而不是来自内存,以及如果你已经安装了use pv而不是cat,因为它提供了有用的速度+进度读数),看着CPU + IO负载,因为这也发生了
  • 使用cat /dev/zero > /some/file/on/the/array(或pv /dev/zero > /some/file/on/the/array)测试批量写入性能,观察CPU使用情况也是如此。
  • 测试bluk网络吞吐量,无论驱动器/阵列性能如何,在具有netcatpv的机器之间- 在Win7机器nc -l -p 123 > NUL上和服务器上然后做pv /dev/zero | nc 1.2.3.4 1231.2.3.4是Windows机箱的地址(你可能会结束添加防火墙例外) for nc)。

当您看到大约10Mbyte / sec的固定速率时,我会首先怀疑网络问题,而不是磁盘或CPU的瓶颈问题 - 但Atom CPU上的RAID5可能是瓶颈之一,因此您可能需要考虑RAID1 + 0或者改为RAID10(如果您的RAID5阵列是3-plus-spare,那么带有3 +备用的Linux的RAID10驱动程序应该提供类似的冗余(任何单个驱动器故障都可以存活)但具有更好的性能(写 - >写* 2而不是写 - > read + paritycalc + write * 2),在3驱动器模式下,RAID10驱动程序执行类似于IBM控制器调用RAID-1E的操作,请参阅http://en.wikipedia.org/wiki/Non-standard_RAID_levels#Linux_MD_RAID_10)。

编辑:

添加额外的东西来测试上面的列表,以及其他细节


大约10MByte似乎也接近我的100MBit链接。当我有机会时,我会试试你的建议 - 谢谢!
Jon Cage 2010年

1

首先,您使用的是SMB / CIFS,这不是一个非常快的协议(它肯定比NFS慢,供参考)。

其次,它取决于您正在测试的工作负载。它主要是顺序的还是随机的?如果它主要是随机I / O,那么10MB / s可能就行了。实际上,从GB网卡中可以预期CIFS可以达到30-50MB / s(但正如我所说,可能会更高或更低,具体取决于工作负载)。

您还可以从serverfault检查此其他答案以进行CIFS性能调整。

快速搜索显示此页面带有CIFS性能标记。你可能会发现它很有用。

最后,您可以使用iperf测试网络的性能(也可以为Windows编译,您可能会发现它在某处预编译)


我正在传输大数据文件,所以大量顺序写入/读取。
Jon Cage 2010年

@Jon:除了建议您测试网络本身并检查文件服务器上的CPU负载之外,我只能引导您访问官方Samba性能页面samba.org/samba/docs/man/Samba-HOWTO-Collection/speed .html

0

原来它是我使用的台式机; 它运行在100MBit。感谢所有的建议 - 对于基准测试和提高系统的整体速度非常有用!

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.