桑巴阅读性能

每当我从我的Samba服务器读取一个大文件时,我都会获得大约40 MB /秒的传输速率。 如果我再次读同一个文件,速度突然变得高达70 MB /秒。

为什么我第一次没有达到70 MB /秒? 磁盘容易执行高达95 MB /秒。 Samba是否必须将整个文件caching在RAM中才能获得性能呢?

当写文件到服务器时,我得到每次95 + MB /秒,差别很大。

我曾尝试设置一些套接字选项(TCP_NODELAY IPTOS_LOWDELAY SO_SNDBUF = 65535 SO_RCVBUF = 65535),但他们似乎没有太多的帮助。

那么,有关如何提高Samba读取性能的技巧?

注意:这些磁盘是在软件RAID 1中configuration的2x1TB Samsung Spinpoint F1 7200 RPM。

更新:看起来客户端和服务器一样有这个问题,如果不是更多的话。 我正在使用我可靠的老总指挥官,这些人似乎太老了。 当我使用Windows资源pipe理器来复制文件时,即使是未caching的文件也是非常快的。 谢谢你的帮助。

到目前为止,所有答案都与光盘有关,而不是RAIDconfiguration。 也许本指南的问题19和4可以帮助你: 软件RAID HOWTO 。

另一件事是networking方面。 你的网卡上是否启用了TOE ?

而最后一件事:你是否检查你的瓶颈是不是在客户端? 这可能是因为您的FTP客户端在CIFS服务中保存了更多的数据。 这也许是FTP更快的原因之一。

首先,那些TCP套接字选项是针对2.4内核的,在Samba邮件列表上,开发人员一再表示他们在2.6内核上没有任何意义。

除此之外,在这里你的号码是不正确的。 在RAID1(镜像)configuration中的2个SATA驱动器没有办法让你写入速度为95MB / s,我非常怀疑你会看到高的读取速度。 除了可能在车道的外部轨道上。 你如何在你的RAID卷上做标记? 请记住,dd不是文件系统的基准。

如果你的网卡是消费级的,那么千兆网卡的速度也会消耗大量的CPU周期。 所以如果你在系统中有一个较慢的CPU,不排除cpu作为瓶颈。

另外请记住,在这里的服务器和客户端的磁盘和CPU都必须能够维持你想要达到的速度,所以不要只看服务器作为瓶颈的来源,因为它只是很可能在客户端。

试着增加预读

# /sbin/blockdev --getra /dev/sdb 256 # /sbin/blockdev --setra 16384 /dev/sdb 

2.尝试更改IO Scheduler,并find一个性能最佳的工作负载

 # cat /sys/block/hda/queue/scheduler noop [anticipatory] deadline cfq echo deadline > /sys/block/hda/queue/scheduler 

Linux磁盘caching是第二次读取速度更快的原因,更不用说可能涉及的任何H / W磁盘caching。

提高读取性能:使用磁盘分条,增加RAM,进入下一级硬盘接口(用SAS或FC4replaceSATA),使用更快的磁盘(15K RPM而不是10K),将RAM添加到RAID高速caching。

要提高70MB / s将是昂贵的,但你应该能够提高一些读取速度。