Совсем недавно я занимался доработкой компактного ПК из ATX комплектующих, пытался уменьшить вес, в процессе заменил функционально ущербный Athlon 200GE на Ryzen 7 2700X.
Как я избавлялся от лишнего веса в самодельном компактном ПК из ATX комплектующих
В конце были проведены тесты для сравнения с Athlon 200GE, но в предыдущую статью уже не получалось всё вместить, потому было решено вынести в отдельную статью.
Текущая конфигурация тестового ПК БП: 2E Gaming 750W Gold (EP750GM-140) Корпус: Самодельный (10x30x40 см.) Gigabyte B450M H Ryzen 7 2700X 64 GB DDR4 (2 x 32 GB Kingston KVR29N21D8/32) MSI GeForce GTX 1070 AERO OC 8GB
Сравнивать полученные результаты с процессором Ryzen 7 2700X, конечно же, буду с уже имеющимися данными, что получены с Athlon 200GE.
Как шина PCI-Express влияет на FPS и почему Linux это плохой выбор для систем с двумя GPU
Конечно, функционально кривой Athlon 200GE с PCI-Express x1 не ровня Ryzen 7 2700X, у которого работают все 16 линий, но вдруг шина не будет решающим фактором, тем более учитывая предыдущие результаты - некоторые тесты вряд ли будут сильно реагировать на значительно увеличенную пропускную способность PCI-E (в 16 раз).
Для тестирования будет использовано приложение GPU Caps Viewer версии 1.63, в среде Windows 10 установлен драйвер видеокарты NVIDIA версии 560.70.
В среде Linux (Chimbalix 24.5) установлен полноценный драйвер видеокарты NVIDIA версии 550.54.14 (cuda_12.4.0_550.54.14_linux.run), в отличие от систем с AMD Radeon, мне не нужно танцевать с бубном, чтобы заставить нормально работать такие API как OpenCL под линуксом, потому вычислительные тесты тоже будут в таблице.
Чтобы упростить тестирование я использую собственные вспомогательные скрипты, ну и чтобы не запутаться в результатах - раскладываю по соответствующим папкам.
Вспомогательные скрипты для GPU Caps Viewer можно найти в репозитории GitHub Chi-Gallery, там же по мере использования выявляю недостатки, и обновляю тестовые скрипты, причём важно заметить, основная масса скриптов предназначена для Chimbalix дистрибутива Linux, так что в сторонних линуксах они могут не работать ввиду недостаточной функциональности прочих линуксов.
https://github.com/Shedou/Chi-Gallery/tree/main/Other/GPU_Caps_Viewer_1.63.0.0
Сначала тесты были проведены на системе при стандартных настройках BIOS без разгона, память на стоковой частоте 2933 MHz, после было решено создать каталоги для результатов с памятью 2666 МГц, ведь Athlon 200GE имеет заблокированные множители разгона ГП и ОЗУ, а мне хотелось сравнить 2700X в максимально близких условиях с младшим "кривым недоразумением" от красной компании.
Разумеется, так же выставил частоту ядер на уровне 3.7 ГГц, отключил Boost, и выставил конфигурацию CCX 2+0, хотя у одного модуля 2700X целых 8 МБ кэша L3, когда у 200GE было 4 МБ, но в целом я настроил старший ЦП максимально идентично младшему, и собрал результаты.
Единственное, я забыл про настройку виртуализации, она по умолчанию ведь отключена у AM4 процессоров, когда обычно её включал всегда, ну да ладно, думаю это не должно сильно повлиять на результаты, однако неприятно, что такую мелочь упустил...
Далее активирую обычный рабочий профиль с разгоном, разве что частоту ЦП повышаю до 3.7 ГГц, ведь в профиле было 3.6 ГГц, и снова собираю результаты уже со всеми активными ядрами, но с отключенным XFR Boost.
Ну и для полноты картины - выставляю частоту памяти 2666 МГц, это позволит обнаружить зависимость результатов от разгона ОЗУ.
В итоге собрал результаты в трёх режимах работы, названия папок на скорую руку сделаны, но это не важно, главное теперь оформить результаты в таблицу.
-
--
Результаты OpenCL
Начнём с OpenCL, в таблице довольно много всяких чисел, но даже так отчётливо видно преимущество PCI-Express 3.0 x16 перед x1 при вычислительной работе, хотя лучше перейти к более наглядным графикам.
В тестах CL Julia и CL Partices с процессором Athlon 200GE в условиях крайне ограниченной пропускной способности шины PCI-Express, явное преимущество имела операционная система Windows, однако когда шина PCI-E не является бутылочным горлышком - разница между Windows и Linux едва заметна.
Так же можно отметить тот факт, что разгон ОЗУ и ядер не сильно влияют на результат, однако при обрезании R7 2700X до уровня 2 ядер 4 потоков - производительность заметно проседает, вполне возможно это так сильно влияет объём L3 кэша, ведь при отключенном CCX его объём равен всего 8 МБ, когда в норме должно быть 16 МБ, хотя с другой стороны, у Athlon 200GE было всего 4 МБ кэша, но там ограничением была уже шина PCI-Exress, а не ядра процессора или производительность видеокарты.
Дальше CL PostFX и Surface Deformer, если с узкой шиной PCI-E x1 не было у операционных систем особой разницы, то в избыточном режиме x16 уже совсем другая картина, ибо в среде Linux производительность оказалась заметно выше, чем в Windows, хоть где-то Linux "победил", и то вероятно благодаря качественным драйверам от NVIDIA.
Видна отчётливая зависимость результата от параметров работы ЦП и ОЗУ, тесты хорошо реагируют на частоты ядер при активном XFR Boost (4 ГГц+), но на разгон ОЗУ до 3333 МГц реакция ещё сильнее, хоть лимитирующим фактором и выступает видеокарта, но уже на грани, ибо параметры работы процессора R7 2700X начинают заметно влиять на результат.
Хоть пропускная способность шины PCI-Express и возросла в 16 раз, но максимальный рост производительности был лишь в Surface Deformer, примерно в 12 раз, впрочем, в других тестах хорошо если рост был в 5-6 раз...
Вычислительные тесты использующие OpenCL API определённо сильно зависят от пропускной способности шины PCI-Express, но до определённого момента, пока лимитирующим фактором не станет сама видеокарта, либо процессор.
-
--
Результаты Vulkan
В отличие от вычислительных - графические тесты уже не так сильно зависят от пропускной способности шины PCI-Express, что отлично видно на тестах использующих Vulkan API.
Хотя VK Mesh Shader проявляет интересную зависимость от шины, в среде Linux с крайне ограниченной PCI-E x1 наилучший результат был за Windows, однако когда PCI-Express имеет избыточную пропускную способность - преимущество оказалось за Linux, но только при ограниченной частоте ЦП, при активном XFR Boost преимущество снова за Windows, похоже у "пингвина", как всегда, есть проблемы с распределением нагрузки на самые производительные ядра.
В тесте VK Draw Stress Test сильной зависимости от PCI-E нет, но есть явная зависимость от частоты ядер, причём R7 2700X в конфигурации 2c4t (2 ядра 4 потока) показал меньший результат даже несмотря на 8 МБ кэша чем Athlon 200GE с такой же конфигурацией ядер и частотой, что забавно.
А вот VK Tessellation показывал зависимость от шины только в режиме x1, когда пропускная способность крайне ограничена, но в случае R7 2700X с шиной x16 результаты явно ограничились производительностью видеокарты, ибо нет явной зависимости от конфигурации и разгона процессора, ну и Windows имеет преимущество перед Linux в данном случае.
VK Phong Lighting и VK Triangle уже зависят от шины, но только в крайне ограниченных условиях одной линии, причём эти тесты гораздо лучше работают в среде Windows, а ещё сильно зависят от частоты ядер, и судя по всему, от объёма кэш памяти L3, похоже в данном случае GTX 1070 оказалась не по зубам процессорам архитектуры Zen первых поколений.
VK Geomechanical и VK Seascape хоть и проявили незначительную зависимость от шины, но только в крайне ограниченных условиях с одной линией, в остальном производительность явно ограничивается видеокартой, хотя во всех случаях однозначное преимущество за операционной системой Windows.
Vulkan API тесты в большинстве случаев отдают предпочтение операционной системе Windows, а так же частоте ядер процессора, объём кэша тоже имеет порой заметное влияние, но частота ядра всё же оказывается более весомой, ну а разгон ОЗУ хоть и прибавлял FPS, но незначительно.
-
--
Результаты OpenGL
В таблице так много результатов, что сразу перейдём к графикам.
GL 4.6 SPIRV и GL 4.3 ARB Shader Atomics Counters определённо показывают сильную зависимость от частоты ядер процессора и объёма L3, ощутимое преимущество в данном случае было за Linux, но только в условиях избыточной скорости шины PCI-E.
Тесты GL 4.0 Tessellation напротив, отдали предпочтение Windows, и снова чёткая зависимость от частоты ядер ЦП и объёма кэша, только в среде Linux производительность явно не процессором ограничивалась, ну а пропускная способность PCI-Express значительно влияла только в крайне ограниченных условиях одной линии.
Дальше GL 4.3 Compute Shaders, с ограниченной пропускной способностью PCI-E не было огромной разницы между Windows и Linux, но с PCI-E x16 Windows значительно вырвалась вверх относительно Linux, и снова есть влияние от объёма L3.
GL 3.2 Seascape и GL 3.2 Draw Stress Test оказались довольно независимыми от шины PCI-Express, а последний отлично реагирует на частоту ядер, из-за чего 2700X с активным XFR Boost выдал лучший результат.
GL 3.2 Phong Lighting и GL 3.2 Triangle имеют сильную зависимость от частоты ядер и объёма L3 кэша, однако в то же время Athlon 200GE смог выдать довольно высокий FPS по сравнению с 2700X, но только в среде Windows, в Linux результаты между 200GE и 2700X особо не отличались, да и зависимость от шины PCI-E тут очень слабая.
Далее идут GL 3.2 Mesh Exploder, Env Sphere Map и GL 2.1 Cell Shading, эти три теста имеют примерно одинаковое поведение, потому выведены в один график, в случае ограниченной пропускной способности PCI-E x1 преимущество было за Windows, однако с 16 линиями уже преимущество оказалось за Linux, причем в случае "пингвина" не было зависимости от конфигурации ядер ЦП, когда в среде Windows рост частоты и объёма кэша значительно повышал FPS.
GL 2.1 Alien Corridor и Radial Blur уже не показали острой зависимости от шины, как и от параметров процессора, бутылочное горлышко тут однозначно видеокарта, но в среде Windows всё же производительность выше.
GL 3.2 Geometry Instancing явно предпочитает Windows, больше нечего сказать.
А вот GL 1.1 Triangle уже интереснее, ведь этот тест показывает явную зависимость от частоты ядер и разгона ОЗУ, но только в среде Windows, а ещё Athlon 200GE на 3.7 ГГц выдал отличный результат, даже выше, чем смог R7 2700X с XFR Boost (~4 ГГц), довольно забавная ситуация.
GL 3.2 COVID-19, GL 2.1 Rain Forest и Rhodium не показали особой зависимости от шины и ЦП, ведь практически во всех случаях производительность ограничивалась видеокартой, ну а активная Vega, как всегда, лишь мешала нормально работать полноценной видеокарте в среде Linux, ведь линуксы до сих пор не умеют без перезагрузки ядра переключать активную видеокарту по-человечески...
-
--
Результаты Old OpenGL
Наконец последние результаты в старых тестах OpenGL, тут уже в ряде случаев видно ощутимое преимущество Linux перед Windows, но давайте перейдём к более наглядным графикам.
GL 4 Tesselation, GL3 Triangle GL Vertex Texture Fetch и Toon Shading с крайне ограниченной шиной PCI-E x1 обычно отдавали предпочтение Windows, однако с избыточной пропускной способностью (ПСП) ситуация кардинально меняется в пользу Linux, причём общая производительность достигает 8000 FPS в одном тесте, ну а ещё однозначно есть зависимость от частоты ядер и объёма L3 кэша.
Вообще не удивительно, что большинство старых OpenGL тестов имеют зависимость от параметров работы процессора, ведь они работают в разрешении 600x600 по умолчанию, и этого слишком мало для GTX 1070, но это хорошо для разнообразия, лишь в нескольких тестах будет однозначный упор в производительность видеокарты.
В тестах Soft Shadows и Point Sprite снова доминирует Linux, но только при избыточной пропускной способности PCI-Express, а ещё есть сильная зависимость от частоты ядер и кэша, но от разгона ОЗУ, кажется, нет никакой прибавки.
HDR-DOF отдает предпочтение Windows, правда только в режиме PCI-E x1, но при избыточной ПСП, судя по всему, производительность ограничивается видеокартой, только Geometry Instancing имеет явно выраженную зависимость от частоты ядер.
Simple Torus работал лучше в среде Windows при ограниченной ПСП шины PCI-E, однако при избыточности ситуация снова изменилась в пользу Linux, но так же видно влияние частоты ЦП и объёма L3 кэша.
И только Illuminated Torus отдал однозначное преимущество Windows, в этом же тесте есть чёткая зависимость от частоты ядер и разгона ОЗУ, ну а кэш не повлиял на результат.
Furry Cube вообще всё равно, ему хватает и PCI-E 2.0 x1, чтобы нагрузить GTX 1070, хотя FPS всё же за Windows.
-
--
Заключение
В итоге только вычислительные тесты использующие OpenCL API показали сильную зависимость от пропускной способности (ПСП) шины PCI-Express, тем временем подавляющее большинство графических тестов не имели сильной зависимости от шины.
Linux хуже работает в условиях ограниченной PCI-Express x1, чем Windows, но способен показать больше FPS при избыточной ПСП с 16 линиями.
Современный Vulkan API значительно лучше работает в среде Windows, однако ряд тестов использующих "устаревший" OpenGL лучше работали в среде Linux, хотя и далеко не все.
Процессоры архитектуры Zen 1 (Ryzen 1000-2000) явно не способны "раскрыть" такую старую, но до сих пор актуальную видеокарту как GeForce GTX 1070, во многих тестах была отчётливо видна зависимость от частоты ядер и объёма кэша L3, особенно в OpenGL тестах.
Объём L3 кэша обычно даёт больше FPS, чем разгон ОЗУ при равной частоте ядер.
В тестах, где производительность ограничивается видеокартой - не было выявлено явной зависимости от конфигурации и разгона ЦП.
AMD Radeon с кривыми драйверами лучше держать подальше от компьютера, особенно в среде Linux...
Вполне возможно, что проблема со слотом видеокарты у Athlon 200GE была по вине кривых прошивок AGESA от AMD, когда не получалось заставить работать видеокарту в слоте PCI-Express x16, и только при извлечении NVMe SSD из слота M2 видеокарта заработала в режиме x1, но потом снова перестала, а должна была работать в режиме x8, либо x4 при установленном M2 SSD...
На этом пожалуй всё.
Благодарю за внимание, больше интересных статей в блоге Hard-Workshop.