这是一个有点普遍的问题,我为此道歉,但我无法生成重现行为的代码示例。我的问题是:我通过将数据集细分为数据框列表,然后使用mclapply在24核Linux服务器的16个核心上运行评分函数,对大数据集(大约1,100万行,274维)进行评分。列表中的每个数据帧都分配给生成的实例并进行评分,返回预测数据帧列表。当mclapply运行时,各种R实例在不间断睡眠中花费了大量时间,而不是花费在运行上。有没有其他人使用mclapply体验过这个?我是一个Linux新手,从操作系统的角度来看,这有什么意义吗?感谢。
答案 0 :(得分:2)
使用mclapply操作大型数据集时需要小心。对于计算机上的内存量和计算所使用的内存量,很容易创建太多的工作程序。由于R内存管理的复杂性,很难预测内存需求,因此最好使用“top”或“htop”等工具仔细监控内存使用情况。
您可以通过将工作分成更多但更小的任务来减少内存使用量,因为这可能会减少计算所需的内存。我不认为预先安排的选择对内存使用的影响很大,因为无论mc.cores
的值是多少,mclapply都不会一次超过mc.prescheduling
个工作人员。