Доброе время суток, дамы и господа, товарки и товарищи, черные и белые, и те, кто этим всем не сильно заморачивается!
Я тут по случаю получения пособия по безработице сбегал до магазина и купил себе Ryzen 5600X, чисто посмотреть, а вдруг чудо чудное и диво дивное. На майнинге раптореума проц показал себя на уровне обычного 3600 (без Х), но это скорее всего от количества кеша на ядро. А вот в GeekBench и 1С камешек показал себя со своей лучшей стороны.
Итак, перейдем к сути...
ТЕСТОВЫЙ СТЕНД: ЖЕЛЕЗО
Тестовый стенд у меня прост:
- корпус с БП на 800W марки Hiper M800 (достаточно древний, я его себе покупал еще тогда, когда у меня был FX 8320 с "мнимыми" 8-ю ядрами и карта RADEON HD 7970)
- Мать на X570 (не буду никого рекламировать - все примерно одинаковы) с 14-ю "штучками", отвечающими за питание (этими штучками принято мерить крутизну, максимум сейчас вроде бы 16 - в общем чем их больше, тем меньше они греются при большем количестве ядер)
- Винта у меня два:
$ nvme list-subsys
Failed to open /dev/nvme0
Failed to open /dev/nvme1
nvme-subsys0 - NQN=nqn.2014.08.org.nvmexpress:1987198703F10706084403681289m.2 Smartbuy PS5013-2280T 1024GB
\
+- nvme0 pcie 0000:01:00.0 live
nvme-subsys1 - NQN=nqn.1994-11.com.samsung:nvme:980PRO:M.2:S5GXNF0R111153K
Память - 2 планки от PATTIOT:
$ sudo dmidecode -t 17
...
Handle 0x001A, DMI type 17, 92 bytes
Memory Device
Array Handle: 0x000B
Error Information Handle: 0x0019
Total Width: 64 bits
Data Width: 64 bits
Size: 8 GB
Form Factor: DIMM
Set: None
Locator: DIMM 1
Bank Locator: P0 CHANNEL B
Type: DDR4
Type Detail: Synchronous Unbuffered (Unregistered)
Speed: 3600 MT/s
Manufacturer: Unknown
Serial Number: 102707A5
Asset Tag: Not Specified
Part Number: 4400 C19 Series
Rank: 1
Configured Memory Speed: 3600 MT/s
...
Т.е. это прошаренная память, которая берет и 4600 МГц на хорошей мамке, но у меня она работает на 3600 МГц, CL15 (15, 15, 15, 30, 45, ...) - настроено ручками по какой-то фотке с интернетов, скорость 50-52 Гб/с. Память была достаточно дешевая для такой частоты (10800 р. за 2х8), поэтому и взял.
- ну и видеокарта GF GTX (какой-то NONAME) 1060 3 Гб - ничего необычного.
Проц был куплен на днях на горбушке (5600X BOX) вместе с корпусом (450W БП), памятью (16ГиБ 3200 МГц), материнкой (чипсет А520) и SATA NVME на 120 Гб. За все отдал 35 555 рублей. В новый корпус к новой мамке и винту переехал старый 3600-й, в старый корпус на старую мать на X570 был воткнут новый проц. Боксовый кулер от 5600-го оказался бесполезной кучей г-на, на котором проц в достаточно тепличном стресс-тесте быстро перешагнул планку в 90оС, после чего для него в ближайшем DNS был куплен кулер ZALMAN (1650 рублей), на котором температура не поднималась выше 77оС даже при длительном и жестком стресс-тесте.
Тестовая база у меня будет в трех местах - на обоих дисках и на виртуалке.
ТЕСТОВЫЙ СТЕНД: СОФТ
В качестве софта я использую самый последний Ubuntu 21.10 с ядром 5.16.RC3 (т.е. тоже самым последним на сегодняшний день). Ядро не пересобирал (пока), т.е. все в стоке от проекта ядра для убунту. Кому интересно - читните это (блин, уже RC4, так что у меня уже не самое последнее ядро).
Для измерения средней температуры по больнице я юзаю драйвер zenpower3. По сцылке информация о том, как его собрать и как заблокировать мешающий ему k10temp.
Для визуализации измеренного теплопакета, температур и всего такого прочего я юзаю утилитку zenmonitor.
1С у меня стоит самой распоследней версии: 8.3.20.1613. Ставится теперь она под линух с помощью своего установщика, в котором можно выбрать, что поставить, куда, как, сколько, ... Теперь есть утилиты администрирования - в общем все, как в винде. Единственно, что меня заставило нажать кнопари - это либа "libenchant.so.1", которая не идет в комплекте с поставкой 1С. Но ее у меня много где есть, поэтому нехитрым движением руки все начинает работать:
$ cd /opt/1c.... # перейдем в каталог с установленной 1С
$ sudo ln -s /snap/gnome-3-28-1804/161/usr/lib/x86_64-linux-gnu/libenchant.so.1 . # создадим сцылку на требуемую либу
Ну и пакет libenchant-2-2 (который доступен для 21.10) я поставил. Не знаю, был ли в этом хоть какой-то смысл...
ТЕСТИРОВАНИЕ "ИСКАРОПКИ"
Ну дальше я взял небезызвестный тест Гилева с его небезызвестного сайта (гугл в помощь) и погнался за попугаями...
Для начала я создал новую базу в $HOME и просто без никого и ничего запустил тест. Результат меня обрадовал:
06.12.2021 18:11:01 starik2005(собака)bk.ru 138,89.
Т.е. первый тест без всяких там улучшений и всего такого сходу показал 139 почти попугаев. Цифры, которых я еще не видел нигде.
РАЗГОН БЕЗ ПОВЫШЕНИЯ TDP И ЯДЕРНЫЙ ТЮНИНГ
Начало меня обнадежило, поэтому я пошел в BIOS и установил +200 МГц без изменения TDP, все опции PBO засунул в AUTO. В итоге получил теплопакет 77W в пределе и почти 143 попугая с первого разу (картинка более новая, но смысл тот же):
Дальше я запускал тест на каждом ядре по несколько раз, в итоге на 3-ми ядре получил результат 147 баллов:
06.12.2021 19:02:30, starik2005(собака)bk.ru, 147,06.
Запущенный без каких бы то ни было параметров процесс выполняется на разных ядрах - система сама его туды-сюды кидает. Для того, чтобы запустить процесс на строго определенном (определенных) ядре есть утилита taskset, которая может или запустить процесс по указанной маске (младший бит - первое ядро, старший - последнее), или указать "ядерную" маску для уже запущенного процесса.
$ ps -aux | grep 1cv8 sergey 8636 2.3 7.9 2193388 1295648 ? Sl 21:28 1:38 /opt/1cv8/x86_64/8.3.20.1613/1cv8 ENTERPRISE /IBName"Информационная база" /AppAutoCheckMode sergey 13753 0.0 0.0 9312 2408 pts/1 S+ 22:37 0:00 grep --color=auto 1cv8 $ taskset -p 0x0000004 8636 pid 8636's current affinity mask: fff pid 8636's new affinity mask: 4
Вот так, "без всей этой возни в гиперпространстве", можно указать, что процесс должен выполняться на 3-м ядре (2^N, где N - это ядро с индексом, начинающемся с "0", т.е. 2 ^ 2 = 4).
Итак, после того, как я "перебрал" ядра, я на третьем ядре получил заветные 147 попугаев!
ВИРТУАЛКА
А LInux виртуальный диск создается легко и непринужденно:
$ sudo mount -t tmpfs -o size=1024M tmpfs /cache
Ну и что тут у нас?
В итоге после того, как для конкретного ядра я установил режим работы performance, я преодолел планку в 150 попугаев, набрав 151.52 попугая и выйдя в лидеры )))
Установить режим питания конкретному ядру в Linux можно так:
$ sudo cpufreq-set -g performance -c 2 # где 2 - номер ядра (нумеруется с нуля)
Для того, чтобы поставить этот режим всем вашим ядрам, можно сделать так:
$ for((i=0;i<`cat /proc/cpuinfo | grep MH | wc -l`;i++)) do sudo cpufreq-set -g performance -c $i; echo $i; done
0
1
2
3
4
5
6
7
8
9
10
11
НУ И О TDP
В ходе тестирования geekbench и 1С я замерял предельный TDP процессора. Вот что у меня получилось:
Geekbench 5:
https://browser.geekbench.com/v5/cpu/11477315
Ну и теплопакет Geekbench 5 и файловой 1С в "один поток":
Итак, Geekbench 5 у нас разогнал ядра до 4850 МГц, но с переменным успехом. Теплопакет всего теста уложился в 100W, что уже не совсем "честные 65W".
А вот однопоток 1С вполне уложился в заявленные производителем 65W - хватило и 56-ти.
Я бы сказал, что результат отличный.
ЗАКЛЮЧЕНИЕ
Современные процессоры скрывают в себе огромный "потенцевал", они имеют разные по характеристикам ядра, некоторые из них могут работать быстрее остальных. С умелыми и очумелыми ручками можно уверенно двинуть границу производительности вверх, давая пользователю больше работать и меньше гонять чаи. При том на современных синих процессорах вполне себе "можно вскипятить чайку" (с) - экономия на ячайнике )))