我希望,只要这个问题涉及到Linux,都可以在这里得到解答:
我有一个DSL路由器来自 Observa Telecom,型号BHS-RTA:
Modem Name : BHS_RTA
Serial Number : D861940E5088
Time and Date : 2015-12-13 01:30:37
HardwareVersion : BHS_RTA_R1A
SoftwareVersion : BHS_RTA_ES_050
Firmware Version : 1.1.3
该设备具有嵌入式Linux,所以我正在检查CPU使用率为了检测可能的过载:
~ $ top
Mem: 19360K used, 4544K free, 0K shrd, 1444K buff, 5240K cached
Load average: 2.04 2.18 2.18
如果我正确理解了意义CPU 使用率(平均负载)概念的一部分,除非我的路由器有 2 核 CPU,否则值 2 或以上表示系统存在某种过载。但扫描是在低网速下执行的(没有大量下载/上传)。
我用另一台路由器重复测试,其型号为ZXHN_H108N固件版本 2.1.1 位于网速低(无大量下载/上传):
~ $ top
Mem: 19036K used, 37504K free, 0K shrd, 1560K buff, 5616K cached
Load average: 2.04 2.17 1.83
这是测试D-Link DSL-2640B固件版本:重负载下的 EU_2.04 路由器(uTorrent 以最大下载速度):
# top
Mem: 30248K used, 30716K free, 0K shrd, 3200K buff, 10828K cached
Load average: 0.48, 0.35, 0.29 (State: S=sleeping R=running, W=waiting)
我的问题是,只要我不敢相信这么简单的路由器具有多核 CPU,就是:
- 根据
top
工具报告,我可以说负载平均值为2
表明有任何超载在我的路由器中? - 有什么我可以配置的吗解决它?也许每次重新启动时都会有一些临时解决方案杀死进程?
- 可能是什么软件结果这种超载?也许设备挂断了?
更多细节:
- 每当我
top
在明显过载的 DSL 路由器(上面的第一个和第二个示例)上重复测试时,值都没有太大不同:1.90、2.05、2.15...等。 - 所有测试都是用只有1台电脑(台式电脑)连接到 DSL 路由器。
- 我没有使用 VPN 或 VLAN服务有了这个路由器。只是一些简单的端口转发。
- 看来所有固件都在其状态最新的版本。
%CPU 保持较低水平(接近 0%)。唯一使用上升一点的进程是logic
.例子:
Mem: 21956K used, 1948K free, 0K shrd, 1096K buff, 6088K cached
Load average: 2.34 2.29 2.29
PID USER STATUS VSZ PPID %CPU %MEM COMMAND
584 root RW 4660 583 22.9 19.4 logic
3284 root RW 1908 1927 0.5 7.9 top
1774 root SW 1908 581 0.1 7.9 telnetd
619 root DW 1504 1 0.1 6.2 adslstart
2644 root SW 848 583 0.1 3.5 radvd
596 root SW 2672 1 0.0 11.1 mini_httpd
581 root SW 1916 1 0.0 7.9 inetd
1 root SW 1908 0 0.0 7.9 init
1926 root SW 1908 1775 0.0 7.9 sh
610 root SW 1908 1 0.0 7.9 sh
1927 root SW 1908 1926 0.0 7.9 sh
582 root SW 1900 1 0.0 7.9 dropbear
583 root SW 1856 1 0.0 7.7 pc
1775 root SW 1848 1774 0.0 7.7 cmd
2487 root SW 1596 583 0.0 6.6 pppd
587 root SW 1512 583 0.0 6.3 ip6aac
586 root SW 1504 583 0.0 6.2 ramon
585 root SW 1504 583 0.0 6.2 ip6mon
622 root DW 1504 1 0.0 6.2 adslstart
2645 root SW 1480 583 0.0 6.1 dhcp6s
^C966 root SW 1288 1911 0.0 5.3 3g-mngr
答案1
在你的最后一个top
清单中,你看到两个adslstart
进程D
状态 - 这是你的罪魁祸首。由于某种原因,它陷入了内核模式,这就是内核增加路由器上的平均负载的原因。这是有问题的固件的标志,实际上,可能是有问题的供应商设备驱动程序或类似的东西,除非您的路由器执行一些繁重的磁盘/闪存存储 IO(这不太可能)。如果您没有看到更多正在运行的进程,则实际 CPU 负载(和浪费的热量)接近于零。
也许这adslstart
确实以这种方式与设备对话,但这仍然不是正确的事情。内核足够智能,可以判断进程处于内核模式的时间:如果您不断看到平均负载不低于 2.00,那么这两个进程可能会永远卡住。
如果您不能/不希望用更合理的东西替换固件,或者您的设备没有替代固件,那么这是无法修复的,除非您致电制造商并详细解释他们如何弄乱它。
但是,如果设备使用此固件不会出现故障(不会重置、挂起或拒绝为其用户提供服务),那么可以安全地使用此固件运行,然后就可以忘记了。