中村和志@神戸です。

In article <s7fk72eoci0.fsf@xxx.kgc.co.jp>
candy@xxx.kgc.co.jp writes:
>うちの FreeBSD box の Pen 3 マザーボードは CPU の温度が計れますが、
>同じ CPU 100% でも、
>  idle 時(つまり全力で RC5-72 crack 中)よりも
>  例えばコンパイル時(RC5-72 の実行時間が少なくなる)の方が
>CPU 温度が下がるという現象が観測されます。
>
>これは RC5 crack の方が、コンパイラより
>トランジスタの使用率が高いからだろうと思っていますが、
>どうでなんでしょうね?

プロセスの待ち行列の長さ(load avg.)は同じでも、RC5だと全てCPU
のキャッシュメモリに納まってほとんどCPUだけに負荷を掛けるのに対し、
コンパイル作業だとdiskやメモリ待ちの時間の分だけCPUに掛かる負荷が
減っていると思われます。トランジスタの使用率は、大差無いかと。
RC5だと同じトランジスタばかり使っているのに対し、コンパイルだと
あちこち使うとかの違いはあるでしょうけど。

>> いえ,そうではありません.CPU には多数のトランジスタが入っています
>> が,それが常時最高速で動作するということはないと言っているのです.例
>> えば(思いっ切り単純化していますが)浮動小数点演算ユニットは浮動小数
>> 点演算命令が来なければ動きません.
>
>その使い切るに至らず遊んでいるパイプラインを有効に使おうというのが
>Xeon や Pentium 4 の Hyper Threading ですよね。

パイプラインより、むしろ隠しレジスタや乗算器が増えて来たので、もう
1本パイプラインを作ってしまって、乗算器とかのリソースがかち合わない
範囲でなら、もう1個CPUが有るように見せかけるという仕掛けと思います。

>HT 有効の時、dnetc にスレッド数 (number of crunchers) を
>自動判定させると、2 個のスレッドで動かそうとします。
>ところがこの状態だと RC5-72 が大変遅くなります。
>(2 個合計しても 1 個の時より遅いくらいだったかな?)
>また、これは伝聞ですが、OGR だと逆に 3 割くらい速くなるそうです。

これはFreeBSD 4-系列でしょうか?最近の5-currentだとRC5-64ですが、
ほぼ倍速くなりました。最近のFreeBSD 5-currentにはKSE(とSMPng)
が入ってスレッドの扱いが全く変わりました。

スレッドと一口に言っても、プロセスをカーネル内で複数のCPUに分配する
カーネル内スレッドと、ユーザプロセス内で処理を複数のスレッドに分けて
プロセス内で負荷分散を計るユーザスレッド(別名Light Weight Process)
が有ります。Linuxのスレッドは前者、FreeBSDのは後者でした。Solaris
は両方持ってて、後者はLWPと表記されることが多かったです。
FreeBSDも両方欲しいなと思っていましたが、KSE+SMPngが入った御蔭で
それ以上のものになりました。カーネルスレッドがm:1スレッドで、
ユーザスレッドが1:nスレッドなのですが、今のFreeBSDはその両方を
マージしてm:nスレッドが扱えます。5-currentはまだちょっと不安定ですが。
-- 
中村和志@神戸         <mailto:kaz@kobe1995.net>
NAKAMURA Kazushi@KOBE   <http://kobe1995.net/>
- Break the hate chain. No more kill!
administrator@127.1