6

HD からの書き込みと読み取りだけでプロセス間通信を行う概念実証プログラムがあります。はい、これが本当に遅いことはわかっています。しかし、それは物事を立ち上げて実行するための最も簡単な方法でした. 私はいつも戻ってきて、コードのその部分をRAMですべてのIPC(プロセス間通信)を行うメカニズムと交換することを計画していました.

ソリッド ステート ディスクの登場により、ボトルネックは無視できるようになると思いますか?

注: C# で記述されたサーバー ソフトウェアで、FORTRAN で記述されたベア メタルの数値処理ライブラリを呼び出します。

4

11 に答える 11

9

短い答えはおそらくノーです。Jim Gray という名の有名な研究者が、ストレージとパフォーマンスについて講演しました. あなたの脳をプロセッサと仮定すると、レジスタへのアクセスには 1 クロック ティック (左側の数字) がかかります。これは、脳内にある情報とほぼ同じです。メモリへのアクセスには 100 クロック ティックかかるため、居住している都市のどこかでデータを取得するのとほぼ同じです。標準ディスクへのアクセスには約 10^6 ティックかかります。ソリッドステートはどこに適合しますか? 現在の SSD テクノロジーは、質問者によって異なりますが、10^4 から 10^5 の間のどこかにあります。それらは桁違いに高速になる可能性がありますが、メモリからの読み取りとディスクからの読み取りの間には依然として大きなギャップがあります。これが、あなたの質問に対する答えが「いいえ」である可能性が高い理由です。なぜなら、SSD が速くなっても、ディスクよりもかなり遅くなるからです (少なくとも近い将来)。

于 2009-07-18T19:36:48.167 に答える
3

ボトルネックが移動したばかりであることがわかると思います。より高いスループットが期待されるため、より高い要求を持つプログラムを作成します。

これにより、バス、キャッシュ、および読み取り/書き込みメカニズム以外の部分(とにかくチェーンの最後にある)にボトルネックが発生します。

プロセスがディスクI/Oにバインドされていない場合、(すべてのプロセス命令と同様に)読み取り/書き込み命令の量を制限するスケジューラーにバインドされることに気付くかもしれません。

無制限のI/O速度を最大限に活用するには、リアルタイムの応答とキャッシュの非常に積極的な管理などが必要になります。

ディスクが高速になると、 RAMとプロセッサ、およびデバイスへの要求も高速になります。ボトルネックは同じで、ワークロードが大きくなります。

于 2009-07-17T16:13:54.940 に答える
2

いいえ。現在の SSD は、ディスクの代替品として設計されています。SATA コントローラーからファイルシステム ドライバーまで、すべてのレイヤーがそれらをストレージとして扱います。

これは、基盤となる技術である NAND フラッシュの問題ではありません。NAND フラッシュがメモリに直接マップされ、名前付きファイルに基づくファイル システムではなくローテーション ログ ストレージ システムを使用すると、非常に高速になります。根本的な問題は、NAND フラッシュがブロック更新でしかうまく機能しないことです。ファイル メタデータの更新は、コストのかかる読み取り-変更-書き込み操作を引き起こします。また、NAND ブロックは一般的なディスク ブロックよりもはるかに大きいため、パフォーマンスにも影響しません。

これらの理由から、SSD の将来はより優れたキャッシュ SSD になるでしょう。DRAM は不十分なマッピングのオーバーヘッドを隠し、小さなスーパーキャップ バックアップにより SSD は書き込みをより高速にコミットできます。

于 2009-07-20T08:42:57.150 に答える
2

Joel on Software には、ソリッド ステートへのアップグレードに関する彼の経験に関する記事があります。あなたが抱えている問題とまったく同じではありませんが、私のポイントは次のとおりです。

ソリッド ステート ドライブは I/O バウンド操作を大幅に高速化できますが、多くのこと (コンパイルなど) は依然として CPU バウンドです。

于 2009-07-17T17:21:21.323 に答える
2

I/O バウンドのアプリケーションの作成方法が少しでも変わるとは思えません。より高速なプロセッサを使用しても、ソーティング アルゴリズムとしてバブルソートが選択されることはありませんでした。

外部メモリ階層は、コンピューティング固有の問題です。

于 2009-07-17T16:19:34.303 に答える
2

ソリッド ステート ドライブを使用していますが、ボトルネックとしての I/O が解消されません。SSDは素晴らしいですが、それほど素晴らしいものではありませ

システムの IPC プリミティブをマスターしたり、TCP 上に何かを構築したりすることは、実際には難しくありません。しかし、ディスクを使い続けて高速化したい場合は、ramdiskまたはtmpfsがうまくいくかもしれません。

于 2009-07-19T23:53:20.403 に答える
1

ソリッド ステート ドライブは IO スループットに 1 つの重要な改善をもたらします。それは、ソリッド ステート ディスクでは、回転メディアによるブロックの局所性の問題が少ないという事実です。これは、高性能 IO バウンド アプリケーションが、アクセスされるデータを整理する構造から、圧縮によってデータを 1 つのブロックに保持するなど、他の方法で IO を最適化する構造に焦点を移すことができることを意味します。とはいえ、ソリッド ステート ドライブでも、アプリケーションが要求する前に後続のブロックを読み取りキャッシュにプリフェッチできるため、線形アクセス パターンのメリットがあります。

ソリッド ステート ディスクでの顕著な後退は、読み取りよりも書き込みの方が時間がかかることですが、どちらも一般的には回転ドライブよりも高速であり、新しいハイエンド ソリッド ステート ディスクではその差は縮まっています。

于 2009-07-18T20:08:45.403 に答える
0

いいえ、残念ながら違います。SSDドライブの読み取りは非常に速く、同期時間はありませんが、書き込みは通常のハードドライブとほぼ同じくらい遅いのです。これは、ほとんどの場合読みたいと思うことを意味します。ただし、SSDドライブは一度にブロック全体しか書き込めないため、ドライブに書き込む場合は、できるだけ同じ場所に書き込む必要があります。

于 2009-07-20T08:26:28.913 に答える
0

ディスクの代わりに RAM ドライブを使用するのはどうですか? 何も書き直す必要はありません。別のファイルシステムを指すだけです。WindowsとLinuxの両方にそれらがあります。マシンに大量のメモリがあることを確認し、処理に十分なスペースを持つ仮想ディスクを作成してください。ネットワークタップで複数のプロトコルをリッスンするシステムに対してこれを行いました。取得しようとしているパケットを新しくすることはなく、データが多すぎてメモリに保持できませんでした。私はそれを RAM ドライブに書き込み、何かが完了すると、それを移動し、別のプロセスで RAM ドライブから物理ディスクに移動させました。このようにして、非常に忙しいサーバー クラスのネットワーク カードについていくことができました。幸運を!

于 2009-07-21T03:00:07.043 に答える
0

ここで留意すべき点:

通信に頻繁なメッセージが含まれ、同じシステム上にある場合、Windows は最初から実際にデータを書き出さないため、非常に優れたパフォーマンスが得られます。

私は一度それに頼らなければならず、これを発見しました-データが書き込まれ続ける限り、ドライブライトはまったく点灯しませんでした.

于 2009-07-21T03:16:56.903 に答える
-2

しかし、それは物事を立ち上げて実行するための最も簡単な方法でした. 私は通常、CPU に何百万回も無駄に考えさせるよりも、自分の頭で一度よく考える方がはるかに安上がりだと思います。

于 2009-07-18T19:40:13.790 に答える