晚上一家人围坐在客厅,孩子在用平板上网课,媳妇儿连着视频追剧,你自己也在电脑前开远程会议。突然,网课掉线、视频卡成PPT、会议语音断断续续——你拍桌子大喊:这破路由器又抽风了?
其实问题可能不在路由器本身,而藏在操作系统底层的‘进程调度公平性’里。听起来像极客术语,但它真能影响你家每个人的上网体验。
什么是进程调度公平性?
简单说,就是操作系统怎么给各个程序分配CPU时间。就像家里只有一个热水器,三个人要洗澡,得轮流来。系统如果偏心某个程序,让它长时间占用资源,其他程序就得干等着。在网络场景下,这种‘偏心’会导致某些设备或应用抢光带宽,别人就只能卡着等。
比如你家的智能电视在后台自动下载更新,占满了带宽,孩子的网课哪怕优先级更高,也可能因为调度不公平而被挤掉。
家庭网络中的“隐形打架”
很多家用路由器跑的是Linux系统,它的CFS(完全公平调度器)就是靠虚拟运行时间(vruntime)来判断谁该上CPU。每个网络请求背后都对应着一个进程或线程,调度器本应一视同仁。
但现实是,某些应用设计时没考虑谦让,比如某些国产App喜欢常驻后台疯狂同步数据,它们的进程不断被唤醒,频繁抢占调度机会。结果就是,轻量级的视频通话进程总排不上队,延迟飙升。
你可以把家里的网络想象成一条单车道小路,快递车(大文件下载)、救护车(视频会议)、自行车(消息推送)都在上面跑。如果调度不公平,快递车一口气占道十分钟,其他人全得堵着。
能做点什么?
普通用户没法直接改调度算法,但可以间接干预。比如在路由器后台开启QoS(服务质量)功能,手动为视频会议、在线课堂这类低延迟需求的应用提权。相当于给救护车发个警灯,让它优先通过。
有些高端家用系统还支持cgroup控制组,可以把耗流量的进程限制在一个资源池里,不让它霸占全部CPU和带宽。例如:
echo 500 > /sys/fs/cgroup/cpu/download-heavy-app/cpu.cfs_quota_us这行命令就把某个吃资源的应用CPU使用限制在半核以内,留出余量给别的任务。
下次家里人抱怨网卡时,别急着重启路由器。先看看是不是某个设备在‘偷跑’,再想想背后的调度逻辑是否公平。技术不总是硬件问题,有时候,是规则出了毛病。