ネットワークはディスクよりも高速になりましたか?


126

これはソフトウェア設計の質問です

私はスピードのために次のルールに取り組んでいました

cache memory > memory > disk > network

各ステップは前のステップの5〜10倍です(たとえば、キャッシュメモリはメインメモリよりも10倍高速です)。

現在、ギガビットイーサネットの遅延はローカルディスクよりも少ないようです。そのため、大規模なリモートインメモリDBからの読み取り操作は、ローカルディスクの読み取りよりも高速である可能性があります。これは私のような古いタイマーには異端のように感じます。(ネットワークラウンドトリップを行わなくても済むように、ディスク上にローカルキャッシュを構築するのに少し時間を費やしただけです-したがって、私の質問)

この分野での経験/数字/アドバイスはありますか?

そして、はい、私が知るための唯一の本当の方法は構築し、測定することであることを知っていますが、私は一般的なルールについて疑問に思っていました。

編集

これは、一番上の回答の興味深いデータです。

  • 同じデータセンター内での往復500,000 ns

  • ディスクシーク10,000,000 ns

これは私にとってショックです。私のメンタルモデルは、ネットワークの往復が本質的に遅いということです。そして、そうではありません-ディスクの「ラウンドトリップ」よりも10倍高速です。

Jeff attwoodがこのvの良いブログをトピックhttp://blog.codinghorror.com/the-infinite-space-between-words/に投稿しました


11
時々はい、時にはいいえ。どのネットワーク?どのディスク?
ジョン・ガーデニアス

1
トップアンサーからの他の興味深いデータ:ネットワーク対ディスクから1 MBのシーケンシャル読み取り。「往復」時間は重要なデータ転送を省略していると思われます。
ポール

ポール:あなたのMTUに依存しています。(1 MB MTU?素晴らしい!)
マットシモンズ

10Gbpsネットワーク機器が広く利用可能になったことを考慮して、これらの回答のいくつかを再考してほしい。

ギガビットネットワークvs RAID 5?
SoilSciGuy

回答:


137

Googleフェローであるジェフディーンが引用したように、おそらくあなたが探しているいくつかの数字があります。

誰もが知っておくべき数字

L1 cache reference                             0.5 ns
Branch mispredict                              5 ns
L2 cache reference                             7 ns
Mutex lock/unlock                            100 ns (25)
Main memory reference                        100 ns
Compress 1K bytes with Zippy              10,000 ns (3,000)
Send 2K bytes over 1 Gbps network         20,000 ns
Read 1 MB sequentially from memory       250,000 ns
Round trip within same datacenter        500,000 ns
Disk seek                             10,000,000 ns
Read 1 MB sequentially from network   10,000,000 ns
Read 1 MB sequentially from disk      30,000,000 ns (20,000,000)
Send packet CA->Netherlands->CA      150,000,000 ns

それは、大規模分散システムの構築からの設計、レッスン、アドバイスというタイトルの彼のプレゼンテーションからのものであり、ここから入手できます。

この講演は、大規模分散システムとミドルウェア(LADIS)2009で行われました

他の情報


gcc -O4はコードを書き直して、Jeff Deanに電子メールで送信すると言われています。



+1非常に興味深い!
ダン

1
一部のプレゼンテーションでは、括弧内に異なる値が示されています。括弧内のものが間違っていたと思い、彼は値を更新しました。
デビッドd C eフレイタス

1
これはすべてSSD以前の時代ですか?最新の番号については、こちらをご覧ください。
マット

実際にこれらの数値を使用して、SSDドライブが自分支払う理由を示すプレゼンテーションを作成し、オフィスマネージャーに、作業には高速なマシンが必要だと確信させました。技術情報の数値を含めましたが、可能な限り非技術管理に向けて調整しました。
-brichins

19

ネットワークとディスクの関係では多くの変数がありますが、一般的にディスクは高速です。

SATA 3.0およびSASバスは6 Gbpsであるのに対し、ネットワーク1 Gbpsからプロトコルオーバーヘッドは差し引かれています。RAID-10 15k SASを使用すると、ネットワークは非常に遅く見えるようになります。また、ディスクキャッシュがあり、ソリッドステートハードドライブの可能性もあります。シナリオによっては、速度が向上する可能性もあります。ランダムデータアクセスとシーケンシャルデータアクセスには、データが転送されるブロックサイズだけでなく、要因もあります。それはすべて、ディスクへのアクセスに使用されているアプリケーションに依存します。

今、私はあなたがネットワークを介して転送しているものが何であれディスクに行き来しているという事実にさえ触れていない...それで、再び、ディスクはより速い。


1
すぐにネットワークに接続する可能性が低い、並列読み取りを提供するRAIDについて言及するポイント。もちろん、ローカルのラップトップハードドライブについて話している場合は、高速SANと高速ネットワークの組み合わせがより高速になる可能性があります。特にそのSANのSSDでは。
マイケルディロン

10
ネットワークは本質的に並列化可能であり、何について話しているのですか?ネットワーク上の複数のシステムから集合的に読み取ることは非常に簡単です。これは、明らかなBitTorrentは言うまでもなく、HadoopやMPIのようなシステムの背後にある全体のポイントです。
jgoldschrafe

2
SONET / SDHを使用すると、SASよりもさらに高速な38Gbpsを実現できます。また、ネットワークの集約はen.wikipedia.org/wiki/Link_aggregationの
ミルチャヴトコヴィチ

10
@Jake 6 Gbpsについて話すとき、インターフェイスの帯域幅とディスクが実際にデータを提供できるレートを明確に区別したい場合があります。
NPE

4
私はディスクキャッシュにローカルに比べてインメモリデータベースのリモート話していたことを私の質問に言った
PM100

10

まあ、それは、ネットワークリソースに、要求しているデータがすぐに利用できるか(メモリなどに)あるか、ディスクからデータを読み取るかどうかによって異なります。

いずれにせよ、場合によってはスループットは高くなる可能性がありますが、レイテンシは高くなると思います。


ディスク上のシーク時間が10Gbit / sのリクエストよりも長いということですか?
ミルセアVutcovici

1
@Mircea、彼は10Gbitネットワークがどこかからデータを取得しなければならないことを意味するので、そのソースの遅延とネットワークの遅延に制限されます。
クリスS

ストレージはRAMディスクでもかまいません。参照:en.wikipedia.org/wiki/Solid-state_drive#DRAM
ベース

2

IMXディスクは依然として高速です。ネットワークの理論的な転送速度は高いですが、実際にはそれには近づきません。

約2年前、ラップトップでハードドライブのトラブルが発生し、DMAがなくなりました。これにより、ハードドライブは劇的に遅くなり、特にネットワークよりも遅くなりました。しかし、別のコンピューターに切り替えたとき、インターネットよりも速くHDDの元の状態に戻りました。


2

ギガビットネットワークでの私の経験では、適切なサーバーがあれば、スループットと遅延の点でローカルパフォーマンスを上回ることができます。参照ネットワークテストを:私たちは、ギガビットパフォーマンスを得ていますか?

すべての実用的な目的のために、ネットワークストレージとローカルストレージを同等のものとして扱い、メモリキャッシュのみを使用することをお勧めします。

あなたが言及した標準的な警告は、一般的な規則がないという点で真実です。実際には、ほとんどの場合、適切に構成されたサーバーで作業し、メトリックを使用してデータ転送の最適な方法を評価する必要があります。

低速のハードドライブを備えたローエンドマシンを使用している場合、高速ストレージアレイを備えたサーバーにギガビットネットワーク接続を使用する方がほぼ確実に高速になります。

同様に、ほぼ同じハードウェアの2台のマシンを使用している場合、レイテンシとネットワークオーバーヘッドによりローカルストレージが高速になります。それは本当に常識です。


2

場合によります。I / Oが主にランダムアクセスである場合、そのフラットスループットは、利用可能なネットワーク帯域幅と比較しておそらくそれほど大きくありません。ただし、ほとんどのネットワークトラフィックは、最終的にI / Oを伴うプロセスによって生成されます。ネットワークトラフィックを生成しているプロセスのワーキングセットがキャッシュに収まる場合、ディスク帯域幅の制約を受けません。キャッシュをスラッシングすると、ディスクがボトルネックになります。

私はデータウェアハウスシステムに取り組んでおり、標準的なDWクエリはテーブルスキャンです。クエリがファクトテーブル(またはパーティション)の行の数パーセントを超える場合、インデックスI

ネットワークストレージ(SAN)は、適切に調整されない限り、ストリーミングワークロードでうまく機能しない傾向があります。SANが汎用の統合環境に使用されている場合、データウェアハウスのようなストリーミング、スパイク負荷に対しては、ほぼ間違いなく最適に調整されます。ベンダーのホワイトペーパーでは、ストリーミングI / O用に調整されていないSANで同じスループットを得るには、ディスクの約3倍のディスクが必要であることを示唆しています。

私の経験はそれで集計されます。実際、デスクトップコンピューター同じETLプロセスを大幅に高速実行できない統合環境にデータウェアハウスを展開したことはありません また、SAN機器の大手ベンダーの営業担当者は、SANが十分に高速ではないため、多くの顧客がDWシステムに直接接続ストレージを使用していると言っています。

ネットワークストレージは、ランダムアクセスワークロード用の直接接続ストレージよりもIOPSあたり少なくとも1桁高く、ストリーミングでは2桁近く高価です。


1

私がこれに関して経験したことは、1Gbit接続でファイルをダウンロードしようとすると、ハードディスクが通常ボトルネックになるということです。ただし、最初に接続を設定する必要がありますが、これにも時間がかかります。したがって、データネットワークの大きなチャンクを送信するためには、実際にはディスクよりも高速です。


1
ディスクがネットワーク接続の反対側のボトルネックでもない限り

@Argote:True。ただし、サーバーソフトウェアが正しく書き込まれていれば、ディスクに書き込む前にメモリにバッファリングされます。
amphetamachine

1

はい、一般的に、ネットワークはハードドライブより高速になりましたが、これは時間の経過とともに変化する可能性があります。

だから私は

アプリケーションの実行中は、ホストマシンが動作していることを意味しますが、ネットワーク上での作業には共通のプロトコル、ピアの可用性、チャネルセキュリティの確認が必要です...そして、ピアが異なるプラットフォームを使用している場合、あなたができることを達成するのは困難です単一のマシン。

誰が一番強いかというよりも、トレードオフの観点でこれを見るのが好きです...


4
疑わしいので、私はそうかもしれない。
ジョンガーデニアス

1

この比較の正確なユースケースを記述する必要があります。ハードドライブには、シーク時間+転送速度およびキャッシュがあります。ネットワークには遅延、転送速度、プロトコルのオーバーヘッドがあります...

私はあなたの元のキャッシュメモリ>メモリ>ディスク>ネットワークはまだ一般的に正しいと思う


0

ディスクは、SCSI、SAS、またはIDEバスを介してCPUに接続されます。特定のプロトコル(SCSIまたはATAPI)を実行する内部ネットワークです。イーサネットは長距離で動作するように設計されており、SAS / SCSI / IDEよりもはるかに低速になる可能性があります。どちらが速いかは、どのテクノロジーを比較するかにかかっています。20年前のラップトップHDDと10GbpsのRAMストレージを比較する場合、勝者は常にネットワークです。また、ストレージを購入する際には、価格と管理性とを比較する必要があります。


0

さて、100GBpsのネットワーク速度を目指しているLight Peakがあり、RAMの速度に近づいています。もちろん、ネットワークは送信者がデータを生成できる速度でしかデータを配信できません。つまり、送信者がハードディスクからデータを読み取る場合、受信者はディスク読み取りと同じ速度でのみデータを取得します。超高速ネットワーク。


0

留意すべきことの1つは、ネットワークに依存することです。たとえば、Webサイトでのパフォーマンスに責任があるとします。このWebサイトは、もちろんローカルネットワークを介してデータベースサーバーに接続されており、インターネットの一種であるインターネットを介してWebサーファーにも接続されています。

多くの場合、静的IPとクロスオーバーケーブルまたはautomdxを介してWebサーバーとデータベースサーバーの間に専用リンクを設定して、遅延を抑え、トラフィックに専用リンクを提供します(非常に高速にする必要があるため)。データベースサーバーはあらゆる種類の作業を行って、できるだけ多くのdbをメモリに保持します。多くの場合、多くの場合、コンテンツ全体といくつかのインデックスで成功します。このデータベースへのクエリは、ディスクへのクエリと同じくらい、またはさらに高速になります。

一方、特定のWebテクノロジー(asp.net webforms viewstate、私はあなたを見ています)は、クライアントWebブラウザーとの間で(一種の)キャッシュとして多くの情報をプッシュすることを好みます。これがローカルLAN接続である場合(およびasp.net Webフォームの防御ではこれはほとんどの場合真実です)、それはそれほど悪いことではありませんが、公共のインターネットではこれは絶対にパフォーマンスを損なう可能性があります代わりにデータベースまたはローカルディスクに。


0

個人的には、考慮すべきいくつかの要因があると思います。たとえば、ローカルにアクセスするメモリまたはディスクと、ネットワーク経由でアクセスするディスクの速度はどれくらいですか?リモートデータが非常に高速なSSDにあり、ギガビットネットワーキングがエンドツーエンドでインストールされている場合よりも高速である場合、リモートは大きなストリーミングファイルに対して高速になる可能性があります。

ただし、小さなデータ単位にランダムにアクセスしていて、ネットワークに問題がないか、ホップが多く、アクセスするだけではない場合、ローカルキャッシュは、ほぼ100台のディスクドライブ上でも高速になると思います時間の割合。しかし、興味深い点を提起し、ネットワーク速度が増加し続ける場合、どのくらいのローカルストレージが必要になりますか?

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.