Linux E X P R E S

Facebook

Těžba kryptoměn s Linuxem a kartou NVIDIA (2)

NVIDIA

Pokračování o těžbě kryptoměn začne instalací nejnovějších ovladačů pro grafické karty NVIDIA. Poté se podíváme na možnosti těžby Monera a Zcash. Je před vámi více práce než minule. Tak se nezdržujme a jdeme těžit.


Instalace CUDA 8.0/9.0 a ovladače NVIDIA

Nemáte-li v systému grafickou kartu řady 10x0, není pro vás následující návod na instalaci ovladačů CUDA 9.0 potřebný. V distribuci Mint18 (Ubuntu 16.04, Debian 8) je k dispozici CUDA 7.5, která je pro kompilaci těžebního softwaru dostatečná.

Ovladače CUDA 8.0 mírně zlepšují výkon, ale především podporují GPU řady Pascal (10x0). Tuto verzi ovladačů se mi již nepodařilo z oficiálních stránek stáhnout, protože je zde dostupná „pouze“ novější verze 9.0.

Navštivte oficiální stránky https://developer.nvidia.com/cuda-downloads , kde si naklikáte potřebnou verzi pro váš systém (doporučuji lokální deb balíček). Pro Mint 18 je to následovně: Linux – x86_64 – Ubuntu – 16.04 – deb (local)

NVIDIA ovladače (terminál)

Nejprve zjistíme instalovanou verzi ovladače příkazem:

nvidia-smi

Zjistíme dostupnost nových verzí ovladače:

sudo apt-get update
sudo apt-get install nvidia- (nemačkejte Enter, ale 2x Tab pro výpis verzí)

Pokud se vám instalovaná verze liší od dostupné, můžete několika příkazy aktualizovat (pro GPU 1050/1050Ti potřebujete verzi min. 375.10).

sudo apt-get install build-essential
sudo apt-get install linux-headers-$(uname -r)

Jestli se vám nedaří instalovat hlavičkové soubory jádra (linux-headers-$(uname -r)) pro verzi vašeho jádra (např. používáte odlišnou distribuci), nepokračujte v zadávání následujících příkazů dokud do svého systému nedostanete hlavičkové soubory pro právě běžící jádro.

sudo apt-get purge nvidia* (odstraní i CUDA ovladače)
sudo apt-get autoremove
sudo apt-get install nvidia-settings nvidia-xxx* (místo xxx doplňte číslo verze)

Nakonec restartujte počítač příkazem:

sudo reboot

CUDA 9.0 ovladače (terminál)

Příkazem cd se v terminálu přesuňte do adresáře, kde se nachází stažený deb balíček pro CUDA 9.0 a nainstalujte zadáním příkazu (název balíčku zadejte podle skutečnosti) :

sudo dpkg -i cuda-repo-ubuntu1604-9-0-local_9.0.176-1_amd64.deb
sudo apt-key add /var/cuda-repo-9-0-local/7fa2af80.pub
sudo apt-get update
sudo apt-get install cuda

Nyní potřebujete vytvořit soubor pro nasměrování aplikací na novou verzi CUDA. Za xed si doplňte vámi používaný editor.

sudo xed /etc/profile.d/cuda.sh

Vložte následující dva řádky a uložte soubor.

export PATH=/usr/local/cuda-9.0/bin${PATH:+:${PATH}}
export LD_LIBRARY_PATH=/usr/local/cuda-9.0/lib64${LD_LIBRARY_PATH:+:${LD_LIBRARY_PATH}}

Po restartu ( sudo reboot ) budou aplikace využívající CUDA ovladač, používat novou verzi.

Monero (těžba s NVIDIA)

xmr-stak-nvidia

https://github.com/fireice-uk/xmr-stak-nvidia

Tak jako minule popisovaná aplikace pro těžení pomocí procesoru, poskytuje xmr-stak-nvidia přehledné HTML informace o těžbě. Kompilace zdrojových kódů se trochu liší, ale je stejně jednoduchou záležitostí. Opět můžete před samotnou kompilací ovlivnit výši odměny pro autora kódu, editací souboru donate-level.h.

Otevřete terminál a postupně zadejte:

mkdir ~/mining
cd mining
sudo apt-get install git libmicrohttpd-dev libssl-dev cmake cmake-curses-gui build-essential
git clone https://github.com/fireice-uk/xmr-stak-nvidia
xmr-stak-nvidia
cmake .

Než dokončíte kompilaci je vhodné nastavit verzi CUDA architektury. Jakou verzi používá vaše grafická karta zjistíte na https://developer.nvidia.com/cuda-gpus. GPU Pascal používá verzi 6.1. Nyní tedy provedete dodatečné nastavení pro kompilaci.

ccmake .

Klávesou Enter editujete řádky. Až budete mít vše potřebné upraveno, stiskem c provedete konfiguraci a stiskem g vygenerujete soubor pro kompilaci.

Upravte řádek CUDA_ARCH a ponechejte tam pouze číslo odpovídající verzi CUDA-GPU, které jste na výše uvedených stránkách zjistily (pro Pascal GPU - 61).

Dokončete kompilaci zadáním:

make install

Tak jako u verze pro procesor, vznikl adresář bin s aplikací a konfiguračním souborem. Úpravu konfiguračního souboru jsem probral již minule, proto se zde zaměřím pouze na nastavení pro GPU. První spuštění aplikace napoví, jak si parametry pro výpočty nastavit.

cd bin
./xmr-stak-nvidia

Můžete použít doporučené nastavení a vyzkoušet dosaženého výkonu. Pokusím se vám vysvětlit, jak toto nastavení funguje. Důležitými parametry jsou threads a blocks.

  • blocks - hodnota by měla odpovídat počtu nebo násobku počtu multiprocesorů v GPU

  • threads - hodnota určující počet počítajících vláken na blocks (jeden multiprocesor)

Pro Pascal GPU naleznete počet multiprocesorů (sloupec SM Count) na https://en.wikipedia.org/wiki/GeForce_10_series. Rovnou vám prozradím, že pro parametr threads nemá smysl zadávat hodnotu větší než 128, protože více CUDA jednotek v multiprocesoru u Pascal architektury není.

Pro výpočet potřebné paměti slouží vzorec threads * blocks * 2 = MB Ram. Pokud pro 1080Ti použiji následující různá nastavení, mělo by se to projevit na výkonu. No, projeví se to jen na obsazené paměti grafické karty. Výkon je velmi podobný, spíš jde o odchylku v měření.

  • "threads" : 128, "blocks" : 28, ( výpočet 7168MB / nvidia-smi 7329MiB) – 766 H/s

  • "threads" : 64, "blocks" : 56, ( výpočet 7168MB / nvidia-smi 7329MiB) – 768 H/s

  • "threads" : 80, "blocks" : 56, ( výpočet 8960MB / nvidia-smi 9121MiB) – 765 H/s

Zcash

Je založený na algoritmu Equihash, který je energeticky náročnější než cryptonight (Monero). Zcash používá dva druhy adres pro manipulaci s kryptoměnou. Veřejnou t-adresu (36 znaků) a soukromou, před ostatními skrytou z-adresu (96 znaků).

Následující kompilace zdrojových kódů vám vytvoří lokální peněženku a cpu miner. Lokální peněženka potřebuje synchronizovat data se sítí (veškeré transakce), což obnáší stažení cca 10GB dat. Samotná peněženka však zabírá řádově kB a je jednoduché ji zálohovat. Získáte tak kontrolu nad klíči a vlastní z-adresu, kterou (možná prozatím) jiné služby nezvládají spravovat.

Otevřete terminál a instalujte potřebné balíky.

sudo apt-get install build-essential pkg-config libc6-dev m4 g++-multilib autoconf libtool ncurses-dev unzip git python python-zmq zlib1g-dev wget bsdmainutils automake

Pro distribuce založené na Fedoře, RHEL se instalují jiné balíky. Potřebné informace naleznete na

https://github.com/zcash/zcash/wiki/1.0-User-Guide. Uživatelé Mintu, Ubuntu, Debianu pokračujte v zadávání příkazů.

mkdir mining
cd mining
git clone https://github.com/zcash/zcash.git
cd zcash
git checkout v1.0.12
./zcutil/fetch-params.sh

Zadáním posledního příkazu se stáhnou dva soubory (sprout-proving.key a sprout-verifying.key) o velikosti 911MB, které naleznete v adresáři ~/.zcash-params. Již vás čeká jen sestavení a případný test aplikace, pomocí příkazu:

./zcutil/build.sh --disable-rust -j$(nproc)

Po několika minutách se zkompilují potřebné aplikace pro manipulaci se Zcash kryptoměnou. Dalším krokem by mělo být otestování aplikace. Tato operace potřebuje 8GB Ram a poněkud déle trvá, byť vytěžuje všechna dostupná vlákna procesoru.

./qa/zcash/full-test-suite.sh

Konfigurace - Zcash

Posledním krokem je vytvoření konfiguračního souboru. V novém adresáři ~/.zcash (toto můžete provést v jiném terminálu než se dokončí kompilace, nebo případný test aplikace).

mkdir ~/.zcash
echo "addnode=mainnet.z.cash" > ~/.zcash/zcash.conf
echo "rpcuser=username" >> ~/.zcash/zcash.conf
echo "rpcpassword=`head -c 32 /dev/urandom | base64`" >> ~/.zcash/zcash.conf

V tento moment obsahuje konfigurační soubor naprosté minimum pro provoz. Dále lze v tomto souboru nastavit možnost těžení procesorem pro vestavěnou aplikaci. Pokud tak chcete učinit, přidejte do konfiguračního souboru další dva řádky.

echo 'gen=1' >> ~/.zcash/zcash.conf
echo "genproclimit=2" >> ~/.zcash/zcash.conf

Hodnota 2 u parametru genproclimit určuje počet vláken zabývající těžbou. Již v minulém díle jsem upozorňoval na snížení výkonu při vytížení procesoru vícero vlákny, než je jeho skutečný počet fyzických jader.

Rozhodně by nemělo být opomenuto zálohování lokální peněženky do jiného adresáře (lépe na médium mimo počítač). Zálohovat lze také pouhým zkopírováním souboru ~/.zcash/wallet.dat.

echo "exportdir=$HOME/zaloha_dat/zcash" >> ~/.zcash/zcash.conf

První spuštění - Zcash

Přesuňte se do terminálu, kde jste kompilovali a případně testovali aplikaci a spusťte ji příkazem.

./src/zcashd

Po chvilce začne synchronizace dat s vaší lokální peněženkou, která se prvním spuštěním vytvořila.

Aplikace zcashd musí být spuštěna vždy, pokud chcete provádět transakce nebo získat informace o účtech ve vaší lokální peněžence.

Nyní si otevřete jiný terminál a přesuňte se do adresáře zcash (v našem případě do ~/mining/zcash), kde si založíme potřebná čísla účtů.

cd ~/mining/zcash/ 
./src/zcash-cli getnewaddress

Zobrazí se vám číslo t-adresy podobný v tomto formátu.

t1NYGuFV8mmm2MP189NqCGZErraRw2VasmK

./src/zcash-cli z_getnewaddress

Získáte číslo z-adresy.

zcZrSjUen1wC2YEQ8dnn3zGLreTyzjFDrnWFwEfy8rNKJqaGmxrMAkqXobfqYut8U8gVUnAxRygt72mFj7tghSQd6paWKFN

Adres si můžete později vygenerovat vícero. Pro zobrazení všech adres poslouží následující příkazy.

./src/zcash-cli getaddressesbyaccount ""
[
  "t1NYGuFV8mmm2MP189NqCGZErraRw2VasmK",
  "t1NdaBD256GoRBVB5TqxcALBX663c9JKc7Z"
]
./src/zcash-cli z_listaddresses
[
"zcZrSjUen1wC2YEQ8dnn3zGLreTyzjFDrnWFwEfy8rNKJqaGmxrMAkqXobfqYut8U8gVUnAxRygt72mFj7tghSQd6paWKFN"
]

Jistě jste postřehli, že máte dvě t-adresy. Jednu vám totiž vytvořil cpu miner obsažený v aplikaci. Nemusíte se tím trápit, protože používat můžete všechny vám dostupné adresy. Zůstatek na vašich účtech si zobrazíte příkazem:

./src/zcash-cli z_gettotalbalance

{
  "transparent": "0.00",
  "private": "0.00",
  "total": "0.00"
}

Celkem máte v počítači vytvořeny tři adresáře související se zcash. Nejdůležitějším souborem je vaše peněženka (~/.zcash/wallet.dat). Zálohovat peněženku mimo počítač je důležité, protože její poškození/ztráta znemožní přístup k účtům. Zvažte však možnost zálohovat obsah všech adresářů pro zcash, protože se tak v budoucnu při obnově dat vyhnete nutnosti kompilace a velkého přenosu dat při synchronizaci dat se sítí.

  • Adresář ~/mining/zcash obsahuje kompilované aplikace nejen pro práci s peněženkou (2,7 GB).

  • Adresář ~/.zcash obsahuje peněženku a veškerá synchronizovaná data sítě zcash (8,9 GB).

  • Adresář ~/.zcash-params obsahuje soubory klíčů pro ověření (1 GB).

GUI pro Zcash peněženku

https://github.com/vaklinov/zcash-swing-wallet-ui

Ovládání svých účtů z příkazového řádku není pro uživatele příliš přívětivé. Existují však grafická rozhraní, která vám správu účtů ulehčí. Na stránce https://zcashblog.wordpress.com/zcash-gui-wallets/ naleznete několikero grafických rozhraní. Popíši zde instalaci Java GUI Zcash Swing u kterého jsem zůstal i přes jeden, pro někoho zásadní, nedostatek. Neumí Hi-DPI u vyššího rozlišení (ve 4k je GUI titěrné).

Otevřete terminál a jdeme na instalaci.

cd ~/mining
sudo apt-get install git default-jdk ant
git clone https://github.com/vaklinov/zcash-swing-wallet-ui.git
cd zcash-swing-wallet-ui
ant -buildfile ./src/build/build.xml
chmod u+x ./build/jars/ZCashSwingWalletUI.jar

Nakonec zkopírujte aplikaci do adresáře, kde se nacházejí zcash-cli a zcashd.

cp ./build/jars/ZCashSwingWalletUI.jar ~/mining/zcash/src

Spuštění GUI - terminál

java -jar ~/mining/zcash/src/ZCashSwingWalletUI.jar

Spuštění GUI - spouštěč na ploše

Příkaz: java -jar "absolutní_cesta_k_/zcash/src/ZCashSwingWalletUI.jar"

Není nutné zaškrtnutí - Spustit v Terminálu?

Pokud máte na pozadí spuštěnou aplikaci zcashd, GUI využije jejího běhu a při svém ukončení nechá zcashd stále běžet na pozadí. V případě, že zcashd není spuštěno, GUI si jej spustí a při svém ukončení regulérně ukončí i jím spuštěné zcashd.

Těžba Zcash kryptoměny

U následujícího softwaru pro těžbu Zcash, není nutná kompilace. Tak jako u algoritmu cryptonight, i zde uvedu příklad použití těžby na procesoru a grafické kartě. Rovnou vám prozradím, že těžit Zcash na procesoru je výkonnostně katastrofální a není životaschopné.

nheqminer 0.5c

https://github.com/nicehash/nheqminer/releases

Obsahuje nástroje pro těžení pomocí CPU i GPU (CUDA). GPU část aplikace nedosahuje výkonu jako jiné aplikace, ale CPU část je využitelná (alespoň jako dlouhodobý test zátěže) díky optimalizaci na AVX, AVX2.

Stažený archiv rozbalte (např. do adresáře mining), otevřete terminál a zadejte:

cd ~/mining
chmod +x nheqminer_16_04
./nheqminer_16_04 -h

Posledním příkazem se vám vypíše nápověda k aplikaci. Chcete-li zkusit ostrý provoz, upravte zadané parametry podle skutečnosti. Zde je ukázka rozdílu nastavení pro pooly NiceHash (Bitcoin) a Nanopool (Zcash).

Příklad nastavení pro NiceHash na 4 vlákna procesoru.

./nheqminer_16_04 -l equihash.eu.nicehash.com:3357 -u 3Bxxxxxxxxxxx.cpu4x -p x -t 4

Příklad nastavení pro Nanopool na 4 vlákna procesoru.

./nheqminer_16_04 -l zec-eu1.nanopool.org:6666 -u t1xxxxxxxxx.cpu4x/zzzzz@gmail_com -p x -t 4

Výkonnostní rozdíl u počtu počítajících vláken.

4 = 17 – 20 Sol/s
8 = 28 – 31 Sol/s
12 = 31 – 36 Sol/s
16 = 33 – 36 Sol/s

EWBF's Zcash CUDA miner 0.3.4b

https://github.com/nanopool/ewbf-miner/releases

V současné době aplikace, podávající na grafických kartách NVIDIA nejlepší výkon. Za tento výkon platíte 2% z vašeho času při těžbě ve prospěch vývojářů. Bohužel, zdrojové kódy se mi nepodařilo dohledat.

Stažený archiv rozbalte (např. do adresáře mining/zec-miner). Po rozbalení upravte soubor start.sh. Opět přikládám příklad nastavení pro NiceHash a Nanopool

./miner --server equihash.eu.nicehash.com --user 3Bxxxxxxxxx.GPU --pass z --port 3357 --api 127.0.0.1:12000 --intensity 64
./miner --server zec-eu1.nanopool.org --user t1xxxxxxxxx.GPU/zzzzzz@gmail_com --pass z --port 6666 --api 127.0.0.1:12000 --intensity 64

S parametrem --api 127.0.0.1:12000 si ve svém webovém prohlížeči můžete shlédnout statistiky těžby zadáním adresy localhost:12000.

Změněný soubor poté spustíte v terminálu.

cd ~/mining/zec-miner
bash start.sh 

Závěr

Snad se vám vše podařilo, když jste došli až k těmto řádkům. Příští, již poslední díl nebude tak výživný, protože pro Ethereum, kterým se budeme zabývat, není nutná kompilace softwaru. Také ale budu rekapitulovat výkon, spotřebu a možný výdělek s tím spojený. A zkusíme přetaktování grafické karty NVIDIA.

Diskuze (3) Nahoru