KVM で遊ぶ: KSM メモリのマージについて

KVM で遊ぶ: KSM メモリのマージについて

KVMのKSMテクノロジーの紹介

共有メモリの概念は、現代のオペレーティング システムでは非常に一般的です。たとえば、プログラムが起動すると、そのメモリのすべてが親プロセスと共有されます。しかし、子プロセスまたは親プロセスが共有メモリを変更する必要がある場合、Linux は新しいメモリを割り当て、元の領域の内容を新しいメモリにコピーします。このプロセスはコピーオンライトと呼ばれます。

[[270384]]

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 をオフにすることをお勧めします。オフにする方法は次のとおりです。

  1. chkconfig ksmdオフ 
  2. chkconfig ksmtunedオフ 
  3. サービスksmdオフ 
  4. サービスksmtunedオフ 

2. Ubuntu にはデフォルトでは KSM サービスがありません。使用する必要がある場合は、ksmtunedサービスをインストールしてください

  1. sudo apt-get ksmtuned をインストールします
  2. サービス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 を変更します。

  1. <メモリバック>
  2. <nosharepages/>
  3. </メモリバックイング>

<<:  中国移動研究所の Li Kai 氏: 「エッジ クラウド」の将来はどこにあるのでしょうか?

>>:  デジタル時代が自動車産業を変革

推薦する

ブランドマーケティングデータ分析の9つの基本手法!

「データ分析の方法は何ですか?」仕事でも面接でも、この質問は多くの学生を困惑させます。ああ、毎日数...

新しいウェブサイトのランキングの変化

朝起きたら、Mianbao.comの映画のランキングが消えていました。5ページ目から直接消えて、数十...

CentOS 6にMinecraftサーバーをインストールする

ホストの猫は退屈していたので、ゲームをインストールして遊びたいと思っていました。Minecraft ...

Namecheap - ドメイン名 5 年 $5.58、ホスティング初年度 $9.98、サーバー $58.98

今後、Namecheapではさまざまな商品を販売しており、その中には[1]ドメイン名、16種類のドメ...

検索エンジンはブランドマーケティングへの依存から活用へとアップグレード

検索エンジンシェアの最近の変化から判断すると、今後の検索エンジン市場における百度の独占は新たな変化に...

armorshark-coudstack クラウド / 年額 24 ドル / メモリ 512 MB / SSD 20 GB / トラフィック 1 T

Armorshark は、基盤となる仮想化として KVM と SSD ハードディスクを備えた新しい ...

Baidu に降格された動画収集サイトを復活させる方法

みなさんこんにちは。私は飛虎映画ウェブサイトの所有者です。タイトルの通り、私の映画コレクションウェブ...

ストリーミングメディア分野における人工知能の応用に関する簡単な議論

人工知能はさまざまな業界の変革を加速させており、ストリーミング メディア分野は最も急速に変化している...

2014 年 3 月、私の国のドメイン名の総数は 30 万以上増加し、前月から 4 倍になりました。

IDC Review Network (idcps.com) は 4 月 4 日に次のように報告しま...

産業用エッジコンピューティングアーキテクチャの進化

究極の産業用エッジ コンピューティング デバイスは、物理プロセスを感知して制御し、ローカル プログラ...

モモのトラフィック戦略:ゲートキーパーの構築とロングテールの創出

昨年末、360創始者の周紅一氏は「インターネット階級の強化」という概念を何度も提唱した。インターネッ...

ウェブサイトを内側から構築する方法

現在、ウェブサイト市場はますます飽和状態になりつつあり、さまざまなウェブサイトが雨後の筍のように出現...

iberx-5.95 USD/KVM/768 MB RAM/20 GB HDD/500 GB フロー/シアトル

iberx は、シアトルとオランダに拠点を置く新しい KVM 仮想 VPS を立ち上げました。この ...

実名登録はますます非公開化している

北京市が2011年12月に発効した「北京マイクロブログ発展管理条例」では、Weiboユーザーは登録時...

JVMクラスローディングサブシステムの解毒について話しましょう

[[325862]]ライブインタビューあなたの履歴書を見ると、JVM に精通しているようですが、クラ...