【发布时间】:2021-02-16 18:46:27
【问题描述】:
当我在 Singularity 容器中运行特定的 ImageMagick 转换命令(以生成动画 GIF)时,它始终出现内存错误:
convert-im6.q16: cache resources exhausted `foo.gif' @ error/cache.c/OpenPixelCache/4083.
convert-im6.q16: memory allocation failed `foo.gif' @ error/quantize.c/AssignImageColors/496.
如何调试?
我在 Singularity 之外没有遇到任何内存问题,这给我的印象是 Singularity 人为地限制了我的可用内存,或者 ImageMagick 在 Singularity 内部配置不当。我没有看到我在 Singularity 中运行的任何其他应用程序的内存问题,这让我认为这是 ImageMagick 问题。
以下是有关我的系统的一些详细信息:
$ singularity --version
singularity version 3.7.1-1.el8
容器内:
Singularity> convert --version
Version: ImageMagick 6.9.10-23 Q16 x86_64 20190101 https://imagemagick.org
Copyright: © 1999-2019 ImageMagick Studio LLC
License: https://imagemagick.org/script/license.php
Features: Cipher DPC Modules OpenMP
Delegates (built-in): bzlib djvu fftw fontconfig freetype jbig jng jpeg lcms lqr ltdl lzma openexr pangocairo png tiff webp wmf x xml zlib
和
Singularity> convert -list resource
Resource limits:
Width: 16KP
Height: 16KP
List length: 18.446744EP
Area: 128MP
Memory: 256MiB
Map: 512MiB
Disk: 1GiB
File: 768
Thread: 256
Throttle: 0
Time: unlimited
Memory: 256MiB 特别低。我应该至少有 2GiB。 ImageMagick 如何配置这些限制以及如何更改它们?
【问题讨论】:
-
感谢您的指点,马克。我试过
convert -limit memory 2GiB -list resource,但它仍然列出Memory: 256MiB。容器内似乎发生了一些非常奇怪的事情...... -
哦,我明白了,我可以使用
-limit来减少内存限制,但不能增加它... -
您可以试试
identify -list configure | grep CONFIGURE_PATH,它应该可以帮助您找到可能限制您的policy.xml文件。
标签: imagemagick out-of-memory singularity-container