ジェフ・ディーンの「すべてのプログラマーが知っておくべき待ち時間数」は、さまざまなハードウェア実装のコンテキストでどのようにして正確にできるでしょうか。


11

GoogleのJeff Deanによる、このレイテンシ数値のグラフを参照しています。

私が理解していないことは、これらの数値はハードウェアのセットによって変化しないのですか?これらは、RAM、CPU、マザーボード、ハードドライブなど、すべての異なるタイプでどのように正確ですか?


数値が(代表的なハードウェアあたりの)年ごとにどのように変化するかを示すpeople.eecs.berkeley.edu/~rcs/research/interactive_latency.htmlを参照してください。
ShreevatsaR 2017年

回答:


14

これらの数値(10年後のNorvigのTeach your Programmingにもリストされています)は概算であり、(桁)の大きさとしてのみ有用です。

実際、今日のハードウェア(少なくともデスクトップまたはラップトップの場合)は、安価な300ユーロのラップトップとハイエンドの1万ユーロのワークステーションの間でさえそれほど変わりません。速度は、最大でおよそ2または4の係数で変化します。このようなワークステーションには、より大きなディスク、より多くのコア、キャッシュ、およびRAMを搭載できます。ただし、これは生のシングルスレッドパフォーマンスにはあまり影響しません。

http://openbenchmarking.org/またはいくつかのCPUコンパレータの数値を見てください。

いわゆるムーアの法則死にかけています。私の3年以上前の自宅のデスクトップ(i3770K)を(今日、2016年3月に)わずか20%高速なi6700に置き換えることができます。


7

数値は正確である必要はありません。重要なのは、階層間の桁間比率です。

ただし、破壊的なテクノロジー(クラウドコンピューティング、10GB / 100GBイーサネット、新しいネットワーキングカーネルモジュール、SSDストレージネットワーク、仮想化とコンテナー化など)が出現した場合、新しい階層の出現、非表示、シャッフルが原因で、これらの数値が無効になることがあります。

非常に高いレベルでプログラミングする場合-すべての計算、ネットワーキング、解析などが、自分で作成したものではないライブラリを使用して実行される場合、低レベルの操作のパフォーマンスの数値を知ることは、それぞれを改善する機会があるため、あまり役に立たない場合があります。ライブラリのパフォーマンスはかなり制限されているか、まったく不可能です。

代わりに、各ライブラリのパフォーマンス関連のドキュメントを注意深くお読みください。ライブラリにこれらが付属していない場合は、ライブラリに質問してください。または、正しい方法でソフトウェアをベンチマークする方法を学びます。

ソフトウェアコンポーネントを設計および製造する会社に雇用されている場合は、レイテンシの数値を基本的に理解することが重要です。自動車とその中に含まれるすべてのコンポーネントを設計および製造している会社と比較してください-ことわざ「ホイールの再発明」(ゴム、タイヤ空気圧、トレッドなど)

ほとんどのソフトウェア会社はコンポーネントレベルでは機能しません。コンポーネントを組み合わせることで、機能的なソフトウェアシステム全体を構築できます。これらのソフトウェア会社は、レイテンシの観点からコンポーネントを設計する方法に集中する必要はありません。代わりに、選択したコンポーネントの品質を評価する必要があります。

要約すると、(1)待ち時間の数値を知る必要がない可能性が非常に高くなります。(2)ソフトウェアコンポーネント(ライブラリ)を製造する会社に雇われることを望む場合を除き、販売または内部使用(世界最大のソフトウェア会社の一部と同様)の場合(3)それらの数が必要な場合科学的に正しい方法で自分でベンチマークを行うのはあなたの仕事です。さもなければ、ソフトウェアコンポーネントに取り組むべきではありません。


3

これらの数値が任意のハードウェアに対して正確であると主張した人はいません。

しかし、それらはブラインド推測よりもはるかに正確です。残念ながら、多くの人がコードのベースにしています。


2

それらは完全に正確ではなく、実際にそうすることを意図していません。

ただし、それらは(特に小さい数の場合は)桁違いです。もう1つのポイントは、どれが近づいているのかを理解するのに役立ち、実際よりもはるかに離れていると誤解されることがあります。明白な例の1つとして、かなりの数の人々が、ブランチの予測ミスがしばしば大きな問題であると想定しています。それ何度も繰り返される場合、それは大きな問題になる可能性がありますが、より適切な分岐予測を得るためだけに他の場所や場所で大量のデータを犠牲にする必要は必ずしもありません(たとえば、メインメモリから、またはL2キャッシュから読み取り、分岐予測を改善する場合)。それはおそらく純損失です)。

同時に、はい、桁違いのものが最も有用な部分かもしれません。たとえば、メインメモリからデータにアクセスするには、レジスタからアクセスするよりも約100倍時間がかかります。はい、あるマシンでは約97倍長く、別のマシンでは127倍近くなる可能性があります。ほぼ間違いなく、10か1000のどちらかよりも100に近いでしょう。

個人的には、これらのほとんどは、たとえば太平洋の島に似ていると思いがちです。ハードドライブの速度は(例えば)ハワイの島々かもしれません。SSDの速度はフィリピンの島々です。これは、それぞれを1つのポイントのように表示するのに十分な縮尺でマップを表示しています。ズームインした場合、それは明らかに真実ではありません。しかし、2つのチェーン間の距離は、どちらかのチェーンの島間の距離よりも倍も大きいです。


0

もちろん、数値はすべてのマシンで正確であるとは限りません。そして、私は彼らがそうであるべきではなかったと思います。しかし、それらはいくつかの種類の操作の間の大きさのオーダーの違いを示しています。

リンクされたデータのコメントで、さらに役立つリンクやデータを見つけることができます。

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