|
PCの話をしていると、GbEtherとかSATA等をつけたんだけど、ベンチマークの性能が出ないという話を良く聞きます。
ウィルスに感染しているっていうのは別にして、性能が出ない理由があるわけでなんですがそれがわからない人が大変多い。
お金をかけて買ったのに何故かベンチマークが悪いとおなげきな方に説明します。
そもそもPCにくっついているPCIスロットの性能はご存じでしょうか?
素のPCIは、133MB/Secでデータを運んでいます。
と言う事は、どんなに早いHDDとかSATA,PATA,GbEtherをつけた所で、133MB/Secのバスをそれぞれのカードで時分割して使っているわけです。
単一のカードからPCIバスを使って転送する速度の上限はどんなに早いカードを使っても133MB/Sec以上には速度は出ません。
それどころか、転送したデータはメインメモリ(メモリバッファ)に乗っていくのですが、それぞれのカード当たりの一転送単位って決まっていますので、転送単位毎にPCIのプロトコル上のオーバーヘッド(CPU処理)が絡んできます。
そうすると設計速度である133MB/Secは、オーバーヘッド分の時間が必ずあいだに入ってきますので、更に全体の転送量は落ち込みます。
大体良くって100MB/Sec位がMAXだと思っていただいて差し支えありません。
GbEtherにしても、1Gbカードを使用していてもパリティ云々で大体10分の1程度しか速度は出ませんので、実体の性能値はbitをバイトに換算すると8分の1になるはずですが、実際は10分の1となります。
100MB/Sec程度しか速度は出ません。
しかもその速度はデータを転送している間の速度であり、ネットワークはパケット単位に処理するためネットワークプロトコル上のオーバヘッドがかかります。
それを加味すると80MB/Secも出れば言い所です。
100Mbpsのカードであれば、8MB/Secも出せれば十分です。
ですので、RAID0でディスクを複数つけたからって速度が上がるか?っていうと、HDD1台当たりのシーケンシャルRWの転送速度が既にPCIのバス帯域を越えてますので、意味無いのです。
むしろストライプする為の仕組み(ハードウェアRAIDの場合)如何によっては単発HDDの方が良かったりします。
結果的に、速度は全体のバランスによって決まるという事になります。
最近は、PCIでもパラレルPCIからシリアルPCIに移行が進んでいます、これはパラレル(並列)よりシリアル(直列)の方が速度を上げやすいためです。
32本のパラレル線より1本のシリアル線の方が速度が出るという一見不思議な感じがしますが、高速なデータ転送(高周波数)を使うと、パラレル転送では、それぞれの線の同期を取るのが難しくなっていくためなんです。
その点シリアルでは、その素材の最高速だけでデータ転送速度とする事が出来るためパラレルで必要な同期取りという行為が不必要にる分、パラレルでの本数分以上に速度を出すことが出来ます。
という様にシリアル化が進んでいるのですが、パラレルPCIと同様に時分割されるという事情は変わりません。
ですので、どんな速いインタフェースをつけていても低速なデバイスにバスを占有されてしまうと、その間はデータ転送出来ない事になるため、結局遅くなってしまいます。
じゃぁどうすれば速いコンピュータを作成出来るかというと、目的を決めてそれ以外のデバイスはつけないあるいはマザーボード上の余計なデバイスをBIOS画面で無効にしておく様にしておけば、その目的に対して高速なコンピュータを作成する事ができます。
一番良くないのは、一台で何でも有りな十徳ナイフの様なコンピュータですね。
それぞれのデバイスに貴重なバスを占有されている間、他のデバイスの動作はペンディングされてしまいますので。。
一台にごちゃごちゃとつけてお金掛けているんだぞってPCを見たりしますが、一台にお金をかけるより複数に分けて役割分担させる方が高速な環境を享受出来る事になります。
実際にファイルサーバであればモニタもディスプレイも不要なので、ディスプレイカード抜きのPCを作ることだって可能です。
しかし、いろんなデバイスとかCPUとかメモリとか無意味に速度が上がってますけど本当に必要なの?って思っちゃいます。
それよか低消費電力でバランスの良いモノが組める様な部品って無いのかなぁ。
高性能なために省エネに逆行している気がしてなりません。
OS自体も軽くならないものですかねぇ。(Windowsスペックの引き下げを切望する今日この頃です)
まったくなんてこったいです。
|