graphicsmagick 可以批处理 2 个以上的线程吗?

Can graphicsmagick batch process on more than 2 threads?

如果我创建 6 个 graphicsmagick 批处理文件来转换 35k 图像,这就是我在 htop 中看到的:

为什么没有使用更多线程?我猜这两个线程甚至都在同一个内核上(4 核英特尔超线程)。我在网上找不到关于此的 graphicsmagick 配置。我是否责怪我的 OS 安排不当?

gm 手册页 -limit <type> <value> 中唯一相关的选项是每个图像的资源限制,而我正在寻找增加用于多个图像的线程数的方法,不是一张图片。

的确,graphicsmagick 所说的关于并行性的唯一内容是关于 OpenMP(这似乎是关于多线程单图像处理)。所以也许没有人支持我正在尝试做的事情。那么我的问题可能更笼统:“如果我启动 gm 的多个实例,为什么它们都在同一个线程上 运行?”我不确定这是 OS 问题还是 gm 问题。


批处理文件中的每一行是:

convert in/file1.jpeg -fuzz 10% -trim -scale 112x112^ -gravity center -extent 112x112 -quality 100 out/file2.jpeg

我运行批处理文件:gm batch -echo on -feedback on data/convert/simple_crop_batchfile_2.txt

我在 GraphicsMagick 1.3.18 2013-03-10 Q8 和 Ubuntu 14.10,当我用 apt-get 升级时告诉我:Calculating upgrade... graphicsmagick is already the newest version


我的故事确实说明了使用多个批处理文件毫无意义(尽管同时使用 2 个批处理文件比 1 个批处理文件的总体处理时间加快了 30%)

原来我可以把这归咎于CPU,核心利用率问题中的图片来自Intel Xeon X5365 @ 3.00GHz processor. Here is a picture of just 4 concurrent processes on an Intel Xeon E5-2620 v2 @ 2.10GHz:

两台机器上的 OS 和软件版本相同(以及相同的确切任务和相同的确切数据),唯一的区别是 CPU。在这种情况下,后来的 CPU 快 2 倍以上(对于 4 个批处理文件的情况)。