Linux E X P R E S

Facebook

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

NVIDIA

Máte-li doma výkonnější počítač, možná jste již přemýšleli o možnosti využít jeho výpočetní síly pro výdělek při těžbě kryptoměny. Co a jak těžit je poměrně složitá otázka. Tento miniseriál se pokusí vás alespoň částečně nasměrovat k možnému výdělku. 


Předmluva

V dnešní době již nemá smysl uvažovat o těžbě Bitcoinu, neboť se zde neobejdete bez specializovaného zařízení dosahujícího výkonu několika Th/s. Mnohem lépe se vám bude dařit při těžbě kryptoměn, které pro výpočty používají sílu grafické karty. Pokud však máte dostatečně výkonný procesor, lze jej také nechat generovat drobný zisk.

Samostatné těžení je nevyzpytatelné. Celé týdny totiž nemusíte generovat žádný zisk, dokud nevytěžíte nějaký blok, za který je lákavá odměna. Vhodnějším způsobem je přihlášení se do poolu, kde je dostatečné množství těžařů a díky společnému výpočetnímu výkonu tak vytěžíte více bloků. Vaše odměna za poskytnutý výkon bude sice malá (podle provedených akceptovaných výpočtů), ale konto začne po čase narůstat.

Software pro těžení je poměrně rozmanitý. V některých případech je potřebná kompilace zdrojových kódů, která však není příliš složitá ani časově náročná. Software je upravován pro různý hardware (AMD, NVIDIA), aby bylo možné dosáhnout nejlepších výsledků. Prozatím jsem se nesetkal s placeným softwarem pro těžbu (vyjma specializované distribuce ethOS), jen v několika případech si vývojáři do zdrojového kódu zadali „mikrotransakci“. Ta v praxi vypadá tak, že při 1% poplatku jde ze 100 minut jedna minuta vašeho těžebního výkonu na konto vývojářů, což se mi osobně líbí, protože tak vývojáři nekomplikovaně obdrží odměnu za svoji práci a může to být i podpora pro budoucí zlepšování softwaru.

Než se začneme zabývat samotnou těžbou doporučuji vám shlédnutí stránek cryptocompare , kde naleznete mnoho informací o kryptoměnách, kurzech, peněženkách, poolech atd. Zde budu popisovat pouze kryptoměny, které jsem příležitostně těžil. Jedná se o Ethereum, Monero, ZCash a za pomoci poolu Nicehash lze prodávat (i nakupovat) výkon za Bitcoiny.

Pro těžbu potřebujete

  • Nový e-mail – není podmínkou, ale doporučuji. Na e-mail přijdou různá upozornění (pokud těžíte v poolu), týkající se nastavení, vypnutí těžby atd. Taktéž se pomocí e-mailu budete registrovat/přihlašovat do různých služeb s kryptoměnou související.

  • Peněženku – výběr by neměl být podceněn. Opět vás nasměruji na stránky cryptocompare. V sekci Wallets naleznete ucelený přehled peněženek včetně recenzí uživatelů. Strojový překlad do češtiny je zde dostačující.

    lokální vs. vzdálená peněženka

    • Oficiální lokální peněženky pro danou kryptoměnu jsou většinou postaveny na veřejně dostupných zdrojových kódech. Je nutná kompilace a na harddisku zabírají dost místa, neboť je nutné synchronizovat lokální data se sítí kryptoměny. Například Zcash lokální peněženka potřebovala pro první synchronizaci cca 10 GB dat. Provedete-li nějakou transakci, promítne se daný transfer (příjem/odeslání) ve vaší lokální peněžence až po dodatečné synchronizaci dat (řádově pak jednotky MB), byť síť kryptoměny onu transakci již provedla.

    • Lokální peněženky třetích stran často umožňují manipulaci s několika kryptoměnami (např. Jaxx). Po nainstalování vám vygenerují adresy pro zvolené kryptoměny a bez nutnosti synchronizace dat se sítí nezabírají na harddisku tolik místa. Nevýhodu takovéto peněženky spatřuji v nutné důvěře v provozovatele serverů pro centrální ověření peněženky. Dojde-li k výpadku takovýchto serverů, nedostanete se ke svým kryptoměnám.

    • Vzdálené peněženky jsou různé webové aplikace, které vytvářejí a spravují peněženky na svých serverech. Těmto se raději vyhněte. Nikdo vám zde nezaručí bezpečnost, nebo dlouhodobou funkčnost. Jsou ale i webové aplikace (např. MyEtherWallet), které vytvoří vše potřebné ve vašem počítači/prohlížeči a web zde hraje roli uživatelského rozhraní pro manipulaci s kryptoměnou. Jednoduše řečeno jde o lokální peněženku s web přístupem. Zde opět platí, dojde-li k výpadku serverů provozovatele, nedostanete se ke svému účtu.

    Zvolíte-li jakoukoli variantu peněženky, je důležité zálohovat data. Klíče, přístupové fráze, hesla je vhodné mít na externím zařízení, pokud možno v šifrované podobě. Při používání oficiální lokální peněženky zvažte i samotnou zálohu synchronizovaných dat (zálohu nemusíte šifrovat, jsou to veřejně dostupná data - historie provedených transakcí na síti).

    Osobně jsem zůstal u kombinace peněženek Jaxx (Bitcoin, Ethereum, Zcash), MyEtherWallet (Ethereum), MyMonero (Monero) a oficiální lokální peněženky pro Zcash. Peněženka Jaxx není vhodná pro zasílání plateb z těžení, ale spíše pro jednorázové platby (mění čísla účtů). Mějte na paměti, že převod mezi peněženkami (z účtu na účet) je za poplatek.

  • Pool pro těžení – výběrem strávíte určitý čas. Každý pool má nějaká pravidla a požaduje poplatky za své služby. Někdy se jedná o nějaké procento z vašeho těžebního času, nebo se poplatek platí z těžené kryptoměny. Důležitá je také minimální výše natěžené kryptoměny pro výplatu. Rovněž se informujte o možnosti těžit na zabezpečené síti SSL/TSL. Tato služba bývá zpoplatněna vyšším procentem, než nezabezpečené připojení.

  • Grafická karta – máte-li jednu, nebo dvě generace starou grafickou kartu s alespoň 2 GB Ram, lze těžit některé kryptoměny. Lépe jsou na tom grafické karty se 4 GB Ram a šířkou paměťové sběrnice nad 128 bitů.

  • Procesor – modernější procesory obsahující AES_NI, AVX, nebo AVX2 dosahují při těžbě některých kryptoměn dobrých výsledků. Pro takovouto těžbu je nutné mít 4 GB Ram (8 GB je vhodnější).

  • Těžební software – odzkoušel jsem většinu volně dostupného těžebního softwaru pro procesor a pro grafické karty firmy NVIDIA. Zmíním se pouze o programech, se kterými bylo na níže uvedené hardwarové konfiguraci dosaženo nejlepších výsledků při těžbě kryptoměn Ethereum, Monero, Zcash a při prodeji výkonu počítače poolu Nicehash za Bitcoiny.

Testovaný hardware a spotřeba

Jelikož nemám přístup k výkoné grafické kartě firmy AMD, veškeré měření probíhalo na kartě od NVIDIA.

  • Ryzen 7 1700 - OC 3,8 GHz (Vcore 1,3 V)

  • Ram 32 GB 2400 MHz (1,2V) - 4x 8 GB Kingston 3333 single rank

  • NVIDIA GTX 1080Ti Strix (1885 MHz jádro, 11010 MHz paměť)

  • NVME disk Samsung 256 GB

  • Linux Mint 18 Cinnamon (Ubuntu 16.04) - jádro 4.12.10

Příkon počítače byl měřen zásuvkovým wattmetrem FKtechnics 3362. Pro přibližnou představu o spotřebě grafické karty NVIDIA jsem narychlo napsal modul pro Conky, který každou vteřinu odebírá data od příkazu nvidia-smi.

Po startu počítače spouštím v terminálu pouze Conky. Považujme tedy takovýto stav za výchozí pro určení spotřeby při těžení kryptoměny. Po třech minutách od startu počítače se příkon ustálí a wattmetr naměřil 62 W. NVIDIA v tuto chvíli škáluje mezi 17 až 22 W (hodnota se v Conky obnovuje po vteřinách), což se na zásuvkovém wattmetru nikterak neprojevuje.

Spuštěním aplikace se příkon na několik vteřin zvedne na 104-123 W (NVIDIA 65 W), ale po několika vteřinách se opět vrátí na, pro nás výchozí, hodnotu 62 wattů, i když při psaní těchto řádků v LibreOffice mám na liště minimalizováno 2x Firefox (15 panelů a 23 panelů), 12x terminál (pro těžbu kryptoměn), 4x správce souborů Nemo. I procházením již načtených panelů ve Firefoxu, příkon počítače málokdy eskaluje do vyšších sfér. V tomto ohledu si myslím, že se CPU i GPU opravdu povedlo.

Těžební software pro kryptoměny

Případná kompilace softwaru není mezi AMD a NVIDIA kartami příliš rozdílná a postup pro dokončení kompilace je na stránkách dotyčného těžebního softwaru dobře popsán. Doporučuji vytvořit v domovském adresáři pro různý těžební software adresář (např: mining – na tento adresář budu v článku odkazovat), kde bude probíhat samotná kompilace a následné spouštění potřebných aplikací.

Monero (těžba s procesorem)

Algoritmus cryptonight použitý u této kryptoměny lze poměrně dobře provozovat na starších grafických kartách a na novějších procesorech dosahuje velmi slušných výsledků.

xmr-stak-cpu

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

Kompilace pro různé linuxové distribuce:

https://github.com/fireice-uk/xmr-stak-cpu/blob/master/LINUXCOMPILE.md

Na výkon optimalizovaná aplikace pro moderní procesory, obsahující přehledné HTML informace o těžbě. Kompilace zdrojových kódů je jednoduchou záležitostí. Před samotnou kompilací je možné ovlivnit výši odměny pro autora kódu, editací souboru donate-level.h, která je v základu 2% z vašeho těžebního výkonu.

Otevřete terminál a postupně zadejte:

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

Kompilaci a instalaci máte hotovou. V novém adresáři bin naleznete samotnou těžební aplikaci a její konfigurační soubor. První spuštění aplikace nám pomůže s nastavením. Pokračujte zadáním v terminálu.

cd bin
./xmr-stak-cpu

Výstup aplikace bude podobný následujícímu textu.

The configuration for 'cpu_threads_conf' in your config file is 'null'.
The miner evaluates your system and prints a suggestion for the section `cpu_threads_conf` to the terminal.
The values are not optimal, please try to tweak the values based on notes in config.txt.
Please copy & paste the block within the asterisks to your config.


**************** Copy&Paste BEGIN ****************

"cpu_threads_conf" :
[
    { "low_power_mode" : false, "no_prefetch" : true, "affine_to_cpu" : 0 },
    { "low_power_mode" : false, "no_prefetch" : true, "affine_to_cpu" : 2 },
    { "low_power_mode" : false, "no_prefetch" : true, "affine_to_cpu" : 4 },
    { "low_power_mode" : false, "no_prefetch" : true, "affine_to_cpu" : 6 },
    { "low_power_mode" : false, "no_prefetch" : true, "affine_to_cpu" : 8 },
    { "low_power_mode" : false, "no_prefetch" : true, "affine_to_cpu" : 10 },
    { "low_power_mode" : false, "no_prefetch" : true, "affine_to_cpu" : 12 },
    { "low_power_mode" : false, "no_prefetch" : true, "affine_to_cpu" : 14 },
],

**************** Copy&Paste END ****************

Nyní si otevřete soubor config.txt. Nejprve vyhledejte a upravte tyto řádky podle skutečnosti.

"pool_address" : "pool.usxmrpool.com:3333",
"wallet_address" : "",
"pool_password" : "",

Pro příklad. Takto vypadá mé nastavení (adresa je zkrácena) pro těžbu na Nanopool.org.

"pool_address" : "xmr-eu1.nanopool.org:14444",
"wallet_address" : "44xxxxxxxxxxx.56yyyyyyyyyy.CPU8/zzzzzzzz@gmail_com",
"pool_password" : "x",

Adresa peněženky pro tento pool se zadává ve formátu:

adresa_peněženky.platební_ID.název_stroje/email

Platební ID je tímto poolem doporučen, ale lze jej vynechat. Na uvedený e-mail vám budou chodit zprávy o vypnutí těžby a také s jeho pomocí můžete určovat výši vyplácení natěžené kryptoměny z poolu do vaší peněženky.

Pro službu NiceHash je nastavení těchto řádků rozdílné.

"pool_address" : "cryptonight.eu.nicehash.com:3355",
"wallet_address" : "3Bxxxxxxxxxx.CPU8",
"pool_password" : "x",

U tohoto poolu, kde prodáváte výkon pro počítání různých kryptoměn se zadává místní (službou NiceHash přidělená) adresa peněženky pro Bitcoin. E-mail je v adrese peněženky vynechán, neboť na službu samotnou se zadáním e-mailové adresy přihlašujete.

Chcete-li využívat služby NiceHash za pomoci prodeje výkonu cpu při počítání algoritmu cryptonight (což se momentálně vůbec nevyplatí, nejen kvůli skokovému zvýšení hodnoty Bitcoinu), je potřeba v konfiguračním souboru změnit jeden řádek navíc.

"nicehash_nonce" : false,

změňte na

"nicehash_nonce" : true,

Změna dalších nastavení je na vašem zvážení. Jen upozorním na tyto:

"daemon_mode" : false, - hodnota true spustí aplikaci na pozadí
"output_file" : "", - název souboru pro ukládání veškerého dění
"httpd_port" : 15000, - vyplněním portu si zpřístupníte přehledné HTML informace

Nyní nastal čas vrátit se k nastavení toho nejdůležitějšího. Počtu počítajících vláken procesoru pro těžbu. První spuštění aplikace nám doporučilo nastavení, které zatíží 8 jader procesoru. Při nastavení doporučuji nepřekračovat počet fyzických jader procesoru.

Ryzen 7 má 8 jader, ale je schopno pracovat s 16 vlákny (u Intelu je to obdobné). Pokud však nastavíte pro výpočty více vláken, než je jader procesoru, dojde ke snížení výkonu provedených hashů/s. I při zatížení 8 jader (vláken) je běžná práce s počítačem (internet, dokumenty, přehrávání audia/videa) stále na komfortní úrovni díky zbylým vláknům (dokud nepřistupují k instrukcím AES_NI,AVX,AVX2).

Změňte tedy řádky

"cpu_threads_conf" : 
null,

na doporučené nastavení

"cpu_threads_conf" : 
[
    { "low_power_mode" : false, "no_prefetch" : true, "affine_to_cpu" : 0 },
    { "low_power_mode" : false, "no_prefetch" : true, "affine_to_cpu" : 2 },
    { "low_power_mode" : false, "no_prefetch" : true, "affine_to_cpu" : 4 },
    { "low_power_mode" : false, "no_prefetch" : true, "affine_to_cpu" : 6 },
    { "low_power_mode" : false, "no_prefetch" : true, "affine_to_cpu" : 8 },
    { "low_power_mode" : false, "no_prefetch" : true, "affine_to_cpu" : 10 },
    { "low_power_mode" : false, "no_prefetch" : true, "affine_to_cpu" : 12 },
    { "low_power_mode" : false, "no_prefetch" : true, "affine_to_cpu" : 14 },
],

Uložte provedené změny v konfiguračním souboru a v terminálu znovu spusťte aplikaci. Pokud jste správně vyplnily údaje o poolu, bude následovat podobný výpis událostí.

./xmr-stak-cpu 
[2017-10-24 19:38:51] : MEMORY ALLOC FAILED: mmap failed
[2017-10-24 19:38:51] : MEMORY ALLOC FAILED: mmap failed
-------------------------------------------------------------------
xmr-stak-cpu 1.3.0-1.5.0 mining software, CPU Version.
Based on CPU mining code by wolf9466 (heavily optimized by fireice_uk).
Brought to you by fireice_uk and psychocrypt under GPLv3.

Configurable dev donation level is set to 2.0 %

You can use following keys to display reports:
'h' - hashrate
'r' - results
'c' - connection
-------------------------------------------------------------------
[2017-10-24 19:38:51] : Starting single thread, affinity: 0.
[2017-10-24 19:38:51] : Starting single thread, affinity: 2.
[2017-10-24 19:38:51] : Starting single thread, affinity: 4.
[2017-10-24 19:38:51] : Starting single thread, affinity: 6.
[2017-10-24 19:38:51] : Starting single thread, affinity: 8.
[2017-10-24 19:38:51] : Starting single thread, affinity: 10.
[2017-10-24 19:38:51] : Starting single thread, affinity: 12.
[2017-10-24 19:38:51] : Starting single thread, affinity: 14.
[2017-10-24 19:38:51] : Connecting to pool xmr-eu1.nanopool.org:14444 ...
[2017-10-24 19:38:51] : hwloc: memory pinned
[2017-10-24 19:38:51] : MEMORY ALLOC FAILED: mmap failed
[2017-10-24 19:38:51] : hwloc: memory pinned
[2017-10-24 19:38:51] : MEMORY ALLOC FAILED: mmap failed
[2017-10-24 19:38:51] : hwloc: memory pinned
[2017-10-24 19:38:51] : MEMORY ALLOC FAILED: mmap failed
[2017-10-24 19:38:51] : hwloc: memory pinned
[2017-10-24 19:38:51] : MEMORY ALLOC FAILED: mmap failed
[2017-10-24 19:38:51] : hwloc: memory pinned
[2017-10-24 19:38:51] : MEMORY ALLOC FAILED: mmap failed
[2017-10-24 19:38:51] : hwloc: memory pinned
[2017-10-24 19:38:51] : MEMORY ALLOC FAILED: mmap failed
[2017-10-24 19:38:51] : hwloc: memory pinned
[2017-10-24 19:38:51] : MEMORY ALLOC FAILED: mmap failed
[2017-10-24 19:38:51] : hwloc: memory pinned
[2017-10-24 19:38:51] : MEMORY ALLOC FAILED: mmap failed
[2017-10-24 19:38:51] : Connected. Logging in...
[2017-10-24 19:38:51] : Difficulty changed. Now: 120001.
[2017-10-24 19:38:51] : New block detected.
[2017-10-24 19:39:12] : New block detected.
[2017-10-24 19:39:20] : New block detected.
[2017-10-24 19:40:13] : New block detected.
[2017-10-24 19:41:12] : New block detected.
[2017-10-24 19:41:32] : Result accepted by the pool.
[2017-10-24 19:41:36] : Result accepted by the pool.
[2017-10-24 19:42:13] : New block detected.
[2017-10-24 19:42:29] : Result accepted by the pool.
HASHRATE REPORT
| ID | 2.5s | 60s | 15m | ID | 2.5s | 60s | 15m |
| 0 | 50.7 | 51.2 | (na) | 1 | 50.9 | 51.8 | (na) |
| 2 | 46.1 | 48.9 | (na) | 3 | 50.0 | 46.8 | (na) |
| 4 | 56.1 | 55.4 | (na) | 5 | 58.3 | 57.6 | (na) |
| 6 | 50.4 | 51.6 | (na) | 7 | 52.0 | 46.0 | (na) |
-----------------------------------------------------
Totals: 414.5 409.3 (na) H/s
Highest: 416.7 H/s

Klávesou h si zobrazíte výkon ve výpočtech. Pokud jste vyplnily v konfiguračním souboru číslo portu u položky "httpd_port" , můžete se ve svém internetovém prohlížeči podívat na výkon zadáním localhost:číslo_portu.

Chybového hlášení (MEMORY ALLOC FAILED: mmap failed) si prozatím nevšímejte. Je to tak v pořádku. Většího výkonu jsem dosáhl při drobné změně konfiguračního souboru (např. u Intelu i7-3840QM se změna neprojevila).

Změnou řádků na

"cpu_threads_conf" : 
[
    { "low_power_mode" : false, "no_prefetch" : true, "affine_to_cpu" : 0 },
    { "low_power_mode" : false, "no_prefetch" : true, "affine_to_cpu" : 1 },
    { "low_power_mode" : false, "no_prefetch" : true, "affine_to_cpu" : 2 },
    { "low_power_mode" : false, "no_prefetch" : true, "affine_to_cpu" : 3 },
    { "low_power_mode" : false, "no_prefetch" : true, "affine_to_cpu" : 4 },
    { "low_power_mode" : false, "no_prefetch" : true, "affine_to_cpu" : 5 },
    { "low_power_mode" : false, "no_prefetch" : true, "affine_to_cpu" : 6 },
    { "low_power_mode" : false, "no_prefetch" : true, "affine_to_cpu" : 7 },
],

bylo dosaženo, byť o pár jednotek, vyššího počtu hashů/s.

HASHRATE REPORT
| ID | 2.5s | 60s | 15m | ID | 2.5s | 60s | 15m |
| 0 | 52.9 | 52.7 | (na) | 1 | 53.1 | 53.0 | (na) |
| 2 | 54.1 | 53.9 | (na) | 3 | 51.8 | 51.1 | (na) |
| 4 | 51.5 | 51.2 | (na) | 5 | 55.8 | 55.7 | (na) |
| 6 | 52.8 | 52.6 | (na) | 7 | 51.2 | 50.6 | (na) |
-----------------------------------------------------
Totals: 423.2 420.7 (na) H/s
Highest: 423.1 H/s

Výkon to není špatný, ale může být mnohem lepší. Nyní se totiž budeme zabývat chybovým hlášením MEMORY ALLOC FAILED: mmap failed při startu aplikace. Zmíněná chyba značí nedostatečnou (žádnou) alokaci velkých stránek (v podstatě jde o iluzi souvislého prostoru pro procesy v paměti).

Řešení je možné trvalé, editací souboru /etc/sysctl.conf , nebo dočasně dostupné (do restartu) pomocí příkazu. Preferuji dočasný způsob, který spočívá v úpravě souboru /etc/security/limits.conf.

V terminálu zadejte (za xed si dosaďte preferovaný/dostupný textový editor vaší distribuce):

sudo xed /etc/security/limits.conf

a doplňte následující řádky před řádek # End of file

* soft memlock 262144
* hard memlock 262144

Soubor uložte a restartujte počítač. Po restartu si opět otevřete terminál a alokujte potřebné stránky paměti příkazem:

sudo sysctl -w vm.nr_hugepages=128

Nyní zbývá zadat:

cd mining/xmr-stak-cpu/bin
./xmr-stak-cpu

Chybové hlášení se již nezobrazuje a výkon při výpočtech si v mém případě vede takto.

HASHRATE REPORT
| ID | 2.5s | 60s | 15m | ID | 2.5s | 60s | 15m |
| 0 | 73.3 | 73.2 | (na) | 1 | 70.5 | 70.0 | (na) |
| 2 | 70.3 | 70.0 | (na) | 3 | 71.1 | 70.1 | (na) |
| 4 | 73.8 | 73.3 | (na) | 5 | 73.7 | 73.4 | (na) |
| 6 | 73.7 | 73.4 | (na) | 7 | 70.8 | 70.1 | (na) |
-----------------------------------------------------
Totals: 577.3 573.7 (na) H/s
Highest: 587.1 H/s

Další nárůst výkonu je měřitelný při vyšším taktu pamětí. Výsledek kolem 580 H/s je při taktu pamětí 2400 MHz (1,2 V). Zvýšením taktu na 2933 MHz (1,35 V) se lze dostat k 610 H/s, ale také o několik Wattů stoupne spotřeba.

Dlouhodobý provoz hardwaru při takovém zatížení, může jednotlivé komponenty počítače poškodit, obzvlášť pokud teplota dosahuje stropu nastaveného výrobcem. V tomto případě se díky chladiči Arctic Freezer 33Plus nedostane teplota procesoru nad 50° C (48° C při dvoudenní zátěži 16 vlákny).

Závěr

Tento díl je u konce. Těžba pomocí procesoru je zde uvedena záměrně pro budoucí posouzení výkonu s grafickou kartou NVIDIA. Příště si projdeme instalací ovladačů pro grafické karty NVIDIA a nainstalujeme nejnovější CUDA 9.0 ovladače pro výpočty. Z kryptoměn budeme pokračovat u Monera a Zcash.



Diskuze (0) Nahoru