错误:[Errno 28]设备停靠器上没有剩余空间,但我有sp

2024-06-16 13:21:06 发布

您现在位置:Python中文网/ 问答频道 /正文

正如标题所示,我在docker容器中运行jupyter,并在下面的scikit learn/numpy库中从python深处获取OSError:

pickler.file_handle.write(chunk.tostring('C'))

我已经做了一些故障排除,而人们似乎遇到的大多数问题是他们的硬盘或RAM实际上耗尽了空间,这对我来说完全不是这样。

这就是我的df的样子:

Filesystem                    1K-blocks       Used   Available Use% Mounted on
udev                           16419976          0    16419976   0% /dev
tmpfs                           3288208      26320     3261888   1% /run
/dev/sdb7                     125996884   72177548    47395992  61% /
tmpfs                          16441036     238972    16202064   2% /dev/shm
tmpfs                              5120          4        5116   1% /run/lock
tmpfs                          16441036          0    16441036   0% /sys/fs/cgroup
/dev/sdb2                         98304      32651       65653  34% /boot/efi
tmpfs                           3288208         68     3288140   1% /run/user/1000
//192.168.1.173/ppo-server3 16864389368 5382399064 11481990304  32% /mnt/ppo-server3

这就是我自由的样子:

             total        used        free      shared  buff/cache   available
Mem:       32882072     7808928    14265280      219224    10807864    24357276
Swap:        976892      684392      292500

我在看正确的测向和自由输出吗?它们都是从容器内的bash实例运行的。


Tags: dockerrundevnumpy标题jupyterscikitlearn
2条回答

正如@PeerEZ在comentt中提到的,当sklearn试图并行化jobs时就会发生这种情况。

sklearn尝试通过写入/dev/shm来在进程之间进行通信,docker容器上的/dev/shm限制为64mb。

您可以尝试使用@PeerEZ建议的n_jobs=1运行(如果无法重新启动容器),或者如果需要并行化,则尝试使用--shm-size选项运行容器以设置/dev/shm的更大大小。例如-

docker run --shm-size=512m <image-name>

Docker会在周围留下悬挂的图像,这些图像会占用您的空间。要在docker之后清理,请运行以下命令:

docker system prune -af

或者在旧版本的docker中:

docker rm $(docker ps -q -f 'status=exited')
docker rmi $(docker images -q -f "dangling=true")

这将删除退出和悬挂的图像,这有望清除设备空间。

Meta:把这个答案放在这里是因为它是这个失败的顶部堆栈溢出结果,这是一个可能的解决方法。

相关问题 更多 >