首先,區塊鏈這領域我了解的不多,內容如有錯誤還請指正。最近對於一款對抗ASIC礦機的加密貨幣深感好奇,當初比特大陸曾推出一款專挖XMR的ASIC礦機,但在礦機出貨前XMR的開發者們就直接以硬分叉的方式讓此礦機完全無法使用,這在幣圈是非常罕見的事情,鮮少有開發者願意為了維護加密貨幣的去中心化而不斷修改演算法,且XMR的挖礦演算法是專門為CPU設計,GPU雖然可行,但能耗比完全不及CPU,因此舊電腦都可用來挖XMR,不必為此買顯存大於4GB的顯卡,門檻非常低。
由於XMR並未被ASIC攻陷,所以目前挖XMR仍有辦法獲利,但是並不建議"為了挖礦而買新的設備",XMR吸引人的地方在於其極低的挖礦門檻,以XMRig為例,其支援的架構有:
? CPU:ARM (ARMv8)、AMD64
? GPU:OpenCL (AMD)、CUDA (NVIDIA)
對於CPU架構有點概念的人就會發現ARM竟然也支援!沒錯,只要移動平臺的RAM夠大也是可以挖礦的,不過本文主要聚焦在AMD64上,GPU的部分我沒有測試,因為加上後可能沒辦法打平電費。
先提醒,此文分享的方式可能只適用舊型CPU,因為較舊的CPU L3快取通常都不大,因此無法線程數全開的挖礦,這裡也順便提一下為何會有這個問題,目前XMR使用的演算法為RandomX,單線程需要的L3快取為2MB,以我的 i7-6700HQ 為例,核心規格4C8T,但L3只有6MB,所以最佳算力的線程數為3,而非8線程,一旦使用超過3線程就會頻繁調用CPU外部的記憶體,傳輸速度和延遲的差異會使得算力大幅下降,如果遇到L3快取無法整除的情況該怎麼辦呢?以 i5-3337U 為例,核心規格2C4T,L3為3MB,線程數該設定1還是2呢?答案是2,至於為什麼,我也不知道 ,總之以上是新手使用XMRig最常碰到的問題。
開場介紹了好久,該進入正題啦~請注意,本文都是以 i7-6700HQ 的算力表現為主,並不保證所有的CPU都是如此。原先我以為挖礦一定是Linux的表現最優,但實測後並不一定:
作業系統 | 挖礦工具 | 算力峰值 (H/s) |
Ubuntu 18.04.5 * | XMRig 6.10.0 (bionic) | 172X |
Windows 10 Pro (21H1) ** | XMRig 6.10.0 (gcc) | 170X |
Windows 10 Pro (21H1) ** - 優化後 | XMRig 6.10.0 (gcc) | 1763.9 |
*啟用Huge pages + 1GB huge pages (Linux only)
**啟用Large pages
原先認為Linux會最強是因為它有著1GB huge pages的先天優勢,在修改設定前也確實是Ubuntu表現較好,接下來分享我的優化方式,其實並不複雜,都是非常基礎的設定
1. 關閉所有特效
2. 電源選項 - 終極效能
3. 關閉任何和挖礦不相關的程式 & 服務 (下圖僅舉例)
4. 設定CPU親和性 (重點!)
*單線程設定CPU 0,2線程設定CPU 0、2,依此類推...
這一步大家可能比較好奇有何差別,請看下圖
? 設定前
? 設定後
讓3個物理核心專心的計算,且不使用超線程技術 (例如CPU 1、3、5...)
5. 設定優先順序為"即時"
而做完這些的成果如何呢?
i7-6700HQ算力排行榜最高紀錄:1743.85 H/s (資料來源)
優化後的最高紀錄:1763.9 H/s
另外,前面提到的 i5-3337U 也來分享一下成果
作業系統 | 挖礦工具 | 算力峰值 (H/s) |
Ubuntu 18.04.5 * | XMRig 6.10.0 (bionic) | 723 |
Windows 10 LTSB 2016 ** | XMRig 6.10.0 (gcc) | 69X |
Windows 10 LTSB 2016 ** - 優化後 | XMRig 6.10.0 (gcc) | 725 |
*啟用Huge pages,此CPU不支援1GB huge pages
**啟用Large pages
i5-3337U算力排行榜最高紀錄:646.51 H/s (資料來源)
優化後的最高紀錄:725 H/s
最後來講講還有哪些環節可以改進
1. 使用更精簡的系統,將更多的效能保留給挖礦工具
實際上 i5-3337U 的測試環境已經是使用我自己精簡的系統了,可以看到目前排行榜上的最高紀錄也低於做這些優化設定之前的成績,而i7是我的主力電腦,所以並沒有安裝精簡系統。這裡打個廣告~Win10自製精簡系統歡迎下載使用~
2. 使用Clang自己編譯XMRig
開發者只提到GCC和MSVC的編譯方式,但部分Clang編譯的程式可以比GCC還快,這部分有待研究。
祝各位挖礦順利