
Ubuntu日本語フォーラム

ログインしていません。
購入したばかりのLet's Note CF-T5
Intel Centrino Duoにてubuntu 7.04 Feistyを
利用しております。
システムモニタにてCPUが2つ認識され、
正常に動作していることを確認できているのですが、
2年程前に2万円位で購入した古いサーバーと
処理速度を比較しようとして、Cで書いた単純な
計算プログラムを数十万回実行し、処理速度を
比較したのですが、何故かIntel Centrino Duoの
方が遅かったです。
これはCPU自体がそのようなものなのでしょうか?
それとも、ubuntuと何か関係があるのでしょうか?
お分かりになる方がいらっしゃいましたら、
ご教授下さい。
宜しくお願い致します。
オフライン
> 2年程前に2万円位で購入した古いサーバーと
> 処理速度を比較しようとして、Cで書いた単純な
> 計算プログラムを数十万回実行し、処理速度を
> 比較したのですが、何故かIntel Centrino Duoの
> 方が遅かったです。
これはどのようなプログラムでしょう。
単純に足し算・引き算・割り算などを繰り返すプログラムであれば、
CPUの特性による得手不得手が出てしまっているかもしれません。
また、「古いサーバ」のCPUは何が搭載されていますでしょうか。
新品購入であればCeleronの2GHz後半のような気がしますが、それだと
Core Duoよりも速い、という結果が出てきてもおかしくありません。
> これはCPU自体がそのようなものなのでしょうか?
> それとも、ubuntuと何か関係があるのでしょうか?
現状の情報から立てられる仮説は、上述のようにプログラムの特性が、
・演算の内容が「古いサーバ」に有利に出来ている。
・かつ、Core Duoの実クロックの低さが効いている。
(おそらく1.0~1.2GHz動作のはず)
ということのような気がします。
どの程度の違いがあったのか、といった点も示して頂けると、
何かの問題で、本来のパフォーマンスが出ていない、といった
ことが判明するかもしれません。
オフライン
処理速度の計測方法はどういうやりかたでしょうか?
コードの一部あたりを書いていただくと何かヒントが出てくるかもしれません。
あと実際にストップウォッチなどの実時間計測でどれくらい遅いのかなどなど。
Dual Coreのプロセッサだとコア間のTSC同期が取れなくて遅くなったり計時処理がおかしくなったりとかいう話も聞きます。
M$のKBではこういう話も。
http://support.microsoft.com/default.aspx?scid=kb;ja;909944
AMDの話が多いようでうまくヒントが見付かりませんでした...
オフライン
お二方に付け加えさせていただきます。
Dual Coreのマシンでもスレッディングがうまくいかず非常に低速になることはあります。以前デュアルコアXeonのデュアルマシンでMatlab on Winを動かしたときCPUがうまく利用できていなかったことがあります(きちんと調べたわけではないですがMatlabをLinuxで動かしたときのほうが速い気がする…)。またラップトップなどでディスクアクセスとか描画が入るとかなり遅くなりうると思います。
オフライン
たくさんの書き込みどうもありがとうございます。
ubuntuコミュニティの素晴らしさを再確認しました。
本件ですが、下記のようなプログラムを実行した
ベンチマークの比較をしました。
■プログラムの内容
=> 9桁の乱数を40万個発生するプログラム
[ 処理の流れ ]
1)メモリを999999999ビット確保
2)999999999ビットを0で初期化
3)乱数を発生し、該当ビットが立っているか確認
4)立っていれば再度やりなおし、
立っていなければ、該当ビットをたてる
=> これを乱数が40万になるまで繰り返す
5)最後に999999999ビットの中から
立っているビットのみを出力
+++++
以前実験をした際は、
Fedora 5 を利用している古いサーバーが40秒位で、
Ubuntu を利用している Let's Note (Dual Core)が
55秒くらいだったのですが、古いサーバーの方に
起動中のデーモンを増やした為、先程ベンチマークを
とったら、あまり変わらない結果となりました。
計測結果は下記の通りです。
■ubuntu
[ CPU情報 ]
% cat /proc/cpuinfo | grep CPU
model name : Genuine Intel(R) CPU U2400 @ 1.06GHz
model name : Genuine Intel(R) CPU U2400 @ 1.06GHz
[ 計測結果 ]
time ./a.out
1回目 => 37.98s user 3.07s system 70% cpu 58.371 total
2回目 => 35.27s user 2.58s system 81% cpu 46.543 total
3回目 => 38.22s user 2.04s system 77% cpu 51.871 total
4回目 => 38.31s user 2.06s system 67% cpu 59.419 total
■fedora
% cat /proc/cpuinfo | grep CPU
model name : Intel(R) Celeron(R) CPU 2.53GHz
[ 計測結果 ]
time ./a.out
1回目 => 20.31s user 5.68s system 43% cpu 59.137 total
2回目 => 19.97s user 5.45s system 43% cpu 58.441 total
3回目 => 19.91s user 5.20s system 43% cpu 58.337 total
4回目 => 19.88s user 5.23s system 43% cpu 58.198 total
+++++
オフライン
これはhitoさんご指摘の実クロックの問題ですね。非常に単純な作業ですしクロックが効いているのだと思います。
オフライン
anoirさん、早速の御回答どうもありがとうございます!
> これはhitoさんご指摘の実クロックの問題ですね。
> 非常に単純な作業ですしクロックが効いているのだと思います。
なるほど。
大変勉強になりました。
良い機会なので、CPUについてももう
少し勉強してみたいと思います。
御回答下さった皆様、どうもありがとうございました。
また機会がございましたら、宜しくお願い致します。
オフライン
非常に単純な作業ですしクロックが効いているのだと思います。
プログラム実行時に、別なコンソール画面で top コマンドを実行し、topの画面で"1"を押すと各コアの状態が分離して表示される...と思います。一度見てみると楽しいかも知れませんね:-)
オフライン