カラクリスタ

にゃるら(カラクリスタ)

『輝かしい青春』なんて失かった人。病気療養中の家事手伝い。

今は時々ブログを書いたりプログラミングをして生活しています。

読了まで:約6分

ここのところ寒くなってきたので Coin Mining で暖を取っています

と言う感じなのですが、自分はこうやっているよ、と言う話を一つ。

基本的なマシンの構成と Miner について

私のメインマシンのスペックは 私の PC 環境(2021 年 10 月) に書いてある通りなのですが、 今後の変更した時のために今の状態を記載しておくと、今のところ Mining に関係しそうなスペックは下記の通りです:

  • OS: NixOS
  • CPU: Ryzen 9 3950X
  • GPU: NVIDIA RTX 2060
  • MEM: 128GB

この時点でちょっと金の弾丸が過ぎる様な気はするものの、 壊れない限り当面は維持する予定のスペックなのでそこは良いとして、 基本的にはこのスペックの余剰リソースを使って Coin Mining をしています。

なお CryptoCurrency の Mining には次のオープンソースの Miner を使っていますが、 nsfminer やその前に使っていた ethminer は開発が完了していたり止まっていたりするので、 その辺りは暫定的に、と言う感じです:

どの様に CryptoCurrency Minig を起動しているか

この辺りについては foreman の Go 言語実装である goreman を用いて XMRig と nsfminer を手動で並列実行する様にしており、 かつ sudo 経由でコマンドを実行し CPU や GPU の最適化をすると言う様なことをしています。

ちなみに NVIDIA RTX 2060 の最適化と、Ryzen 9 3950X の最適化については、

に全部コマンドが書いてあったりしますが、一応ここでも書いておくと、 まず Ryzen 9 3950X の msr の最適化は次の通りになっています:

if test -z "$(lsmod | grep msr)"; then
  modprobe msr allow_writes=on
  wrmsr -a 0xc0011020 0
  wrmsr -a 0xc0011021 0x40
  wrmsr -a 0xc0011022 0x1510000
  wrmsr -a 0xc001102b 0x2000cc16
fi

それでこの辺りの msr の最適化については、

を簡略化して突っ込んであるだけで、xmrig の commandline の flags については、次の flag が指定されています:

xmrig \
  --coin monero \
  --donate-level 0 \
  --randomx-1gb-pages \
  --threads 28 \
  -a rx/0 \
  -k --nicehash \
  -o randomxmonero.usa-west.nicehash.com:3380 \
  -p x \
  -u 3QGD7oFMEHH4m8CgLxK1msoJMaB8XA3wGT.NyZen9 \

上記の最適化用 flags の内、--nicehash については nicehash を pool に使っているのために追加していて、 かつメモリが潤沢にあることから --randomx-1gb-pages も指定してある感じですね。

また --threads が 28 なのは、16 Core 32 threads ある Ryzen 9 3950X のスレッドの内、 4 threads ぐらいは残しておかないと PC の動作に支障が出るからです。 と言うより 4 threads でも日常の利用には困らないので、まぁリソース余り過ぎですね。

次に GPU の最適化についてですが、これは services/app/mining のリポジトリ内にもある通り、 下記の様な値が指定されています:

nvidia-smi -pl 125
nvidia-smi -lgc 1250,1250
nvidia-smi -gtt 75

nvidia-settings -a '[gpu:0]/GPUPowerMizerMode=1'
nvidia-settings -a '[gpu:0]/GPUMemoryTransferRateOffset[1]=1600'
nvidia-settings -a '[gpu:0]/GPUMemoryTransferRateOffset[2]=1600'
nvidia-settings -a '[gpu:0]/GPUMemoryTransferRateOffset[3]=1600'
nvidia-settings -a '[gpu:0]/GPUMemoryTransferRateOffset[4]=1600'

なおこの GPU の最適化については過去に Windows 10 上で mining していた時の値や、 実際に値を調整して最適化を図った値なので、 完全に環境依存の固有値です

また nvidia GPU の Clock を linux で弄る様にするためには、 Xorg の Screen セクションに次の値が必要です:

    Option "Coolbits" "28"
    Option "AllowEmptyInitialConfiguration"

あと私は NixOS 使いなので Xorg の設定を容赦なく触れますが、 他の Linux 環境だと下手に Xorg の設定を触ると GUI が死ぬ可能性もあるので、 その辺りは慎重にやりましょう。

以上

ちなみに上記の様な感じで私は Desktop PC を暖房代わりに使っているのですが、 天気が良かったり部屋の換気が疎かだったりすると 余裕で室温が上がりすぎます 。 なのでこの辺りは適宜窓を上けるなどして調整していたりしますね。

また hashrate については、GPU の daggerhashimoto が 29-30 Mh 、 CPU の randomx が 17-20 Kh ぐらいで、フルで一日動かしても収益は 300 円前後なため、 まぁ暖房代ぐらいにはなるのか……? と言う感じになります。なので完全に趣味ですね。

そのため儲けが出るのか? と言われたら 間違いなく出てない ですし、 その Mining で捻出した Bitcoin についても PancakeSwap の Auto CAKE に突っ込んで放置 しているので、 まぁ 完全にポイント増やして喜ぶ遊びになっています 。なので 有り金は突っ込んでません

と言う感じで完全にお遊びで CryptoCurrency Mining をやっていたりしますが、 Mining していると PC がエアコンとか電気ヒーターの代わりぐらいにはなりますよーと言う話でした。 まぁ PC の寿命が縮みそうですけどね。CryptoCurrency Mining は。