Necesitaba correr convert
con muchas imágenes al mismo tiempo. El comando tardó bastante pero esto no me molesta.
El problema es que este comando inutilizó mi computadora mientras se ejecutaba el comando (durante aproximadamente 15 minutos).
Entonces, ¿es posible limitar el comando limitando los recursos (procesador y memoria) al comando, directamente desde la línea de comando? Esto solo puede funcionar si agrego algo a la misma línea antes de presionar Enterporque una vez que comienzo el proceso, la computadora se ralentiza tanto que es imposible, por ejemplo, cambiar a "Monitor del sistema" y reducir la prioridad.
Editar: resultados superiores e iotop
Logré correr top
y sudo iotop >iotop.txt
mientras hacía una de estas operaciones de conversión. (El archivo iotop.txt producido es difícil de leer)
Resultados de arriba:
PID USUARIO PR NI VIRT RES SHR S% CPU% MEM TIME + COMMAND 14275 nombre de usuario 20 0 4043m 3.0g 1448 D 7.0 80.4 0: 16.45 convertir
Resultados de iotop:
[? 1049h [1; 24r (B [m [4l [? 7h [? 1h = [39; 49m [? 25l [39; 49m (B [m [H [2JLECTURA TOTAL DEL DISCO: 1269.04 K / s | ESCRITURA DEL DISCO total : [59G0.00 B / s (B [0; 7m TID PRIO USER DISK READ DISK WRITE SWAPIN (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% zeitgeist-datahub 7394 be / 4 nombre de usuario 568.88 K / s 0.00 B / s 77.41% 0.00% --rendere ~ .530483991 [5; 1H14275 nombre de usuario inactivo 350.08 K / s 0.00 B / s 37.49% 0.00% convert S ~ f test.pdf [6 ; 2H2048 be / 4 raíz [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
Además, incluso después de que finaliza el proceso, la computadora no vuelve al rendimiento anterior. Encontré una forma de evitar esto corriendo sudo swapoff -a
seguido desudo swapon -a
fuente
convert *.tif bla.pdf
proceso a la vez, pero la entrada es un montón de imágenes tif. Es una forma de producir un pdf a partir de un montón de imágenes que funciona bien pero ahoga mi PC.find . -iname '*.tif' | xargs -I% convert % %.pdf
en lugar defind . -iname '*.pdf' | xargs -I% convert % %.pdf
. ¡También fue más rápido! Gracias.-exec
y . En su caso, en lugar de usar , usaría:-execdir
find
xargs
find -iname '*.tif' -execdir convert {} {}.pdf ';'
man nice
, Y si es necesario de E / S de estrangulaciónman ionice
.Veamos algunos ejemplos simples.
Disminución del uso de CPU:
Sin embargo, según su descripción, el uso de la CPU no es su problema real aquí. Lo más probable es que esté teniendo una fuerte disputa de E / S.
Uso del disco de regulación:
-c2
es el "mejor esfuerzo" y-n7
es la prioridad más baja del "mejor esfuerzo". Por lo tanto, esto acelerará el trabajo para reducir la prioridad de E / S que la mayoría de las otras cosas en el sistema.-c3
(no es necesario un nivel de prioridad) significa "Solo inactivo". Los trabajos configurados-c3
SOLAMENTE ocupan tiempo de programación de disco inactivo, sin prácticamente ningún impacto en el sistema, pero potencialmente un tiempo de ejecución considerablemente más largo para su trabajo, dependiendo de qué tan ocupado esté el resto del sistema.fuente
nice
en un comando de conversión? Si no me equivoco, funciona bien para los procesos que ya se están ejecutando.nice -n 20
próxima vez.iotop
mientras ejecutas el proceso? Por lo general, un solo proceso que consume gran cantidad de CPU tendrá muy poco efecto sobre la usabilidad del sistema, pero un proceso que destruya el disco duro puede DETENER MUY rápidamente todo, especialmente si está utilizando una unidad convencional, no una SSD.convert blah.gif blah.jpg & iotop
lo que seiotop
activará instantáneamente tan pronto como haya comenzado suconvert
trabajo.Aquí hay un artículo bastante bueno sobre el uso de un programa llamado
cpulimit
para limitar el uso de CPU de cualquier proceso:http://maketecheasier.com/limit-cpu-usage-of-any-process-in-linux/2010/09/22
El problema es como usted dijo al encontrar el PID del
convert
proceso una vez que ha comenzado.Después de comenzar,
convert
si aún puede escribir comandos en la terminal, puede ejecutarps aux | grep convert
para encontrar su PID y luegosudo cpulimit -p PID -l CPU%
comenzar a acelerar.O si el inicio
convert
también bloquea su terminal, el artículo le muestra cómo puede ejecutarsecpulimit
como un demonio en segundo plano que supervisará y acelerará automáticamente cualquier proceso durante una cierta cantidad de uso de la CPU. ¡Buena suerte!fuente
nice
comando incorporado .cpulimit
limitará el proceso a un cierto% de uso de CPU, ya sea que cualquier otra cosa necesite o no el tiempo de CPU;nice
, por el contrario, establece niveles de prioridad (¡40 en total!) que permiten priorizar una tarea por encima (o por debajo) de otras.