我正在使用Ubuntu服务器运行内存扩展进程。我的数据结构是date -d@<timestamp> +"%F %H:%M:%S
数组的字典。 numpy
将其作为内存映射后,文件的大小为52GB。当我使用joblib.dump
重新打开文件时,出现错误-“打开的文件太多”。我想将此内存映射传递到joblib.load
进行进一步的计算。
我将文件数限制增加了joblib.Parallel
,这是早于1024的。现在,当我尝试加载同一文件时,它给我一个错误-ulimit -n 1000000
。运行进程(使用OSError: [Errno 12] Cannot allocate memory
时,我看不到任何内存增加。我很困惑,因为该进程似乎没有使用任何内存,但是却给出了内存分配错误。
这是我的proc / limits文件:
Limit Soft Limit Hard Limit Units Max cpu time unlimited unlimited seconds Max file size unlimited unlimited bytes Max data size unlimited unlimited bytes Max stack size 8388608 unlimited bytes Max core file size 0 unlimited bytes Max resident set unlimited unlimited bytes Max processes 1031673 1031673 processes Max open files 1000000 1000000 files Max locked memory unlimited unlimited bytes Max address space unlimited unlimited bytes Max file locks unlimited unlimited locks Max pending signals 1031673 1031673 signals Max msgqueue size 819200 819200 bytes Max nice priority 0 0 Max realtime priority 0 0 Max realtime timeout unlimited unlimited us
似乎进程本身没有内存限制。这里可能会发生什么?