joa*_*oal 6 ubuntu memory central-processing-unit cpu-usage memory-usage
我们有一个运行 R-Studio Server 的 Ubuntu Server (16.04),我们在其中进行统计模拟。这些模拟有时对 RAM 和 CPU 影响很大,所以我想知道内核如何分配内存和 RAM,例如,如果两个用户登录并且他们每个人都运行一个单独的 R 会话,在那里他们“竞争”内存和 CPU。
由于我们都不是服务器管理员,因此我们并不真的想应用手动更改,但是我们感兴趣的是 RAM 和 CPU 分配是否更不等于所有用户。
注意:R-Studio Server Pro 版本允许以非常简单的方式为单个用户分配给定数量的内存,但由于我们没有 Pro 版本,我们无法更改这些设置。
RAM 是先到先得的。如果用户 A 运行 9 个进程,每个进程分配 10% 的内存,然后用户 B 登录,用户 B 将只看到剩余的 10% 内存。如果内存耗尽,Linux 将开始杀死进程。据我所知,OOM 杀手并未针对多用户进行调整,因此在这种情况下可能不公平。
CPU 时间通常是按进程分配的,而不是按用户分配的(但见下文)。
任何准备运行的进程(不休眠、等待 I/O 等)都被考虑进行调度。(未准备好运行的进程将被忽略,因此“不算数”。(这有点过于简单化,但已经足够接近了。))
在最简单的模型中,如果两个用户各运行一个进程,则他们每个人都获得大约一半的可用 CPU 时间。但是如果用户 A 运行 10 个进程,用户 B 运行 1 个进程,那么用户 A 获得 90% 的 CPU,用户 B 获得 10% 的 CPU(所有其他条件相同)。
但是,Linux 调度程序可以通过将进程分组在一起,然后在这些分组之间分配 CPU 时间来对此进行优化。
此外,Linux 能够根据会话 ID(通常与终端、终端窗口和/或 X 登录会话相关联)自动对进程进行分组。这称为“自动分组”。目标是单个用户在一个窗口中运行繁重的后台任务,而在另一个窗口中运行交互任务,仍然会看到响应式交互性能。
据我所知,这两种功能在 Ubuntu 上都是默认启用的。
我找不到有关任务组和/或自动分组在多用户工作负载中的行为方式的信息。理论上,如果调度程序将每个用户放在一个单独的任务组中,那么用户将始终获得对 CPU 的平衡访问(两个用户为 50/50)。但是,我没有发现任何说明这会自动发生的内容。
进一步阅读:
如果您需要限制同一台服务器上的内存使用量,最好的办法是
| 归档时间: |
|
| 查看次数: |
1240 次 |
| 最近记录: |