DUICUO

Kubernetes のメモリ単位 Mi と M の違いをご存知ですか?

Kubernetesでは、Miという単位が頻繁に使用されます。Kubernetes初心者は、MiとMの違いに戸惑うかもしれません。Kubernetesを長年使っている人でも、両者の違いが分からない場合があります(このような初心者は、レベルアップが必要です)。

問題の背景

多くの人がkb、Kb、KiB、Mb、MiB、MB、TB、GB、バイト/秒、ビット/秒、bpsなどの違いについて混乱しています。私もそうでした。これらを区別する前に、いくつかの重要な概念を理解する必要があります。

  • データサイズやデータ速度の表現は大きく異なり、測定方法も異なります。
  • 異なるのは「b」(ビット)と「B」(バイト)だけではありません。「k」と「K」や「m」と「M」も異なります。
  • 大文字の「K」/「M」はストレージ業界で使用され、小文字の「k」/「m」は通信業界で使用されます。文書作成時にこの2つを混同し、誤って使用してしまう人もいます。

コンピュータ ソフトウェアの世界では、KB は 1024B、MB は 1024KB など、常に 2 の累乗です。ただし、標準の国際単位系 (SI 単位) または通信業界 (コンピュータのメモリ スティックが 1M であれば、1024*1024B ではなく 1000*1000B を意味するなど、コンピュータ ハードウェアを含む) では、M は 10 の累乗です。

Kubernetesの表記法

これらの問題を防ぐために、Kubernetes は、1000 * 1000B を表すために M (メガバイト)、1024 * 1024B を表すために Mi (メビバイト) を使用する新しい標準を採用しました。

例を見てみましょう。

例を使って詳しく見てみましょう。1Miと1Mを要求するポッドを2つ作成し、ログを使用してそれぞれのメモリ要求に関する詳細情報を確認します。

nginx-Mi.yaml:

 apiバージョン: v1
種類:ポッド
メタデータ
名前: nginx - Mi
仕様:
コンテナ
-名前: nginx - Mi
画像: nginx :最新
ポート:
-コンテナポート: 80
リソース
制限
CPU : 200 m
メモリ: 128 Mi
リクエスト:
CPU : 0.1
メモリ: 1 Mi

nginx-M.yaml:

 apiバージョン: v1
種類:ポッド
メタデータ
名前: nginx - M
仕様:
コンテナ
-名前: nginx - M
画像: nginx :最新
ポート:
-コンテナポート: 80
リソース
制限
CPU : 200 m
メモリ: 128 Mi
リクエスト:
CPU : 0.1
メモリ1 MB

nginx-Mi 関連のログには次の行が含まれており、Memory = 1024 * 1024 であることがわかります。

述語. go : 565 ]述語: MilliCPU = 100メモリ= 1048576 NvidiaGPU = 0 OpaqueIntResources = map []

nginx-M 関連のログには次の行が含まれており、Memory = 1000 * 1000 であることを示しています。

述語. go : 565 ]述語: MilliCPU = 100メモリ= 1000000 NvidiaGPU = 0 OpaqueIntResources = map []