2006年11月11日アーカイブ

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
2006年11月
      1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30    

このアーカイブについて

このページには、2006年11月に書かれたブログ記事が新しい順に公開されています。

前のアーカイブは2006年11月10日です。

次のアーカイブは2006年11月15日です。

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

Powered by Movable Type 6.1.1