僕の備忘録(PC、UN*X、ネットワーク関連が中心)なんです。
自分の書いたところは適当(な時とか)に書き換えますので御了承を。
x86_64 でやってみた。ホストシステムにはUbuntu-9.10を使ってみた。
まだマニュアルにはx86_64向けの記述はx86と比べて幾分不足気味だけど、
問題なく構築できた。ブートローダはgrub-1.97.2だった。
CONFIG_SMPを"not set"にしたカーネルを作り、有効なカーネルと比較してみる。
make menuconfig で切り替えたのは一箇所だけだったが、.config をdiffすると、他にも
色々違うところが出てきた。
bc-1.06をインストールして、簡単なスクリプトを作った。
$ cat 1.sh echo 2^180+7 | bc | factor > /dev/null $ cat 2.sh echo 2^180-11 | bc | factor > /dev/null
で、これを複数の端末から同時に実行してみる。
端末Aから time { sh 1.sh ; sh 2.sh ; } の順で、端末Bからは逆に。
$ uname -v
#1 SMP Wed Mar 3 05:48:23 JST 2010
$ time { sh 1.sh ; sh 2.sh ; }
real 0m55.752s
user 0m55.723s
sys 0m0.005s
これは端末一つだけで実行している結果と、同じだった。
端末Bは省略する。端末Aと同じだったから。
端末4つで(ほぼ)同時に実行させると、結果は倍近くになった。
で、次に、SMPを無効にしたカーネルに切り替える。
$ uname -v #2 Wed Mar 3 06:24:19 JST 2010 $ time { sh 1.sh ; sh 2.sh ; } real 1m51.862s user 0m55.955s sys 0m0.002s
一つだけならSMPなカーネルとあまり変らないが、
複数走らせると遅くなった。
ちなみにSMPを無効にすると
/proc/cpuinfoでも一つしか表示されなかった。
Debian Lennyで少し追試してみた。
今度の例題は echo 2^62-1 | bc | factor。
uname -aは、どちらも
"Linux Knoppix 2.6.26-2-686 #1 SMP Wed Feb 10 08:59:21 UTC 2010 i686 GNU/Linux"
PentiumM 1.6GHzだと、 計算が一つ、二つ、三つ、四つと増すに従い、 約8.1秒、16.0秒、24.1秒、31.8秒と、計算時間も比例したが、 SMP(Pentium4 3GHz)で7.7秒、10.5秒、15.9秒、19.8秒と変化する。
リンクはご自由にどうぞ。でもURLや内容が変った場合はあしからず。