Изложенная ниже информация не является руководством к действию, является исключительно ознакомительной для заинтересованных лиц.
Устанавливаем компактный вариант серверной ubuntu, при выборе параметров отключаем (или оставляем включенным, при необходимости) lvm-group.
echo "$USER ALL=(ALL:ALL) NOPASSWD: ALL" | sudo tee /etc/sudoers.d/dont-prompt-$USER-for-password
После установки сносим snapd:
sudo apt remove --purge snapd
или просто отключаем эти службы, например:
sudo systemctl stop snapd.service &&sudo systemctl disable snapd.service
sudo systemctl stop snapd.socket && sudo systemctl disable snapd.socket
Отключаем ненужные службы:
sudo systemctl disable apparmor && sudo systemctl mask apparmor
sudo systemctl disable apport && sudo systemctl mask apport
sudo systemctl stop systemd-journald.service && systemctl mask systemd-journald.service
sudo systemctl stop multipathd && sudo systemctl mask multipathd
sudo systemctl stop systemd-networkd-wait-online.service && sudo systemctl mask systemd-networkd-wait-online.service
Обновляем систему:
sudo apt update && sudo apt -y upgrade && sudo apt -y dist-upgrade && sudo apt -y autoremove
Ставим служебные программы:
sudo apt install apt autoconf automake build-essential cmake cron curl extra-cmake-modules gcc git landscape-common libcurl4-openssl-dev libelf-dev libgmp-dev libhwloc-dev libjansson-dev libmicrohttpd-dev libncurses5 libncurses5-dev libnuma-dev libpci-dev libssl-dev libtool libuv1-dev make nano ocl-icd-opencl-dev pkg-config wget htop screen zlib1g-dev
Для автоматического входа в систему и дальнейшего запуска майнеров с помощью cron+screen выполняем:
sudo mkdir /etc/systemd/system/getty@tty1.service.d sudo nano /etc/systemd/system/getty@tty1.service.d/override.conf
записываем туда:
[Service] ExecStart= ExecStart=-/sbin/agetty --noissue --autologin myusername %I $TERM Type=idle
где
myusername - имя пользователя компьютера.
Ставим драйвера Nvidia на сервер.
ubuntu-drivers devices
sudo apt install nvidia-driver-525-server
sudo apt install nvidia-settings
sudo nvidia-xconfig -a --cool-bits=31 --allow-empty-initial-configuration --enable-all-gpus
На компьютерах с видеокартами Nvidia, для устранения ошибки
ERROR: libXv setup error : libXv.so.1: cannot open shared object file: No such file or directory
устанавливаем пакет libxv1:
sudo apt-get install libxv1
Для компьютера с видеокартами AMD ставим драйвера и настраиваем разгон.
Например, чтобы поставить драйвер AMD версии 22.20.5 на ubuntu-server 22.04, скачиваем deb-инсталлятор драйвера для ubuntu 22.04 (jammy):
wget http://repo.radeon.com/amdgpu-install/22.20.5/ubuntu/jammy/amdgpu-install_22.20.50205-1_all.deb
Устанавливаем deb-пакет:
sudo apt install ./amdgpu-install_22.20.50205-1_all.deb
Устанавливаем драйвер AMD с поддержкой OpenCL:
sudo amdgpu-install -y --accept-eula --usecase=opencl --opencl=rocr,legacy
sudo usermod -a -G video $LOGNAME && sudo usermod -a -G render $LOGNAME
sudo reboot
По команде
clinfo
должны отображаться все видеокарты в строке Number of devices.
Обновляем систему:
sudo apt update && sudo apt -y upgrade && sudo apt -y dist-upgrade && sudo apt -y autoremove
при установке не должно возникать ошибок типа
Error! Bad return status for module build on kernel: 6.2.0-20-generic (x86_64) ... installed amdgpu-dkms package post-installation script subprocess returned error exit status 10 ...Errors were encountered while processing: amdgpu-dkms
Если возникают проблемы, нужно подобрать другой драйвер (22.20.5 для Polaris-ов), попробовать сменить ядро Linux на совместимое. Кроме того, перед установкой драйвера можно попробовать вручную установить следующие пакеты:
sudo apt-get install wget gnupg2 rocminfo rocm-smi rocm-device-libs libncurses5 libnuma-dev libhsa-runtime64-1 libhsakmt1 amdgpu-core ocl-icd-opencl-dev opencl-headers
Настраиваем ядро Linux:
sudo nano /etc/default/grub
Для видеокарт Nvidia:
GRUB_CMDLINE_LINUX_DEFAULT="hpet=disable noresume elevator=noop mitigations=off preempt=none nowatchdog audit=0 page_alloc.shuffle=1 split_lock_detect=off pci=pcie_bus_perf raid=noautodetect plymouth.enable=0 page_alloc.shuffle=1 ipv6.disable=1 lpj=8799984"
sudo update-grub
Значение lpj узнаем командой:
sudo dmesg | grep "lpj="
Подстраиваем систему:
sudo -e /etc/sysctl.conf
вносим текст:
vm.swappiness = 1 net.ipv4.tcp_timestamps = 0 kernel.sysrq = 0 fs.suid_dumpable = 0 kernel.kptr_restrict = 1
Выключаем автоматическое обновление командой:
sudo nano /etc/apt/apt.conf.d/20auto-upgrades
текст
APT::Periodic::Update-Package-Lists "1"; APT::Periodic::Unattended-Upgrade "1";
меняем на
APT::Periodic::Update-Package-Lists "0"; APT::Periodic::Unattended-Upgrade "0";
либо:
sudo apt remove unattended-upgrades
Дефрагментация HDD:
sudo e4defrag /dev/sda*
Тримминг SSD:
sudo fstrim -av
Оптимизируем потребление процессора, снижая вольтаж
git clone https://github.com/kitsunyan/intel-undervolt && cd intel-undervolt/
sudo ./configure --enable-systemd --enable-openrc
make && sudo make install
sudo systemctl daemon-reload
sudo nano /etc/intel-undervolt.conf
sudo intel-undervolt apply
sudo systemctl enable intel-undervolt
Проверка действующих настроек undervolt:
sudo intel-undervolt read
Для автовыключения компьютера в cron добавляем:
59 06 * * * sudo /sbin/poweroff
Анализ времени загрузки (помогает понять, что мешает/замедляет)
systemd-analyze blame
Запускаем майнинг, сравниваем производительность до и после:
xubuntu 22.04 с отключенным графическим окружением и лишними службами:
Тот же компьютер и майнеры, ubuntu-server 23.04 с отключенными «лишними» службами (на 200 мегабайт меньше загрузка ОЗУ, меньше нагрузка на CPU):
Майнинг на алгоритме minotaurx (desktop сситема с отключенным графическим окружением и «ненужными» службами/программами), хешрейт 2.2-2.7 KH/s:
То же, на подчищенной серверной системе (прирост хешрейта на пару процентов):