У мене є набір з 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/meminfo
16 Гбіт- рам . Інші машини групи схожі і демонструють однакову поведінку. Все це кодування - це відео DV та Mpeg2, іноді ми кодуємо й інші види відео. Джерело цих кодирується в мережевому рейді, який нічого не пише, як у верхній публікації вище, і отримує швидкість читання в 300 + Мб / с. Місце призначення також є мережевими рейдами, не настільки швидкими, але отримані mpeg дані набагато менші, ніж вхідні дані.
-threads
варіант допоможе вашій оригінальній проблемі. Якщо ви дійсно хочете відстежити, що таке системний процесор, це повідомлення в блозі, ймовірно, може розпочати.
9.6 id
= 9,6% простою.