上一篇 人应该主动去适配 AI 任务执行范式 里,我把一块 Elgato Stream Deck Mini 的输入循环从轮询改成了阻塞读,空闲 CPU 从 3% 掉到 0.4%。合上电脑前我给自己留了一道题:这个结论,是那块板子的特例,还是普适的?
第二天我桌上换了一块设备。Mirabox StreamDock 293,15 个按键(5 列 × 3 行),在 USB 上就是个标准 HID 设备(5500:1001)。和 Mini 最大的不同是:它用的是 厂商自己的 StreamDock Device SDK。我本来只想复刻一遍那个改造——把输入从轮询改成阻塞读。
结果第一步就卡住了:这版 SDK 的读取线程,本来就是阻塞读。
我拿 AI 十几分钟搭出来的 mybox 面板(把一块 Arduino VENTUNO Q 开发板的 CPU / GPU / NPU / DDR / WiFi 温度、风扇、功耗、内存、负载、网络速率打在 15 个键上,5 秒刷一次),跑起来后 top 依旧把最费 CPU 的位置留给了它自己。一个监控工具,又一次成了最该被监控的对象。
这逼我修正了上一篇的结论:「轮询 vs 阻塞」不是省 CPU 的分界线,「空闲时到底有几个东西会把你叫醒」才是。 换掉轮询只是删掉了其中一个唤醒源;只要还有定时器、超时、周期重扫,常驻程序就一样在空转。
[Read More]