インターネット
 Computer >> コンピューター >  >> ネットワーキング >> インターネット

すべてのコンピュータエンジニアが知っておくべき重要な数値 ― レイテンシとシステム設計の基礎知識

2010年、GoogleのJeff Dean氏がスタンフォード大学で行った講演は、コンピュータシステムに関わる重要な数値を紹介したことで大きな話題となりました。その後、Peter Norvig氏がこれらの数値をインターネット上で初めて公開しました。

時が経つにつれ、これらの数値も変化してきました。数値が年月とともにどのように変化したかを視覚的に確認できる、優れたインタラクティブなWeb UIが公開されています。

本記事は、Jeff Dean氏の推定データをまとめただけのものではなく、さまざまな情報源から収集した数値を統合したものです。システム設計者やアーキテクトにとって有用な情報となるでしょう。設計の際には、これらの数値を活用してシステムに必要なリソース量を見積もることができます。

2019年のレイテンシ概算データ

  1. L1キャッシュ参照: 1ナノ秒
  2. L2キャッシュ参照: 4ナノ秒
  3. ミューテックスのロック/アンロック: 17ナノ秒
  4. メインメモリ(RAM)参照: 100ナノ秒
  5. Zippy(現在のSnappy)で1KBを圧縮: 2,000ナノ秒(2マイクロ秒)
  6. CPUの分岐予測ミス: 3ナノ秒
  7. SSD(ソリッドステートドライブ)のランダム読み取り: 16マイクロ秒
  8. HDD(ハードディスク/磁気ディスク)のシーク: 3ミリ秒
  9. メインメモリから1,000,000バイトをシーケンシャル読み取り: 4マイクロ秒
  10. SSDから1,000,000バイトをシーケンシャル読み取り: 62マイクロ秒
  11. ディスクから1,000,000バイトをシーケンシャル読み取り: 947マイクロ秒
  12. 同一データセンター内でのネットワークラウンドトリップ: 500マイクロ秒
  13. 汎用ネットワークで2,000バイトを送信: 62ナノ秒

TCPでペイロードを送信するのにかかる時間

以下は、データ損失がないと仮定した場合に、世界各地の一般的なモバイルネットワーク上でさまざまなデータペイロードを送信するのに必要な時間です。

RTT(Round Trip Time、ラウンドトリップタイム)とは、データパケット(一連のデータバイト)がネットワーク上で送信者から受信者へ、そして受信者から送信者へと往復するのにかかる合計時間のことです。一般的には「Ping時間」と呼ばれます。

  1. 1バイト〜13,000バイト(約13KB)の転送: 1ラウンドトリップ(1 RTT)。所要時間の目安 — アメリカ: 150ミリ秒、インド: 1,200ミリ秒、ブラジル: 600ミリ秒
  2. 13,001バイト〜39,000バイト(13KB〜39KB)の転送: 2 RTT。所要時間の目安 — アメリカ: 300ミリ秒、インド: 2,400ミリ秒、ブラジル: 1,200ミリ秒
  3. 39,001バイト〜91,000バイト(39KB〜91KB)の転送: 3 RTT。所要時間の目安 — アメリカ: 450ミリ秒、インド: 3,600ミリ秒、ブラジル: 1,800ミリ秒
  4. 91,001バイト〜195,000バイト(91KB〜195KB)の転送: 4 RTT。所要時間の目安 — アメリカ: 600ミリ秒、インド: 4,800ミリ秒、ブラジル: 2,400ミリ秒

つまり、レスポンスサイズが大きくなるほど転送バイト数が増え、ラウンドトリップが長くなり、APIのレイテンシが増大し、最終的にはユーザーにとって使いにくいアプリになってしまいます。

新しい数値や更新された数値が見つかり次第、この記事は更新される予定です。新しい数値をご存じの方はぜひお知らせください。

参考文献:

  1. https://colin-scott.github.io/blog/2012/12/24/latency-trends/
  2. https://blog.std.in/2015/05/23/http-response-sizes-and-tcp/
  3. https://medium.com/@kousiknath/must-know-numbers-for-every-computer-engineer-6338a12c292c
  1. WordPressユーザーが知っておくべき.htaccessの便利なルール7選

    Apacheサーバーでサイトを運用しているなら、「.htaccess」(Hypertext Accessファイル)と呼ばれる設定ファイルに出会うことになります。このファイルを使えば、ルートディレクトリやサブディレクトリ内のファイル・フォルダへのアクセスを制御するルールを作成できます。実際、WordPressのルートディレクトリにある.htaccessファイルを開いてみると、パーマリンク設定に関連するコードが記述されているはずです。しかし、このファイルでできることはそれだけではありません。ここでは、すべてのWordPressユーザーが知っておき、実装すべき便利な.htaccessルールを7つご

  2. すべてのゲーマーが知っておくべきG-Syncの全知識!画面の乱れを解消するNVIDIAの革新的技術

    フレーム落ちや画像の歪みは、すべてのゲーマーにとって悪夢のような存在です。これらの問題は、大量のリソースを消費する重いアプリケーションが原因で発生し、モニターとグラフィックカードの描画タイミングにズレが生じます。その結果、特定のフレームがモニターのリフレッシュ間隔の途中で描画されてしまうのです。 グラフィックスの描画を担うコンポーネント同士の同期が崩れると、「ティアリング」が頻繁に発生します。ティアリングとは、複数のフレームが同時に描画されることでオブジェクトの配置が崩れ、画面が歪んで見える現象のことです。 「スクリーンテアリング」という言葉に馴染みのない方は、ぜひこの記事を読んでみてください