Мне нужно было работать convert
с большим количеством изображений одновременно. Команда заняла довольно много времени, но это меня не беспокоит.
Проблема в том, что эта команда сделала мой компьютер непригодным для использования во время выполнения команды (около 15 минут).
Так можно ли ограничить команду, ограничивая ресурсы (процессор и память) командой непосредственно из командной строки? Это может сработать, только если я добавлю что-то в ту же строку перед нажатием, Enterпотому что после запуска процесса компьютер замедляется настолько, что невозможно, например, переключиться на «Монитор системы» и уменьшить приоритет.
Изменить: топ и результаты iotop
Мне удалось запустить top
и sudo iotop >iotop.txt
во время выполнения одной из этих операций преобразования. (Созданный файл iotop.txt трудно читать)
Результаты топа:
PID USER PR NI VIRT RES SHR S% CPU% MEM TIME + КОМАНДА 14275 имя пользователя 20 0 4043 м 3,0 г 1448 D 7,0 80,4 0: 16,45 конвертировать
Результаты iotop:
[? 1049h [1; 24r (B [м [4l [? 7h]?? 1h = [39; 49 м [? 25l [39; 49 м (B [м [H] [2JTotal DISK READ: 1269,04 K / с | Всего DISK WRITE) : [59G0,00 б / с (B [0; 7m TID PRIO ПОЛЬЗОВАТЕЛЬСКИЙ ДИСК READ DISK WRITE SWAPIN (B [0; 1; 7m IO> (B [0; 7m COMMAND [3; 2H (B [m2516 be / 4 имя пользователя 350.08 K / s 0.00 B / с 0,00% 0,00% Zeitgeist-DataHub 7394 be / 4 username 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.49% 0.00% конвертировать S ~ f test.pdf [6 ; 2H2048 be / 4 корень [6; 24H0,00 B / с 0,00 B / с 0,00% 0,00% [kworker / 3: 2] [5G1 be / 4 корень [7; 24H0,00 B / с 0,00 B / с 0,00% 0,00% init
Кроме того, даже после завершения процесса компьютер не возвращается к предыдущему результату. Я нашел способ обойти это бегом, sudo swapoff -a
а затемsudo swapon -a
convert *.tif bla.pdf
процесс за один раз, но ввод - целая куча tif-изображений. Это способ создать один PDF-файл из набора изображений, который работает хорошо, но душит мой компьютер.find . -iname '*.tif' | xargs -I% convert % %.pdf
вместоfind . -iname '*.pdf' | xargs -I% convert % %.pdf
. Это тоже было быстрее! Спасибо.-exec
и-execdir
опции дляfind
. В вашем случае вместо использованияxargs
я бы использовал:find -iname '*.tif' -execdir convert {} {}.pdf ';'
man nice
и если вам нужно регулирование ввода / выводаman ionice
.Давайте посмотрим на несколько простых примеров.
Регулирование загрузки процессора:
Однако, по вашему описанию, использование процессора почти наверняка не является вашей реальной проблемой. Скорее всего, у вас серьезный конфликт ввода-вывода.
Использование дроссельного диска:
-c2
это «лучшее усилие» и-n7
является самым низким приоритетом «лучшее усилие». Таким образом, это приведет к сокращению задания для снижения приоритета ввода / вывода по сравнению с большинством других функций в системе.-c3
(уровень приоритета не требуется) означает «Только в режиме ожидания». Задания, настроенные-c3
ТОЛЬКО, занимают в противном случае время планирования простоя диска, практически не влияя на систему, но потенциально значительно более длительное время выполнения вашей работы, в зависимости от того, насколько занята остальная часть системы.источник
nice
в команду конвертировать? Если я не ошибаюсь, хорошо работает для уже запущенных процессов.nice -n 20
следующий раз.iotop
во время запуска процесса? Обычно один процесс, потребляющий много ресурсов ЦП, будет очень мало влиять на удобство использования системы, но процесс, перебивающий жесткий диск, может ОЧЕНЬ быстро привести к полной остановке, особенно если вы используете обычный диск, а не SSD.convert blah.gif blah.jpg & iotop
чтобыiotop
она сразу же включилась, как только вы приступили кconvert
работе.Вот довольно хорошая статья об использовании программы, которая называется
cpulimit
для ограничения использования процессором любого процесса:http://maketecheasier.com/limit-cpu-usage-of-any-process-in-linux/2010/09/22
Проблема в том, что вы сказали, что нашли PID
convert
процесса после его запуска.После запуска,
convert
если вы все еще можете вводить команды в терминале, вы можете запустить,ps aux | grep convert
чтобы найти его PID, а затемsudo cpulimit -p PID -l CPU%
начать регулирование.Или, если запуск
convert
также блокирует ваш терминал, в статье показано, как вы можете работатьcpulimit
в качестве фонового демона, который будет автоматически контролировать и регулировать любые процессы при определенной загрузке процессора. Удачи!источник
nice
командой.cpulimit
ограничит процесс определенным процентом использования ЦП независимо от того, нужно ли что-либо еще время ЦП;nice
напротив, устанавливает уровни приоритета (всего 40!), которые позволяют определить приоритетность одной задачи над (или ниже) другой.