У меня есть набор из 4-5 машин, которые почти исключительно кодируют видео весь день, а иногда и всю ночь. Я много раз искал способы оптимизировать их для этой цели, но безуспешно.
Моя предпосылка: я должен быть в состоянии использовать почти весь свой процессор для кодирования видео, если и только если я одновременно запускаю несколько процессов кодирования, что я и делаю.
Проблема: (сверху)
Tasks: 382 total, 2 running, 380 sleeping, 0 stopped, 0 zombie %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 total, 16171664 used, 254016 free, 30492 buffers KiB Swap: 16769020 total, 406056 used, 16362964 free. 15198692 cached Mem PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND 31308 root 20 0 486568 26000 5560 S 92.2 0.2 188:10.72 avconv 10340 root 20 0 475832 19920 5532 S 91.2 0.1 13:40.42 avconv 12547 root 20 0 473832 23672 5528 S 89.9 0.1 5:40.23 avconv 8179 root 20 0 477132 21200 5560 S 89.2 0.1 71:50.15 avconv 9059 root 20 0 472776 17960 5540 S 89.2 0.1 48:12.62 avconv 9798 root 20 0 477812 16976 5532 S 88.9 0.1 25:23.15 avconv 8725 root 20 0 476068 21696 5560 S 87.2 0.1 62:12.02 avconv 12657 root 20 0 472332 22012 5524 S 86.9 0.1 6:21.28 avconv 12915 root 20 0 473732 41888 5516 S 86.6 0.3 5:22.63 avconv 8578 root 20 0 476840 24100 5536 S 85.6 0.1 63:17.07 avconv 7822 root 20 0 472740 18940 5536 S 85.2 0.1 75:22.04 avconv 9948 root 20 0 485420 18116 5560 S 84.9 0.1 22:18.23 avconv 7356 root 20 0 476744 20084 5560 S 84.6 0.1 92:31.91 avconv 9425 root 20 0 471096 19684 5552 S 82.9 0.1 37:48.28 avconv 12464 root 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 намного меньше, чем входные данные.