Як я можу оптимізувати Linux для кодування безлічі відео або набору тих самих процесорних завдань, що інтенсивно працюють?


0

У мене є набір з 4-5 машин, які майже виключно кодують відео цілий день, а іноді і всю ніч. Я багато разів шукав, щоб знайти способи оптимізації їх для цієї мети, але не мав успіху.

Моє передумови: я повинен мати можливість використовувати майже всі мої процесори для кодування відео, якщо і лише тоді, я запускаю кілька процесів кодування одночасно, яким я є.

Проблема: (від 'top')

Завдання: 382 всього, 2 біг, 380 сон, 0 зупинка, 0 зомбі
% Cpu (s): 51,6 us, 36,8 sy, 0,0 ni, 9,6 id, 0,0 wa, 2,0 hi, 0,0 si, 0,0 st
KiB Mem: 16425680, 16171664 б / в, 254016 вільних, 30492 буферів
KiB Swap: 16769020 Всього, 406056 б / в, 16362964 безкоштовно. 15198692 кешував Mem

  PID USER PR NI VIRT RES SHR S% CPU% MEM TIME + COMMAND                                                                                                                         
31308 корінь 20 0 486568 26000 5560 S 92,2 0,2 ​​188: 10,72 avconv                                                                                                                          
10340 корінь 20 0 475832 19920 5532 S 91,2 0,1 13: 40,42 avconv                                                                                                                          
12547 корінь 20 0 473832 23672 5528 S 89,9 0,1 5: 40,23 avconv                                                                                                                          
 8179 корінь 20 0 477132 21200 5560 S 89,2 0,1 71: 50,15 avconv                                                                                                                          
 9059 корінь 20 0 472776 17960 5540 S 89,2 0,1 48: 12,62 avconv                                                                                                                          
 9798 корінь 20 0 477812 16976 5532 S 88,9 0,1 25: 23,15 avconv                                                                                                                          
 8725 корінь 20 0 476068 21696 5560 S 87,2 0,1 62: 12,02 avconv                                                                                                                          
12657 корінь 20 0 472332 22012 5524 S 86,9 0,1 6: 21,28 avconv                                                                                                                          
12915 корінь 20 0 473732 41888 5516 S 86,6 0,3 5: 22,63 avconv                                                                                                                          
 8578 корінь 20 0 476840 24100 5536 S 85,6 0,1 63: 17,07 avconv                                                                                                                          
 7822 корінь 20 0 472740 18940 5536 S 85,2 0,1 75: 22,04 avconv                                                                                                                          
 9948 корінь 20 0 485420 18116 5560 S 84,9 0,1 22: 18,23 avconv                                                                                                                          
 7356 корінь 20 0 476744 20084 5560 S 84,6 0,1 92: 31,91 avconv                                                                                                                          
 9425 корінь 20 0 471096 19684 5552 S 82,9 0,1 37: 48,28 avconv                                                                                                                          
12464 корінь 20 0 475004 24304 5532 R 81,6 0,1 6: 30,16 avconv 

Незважаючи на кодування одночасно 14 різних відеофайлів, використання процесора коливається приблизно на 50-55%. Якщо я запускаю менше потоків одразу, то окремі потоки працюватимуть приблизно до 400% процесора, де, як зображено вище, вони використовують лише близько 80-90% процесора.

Це єдине, що я хочу зробити у цьому вікні, чи можна більше використовувати потужність процесора чи моя помилка?

Я поки що експериментував з реніцею, щоб абсолютно не мати ефекту. Я встановив NI -20 і 19, він не зробив ні більше, ні менше використання процесора в цілому або на окремих кодах.

Я читав про vm.swappiness, але я не зрозумів чіткого розуміння мого випадку використання, якщо більш-менш заміщення буде краще. Чи може це збільшити продуктивність?

Докладніше: Машина, з якої я входить, - це Dell R900 під керуванням Ubuntu 14.04. cat /proc/cpuinfoперелічено 16 процесорів Intel (R) Xeon (R) процесора E7330 @ 2,40 ГГц і cat /proc/meminfo16 Гбіт- рам . Інші машини групи схожі і демонструють однакову поведінку. Все це кодування - це відео DV та Mpeg2, іноді ми кодуємо й інші види відео. Джерело цих кодирується в мережевому рейді, який нічого не пише, як у верхній публікації вище, і отримує швидкість читання в 300 + Мб / с. Місце призначення також є мережевими рейдами, не настільки швидкими, але отримані mpeg дані набагато менші, ніж вхідні дані.


У вашому верхньому прикладі система використовує понад 90% процесора. 9.6 id= 9,6% простою.
yonix

@yoonix Ух, я відчуваю себе трохи нерозумно після того, як дивився на цю частину дня ... Я думаю, що моє справжнє запитання, можливо, має полягати в тому, чому моє "си" (системне) використання на 36% ... мені доведеться врахувати що і, можливо, задати нове запитання. Дякую
markjwill

Я здогадуюсь, що це, ймовірно, пов’язано з (або ще гірше) виконанням стільки копій. Я ніколи не використовував avconv, але швидкий огляд документації приводить мене до думки, що -threadsваріант допоможе вашій оригінальній проблемі. Якщо ви дійсно хочете відстежити, що таке системний процесор, це повідомлення в блозі, ймовірно, може розпочати.
yoonix

Я підозрюю, що в якийсь момент ваша комбінована диск та мережеве використання стануть вузьким місцем. Спробуйте видалити пару завдань і перевірте, чи зменшується використання процесора різко.
jcoppens

Відповіді:


0

По-перше, високоякісний GPU підвищить кодування на порядки. Зазвичай відеокарта високого класу скорочує візуалізацію від годин до хвилин. Можливо, вам знадобиться NVIDIA GPU.

‘-hwaccel_device[:stream_specifier] hwaccel_device (input,per-stream)’

    Select a device to use for hardware acceleration.

    This option only makes sense when the ‘-hwaccel’ option is also specified. Its exact meaning depends on the specific hardware acceleration method chosen.
    ‘vdpau’

        For VDPAU, this option specifies the X11 display/screen to use. If this option is not specified, the value of the DISPLAY environment variable is used
    ‘dxva2’

        For DXVA2, this option should contain the number of the display adapter to use. If this option is not specified, the default adapter is used. 

Крім того, вам потрібно це для процесора

‘-threads[:stream_specifier] integer (input/output,video)’

    Possible values:

    ‘auto’

        autodetect a suitable number of threads to use 
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.