我最近注意到,在我的千兆网络上,使用 samba(仅使用环回 - iperf 工作正常)的传输速度已降至 5MB/s 左右。之前它可以轻松达到 70MB/s 甚至更高。
我实际上在这里写了很长的描述,但后来决定再检查一遍,发现顶部报告 RAM 使用率为 100%,并且大部分条为黄色,例如为缓存保留。
使用以下命令清除缓存后sync; echo 3 > /proc/sys/vm/drop_caches
(位于http://www.hosting.com/support/linux/clear-memory-cache-on-linux-server),传输速度立刻从5MB/s提升到了50MB/s。
有人告诉我 Linux 可以高效地管理内存,而且我认为使用备用 RAM 来加快磁盘访问速度非常好,所以我怀疑我的配置有问题。是这种情况还是 samba/linux 的怪癖?
我在 Ubuntu 12.10 上使用 samba 3.6.6。
答案1
当内存使用率达到 100% 时,几乎所有东西都会变慢。尝试检查磁盘活动,您可能会发现磁盘 I/O 正在排队。否则,可用内存将用作缓冲区,并可用于防止将数据写入/tmp
磁盘等目录。当您没有任何可用内存时,许多本应在内存中完成的事情开始成为磁盘活动。
有可能 samba 在调用之间被调出到磁盘。这会显著降低性能。如果发生这种情况,我预计性能会更差。
sar
是一个很好的工具,可以用来观察正在发生的事情。 是一个很好的工具,可以用来确定磁盘和其他内存映射磁盘df
的内容有多大。将显示交换使用情况和活动。\tmp
vmstat
如果在这种情况下交换空间不足,您的服务器可能会出现故障。