我有一个基于Threadripper 1950X的工作站,有16个核心,32个线程和足够的内存。在Windows10上运行64位R 3.6.0 (已打补丁)时,我经常使用doParallel库和foreach命令在R中运行并行代码,经常将其设置为使用26-30个线程。
最近,我查看了任务管理器。当doParallel开始假脱机处理它的所有进程时,我并不惊讶地发现它的CPU使用率上升。但非常奇怪的是,Windows Defender (微软默认的杀毒软件)也开始假脱机了,而且非常激进,使用率攀升到了70% (它被列为反恶意软件服务可执行文件)。这是我想说的截图。当R代码完成时,Defender将恢复到微不足道的CPU使用率。

我在网上读过关于Defender高CPU使用率的帖子,但这似乎与R中的并行操作极其相关。我尝试按照像this这样的帖子设置排除项,但这并没有改善问题。
当我运行设置了很多线程的并行代码时,我是否应该担心Windows Defender会不断地排挤R?
发布于 2019-06-27 06:25:28
我想我已经弄明白了。如果我有20-30个线程,我的代码会在R的临时目录( c:\Users\xxx\Local\ temp )中创建数千个临时文件。我认为Windows Defender会疯狂地扫描每一个文件,即使它是在SSD驱动器上。我将临时目录添加到Defender的排除列表中,并在我的主文件夹层次结构中添加了一些输出目录,CPU使用率下降了很多,如图所示。

我希望这对其他人有帮助,因为基本的谷歌搜索不能解决这个问题。
https://stackoverflow.com/questions/56781536
复制相似问题