Firefoxが落ちる問題で、CPU Dynamic Assign Helperと言うソフトを入れたのだが、うちの環境では期待通りに動かなかった。
そのページにリンクがあり、limitCPUと言うものにもたどり着いたが、いまいち使い勝手が合わなかった。
で、探していたらProcAffと言うソフトにたどり着いた。
こいつでほぼ期待通りの動きをしそうだったのだが、DLLがないとか言われて実行できなかった。
しかし、最後のProcAffにはソースがついていたので、見てみたらなんとなく雰囲気がつかめた。
こうなったら、久しく離れていたWindowsのプログラムを書くしかないでしょう。
さっそく、Microsoftのページから、Visual C# 2005 Express Edition日本語版をダウンロードして、インストールしてみる。
Windowsの開発はまともにやったことがないので、作法とか全然わからないのと、ヘルプが追いにくいので微妙に苦労したが、肝としてはProcessクラスのProcessorAffinityプロパティを設定するだけなので、至極簡単である。
本当は、ショートカットで設定できる「実行時の大きさ」を引き継ぎたかったのだが、自分の起動時の「実行時の大きさ」を取得する方法がわからなかったので、常にNormalになってしまう。
出来上がったソースは以下のような感じ。
あ、私の場合はlc.exeがPATHの通ったところにあるので、そうでない場合はフルパスで書いてください。
とりあえず、ためしに作ったインストーラを添付しておきます。 lc-1.0.0.1.zip
そのページにリンクがあり、limitCPUと言うものにもたどり着いたが、いまいち使い勝手が合わなかった。
で、探していたらProcAffと言うソフトにたどり着いた。
こいつでほぼ期待通りの動きをしそうだったのだが、DLLがないとか言われて実行できなかった。
しかし、最後のProcAffにはソースがついていたので、見てみたらなんとなく雰囲気がつかめた。
こうなったら、久しく離れていたWindowsのプログラムを書くしかないでしょう。
さっそく、Microsoftのページから、Visual C# 2005 Express Edition日本語版をダウンロードして、インストールしてみる。
Windowsの開発はまともにやったことがないので、作法とか全然わからないのと、ヘルプが追いにくいので微妙に苦労したが、肝としてはProcessクラスのProcessorAffinityプロパティを設定するだけなので、至極簡単である。
本当は、ショートカットで設定できる「実行時の大きさ」を引き継ぎたかったのだが、自分の起動時の「実行時の大きさ」を取得する方法がわからなかったので、常にNormalになってしまう。
出来上がったソースは以下のような感じ。
using System; using System.Collections.Generic; using System.Text; using System.Diagnostics; using System.Windows.Forms; namespace lc { class Program { static void Main(string[] args) { if (args.Length < 2) { MessageBox.Show("Usage: lc affinity command args...", "lc", MessageBoxButtons.OK, MessageBoxIcon.Information); return; } try { IntPtr affinity = new IntPtr(Int32.Parse(args[0])); Process me = Process.GetCurrentProcess(); ProcessStartInfo startInfo = me.StartInfo; startInfo.FileName = args[1]; startInfo.Arguments = ""; for (int i = 2; i < args.Length; i++) { startInfo.Arguments += args[i] + " "; } Process p = Process.Start(startInfo); p.ProcessorAffinity = affinity; } catch (Exception e) { MessageBox.Show(e.Message, "lc", MessageBoxButtons.OK, MessageBoxIcon.Error); } } } }使い方は、CPUを制限したいアプリケーションの起動ショートカットのプロパティを開き、リンク先のところの前に、「lc.exe 2」 とか追加すれば良い。第1パラメータは、1 ならCPU1だけ、2ならCPU2だけ、3なら両方使う。
あ、私の場合はlc.exeがPATHの通ったところにあるので、そうでない場合はフルパスで書いてください。
とりあえず、ためしに作ったインストーラを添付しておきます。 lc-1.0.0.1.zip
カテゴリ
Windowsトラックバック(0)
このブログ記事を参照しているブログ一覧: CPUの利用制限
このブログ記事に対するトラックバックURL: https://www.wizard-limit.net/cgi-bin/mt/mt-tb.cgi/1089
コメントする