Порой самые обидные проблемы производительности кроются не в слабом железе, а в том, что софт попросту не умеет с этим железом правильно разговаривать. Инженеры AMD провели расследование, достойное технологического детектива, и обнаружили, что популярный инструмент для транскодирования видео HandBrake годами страдал от досадного недуга: он совершенно не умел эффективно распоряжаться ресурсами систем с большим количеством ядер. К счастью, история получила счастливый финал — все исправления уже вошли в релиз HandBrake 1.11.0, а результаты тестов заставляют по-новому взглянуть на возможности флагманских процессоров.
Суть проблемы сводилась к двум узким местам, которые словно песок в шестеренках тормозили весь механизм. Во-первых, код приложения был написан без оглядки на системы, где количество логических процессоров переваливает за 64, из-за чего на чипах уровня Ryzen Threadripper значительная часть вычислительных блоков откровенно простаивала, наблюдая за работой со стороны. Во-вторых, планировщик задач дробил рабочую нагрузку на слишком мелкие фрагменты, порождая чудовищные накладные расходы на координацию вместо собственно обработки видео, и особенно заметно это проявлялось при работе с разрешением 720p. В некоторых случаях AMD фиксировала не просто отсутствие прироста, а драматическое падение производительности до 60 процентов по мере добавления новых ядер, что абсолютно противоречит логике параллельных вычислений. Теперь же, с обновленным управлением потоками и переработанным планировщиком заданий, HandBrake научился грамотно распределять нагрузку и удерживать процессорные ядра занятыми реальным делом.
Цифры, опубликованные в официальном блоге AMD, выглядят как рекламный слоган, но за ними стоят реальные замеры. Стенд с 64-ядерным Threadripper 7980X, оснащенным 128 гигабайтами памяти DDR5-5600 и видеокартой Radeon RX 9070 XT, после обновления продемонстрировал прирост производительности до 215 процентов в тесте H.264 с разрешением 720p. В более тяжелых сценариях с восьмибитным HEVC и разрешением 8K ускорение составило 203 процента, а при кодировании 8K-роликов с 60 кадрами в секунду в десятибитном HEVC результат улучшился на 105 процентов. Если же перейти к абсолютному флагману — Threadripper PRO 9995WX с его 96 ядрами и 192 потоками в паре с той же видеокартой, — то максимальный прирост достиг 181 процента на том же H.264, а в тяжелых режимах с десятибитным HEVC и 4K или 8K ускорение колебалось от 149 до 151 процента. Во всей совокупности протестированных сценариев улучшения варьировались от скромных 16 процентов на задачах, которые и так были неплохо оптимизированы, до вышеупомянутых головокружительных величин.
Самое приятное в этой истории то, что для получения всех преимуществ пользователю не нужно танцевать с бубном, придумывать новые пресеты или копаться в настройках. Достаточно просто обновить HandBrake до версии 1.11.0 или новее, и программа сама начнет использовать все доступные ресурсы так, как это и задумывалось инженерами. Эта ситуация служит наглядным напоминанием: иногда самый выгодный апгрейд — это не покупка нового процессора, а своевременное обновление софта, который наконец-то научился работать с тем железом, что уже стоит под столом и давно ждет настоящей работы.
