Monero bányászat és optimalizáció laptopon


Hozzáadva: 2021. Április 25. Megtekintve: 3006

A monero az egyik kedvenc kriptovalutám, mert a bányászatához nincs szükség őrült összegeket befektetni azért hogy hatalmas bányagépeket építsünk videókártyából. A napokban úgy döntöttem megnézem egy kicsit a monero bányászat lépéseit és megpróbálok fényt deríteni arra, hogy mi viszi a legtöbb időt a bányászat során. Az egészhez az egyik legnépszerűbb bányászt az xmrig-et használtam. Ez jó mind Linuxra, mind Windowsra. A következő néhány sorában be fogom tehát nektek mutatni a Monero bászat rejtelmeit illetve az optimalizációs lehetőségekről is szeretnék írni. Vágjunk is bele!


Az első lépés az xmrig letöltése és feltelepítése volt. A PC-mben jelenleg egy Intel(R) Core(TM) i5-8265U CPU található és ezen a hétköznapokban gyakran használt CPU-n kezdtem el a monero bányászatot. Ebben a processzorban egy 1 MB-os L2 cache és egy 6.0 MB-os L3 cache található. Ebből gondolom nyilvánvaló, hogy a laptopomat nem monero bányászatra találták ki, de ne riadjunk vissza ezektől az apróságoktól. Megpróbáltam tehát felrakni a monero bányászt és megkerestem a sebességmeghatározó lépést.


Első lépésként letöltöttem tehát az xmrig-6.10.0-t a Github és ezt ti is megtehetitek a következő URL segítségével: https://github.com/xmrig/xmrig/releases. Miután leszedtem a forráskódot, követtem a telepítési útmutatót, használtam a cmake és make parancsokat és ezekkel le tudtam fordítani az xmrig-et. A következő lépés volt a monero pénztárca beszerzése, illetve a poolhoz való csatlakozás. Most úgy gondoltam a monerohash.com pool-t fogom használni és ehhez csatlakoztam. Innen már ment is a bányászat, a sebesség azonban nem volt valami lenyűgöző.


Ekkor elkezdtem beleásni magamat a forráskódba, mert meg szerettem volna érteni hogyan működik a RandomX algoritmus és gondoltam ez közelebb fog majd hozni a sebesség problémájához is. Más szavakkal élve, az volt a célom, hogy megtaláljam a kapcsolatot az xmrig-ben történő adatmanipulációs lépések és a miner sebessége között. A jelenlegi monero hashrate-et megtalálhatjátok a következő linken: xmrig.com.


Ha valaki meg szeretné érteni hogyan működik a monero bányász és szeretném egy kicsit kikupálni magát RandomX-ből, akkor a src/crypto/randomx/randomx.cpp forrásfájlt kell olvasgatnia.


Kiderült, hogy a legtöbb időt a virtuális gép inicializálása és futtatása veszi igénybe. Először azt hittem a kriptográfiai függvények lefutása is sokáig tart, azonban kiderült, hogy a futási idő 90%-t az xmrig a virtuális gép macerálásával tölti.


A legrelevánsabb rész itt található: src/crypto/randomx/vm_compiled.cpp. Itt jön létre és indul el a virtuális gép és ez volt az a rész, aminek ki szerettem volna mérni a futásidejét. Egy kicsit átírtam tehát a kódot és a compiler.getProgramFunc() függvényt teszteltem. 10.000 hívás idejét mértem le itt:vm_compiled.cpp 64.so és átlagosan 200µs-ot kaptam egy hívás idejére. Arra következtettem tehát, hogy 200 µs szükséges ahhoz, hogy a Intel(R) Core(TM) i5-8265U CPU processzor a RandomX algoritmus futtatása során elbánjon a virtuális géppel. Az adatokat 1000 hívásra az alábbi ábrán szemléltetem is:


1000 getProgramFunc() függvényhívás és a hozzás szükséges idő mikroszekundumban


Látszik tehát, hogy a getProgramFunc() függvényhívás ideje 200 µs körül fluktuál, de néha 650 µs-ig is felugrik. Azt pontosan nem tudom, hogy ez miért történik, még jobban meg kell vizsgálnom a kódot.


Ha visszamegyünk egy kicsit a randomx.cpp filehoz, láthatjuk, hogy a virtuális gép 8-szor kerül futtatásra egy hash érték kiszámításakor. Szóval ha az összes többi műveletet figyelmen kívül hagyjuk, akkor minden 1200 µs-ban előáll egy hash érték. Ebből következik, hogy a CPU hashrate-je olyan 833 Hs/s körül kellene hogy mozogjon. Vagyis egy kicsit alacsonyabban, mert a többi műveletet is figyelembe kell venni. A lényeg viszont az, hogy a getProgramFunc() hívás a felelős a hashrate kialakulásáért és ha valaki optimalizálni szeretné a monero minert, akkor itt kell keresni a fontos részeket. Ennyi lett volna már. Hamarosan jön a következő poszt! Addig is jó kriptovaluta bányászást. Ha kérdésed van, vagy szeretnél programozni tanulni, akkor Viberen/Whatsapp-on elérsz: +36 30 8316972.


Forrás: Mining and profiling monero on a laptop



Szerző: LB



Figyelem: A bejegyzésben található információk tartalmazhatnak hibát. A szerző az abból eredő károkért nem vállal felelősséget!



Hozzászólások (0)


További hírek