ITインフラストラクチャの効率の最大化:ハードウェアとソフトウェアの圧縮 #2
この第2章の目的は、ハードウェア圧縮とソフトウェア圧縮のどちらを使用するかという重要な質問に答えることです。🤔
ここで、システム構成やアーキテクチャの選択を真剣に検討し、より複雑なトレードオフを行います。
【ソフトウェアとハードウェアの圧縮について】
まず、これらの用語の使い方を整理しましょう。
ソフトウェア圧縮とは、システムのCPUで圧縮アルゴリズムを実行することです。これは、データを圧縮するためのデフォルトの方法です。一部のアプリケーションには、SW圧縮設定のオプションがあり、デフォルトで何らかの形式のSW圧縮がオンになっています。
ハードウェア圧縮とは、圧縮アルゴリズムを実行する専用のステートマシンを使用することを指します。このステートマシンは、チップ(SoC、ASIC、またはFPGA)内の特定の回路セットであり、1つの固定機能(この場合は圧縮または圧縮解除)を実行するように設定されています。コンピューティングでは、反復的な固定機能タスク(圧縮や伸長など)は、汎用プロセッサ上で動作するソフトウェアよりもステートマシンの方が高速かつ効率的に実行できます。
【圧縮するハードウェアまたはソフトウェアの選択による影響】
それでは、圧縮にハードウェアまたはソフトウェアを選択した場合の影響をいくつか見てみましょう。
1. 圧縮性能
圧縮アルゴリズムは、特に大規模なデータセットを扱う場合や、パート1で説明したように重い重みの圧縮アルゴリズムの1つを使用する場合に、計算量が多くなります。圧縮を専用のハードウェアまたは専用のアクセラレータにオフロードすると、圧縮プロセスが大幅に高速化され、システム全体のパフォーマンスが向上します。
2. アプリケーションのパフォーマンス
圧縮タスクは、特に複数の圧縮タスクが同時に実行されている場合や、計算負荷の高い他のプロセスと並行して実行されている場合に、大量のCPUリソースを消費する可能性があります。オフロードによる第1レベルのメリットは、単に「CPUサイクルを他の重要なタスクのために解放する」ことですが、CPUサイクルの効率にもメリットがあります。圧縮アクションごとに、CPUは圧縮とアプリケーションの間でタイムスライスを行う必要があるため、複数のユーザーがアプリケーションにpingを実行して圧縮を同時に実行するのではなく、圧縮を排他的に実行する単純なベンチマークテストで見られるものを超えて、CPUに余分な負荷がかかります。より大きな圧縮ブロック(16KBや32KBなど)を使用すると、大量のキャッシュが消費され、アプリケーションから他のスレッドが削除され(キャッシュ汚染)、アプリケーションのパフォーマンスとレイテンシーがさらに低下する可能性があります。
3. 拡張性
圧縮を専用のハードウェアまたはアクセラレータにオフロードすると、CPUとは無関係に圧縮機能を拡張できます。圧縮固有のハードウェアを追加またはアップグレードして、ワークロードの増加やデータスループットの向上を処理でき、必ずしもシステム全体をアップグレードしたり、そもそもシステムをオーバースペックしたりする必要はありません。NVMe SSDを使用していて、そのパフォーマンスの可能性を最大限に引き出そうとしている場合、2台を超えると、SW圧縮がドライブに追いつくのは非常に困難です。
【図1: スループットはストレージに合わせて拡張できますか?】
12個のXeonコアでSW圧縮が実行されているため、2つのNVMe SSDが飽和状態になる前にCPUが最大限に活用されます。ドライブベースのハードウェア圧縮により、ドライブを追加するたびにスループットを拡張できます。
4. 電力効率
圧縮タスクは、特にCPUによって実行される場合、電力を大量に消費する可能性があります。専用の圧縮ハードウェアやアクセラレータは、多くの場合、電力効率が最適化されているため、より低いエネルギーコストで圧縮を実現できます。この利点は、消費電力が懸念されるモバイル機器、組み込みシステム、またはバッテリ駆動機器において特に重要です。第1回では、さまざまな圧縮アルゴリズムを使用したコアあたりの圧縮スループットについて説明しました。LZ4でストレージ容量の節約を犠牲にしたとしても、HW1の代わりにSWを使用して圧縮されたデータのGBあたりの電力は100倍になります。
【図2 – Xeon GoldコアでGZIPおよびLZ4 SWを実行した場合と、SSDコントローラのHWステートマシンでGZIPと同等の圧縮を実行した場合で、4GB/秒の圧縮スループットを提供するために必要な総電力。低いほど良いです!!】
5. 特殊なアルゴリズム
ビデオ圧縮用のH.264やHEVCなどのハードウェアアクセラレーションコーデックなど、一部の圧縮アルゴリズムは、最適なパフォーマンスを得るために専用のハードウェアを活用するように特別に設計されています。これらのアルゴリズムを特殊なハードウェアにオフロードすると、CPUのみに依存する場合と比較して、効率が大幅に向上し、圧縮率が向上します。
6. 並列
圧縮タスクは並列化できることが多く、複数のサブタスクに分割して同時に処理することができます。専用の圧縮ハードウェアまたはアクセラレータは、多くの場合、並列処理機能を提供し、CPUでのシーケンシャル処理と比較して圧縮および解凍時間を短縮できます。
【#2のまとめ】
全体として、HW圧縮は、SW圧縮から生じる可能性のあるアプリケーションパフォーマンスの低下をもたらすことなく、圧縮スループットの電力効率とスケーラビリティを大幅に向上させます。一部のワークロードはペナルティの対象にはなりませんが、SSDの高い読み取り/書き込みパフォーマンスと低レイテンシを必要とするアプリケーションは、ソフトウェア圧縮によってすぐに制約を受ける可能性があります。
#3では、最後のいくつかの質問、つまり圧縮する場所と暗号化の処理方法を見ていきます。