如果没有对Ubuntu服务器进行手动更改,如何分配RAM和CPU

Modified on: Sun, 11 Aug 2019 05:20:02 +0800

我们有一个运行R-Studio服务器的Ubuntu服务器(16.04),我们在那里进行统计模拟。那些模拟有时在RAM和CPU上很重,所以我想知道核心如何分配内存和RAM。两个用户登录,每个用户运行一个单独的R会话,他们“竞争”内存和CPU。

由于我们都不是服务器管理员,我们真的不想应用手动更改,但是我们感兴趣的是RAM和CPU分配是否更不等于所有用户。

注意:R-Studio Server Pro版本允许以非常简单的方式为单个用户分配给定数量的内存,但由于我们没有Pro版本,因此我们无法更改这些设置。

作者:joaoal

最佳答案

RAM是先到先得。如果userA运行9个进程,每个进程分配10%的内存,然后userB登录,则userB将只看到10%的内存。如果内存耗尽,Linux将开始终止进程​​。据我所知,OOM杀手并没有针对多用户进行调整,因此在这种情况下可能不公平。

CPU时间通常基于每个进程分配,而不是按用户分配(但见下文)。

任何准备运行的进程(不休眠,等待I / O等)都被考虑用于调度。 (没有准备好运行的进程会被忽略,因此“不计算”。(这有点过于简单,但足够接近。)

在最简单的模型中,如果两个用户分别运行一个进程,则每个用户可获得大约一半的可用CPU时间。但是如果userA正在运行10个进程,而userB正在运行1个进程,那么userA获得90%的CPU,而userB获得10%的CPU(所有其他条件相同)。

但是,Linux调度程序可以通过将进程分组在一起,然后在这些分组之间分配CPU时间来优化它。

此外,Linux具有基于会话ID自动分组进程的能力(通常与终端,终端窗口和/或X登录会话相关联)。这称为“自动分组”。目标是在一个窗口中运行繁重后台任务的单个用户和在另一个窗口中运行交互式任务的用户仍将看到响应性交互性能。

据我所知,默认情况下在Ubuntu上都启用了这两种功能。

我无法找到有关任务组和/或自动分组在多用户工作负载中的行为方式的信息。理论上,如果调度程序将每个用户放在一个单独的任务组中,那么用户将始终获得对CPU的平衡访问(两个用户为50/50)。但是,我没有发现任何说这会自动发生的事情。

进一步阅读:

作者:,Ben Scott

相关问答

添加新评论