GPU監視ツールを自作してみよう(その3)β版作成
ビットコインFXのチャートを予想しながら覗いていましたが難しいですね。
またしても、「上がる!」と思って買いに走ったら相場が1万ほど下がりました。
そして、そのまま損益(表示)が-2000円に・・・。
本日も残り30分切ったので今日の取引は諦めモード。
損切りするよりは・・・と思っていたら本記事をUPする直前に相場が戻った!(1時間くらいかけて)
売却売却~♪
なんだかんだで損益が+1,400円になりました。
元本が1万からなのでまぁまぁかな?
さて、監視ツールがようやく形になりました。
といっても、WindowsPowerShell ISEで実行しただけですが。
実際にスクリプトとして動かすには権限変更とか必要なのでもう一息です。
以下、ソース。
# 変数宣言
$script:gpuCount=[int]8 #GPU枚数(刺してる総数)
$script:gpuClockBorder=[int]1000 #GPUClockの境界値(左未満は仕事してないとみなす)
$script:isErr=$false
$script:interval_nomal = 60 #1分間隔で監視
$script:interval_worning = 1 #動いていない場合は監視の間隔を変更
$script:worning_count=0
# miner関係
$script:miner = 'NiceHash Miner 2'
$script:miner_dir = "<マイニングツールを配置しているパス>"
$script:miner_exe = "NiceHash Miner 2.exe"
#---------------------------------------------------
# Function定義
#---------------------------------------------------
# マイニングアプリの起動
function ChkApl {
Get-Process -name $miner
if (!$?) {
# フォルダ移動
Set-Location -Path $miner_dir
# miner起動
Start-Process -FilePath $miner_exe
# 起動後は1分待つ
Start-Sleep -s 60
}
}
# CPU数の確認
function ChkGpuCount {
$private:ret = $true
$private:listData=.\nvidia-smi.exe --query-gpu=count --format=csv,noheader
foreach($rowData in $listData) {
$getCount=[int]$rowData
#稼働中のGPU数確認
if (-not($gpuCount -eq $getCount)) {
#GPUを全て認識していない場合、エラー
$ret = $false
}
# 1行目確認したら終了
break
}
return $ret
}
# GPU Clockの確認
function ChkGpuClock {
$private:ret = $true
$private:count = [int]0
$private:listData=.\nvidia-smi.exe --query-gpu=clocks.gr --format=csv,noheader
$isWorning = $false
foreach($rowData in $listData) {
$private:count = $count + 1
# クロック数が設定以下ならエラー
$rowData = $rowdata.Replace("MHz","").trim()
$gpuClock = [int]$rowData
if ($gpuClock -lt $gpuClockBorder) {
Write-Host $gpuClock
$ret = $false
}
}
# GPU枚数の確認
if (!($count -eq $gpuCount)) {
$ret = $false
}
return $ret
}
# ログ出力用
function OutGpuLog {
.\nvidia-smi.exe --query-gpu=timestamp,count,gpu_uuid,clocks.gr,utilization.gpu --format=csv
}
#---------------------------------------------------
# Main処理
#---------------------------------------------------
# コンソールのエラー表示:OFF
$ErrorActionPreference = "silentlycontinue"
# miner起動確認
ChkApl
# ディレクトリ移動
Set-Location -Path 'C:\Program Files\NVIDIA Corporation\NVSMI'
while($true) {
$isErr = -not (ChkGpuCount)
if ($isErr) {
# ループ終了
break
}
$msg='Nomal'
$interval = $interval_nomal
if (ChkGpuClock) {
$worning_count = 0
} else {
$interval = $interval_worning
$msg='Worning!'
$worning_count ++
}
# GPU稼働率の低い状態が続いた場合(とりあえず1分)
if ($worning_count -ge 60) {
break
}
#表示データのリセット
cls
Write-Host $msg
Write-Host ''
#GPUデータ
.\nvidia-smi.exe --query-gpu=index,clocks.gr,utilization.gpu --format=csv
Start-Sleep -s $interval
}
# コンソールのエラー表示:ON
$ErrorActionPreference = "continue"
# 再起動
Restart-Computer
貼り付けたらタブが吹っ飛んだ!
めんどくさいからこのまま。
使用しているお財布・取引所はこちら