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

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

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

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

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

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

[编辑]如果有人感兴趣的话,主板是英特尔台式机主板 D945GCLF2. 所以这是300 系列 Atom 处理器英特尔® 945GC 高速芯片组

[编辑2]我觉得自己真是个傻瓜!我刚刚检查了我的桌面,我插入了两个板载网卡中较慢的一个,所以服务器可能没有问题。根据 Windows 7,从服务器上传输一份 ubuntu 副本后,我得到 ~35-40MB/s 的速度。不过,有机会我会做那些高清测试(只是为了完整性)。

答案1

就像 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 Link 是否已使用其全部容量。查看 的输出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 以太网!

[编辑] 我找到了这篇文章:http://www.performancewiki.com/diskio-monitoring.html 它推荐sariostat监控磁盘 IO。

答案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 实际上是到达磁盘,而不是来自内存,如果您已经安装了它,请使用pv而不是 cat,因为它可以提供有用的速度+进度读数),同时观察 CPU+IO 负载
  • cat /dev/zero > /some/file/on/the/array使用(或)测试批量写入性能pv /dev/zero > /some/file/on/the/array,同时观察发生这种情况时的 CPU 使用情况。
  • 测试网络吞吐量,无论驱动器/阵列性能如何,在具有网猫光伏- 在 Win7 机器上执行nc -l -p 123 > NUL,然后在服务器上执行,pv /dev/zero | nc 1.2.3.4 123其中 1.2.3.4 是 Windows 机器的地址(您可能最终为其添加防火墙例外nc)。

由于您看到的固定速率为~10Mbyte/sec,我首先怀疑是网络问题,而不是磁盘或 CPU 的瓶颈 - 但 Atom CPU 上的 RAID5 可能是瓶颈之一,因此您可能需要考虑 RAID1+0 或 RAID10(如果您的 RAID5 阵列是 3-plus-spare,那么 Linux 的 RAID10 驱动程序带有 3+spare 应该提供类似的冗余(任何单个驱动器故障都是可以承受的),但性能更好(写入->写入*2 而不是写入->读取+奇偶校验计算+写入*2),在 3 驱动器模式下,RAID10 驱动程序执行的操作类似于 IBM 控制器所称的 RAID-1E,请参阅http://en.wikipedia.org/wiki/Non-standard_RAID_levels#Linux_MD_RAID_10)。

编辑:

在上面的列表中添加了需要测试的额外内容以及其他小细节

答案3

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

其次,这取决于你测试的工作负载。主要是顺序的还是随机的?如果主要是随机 I/O,那么 10MB/s 可能就没问题了。实际上,从 GB NIC 中,你可以预期 CIFS 的速度为 30-50MB/s(但正如我所说,可能会更高或更低,具体取决于工作负载)。

您还可以查看其他来自 serverfault 的回答用于 CIFS 性能调整。

快速搜索显示此页面CIFS 性能基准。您可能会发现它很有用。

最后,你可以使用以下方法测试网络的性能防火墙(它也可以针对 Windows 进行编译,并且您可能会在某处发现它已预编译)

答案4

原来是我使用的台式机出了问题;它以 100MBit 的速度运行。不过还是感谢大家的建议 - 这对基准测试和提高系统的整体速度非常有用!

相关内容