在 R 中使用 doParallel 的 foreach 时,Windows Defender 的 CPU 使用率非常高

Posted

技术标签:

【中文标题】在 R 中使用 doParallel 的 foreach 时,Windows Defender 的 CPU 使用率非常高【英文标题】:Very high CPU usage by Windows Defender when using doParallel's foreach in R 【发布时间】:2019-11-08 21:57:21 【问题描述】:

我有一个基于 Threadripper 1950X 的工作站,它有 16 个内核和 32 个线程以及大量内存。在 Windows 10 上运行 64 位 R 3.6.0(已修补),我经常使用 doParallel 库和 foreach 命令在 R 中运行并行代码,经常将其设置为使用 26-30 个线程。

最近,我检查了任务管理器。当 doParallel 开始假脱机处理它的所有进程时,我对它的 CPU 使用率上升并不感到惊讶。但非常奇怪的是,Windows Defender(Microsoft 的默认防病毒软件)也开始加速使用,并且非常激进地攀升至高达 70% 的使用率(它被列为 Antimalware Service Executable)。这是我的意思的屏幕截图。当 R 代码完成时,Defender 会恢复到微不足道的 CPU 使用率。

我已经阅读过有关 Defender 高 CPU 使用率的在线帖子,但这似乎与 R 中的并行操作密切相关。我尝试按照 this 之类的帖子设置排除项,但这并没有改善问题。

当我运行具有大量线程集的并行代码时,我是否应该担心 Windows Defender 会不断排挤 R?

【问题讨论】:

当我遇到类似问题时,我通过在笔记本电脑上使用带有 Ubuntu 的虚拟机解决了这个问题。 Window 的防守者不需要知道发生了什么。 【参考方案1】:

我想我已经明白了。如果我有 20-30 个线程,我的代码会在 R 的临时目录(在 c:\Users\xxx\Local\Temp 中)创建数千个临时文件。我认为 Windows Defender 会疯狂地扫描每一个,即使它位于 SSD 驱动器上。我将 temp 目录添加到 Defender 的排除列表中,以及我的主文件夹层次结构中的一些输出目录,CPU 使用率下降了很多,如这里所示。

我希望这对其他人有所帮助,因为基本的 Google 搜索无法解决此问题。

【讨论】:

以上是关于在 R 中使用 doParallel 的 foreach 时,Windows Defender 的 CPU 使用率非常高的主要内容,如果未能解决你的问题,请参考以下文章

使用 doParallel 在 R 中并行化 keras 模型

R中doMC和doParallel的区别

在 R doParallel foreach 循环中运行 ovun.sample

在 R 中使用 doParallel 的 foreach 时,Windows Defender 的 CPU 使用率非常高

如何使用 doParallel 计算 R 中邮政编码之间的距离?

R:在doParallel /降雪中制作集群挂起