我正在尝试使用一个名为卡莫科使用 CLI。当我运行我需要的命令之一时,我得到
[LOG] Mon May 11 20:47:31 2020 - Your computer ran out of memory! This analysis needs to be done on a machine with more memory (16Gb+ recommended)
Unable to allocate 2.40 GiB for an array with shape (322643503,) and data type float64
我们看到数组大小为 2.40 GiB。因此我运行了free -mh
,结果显示:
total used free shared buff/cache available
Mem: 7.7Gi 2.6Gi 4.3Gi 299Mi 782Mi 4.5Gi
Swap: 2.0Gi 1.8Gi 210Mi
看起来内存足够,为什么会出现这个错误?有没有什么办法可以解决这个问题?
答案1
您会收到分配失败的错误消息。在此之前,您可能已经成功分配了很多次,从而耗尽了您的 RAM。显示错误消息后,内存将被释放,因此您会看到大量可用内存。
我不知道您实际上需要多少内存或性能,但您可以尝试添加一些交换空间。这将在您重新启动之前添加 2G 的交换空间。
准备好交换空间:
$ sudo fallocate -l 2G /extra.swap
$ sudo chmod 0600 /extra.swap
$ sudo mkswap /extra.swap
现在检查你的记忆
$ free -mh
现在将交换空间添加到您的系统
$ sudo swapon /extra.swap
如果您再次检查可用内存,您应该会看到交换内存的增加。
$ df -h
如果您想要禁用额外的交换空间,例如删除文件,您可以执行以下操作:
$ sudo swapoff /extra.swap