我有以下问题:
有时,我正在运行一些需要大量 CPU 能力的程序wine
。
_apt
不幸的是,当我运行该程序时,Linux 更新(在用户下运行的进程)会相当频繁地启动。
Linux 更新(在用户下运行的进程_apt
)也需要大量的 CPU 能力(top
显示 99.9%),并且由于 CPU 能力不足,该程序不再正常工作(图像变得不稳定等...)。
问题:有没有一种方法可以在程序运行时禁止 Linux 更新,以便更新被延迟,直到我完成运行该程序?
我正在考虑这样的事情:
#!/bin/sh
forbid_or_allow_updates forbid
wine ~/programs/my_program.exe
forbid_or_allow_updates allow
...但我不知道是否forbid_or_allow_updates
存在类似的东西。
答案1
答案2
如果无人值守升级和您的应用程序正在争夺 CPU,请更改其中一个的优先级,以便您的首选应用程序始终获得足够的 CPU 以防止卡顿和抖动。这不是 A vs B 决策——如果系统知道您的优先级,它会很乐意平衡资源。有一个工具可以做到这一点:请参阅man nice
或man renice
。
- 这可能很简单,只需以更高的优先级启动您的应用程序,以便其他应用程序等待空闲周期即可。例如:
nice -n -10 my_application
(负数 = 较不友好 = 优先级较高)
您可以将 niceness 应用于 systemd 服务(例如无人值守升级)。只需
nice
在 ExecStart 行中添加一个值即可。有两个服务可以变得更好:apt-daily.service
和apt-daily-upgrade.service
。不要编辑 /lib/system 中的原始文件,该文件将在下一次升级时被覆盖。相反,请使用 systemd 覆盖 .conf 文件。请参阅以下说明https://superuser.com/questions/1447351/set-niceness-value-in-a-systemd-user-service。如果您真的想发挥强大的火力并完全禁止无人值守升级,请使用 systemd 来停止/启动其计时器。请记住,重新启动这些计时器取决于您。
systemctl stop(start) apt-daily.timer
(防止自动 apt 更新)
systemctl stop(start) apt-daily-upgrade.timer
(防止自动 apt 升级)