为什么 openwrt 上本地的 io 操作会严重影响整体性能?

2022-01-06 14:13:48 +08:00
 vigidroid
我给路由器插了外置硬盘做 samba 服务。发现传输数据的时候(指局域网的设备读、写路由器硬盘数据,和路由器硬盘本地做数据 copy ),路由器性能会整体下降,具体体现在:
1. Load Average 增长到 3+( cpu 为单核)
2. iostat 命令显示: cpu %idle 为 0 ,cpu %iowait 很高,硬盘设备的%util 接近 100
3. ps 命令显示:smbd 进程 STAT 为 D

网上查了一圈,大概理解为 cpu 在干等 io 操作返回( iowait 高),极少腾出空闲处理其他事情,导致得卡顿。那我理解这种情况应该是有方法优化的。io 操作出现了瓶颈,cpu 应该放手 io 进程,转而积极处理其他进程。为什么现在不是这样?
这个和路由器的内存少有没有关系,是不是搞个 swap 会有效(现在没有 swap ,内存 60MB )?
还有个问题,为什么同样是 io copy ,局域网设备之间的传输就不会导致路由器 cpu 的 iowait 升高。

本人 linux 小白,请教一下,有没有什么思路解决这种问题?
6408 次点击
所在节点    Linux
48 条回复
james122333
2022-01-07 10:26:51 +08:00
@vigidroid

给的建议是自己研究碍到谁了? 只能说是有而已
datocp
2022-01-07 17:58:34 +08:00
只知道 mtk7620 开启 wifi,iperf 少了大概 50mbps 的吞吐量。。。
fhbyljj
2022-01-07 18:40:11 +08:00
zeromake
2022-01-08 11:09:44 +08:00
120 收了个 d2550 的软路由双网口,不过没有 usb3 只有 usb2 ,只能挂个 2.5 硬盘 sata 或者外置一个 3.5 硬盘了。
Serino
2022-01-09 16:44:08 +08:00
换成 SSD ,占用立马下去了
Serino
2022-01-09 16:45:07 +08:00
HDD ,千兆传输,CPU 占用可能因为 IO ,跑到 50%
换成 SSD ,跑满千兆,大概就 10~15%的 CPU 占用
TsukiMori
2022-01-09 23:14:23 +08:00
还是搞 x86 aio 吧 有预算的话就拆开
拿现在这个干这么多事有点难为他了
flynaj
2022-01-10 02:06:02 +08:00
不用怀疑就是性能太弱,7621 强一丝丝,要 samba 就上 x86,这个我是一步步走过来的,7620 ,7621 ,d525,j1900,换上目前用的 e3 1265 v3 ,终于路由器不再是瓶颈了。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/826588

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX