To *_* Do 9 cpu-load memory-usage image-processing
我需要同时运行convert
大量图像。命令花了很长时间,但这并没有打扰我。
问题是该命令使我的计算机在命令运行时无法使用(大约 15 分钟)。
那么是否可以通过直接从命令行限制命令的资源(处理器和内存)来限制命令?这只有在我在按下之前在同一行添加一些东西时才能起作用,Enter因为一旦我开始这个过程,计算机就会变慢,以至于不可能切换到“系统监视器”并降低优先级。
我设法运行top
并sudo iotop >iotop.txt
在执行这些转换操作之一的同时。(生成的iotop.txt文件难以阅读)
上榜结果:
PID 用户 PR NI VIRT RES SHR S %CPU %MEM TIME+ 命令 14275 用户名 20 0 4043m 3.0g 1448 D 7.0 80.4 0:16.45 转换
iotop 的结果:
[?1049h[1;24r(B[m[4l[?7h[?1h=[39;49m[?25l[39;49m(B[m[H[2JTotal DISK READ): 1269.04 K/s | 总磁盘写入] :[59G0.00 B/s (B[0;7m TID PRIO 用户磁盘读磁盘写交换(B[0;1;7m IO>(B[0;7m COMMAND [3;2H(B[m2516 be/4 username 350.08 K/s 0.00 B/ s 0.00 % 0.00 % 时代精神-数据中心 7394 be/4 用户名 568.88 K/s 0.00 B/s 77.41 % 0.00 % --rendere~.530483991[5;1H14275 空闲用户名 350.08 K/s 0.00 B/s 37.40 B/s 37.49 % .pdf % 转换 .pdf ;2H2048 be/4 root[6;24H0.00 B/s 0.00 B/s 0.00 % 0.00 % [kworker/3:2] [5G1 be/4 root[7;24H0.00 B/s 0.00 B/s 0.00 % 0.00 % init
此外,即使在该过程结束后,计算机也不会恢复到先前的性能。我通过跑步找到了解决这个问题的方法,sudo swapoff -a
然后是sudo swapon -a
Jim*_*ter 12
man nice
,如果您需要 I/O 节流man ionice
。
让我们看一些简单的例子。
限制 CPU 使用率:
you@box:/$ nice -n 10 /usr/bin/convert blah.gif blah.jpg
Run Code Online (Sandbox Code Playgroud)
但是,根据您的描述,CPU 使用率几乎肯定不是您真正的问题。更有可能的是,您遇到了严重的 I/O 争用。
限制磁盘使用:
you@box:/$ ionice -c2 -n7 /usr/bin/convert blah.gif blah.jpg
Run Code Online (Sandbox Code Playgroud)
-c2
是“尽力而为”,并且-n7
是最低的“尽力而为”优先级。因此,与系统上的大多数其他事物相比,这将限制作业以降低 I/O 优先级。
you@box:/$ ionice -c3 /usr/bin/convert blah.gif blah.jpg
Run Code Online (Sandbox Code Playgroud)
-c3
(不需要优先级)意味着“仅空闲”。作业设置为-c3
ONLY 占用空闲的磁盘调度时间,对系统几乎没有任何影响 - 但可能会显着延长您的作业的执行时间,具体取决于系统其余部分的繁忙程度。
哦,男孩,我刚刚抓住了这个......引用OP:
此外,即使在该过程结束后,计算机也不会恢复到先前的性能。我通过跑步找到了解决这个问题的方法,
sudo swapoff -a
然后是sudo swapon -a
好的,这意味着您耗尽了系统上的可用 RAM,这意味着您只是试图convert
一次运行太多进程。我们需要查看您在生成时的实际语法convert
以提供建议,但基本上,您需要确保不要尝试打开比您拥有可以轻松处理的 RAM 多的并发进程。
由于您说明了导致这种convert *.tif blah.pdf
情况的原因,因此发生的情况是每个 TIF 的内容及其到 PDF 的转换都立即被塞入 RAM 中。你需要做的是把工作分开,这样就没有必要了。想到的一种可能性是做类似的事情find . -iname '*.tif' | xargs -I% convert % %.pdf
,然后使用pdftk
或类似的方法将所有单独的 pdf 粘合在一起。如果你真的想玩得开心,并且你有一个多核 CPU,这也让你有机会编写一个小脚本来批量运行转换n,其中n是你的核心数,并以更快的速度完成整个事情. :)
pdftk 操作方法:http : //ubuntuhowtos.com/howtos/merge_pdf_files (基本上归结为sudo apt-get install pdftk; pdftk *.pdf cat output merged.pdf
)