htop 中有很多红色——这是否意味着我的任务相互绊倒?

gen*_*ser 10 kernel curl htop r parallelism

在此处输入图片说明

我读过红色表示“内核进程”。这是否意味着小守护进程正在调节哪个任务可以使用 CPU?推而广之,超额认购系统中的交易成本?

我正在运行一些大规模的地理处理作业,并且我有两个同时并行运行的脚本。

第一个脚本在所有 96 个内核上进行实际处理。它负责几乎所有的内存使用。

第二个脚本用于curl下载数据以提供给第一个进程,并且它是并行执行的。我写它只下载直到有n_cores * 3文件下载。如果不满足该约束,它会等待一分钟左右,然后再次检查。所以,大部分时间它没有运行-或者更确切地说,它正在执行Sys.sleep()的命令R

我已经尝试在下载过程中使用更少的内核。当我这样做时,它跟不上处理脚本(我正在从 S3 进行 DLing)。

TL;DR:如果我可以htop减少红色,我的流程会运行得更快吗?它们是不是因为进程数多于核心数而变红?

Ste*_*itt 15

红色代表在内核中花费的时间,通常代表进程处理系统调用。这包括花费在 I/O 上的时间。仅仅为了减少它而试图减少它是没有意义的,因为这不是浪费的时间——它是内核花在做有用事情上的时间(只要你没有颠簸,所以看看上下文的数量开关等)。

我已经尝试在下载过程中使用更少的内核。当我这样做时,它跟不上处理脚本(我正在从 S3 进行 DLing)。

表明您当前的设置在处理处理所需的 I/O 和处理本身之间是平衡的,这是一个相当不错的结果。如果您怀疑运行的进程太多,这会造成浪费(通过颠簸),那么您可以尝试减少地理处理作业的数量,看看您的总体吞吐量是否会增加。通常的基准测试技巧适用:确定您要调整的内容,确定可能发生的结果变化及其含义,一次只调整一件事,并衡量一切。