これは、なにをしたくて書いたもの?
CPUサイクルに対してメモリアクセスのレイテンシ比とか、メモリアクセスとディスクアクセスのレイテンシ比がどこかに
まとまっていたな、と時々思いながら、どこにあるか忘れて探すことになるので。
各リソースアクセスへのスケール感を把握するのに役に立つと思うので、メモしておくことにしました。
出典は、「詳解 システム・パフォーマンス」です。
O'Reilly Japan - 詳解 システム・パフォーマンス
ディスクやネットワークに関しても、まとまっていました。
あと、JCacheでもメモリ、ネットワークに関しては参考になりそうな図があったので、こちらもメモとして。
システムコンポーネント(CPU、メモリ、ディスク、ネットワーク等)のレイテンシとタイムスケール
3.3GHzのCPUのレジスタアクセスから、メモリ、ディスク等のおよそのレイテンシと、CPUのレジスタアクセスを1秒とした時に
その比がどれくらいになるか(タイムスケール)を示した表です。
操作 | レイテンシ | 対比 |
---|---|---|
1 CPU(3.3GHz)サイクル | 0.3 nano秒 | 1秒 |
レベル1 キャッシュアクセス | 0.9 nano秒 | 3秒 |
レベル2 キャッシュアクセス | 2.8 nano秒 | 9秒 |
レベル3 キャッシュアクセス | 12.9 nano秒 | 43秒 |
メインメモリアクセス(DRAM、CPUから) | 120 nano秒 | 6分(360秒) |
SSD I/O(フラッシュメモリ) | 50 〜 150 μ秒 | 2〜6日 |
回転ディスク I/O | 1〜10 m秒 | 1〜12ヶ月 |
インターネット: サンフランシスコ - ニューヨーク | 40 m秒 | 4年 |
インターネット: サンフランシスコ - イギリス | 81 m秒 | 8年 |
インターネット: サンフランシスコ - オーストラリア | 183 m秒 | 19年 |
TCPパケット再送 | 1〜3秒 | 105〜317年 |
OS仮想化システムリブート | 4秒 | 423年 |
SCSIコマンドタイムアウト | 30秒 | 3,000年 |
ハードウェア仮想化システムリブート | 40秒 | 4,000年 |
物理システムリブート | 5分 | 32,000年 |
出典は、「詳解 システム・パフォーマンス」の「2.3.2 タイムスケール/表2-2 システムレイテンシのタイムスケール例」。
O'Reilly Japan - 詳解 システム・パフォーマンス
これとほぼ同じものが、こちらのページで見れますけど。
※微妙に数字が違いますが
Compute Performance – Distance of Data as a Measure of Latency | Formulus Black | In-Memory Storage
このページを追うと、「詳解 システム・パフォーマンス」の著者のページにたどり着きます。
というか、第2版があったんですね。欲しい…。
Systems Performance 2nd Edition Book
ディスクI/Oのレイテンシのタイムスケール
次は、ディスクI/Oのタイムスケールのイメージです。オンディスクキャッシュヒットした時のレイテンシを1秒と
した場合に、それぞれの値がどれくらいになるかも書かれています。
イベント | レイテンシ | 対比 |
---|---|---|
オンディスクキャッシュヒット | < 100 μ秒 | 1秒 |
フラッシュメモリからの読み出し | 〜100から1,000 μ秒(小規模なI/Oから大規模なI/Oまで) | 1〜10秒 |
回転ディスクからのシーケンシャル読み出し | 〜1 m秒 | 10秒 |
回転ディスクからのランダム読み出し(7,200rpm) | 〜8 m秒 | 1.3分 |
回転ディスクからのランダム読み出し(遅く、キューイングされる) | > 10 m秒 | 1.7分 |
回転ディスクからのランダム読み出し(キューで大量に待っている) | > 100 m秒 | 17分 |
最悪の条件の仮想ディスクI/O(ハードウェアコントローラー、RAID 5、キューイング、ランダムI/O) | 〜1 m秒 | 2.8時間 |
出典は、「詳解 システム・パフォーマンス」の「9.3.2 タイムスケール/表9-1 ディスクI/Oレイテンシのタイムスケールのイメージ」。
O'Reilly Japan - 詳解 システム・パフォーマンス
ネットワークのレイテンシのタイムスケール
ネットワークのレイテンシのタイムスケール。ICMPエコー要求からエコー応答を受け取るまで、要するにpingでの
レイテンシとそのスケールを表にしたものです。
localhostでのpingを1秒とした時に、他の値がそれぞれどのくらいになるかの対比もまとめられています。
送信 | 受信 | 媒体 | レイテンシ | 対比 |
---|---|---|---|---|
localhost | localhost | カーネル | 0.05 m秒 | 1秒 |
ホスト | ホスト(同じサブネット) | 10GbE | 0.2 m秒 | 4秒 |
ホスト | ホスト(同じサブネット) | 1GbE | 0.6 m秒 | 12秒 |
ホスト | ホスト(同じサブネット) | WiFi | 3 m秒 | 1分 |
サンフランシスコ | ニューヨーク | インターネット | 40 m秒 | 13分 |
サンフランシスコ | イギリス | インターネット | 81 m秒 | 27分 |
サンフランシスコ | オーストラリア | インターネット | 183 m秒 | 1時間 |
出典は、「詳解 システム・パフォーマンス」の「10.3.5 レイテンシ/表10-1 ping遅延の例」。
O'Reilly Japan - 詳解 システム・パフォーマンス
キャッシュオブジェクトへのアクセス
上記の情報とは違ってキャッシュに閉じた話ですが、以下の対比についてもメモとして。
- ヒープ上のオブジェクトの取得
- ヒープ上にあるシリアライズされたオブジェクトの取得+デシリアライズ
- SSD上にあるシリアライズされたオブジェクトの取得+デシリアライズ
- ネットワーク越しにシリアライズされたオブジェクトを取得+デシリアライズ
https://www.jfokus.se/jfokus16/preso/How-to-Speed-Up-Your-Application-using-JCache.pdf