Майнинг,  Статьи

Управление таймингами видеокарт Nvidia утилитой meth-pills

Для увеличения производительности подсистемы памяти на видеокартах AMD широко используется программа AMD Memory Tweak. Она предоставляет возможность тонкой настройки параметров памяти видеокарт AMD для увеличения пропускной способности VRAM.

Похожий функционал имеет утилита ETH Enlargment Pill, которая умеет работать с памятью GDDR5+ на видеокартах Nvidia.

Кроме того, неокторые майнеры могут работать с таймингами (страпами) памяти видеокарт Nvidia, что положительно сказывается на хешрейте при майнинге.

Иногда требуется улучшить быстродействие GPU Nvidia при работе с программами, требовательными к производительности VRAM (игры, майнеры, не имеющие функционала, позволяющего менять режим работы VRAM и т.д.). В этом случае можно воспользоваться утилитой с открытым исходным кодом meth-pills (FOSS NVIDIA memory timing tweaks).

Программа meth-pills создана американским программистом с ником tiagoshibata. Ее развитием также занимается разработчик, известный на Github под псевдонимом Wyse-.

Хотя программа достаточно давно не обновлялась, она имеет хороший потенциал, который может быть реализован в случае позитивного изменения ситуации в сфере майнинга…

Как использовать программу meth-pills для управления таймингами памяти видеокарт?

Официально meth-pills предназначена только для видеокарт с памятью GDDR5X (GeForce GTX 1080 и 1080Ti) , но может работать и с другими типами памяти на GPU Nvidia с архитектурой Pascal (GeForce GTX тысячной серии) и новее.

Программа meth-pills каждые 5 секунд производит сканирование PCI-E устройств и инжектирует тайминги VRAM, указанные пользователем при настройке.

При работе используются регистры FBPA-адресации (framebuffer partition addressing), доступная на видеокартах с архитектурой Pascal и новее.

Программа осуществляет управление памятью с помощью контроллера, управляющего взаимодействием кеша второго уровня и DRAM:

Чтобы использовать meth-pills, нужно собрать исполняемый файл из исходного кода на Github (у tiagoshibata или клон с репозитория Wyse-).

По состоянию на март 2023 года больше обновлений meth-pills содержит репозиторий Wyse-.

Для скачивания исходного кода meth-pills и сборки программы можно использовать следующие команды:

git clone https://github.com/Wyse-/meth-pills.git
cd meth-pills && cmake .. && make

В процессе компиляции появятся следующие сообщения:

-- The C compiler identification is GNU 12.1.0

-- Detecting C compiler ABI info

-- Detecting C compiler ABI info - done

-- Check for working C compiler: /usr/bin/cc - skipped

-- Detecting C compile features

-- Detecting C compile features - done

-- Configuring done

-- Generating done

-- Build files have been written to: /home/intel/Downloads/meth-pills/build

[ 33%] Building C object CMakeFiles/meth-pills.dir/main.c.o

[ 66%] Building C object CMakeFiles/meth-pills.dir/pci.c.o

[100%] Linking C executable meth-pills

[100%] Built target meth-pills

Программа используется в консольном режиме с помощью команд в формате:

meth-pills [-h] [-l] [-s] [-d device] [pci_device[=t0,t1] ...]

Команды, которые можно использовать при работе с meth-pills:

-h — показать помощь по работе с программой;
-l — показать устройства и текущие тайминги, затем выйти из программы;
-s — использовать более безопасные/медленные тайминги. Тспользуется, если GPU работает нестабильно со штатными таймингами;
pci_device=t0,t1 — номера видеокарт, которые подвергаются экзекуции ускорению. Если не указать конкретное устройство (видеокарту), с которой будет проводиться работа, тайминги будут прописываться во все устройства, используя указанные пользователем оптимизированные значения. При указании номеров конкретных устройств, они будут инжектироваться только в них. Имеется возможность указания custom timings для каждого устройства. При адресации используется идентификатор с полным путем PCI, который указывается в /sys/bus/pci/devices (domain:bus:slot:function, например, 0000:08:00.0);

Если неверно указать номер адресуемого устройства, то программа meth-pills выдаст ошибку

openat: No such file or directory

Чтобы узнать номера PCI-E устройств, а также дополнительную информацию о видеокартах, установленных на компьютере, можно использовать команду

lspci

или вариант только для видеокарт в формате

sudo lspci -v

Пример информации, отображаемой о видеокарте Nvidia GeForce GT 1030 по команде sudo lspci с ключом v:

0f:00.1 Audio device: NVIDIA Corporation GP108 High Definition Audio Controller (rev a1)

Subsystem: Micro-Star International Co., Ltd. [MSI] GP108 High Definition Audio Controller

Flags: bus master, fast devsel, latency 0, IRQ 17

Memory at df080000 (32-bit, non-prefetchable) [size=16K]

Capabilities: [60] Power Management version 3

Capabilities: [68] MSI: Enable- Count=1/1 Maskable- 64bit+

Capabilities: [78] Express Endpoint, MSI 00

Capabilities: [100] Advanced Error Reporting

Kernel driver in use: snd_hda_intel

Kernel modules: snd_hda_intel

Примеры использования утилиты meth-pills в xubuntu 22.04:

Вывод списка видеокарт, установленных на компьютере и таймингов для безопасных (проверенных) устройств:

sudo ./meth-pills -l

Для видеокарты Nvidia GeForce GTX 1050Ti программа выдает сообщение о том, что она оффициально не поддерживается, а также данные о таймингах памяти:

Device 0000:09:00.0: not officially supported and is being skipped by default; to run on it anyways, pass 0000:09:00.0 as a command line parameter. If pills work for you, report your success at https://github.com/tiagoshibata/meth-pills/issues
t0 = 32, t1 = 8

В то же время программа сообщает, что можно попробовать ее использоать для обнаруженного устройства 0000:09:00.0.

Пример вывода программы meth-pills для видеокарты Nvidia GeForce GT 1030:

Device 0000:0d:00.0: not officially supported and is being skipped by default; to run on it anyways, pass 0000:0d:00.0 as a command line parameter. If pills work for you, report your success at https://github.com/tiagoshibata/meth-pills/issues
t0 = 36, t1 = 9

Для поддерживаемых устройств вывод программы по команде meth-pills -l выглядит так:

Device 0000:07:00.0: GeForce GTX 1080
t0 = 20, t1 = 6

Для увеличения пропускной способности памяти видеокарт, нужно уменьшать тайминги, на которой работают чипы VRAM.

Например, для видеокарты Nvidia GeForce GT 1030, у которой очень слабая производительность видеопамяти из-за использования 64-битной шины, можно порпобовать увеличить быстродействие, поиграв с таймингами (исходные -тайминги: t0 = 36, t1 = 9).

Пример запуска meth-pills на видеокарте Nvidia GeForce GT 1030 с адресом 0000:0d:00.0 с таймингами 36 и 8:

sudo ./meth-pills 0000:0d:00.0=36,8

Программа, работающая в консоли, периодически (каждые 5 секунд) инжектирует желаемые тайминги и выдает сообщение:

t0 = 36 (desired: 35), t1 = 9 (desired: 8)
Updating t1
t0 = 36 (desired: 35), t1 = 8 (desired: 8)
t0 = 36 (desired: 35), t1 = 8 (desired: 8)
t0 = 36 (desired: 35), t1 = 8 (desired: 8)
...

Даже такое незначительное изменение таймингов (уменьшение значений t0 и t1 на единицу) иногда дает некоторый прирост производительности при майнинге на памятезависимых алгоритмах. Наибольший прирост программа дает на видеокартах с памятью GDDR5X, как и с помощью ETH Enlargment Pill, на GeForce GTX 1080-х можно вдвое увеличить хешрейт на алгоритме ethash (снижая тайминги t0,t1 с 20,6 до 16,4).

Исходя из опыта, даже после закрытия консоли с работающей утилитой, инжектированные значения таймингов сохраняются (до перезагрузки). Это можно проверить командой sudo ./meth-pills -l.

Программа meth-pills еще достаточно сырая, хотя и достойная внимания…

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *