【问题标题】:Can graphicsmagick batch process on more than 2 threads?graphicsmagick 可以在超过 2 个线程上进行批处理吗?
【发布时间】:2019-09-28 17:36:24
【问题描述】:

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

为什么不使用更多线程?我猜这两个线程甚至都在同一个内核上(具有超线程的 4 核英特尔)。我在网上找不到关于此的 graphicsmagick 配置。我会责怪我的操作系统调度不当吗?

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

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

【问题讨论】:

    标签: multithreading graphicsmagick


    【解决方案1】:

    原来我可以把这归咎于 CPU,核心利用率问题中的图片来自Intel Xeon X5365 @ 3.00GHz 处理器。这是Intel Xeon E5-2620 v2 @ 2.10GHz 上仅有 4 个并发进程的图片:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-12-04
      • 1970-01-01
      • 1970-01-01
      • 2018-05-05
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多