Проверьте доступные ядра обработки - PullRequest
1 голос
/ 27 февраля 2012

Мне нужно написать скрипт транскодирования, который выдает соответствующую команду ffmpeg, если на компьютере Mac есть доступные ресурсы.Машина представляет собой 6-ядерный процессор с тактовой частотой 2 x 2,66 ГГц.В основном, я хочу использовать следующую логику:

[cron every x minutes]
if available_cores:
    pull front file in queue and transcode
else:
    pass

Как мне проверить, есть ли доступные процессоры для запуска ffmpeg?

Ответы [ 3 ]

3 голосов
/ 27 февраля 2012

Используйте то, что дал вам Unix :) Я предлагаю часто неизвестную программу batch (часть at), которая будет вызывать аргументированную программу (ы), когда средняя нагрузка падает ниже определенного порога, удерживая их в очередь. man batch

1 голос
/ 27 февраля 2012

/ proc / cpuinfo даст вам количество ядер

чтобы вы могли прочитать это и получить количество ядер.

затем создайте список процессов и посчитайте процессы FFMPEG.

вычтите одно из другого, и вы в хорошей форме.

это должно дать вам условность.

в качестве альтернативы посмотрите на нагрузку через время безотказной работы и выполните условные расчеты на основе представленного значения.

Существует также такая вещь, как привязка процесса к процессору в unix под SMP.

Посмотрите на набор задач инструмента. Возможно, вы захотите установить трекер идентификатора процесса в / var где-нибудь, а затем управлять сходством с вашим скриптом.

1 голос
/ 27 февраля 2012

Я бы использовал средние значения загрузки из команды uptime, и если нагрузка достаточно низкая, запустите ее. Маловероятно, что будет простаивающее ядро, потому что в любой современной системе достаточно случайных вещей с низким приоритетом, работающих в фоновом режиме, и вы просто никогда не увидите, чтобы один из них полностью простаивал из-за низкого уровня. Так что ищите среднее значение при низкой нагрузке и основывайтесь на этом.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...