不知道从哪里开始,但我经常在我的 Ubuntu Hardy 上看到这个奇怪的问题。
系统是带有 RAID10 磁盘和 3Gb RAM 的 Core i7-920,尽管这可能不是重点。它上面有多个 Samba 共享。每次有人将大型(多个演出)上传到共享时,系统响应能力都会显着下降(显着)。
文件系统:ReiserFS (v3)
vmstat 和 top 都没有显示明显的 I/O 等待时间,很少有阻塞进程(比如 2 个用于 4 核系统),并且偶尔会向磁盘写入约 13000 个块。平均 负载始终低于 0.5(同样系统是启用了 HT 的四核,因此它有 8 个逻辑核心)。
但是,即使我移动鼠标光标,它也会严重滞后......
这是在大量传入网络 I/O 期间典型的 vmstat 输出:
vmstat -n 1
procs -----------memory---------- ---swap-- -----io---- -system-- ----cpu----
r b swpd free buff cache si so bi bo in cs us sy id wa
1 0 419268 93724 48052 2071148 0 0 9 3 11 4 1 1 95 2
1 0 419268 91560 48052 2073292 0 0 0 0 2396 5716 5 1 94 0
0 0 419268 89636 48056 2075164 0 0 0 0 2173 5537 2 1 97 0
2 0 419268 87836 48056 2077136 0 0 0 0 2057 5216 1 1 98 0
1 0 419268 85716 48060 2078812 0 0 0 10104 2108 5261 2 1 97 0
0 0 419268 91940 48060 2071748 0 0 0 0 2221 6153 2 1 97 0
2 0 419268 90368 48064 2073640 0 0 0 0 2104 5384 1 1 98 0
0 0 419268 89000 48064 2075092 0 0 0 0 1781 4700 1 1 98 0
1 0 419268 87140 48064 2076640 0 0 0 0 2045 5104 1 1 98 0
1 1 419268 85584 48068 2078240 0 0 0 10112 1945 4343 2 1 91 7
0 0 419268 92668 48068 2071764 0 0 0 16 2064 5197 2 1 96 1
尝试运行
iotop
- 它应该向您展示一些东西。您是否在正常操作期间看到许多中断(System - in)和上下文切换(System - cs)?我想知道因为您对鼠标光标变慢的描述。如果有问题导致您的系统在负载下被中断淹没,这将导致一切变慢。
只是为了在黑暗中全面拍摄,/var/log/dmesg 中是否有任何关于您的磁盘或 RAID 设备的错误或超时的信息?
编辑1:
今天早上我看到一篇文章,听起来确实像你在盒子上看到的问题。Greg Smith 对似乎长时间冻结磁盘写入的服务器进行了分析。他的特殊调查方法涉及运行命令:
并在系统似乎挂起之前和期间查看“写回:”缓存大小。如果回写缓存确实已填满(大约 >40% 已满)并导致系统在刷新时暂停写入,那么 Greg 建议进行一些操作系统调整以缓解该问题。Greg 的博客条目可以在http://notemagnet.blogspot.com/2008/08/linux-write-cache-mystery.html找到
我不确定它是否发生在 Linux 上,但在 Windows 上,高速网络上的 Samba 传输速度可能超过磁盘 I/O 速度,而且由于一些早期的 Windows 版本具有非常不智能的网络传输缓存,因此您最终会得到一个缓冲区中等待写入磁盘的大量数据。这通常会破坏 XP 和早期系统的响应能力(也许 Vista 也一样,IDK 我从来没有大量使用过它)。
您可以尝试使用 IO 调度程序。默认的 IO 调度程序是 CFQ,它适用于台式机,但根据我的经验,对于文件服务器,Deadline 往往效果更好。您可以即时更改 IO 调度程序,以便您可以轻松地对其进行试验,看看哪种方式最适合您的情况。
要列出可用的 io 调度程序,请使用此命令。
这应该返回
noop anticipatory deadline [cfq]
要将您的调度程序更改为截止日期,请在适当的设备上使用以下命令。
我想说 ReiserFS 有一个锁,因此并不适合大型(许多磁盘)RAID。但是已经很久了,所以我可能是错的。
我怀疑更改调度程序会有所帮助。