KVMのKSMテクノロジーの紹介 共有メモリの概念は、現代のオペレーティング システムでは非常に一般的です。たとえば、プログラムが起動すると、そのメモリのすべてが親プロセスと共有されます。しかし、子プロセスまたは親プロセスが共有メモリを変更する必要がある場合、Linux は新しいメモリを割り当て、元の領域の内容を新しいメモリにコピーします。このプロセスはコピーオンライトと呼ばれます。
KSM は Linux の新しい属性であり、その機能は共有メモリと正反対です。 Linux で KSM が有効になっている場合、KSM は実行中の複数のプロセスをチェックし、それらのメモリを比較します。いずれかの領域またはページが同一である場合、KSM はためらうことなくそれらを 1 つのページに結合します。その後、新しいページもコピーオンライトとしてマークされます。 VM がメモリを変更する場合、Linux は VM に新しいメモリを割り当てます。 KSMテクノロジーの応用シナリオ KSM テクノロジーを理解した後、KSM は KVM で大きな役割を果たすことができると感じています。 アドバンテージ: a. VM が起動されると、親プロセス (qemu-kvm) のメモリのみが継承されます。 VM のメモリは、同じオペレーティング システムを搭載している VM や同じアプリケーションを実行している VM で共有できます。 b. KSM を有効にすると、よく使用されるプロセス データはキャッシュとメイン メモリに保存されます。これにより、VM キャッシュ ミスが削減され、VM のパフォーマンスも向上します。 紀元前共有メモリにより、VM の全体的なメモリ使用量が削減され、密度が向上し、リソースの使用率が向上します。 もちろん、あらゆるテクノロジーには限界があり、さまざまなシナリオでその欠点が明らかになることは間違いありません。 a. KSM を使用してメモリを過剰に使用します。これにより、メモリスキャンに一定量のコンピューティングリソースが消費され、CPU 消費量が増加します。メモリの過剰使用はスワップの相互作用を頻繁に発生させ、VM のパフォーマンス低下を引き起こします。 b. KSM はサイドチャネルを使用するため、顧客情報が漏洩する潜在的なリスクが生じる可能性があります。このため、VM 上で KSM をオフにすることを検討する必要があります。 それでは、アプリケーションシナリオをまとめてみましょう。 a.実稼働環境では注意して使用し、緊急時に有効にしてください。 b.テスト環境での使用をお勧めします。 紀元前デスクトップ仮想化環境での使用をお勧めしますが、メモリ使用量に注意してください。 KSM技術実習 KSM (Kernel Samepage Merging) が Linux 2.6.32 カーネルに追加されました。 CentOS 6 および Fedora 16 では、KSM はデフォルトでオンになっています。 Debian と Ubuntu には、デフォルトではこのサービスがありません。 KSM は、ksmd と ksmtuned という 2 つのサービスを通じて実装されます。管理者は環境を判断し、KSM を実行し続けるか、オフにするかを決定する必要があります。 1. Centos6 システムの場合、KSM をオンにしなくても仮想マシンのメモリ要件を満たすことができるため、KSM をオフにすることをお勧めします。オフにする方法は次のとおりです。
2. Ubuntu にはデフォルトでは KSM サービスがありません。使用する必要がある場合は、ksmtunedサービスをインストールしてください
3. KSMの動作ステータスを確認する /sys/kernel/mm/ksmディレクトリでは、 pages_to_scan: ksmd がスリープする前にスキャンする必要があるページ数 (デフォルトは 100)。 sleep_millisecs : このファイルは、ksmd が別のページスキャンを実行する前にスリープするミリ秒数を定義します。 max_kernel_pages: このファイルは、ksmd が使用できるページの最大数を定義します (デフォルト値は使用可能なメモリの 25% ですが、最大値を指定するために 0 を書き込むことができます)。 pages_to_scan : ファイルは、特定のスキャンでスキャンできるページ数を定義します。どのユーザーでも閲覧可能です。これらのファイルですが、変更するにはユーザーが root 権限を持っている必要があります。 full_scans : このファイルは、実行された全領域スキャンの数を示します。 pages_shared: KSM が使用しているスワップ不可能なカーネル ページの数。 pages_sharing: メモリストレージディレクティブ。共有されるノードの数と保存されるノードの数。 pages_unshared: マージのために二重チェックされた一意のページの数。 pages_volatile: 頻繁に変更されるページの数。 max_page_sharing: 各ページを共有できる回数。 merge_across_nodes: 複数の NUMA ノードのメモリを指定してマージするかどうか。 run : ksm 属性の状態を設定します。 use_zero_pages: 空白ページを結合するかどうか。デフォルトでは閉じられています。 4. KSM設定 KSM の役割を理解したところで、KSM を使用する際にどのように最適化できるでしょうか? KSM パラメータは /etc/ksmtuned.conf ファイルで調整できます。デフォルトのパラメータは次のとおりです。 パラメータの詳細な説明は次のとおりです。 KSM_MONITOR_INTERVAL は、ksm の各メモリ スキャンの時間を示します。 KSM_SLEEP_MSEC は各スキャンの休止間隔を示します (最小値は 10)。 KSM スキャンは CPU オーバーヘッドをある程度占有するため、KVM 仮想マシンまたはアプリケーション ソフトウェアの数が少ない場合は、KSM_SLEEP_MSEC を大きい値に調整し、それ以外の場合は小さい値を設定できます。同時に、ハイパーバイザー内の仮想マシンのメモリ調整が安定した状態に達したら、CPU オーバーヘッドを節約するために、状況に応じてこのパラメータをより小さな値に調整することもできます。 KSM_THRES_COEF は臨界値係数を表します。 KSM_THRES_CONST は臨界値定数を表します。 KSM_NPAGES_BOOST はメモリ ページ マージの増加数を示します。 KSM_NPAGES_DECAY はメモリ ページ マージ削減の数を示します。 KSM_NPAGES_MIN はメモリ ページ マージの最小値を示します。 KSM_NPAGES_MAX はメモリ ページ マージの最大値を示します。 LOGFILE は、ksmtuned のログ保存パスを示します。デフォルトのパスを使用することをお勧めします。 DEBUG はコメントを解除した後にのみ有効になります。デフォルト値を使用することをお勧めします。 5. VMのセットアップ kvm 環境では、VM のメモリマージを許可するかどうかを選択できます。 顧客情報の漏洩を防ぐため、通常はKSMをオフにしています。手順は非常に簡単で、VM xml を変更します。
|
<<: 中国移動研究所の Li Kai 氏: 「エッジ クラウド」の将来はどこにあるのでしょうか?
世界トップクラスのeスポーツイベントの3年間にわたる独占生中継、中国のZ世代の若者に最も人気のある2...
この記事では、CPU、メモリ、ストレージ、ネットワーク パフォーマンスの観点から、仮想マシンとベアメ...
月収10万元の起業の夢を実現するミニプログラム起業支援プラン技術革新とアプリケーションにおける革新的...
今年5月に知乎が開始した動画クリエイター募集計画が、出兵前のスローガンのようなものだとすれば、知乎の...
編集者注:設立からまだ3年しか経っていないWeChatにとって、その「兄貴分」であるTaobaoは容...
完全なチャネル プロセスは、オフサイト チャネル - 広告クリエイティブの表示 - ランディング ペ...
たまたまサッスーの2008年の記事「小さな魔女はミルクを食べる」を読み返していたところ、日本の乳製品...
南方都市報記者謝睿、高玲雲、研修生欧景紅 百度と奇虎360の戦いが本格化した。1日後、双方は一時的に...
イギリス文化には「部屋の中の象」ということわざがあります。つまり、明らかに部屋に象が押し込まれていて...
対外貿易B2Cモールには、プラットフォーム型モールと自社構築型モールの2種類があります。プラットフォ...
Amazon グループ会社の Amazon Web Services, Inc. (AWS) は本日...
1. はじめに前回の記事では、Kafka のアーキテクチャモデルについて詳しく紹介しました。クラスタ...
今年上海で開催された検索エンジンカンファレンスで、コールセンタービジネス標準の開発の専門家による講演...
ある車が時速 60 キロメートルで道路を走行しているときに、突然「幽霊が飛び出す」現象 (つまり、車...
カンファレンスでは SEO 担当者とウェブマスター向けにいくつかのヒントを紹介します。たとえば、Go...