是否可以让 Ubuntu 始终响应?

是否可以让 Ubuntu 始终响应?

我使用 Ubuntu 已有 10 多年,我曾在各种机器上安装和使用过它,从低端笔记本电脑到采矿设备,再到 i7、8GB RAM 台式电脑。在每种情况下,我都会经常遇到桌面无响应的情况,我唯一能做的就是把枕头推到我那台受苦的电脑前。

即使是现在,如果我运行一个足够大胆的 npm 构建,或者一个雄心勃勃的视频渲染,甚至即使我打开了太多的 Chrome 标签,我都可以可靠地使我的系统陷入瘫痪。

我的问题出于真正的好奇心和纯粹的个人兴趣。我想知道:

1. 如果存在某些特定于旧版 Ubuntu 或 Linux 的原因,即使所有其他方法都失败,也不可能使桌面始终响应。

即使有 10,000 个进程试图写入磁盘,10,000 个进程每个都请求 1 GB 的内存,10,000 个进程处于无限循环中,桌面仍然应该能够承担共产主义民兵的立场,并从贫穷的无产阶级那里获取所需的任何资源,以继续做出响应。

Linux 中是否存在某些固有问题,导致 Ubuntu 等发行版无法保证响应能力,或者这是否很难实现,以至于所得收益不值得付出代价?

2. 我是否可以配置 Ubuntu 以获取其所需的任何资源,以便无论如何都能继续前进?

有没有什么切实可行的办法可以做到这一点,哪怕小资产阶级和无产阶级也要受苦?

答案1

我有时会遇到您描述的问题。通常是在我使用所有核心编译大型项目时,同时尝试观看高分辨率流媒体视频。大多数情况下,这个问题可以分为两类:

  • CPU 太忙了,甚至连最基本的视频任务都无法执行,或者执行速度太慢以至于无法使用,例如,没有更新任何帧。可以通过将x11kwinplasmashell(在 Gnome 系统上分别为muttergnome-shell)设置为更高的优先级来改善这种情况,因为它们似乎默认为0优先 - 这意味着它们正在与其他所有东西竞争一部分处理器时间。

  • 内存使用量已增加到需要使用交换空间的程度。关于交换空间在现代桌面 Linux 中是否有用,存在很多争议,因为一旦使用,它通常会降低性能,以至于系统变得无法使用。一些人(包括 RedHat)认为有充分的理由完全禁用交换空间,并且在内存压力大的情况下,依靠内存不足 (OOM) 杀手来重新获得对系统的控制。

您可以尝试使用不同的 IO 调度程序,但它们可能不会产生太大影响。自从实施完全公平队列 (CFQ) 以来,这些问题不再与调度有关,而更多地与磁盘的实际速度有关。您可以运行此命令来检查您正在使用的调度程序:

$ cat /sys/block/sda/queue/scheduler
noop deadline [cfq] 

它打印所有可用的调度程序,并用括号将当前活动的调度程序括起来。

禁用交换可能会“解决”您的问题,但在需要在很短时间内进行交换的情况下(例如执行持续时间不长但需要大量内存的计算任务),可能会破坏您的体验。

找到或创建一个程序来检查系统响应能力并在系统失去控制时间过长时禁用交换可能会很有用。

相关内容