2012年10月30日火曜日

BOINC プロジェクト開始・停止自動化

 前にも書きましたが、自宅PCのCPUは完全にオーバースペックなので、BOINCをやっています。
 基本はWCGで、先日のビデオカード買い換えでGPU計算もできるようになったため、Collatzも始めました。

 GPUは思いのほか強力であり、日々凄い勢いでスコアが伸びていきます。
 それは良いのですが、ビデオカードのファンの回転まで凄い勢いになります。
 もはや、ちょっとした掃除機並の騒音です。
 さらにケース内の気温も10度近く上がってしまい、怖くて24時間常時稼動させられません。

 やむなく、手動操作で以下のような運用をしていました。
・WCG…24時間常時稼動
・Collatz…1:30~7:30のみ稼動、他は一時停止状態
 しかし毎日毎日この操作を実施するのは面倒で、しかも止め忘れた時のリスクが大きいです。
 なんとか自動化できないかと2chのBOINCスレで聞いてみた結果、コマンドラインでの制御方法を教えてもらえたので、自動化を試みました。

【参考サイト】
 http://team2ch.info/PrimeGrid/#e09caf88

【手順】
1. Collatz一時停止用バッチファイルを作成
---
@echo off
SET URL_CLZ=http://boinc.thesonntags.com/collatz/

call :do_boinc %URL_CLZ% suspend

exit /b 0

:do_boinc
"C:\Program Files (x86)\BOINC\boinccmd" --project %1 %2
goto :eof
---
2. Collatz再開用バッチファイルを作成
---
@echo off
SET URL_CLZ=http://boinc.thesonntags.com/collatz/

call :do_boinc %URL_CLZ% resume

exit /b 0

:do_boinc
"C:\Program Files (x86)\BOINC\boinccmd" --project %1 %2
goto :eof
---
3. タスクスケジューラで、1.と2.を日次実行するよう指定

【トラブル】
 1.と2.のバッチファイルが、単体で実行すれば問題なく動作するのですが、タスクスケジューラから起動したら動作しませんでした。
 正確には、バッチファイルは起動するのですが、Collatzの停止・再開が実施されないのです。
 色々試した結果、タスクスケジューラ起動の場合、環境変数"%ProgramFiles%"がセットされていないことがわかりました。
 バッチファイルを以下のように書き換え、正しく動作するようになりました。
 ※ 先述のサンプルは修正後のものです。
修正前:
 "%ProgramFiles%\BOINC\boinccmd" --project %1 %2
修正後:
 "C:\Program Files (x86)\BOINC\boinccmd" --project %1 %2

【結果】
 GPUタスク制御の自動化に成功しました。
 本当は、CPUのように使用率控えめで長時間稼動させられればベストですが…。

0 件のコメント:

コメントを投稿