我正在运行 R 脚本,它实际上是一个很长的 for 循环。
这是“top”命令的屏幕截图。您可以看到它显示 R 正在使用 100% 的 CPU,但顶行显示用户进程的使用率为 4.2%。这是什么意思?这是否意味着 CPU 有多个核心,而我只使用了一个?
答案1
首先,是的 - 如果您拥有多核系统,则可以有多个进程处于 100% 状态(进程列表显示理论上单核的利用率),或者对于多线程进程,您可以有一个进程超过 100%。总体 CPU 使用率可能是 25%、50% 等 - 因为 top 默认值是第一个 CPU 数字是系统上所有 CPU 的总和。如果您按下1
top 并运行,您将获得更好的视图 - 它将拆分出每个 CPU。
话虽如此,us(er)、sys(stem)、ni(ce) 和 id(le) 存储桶也很重要。R 程序似乎没有在循环中占用大量 CPU,因此 CPU 大部分时间处于空闲存储桶中。我对 R 不是很熟悉 - 您可能需要添加一些调试来查看它在等待什么,如果您可以对其进行优化以更好地利用 CPU(假设您的目标是让它受 CPU 限制)。类似地,您可以让一个进程占用大量磁盘,并且在等待将数据分页到磁盘/从磁盘时,用户百分比较低但 Wa(it) 数字较高。
如果 R 在循环中不断进行计算/排序或类似操作,这会将总体 CPU 使用率转移到用户存储桶(或者如果您对进程进行优化,它会转移到优化存储桶)。如果您进行大量内存扫描和排序,系统存储桶可能会出现上升(尽管它不一定被分配给列表中的进程)。不过现在,看起来您的系统在运行当前循环时负载很轻。