Как я регулирую команду в окне терминала?

Я должен был работать convert с большим количеством изображений одновременно. Команда заняла долгое время, но это не беспокоит меня.

Проблема - то, что эта команда представила мой компьютер, неприменимый, в то время как команда работала (в течение приблизительно 15 минут).

Таким образом, действительно ли возможно отрегулировать команду путем ограничения ресурсов (процессор и память) к команде, непосредственно из командной строки? Это может только работать, если я добавляю что-то к той же строке прежде, чем нажать Enter потому что, после того как я запускаю процесс, который компьютер замедляет так, что невозможно, например, переключиться на "Системный монитор" и уменьшить приоритет.

Править: вершина и результаты iotop

Мне удалось работать top и sudo iotop >iotop.txt в то время как выполнение одного из них преобразовывает операции. (Произведенный файл iotop.txt трудно считать),

Результаты вершины:

   PID USER      PR  NI  VIRT  RES  SHR S  %CPU %MEM    TIME+  COMMAND           
14275 username     20   0 4043m 3.0g 1448 D   7.0 80.4   0:16.45 convert 

Результаты iotop:

[?1049h[1;24r(B[m[4l[?7h[?1h=[39;49m[?25l[39;49m(B[m[H[2JTotal DISK READ:    1269.04 K/s | Total DISK WRITE:[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 username     568.88 K/s    0.00 B/s 77.41 %  0.00 % --rendere~.530483991[5;1H14275 idle username     350.08 K/s    0.00 B/s 37.49 %  0.00 % convert S~f test.pdf[6;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

8
задан 26 November 2012 в 20:44

3 ответа

О, мальчик, я только что уловил это ... цитируя OP:

Более того, даже после завершения процесса компьютер не возвращается к предыдущему исполнению. Я нашел способ обойти это, запустив sudo swapoff -a, а затем sudo swapon -a

OK, так что это означает, что вы исчерпали доступную оперативную память в своей системе, а это значит, что вы просто пытаетесь запустить слишком много convert процессов одновременно. Чтобы посоветоваться, нам нужно взглянуть на ваш фактический синтаксис в spawning convert, но в основном вам нужно убедиться, что вы не пытаетесь открыть больше одновременных процессов, чем у вас есть оперативная память для удобной обработки.

Поскольку вы утверждаете, что это является причиной convert *.tif blah.pdf, происходит то, что содержимое каждого отдельного TIF-файла и его преобразование в PDF сразу помещается в оперативную память. То, что вам нужно сделать, это разделить работу так, чтобы в этом не было необходимости. Одна возможность, которая приходит на ум, - это сделать что-то вроде find . -iname '*.tif' | xargs -I% convert % %.pdf, а затем использовать pdftk или что-то вроде этого, чтобы склеить все отдельные PDF-файлы. Если вы действительно хотите получить фантазию, и у вас есть многоядерный процессор, это также дает вам возможность написать небольшой скрипт для запуска преобразований партиями n , где n - это ваше количество ядер, и все это делается значительно быстрее. :)

pdftk с практическими рекомендациями: http://ubuntuhowtos.com/howtos/merge_pdf_files (в основном сводится к sudo apt-get install pdftk; pdftk *.pdf cat output merged.pdf)

0
ответ дан 26 November 2012 в 20:44

Вот довольно хорошая статья об использовании программы под названием 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 в качестве фонового демона, который будет автоматически отслеживать и регулировать любые процессы при определенной загрузке ЦП. Удачи!

0
ответ дан 26 November 2012 в 20:44

man nice, и если вам нужно регулирование ввода / вывода man ionice.

Давайте рассмотрим несколько простых примеров.

Регулирование использования ЦП:

you@box:/$ nice -n 10 /usr/bin/convert blah.gif blah.jpg

Однако из вашего описания использование ЦП почти наверняка не является вашей реальной проблемой. Скорее всего, у вас серьезный конфликт ввода / вывода.

Использование Throttling Disk:

you@box:/$ ionice -c2 -n7 /usr/bin/convert blah.gif blah.jpg

-c2 - «лучшее усилие», а -n7 - самый низкий приоритет «лучшее усилие». Таким образом, это приведет к сокращению задания для снижения приоритета ввода / вывода по сравнению с большинством других функций в системе.

you@box:/$ ionice -c3 /usr/bin/convert blah.gif blah.jpg

-c3 (уровень приоритета не требуется) означает «Только в режиме ожидания». Задания, для которых установлено значение -c3, ТОЛЬКО занимают в противном случае время планирования простоя, практически не влияя на систему, но потенциально значительно увеличивают время выполнения вашей работы, в зависимости от того, насколько заняты остальные система получает.

0
ответ дан 26 November 2012 в 20:44

Другие вопросы по тегам:

Похожие вопросы: