Firefoxが落ちる問題で、CPU Dynamic Assign Helperと言うソフトを入れたのだが、うちの環境では期待通りに動かなかった。
そのページにリンクがあり、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

カテゴリ

トラックバック(0)

このブログ記事を参照しているブログ一覧: CPUの利用制限

このブログ記事に対するトラックバックURL: https://www.wizard-limit.net/cgi-bin/mt/mt-tb.cgi/1089

コメントする

このブログ記事について

このページは、falseが2006年11月11日 21:05に書いたブログ記事です。

ひとつ前のブログ記事は「Firefox2.0(その2)」です。

次のブログ記事は「google/a」です。

最近のコンテンツはインデックスページで見られます。過去に書かれたものはアーカイブのページで見られます。

広告

Powered by Movable Type 6.1.1