我的电脑里configuration了一个Samba服务器。
当局域网中的其他PC从服务器上下载数据时, top
命令显示smbd
占用CPU的75%。 当他们将数据传输到服务器时, top
命令显示smbd
占用CPU的30%。
我想这是因为对于数据接收,服务器不需要计算头或校验和。
有没有更准确的解释呢?
另一个问题是为什么smbd不占用更多的CPU?
因为我局域网中的连接是1Gbit,双向速率只能达到90Mbit / s。 那么为什么不smbd
需要更多的CPU来达到更高的速度。 在接收过程中,性能分析结果显示CPU甚至有大约30%的时间完全没有任何事情要做(default_idle())。
@Mircea Vutcovicitesting文件是一个690MB .avi。 Samba版本是3.0.24。 文件系统为FAT,文件存储在USB2.0外置硬盘(> 200Mbit / s)中。 没有卸载引擎。 CPU在内核空间上花费的时间最多,例如smbd消耗75%,其中大约40%被Linuxnetworking消耗。 Sendfile被激活,但没有SG支持,所以实际上是使用tcp_sendmsg而不是tcp_sendpage。
服务器不需要计算标题或校验和。
其实它不得不。 如何检查校验和是否正确?
因为我局域网中的连接是1Gbit,双向速率只能达到90Mbit / s
MBit或兆字节。 如果你看到一个兆字节的速度 – 就像你在wnidows浏览器中做的那样 – 这个速度非常快。
这是samba的一个已知问题,CPU使用率可能相当高,特别是当samba必须查找不在其高速caching中的大文件夹的文件时。 这也是由几个networking共享和进程运行引起的,这将消耗CPU的时间和资源。