UKSMはKSM(RedHatのテクノロジー)に触発されていますが、ほぼ完全に書き直されています。
KSMにはいくつかの欠点があります。
- ユーザーと開発者の不透明度。 プログラムは、どのページを結合するかをカーネルに伝える必要があります。これはめったに使用されません。
- かなり愚かなアルゴリズム :一定の速度でメモリをスキャンします。 結合できるページがない場合にCPUを無駄にするのはなぜですか?
- 十分に遅い :テスト中に達成された最大スキャン速度は260 MB /秒でした。
そしてここにUKSMが来ます:
- メモリ自体をスキャンします。 開発者はソースを編集する必要はありません。
- CPUを無駄にすることはありません。 UKSMは、ランダムサンプルの履歴に基づいて、非整列ページを自動的に検出します。 多数の既知の非整列ページのあるスペースにはフルスピードが与えられ、結合されたページの数が少ないスペースには、CPUサイクルがほとんどない低優先度が与えられます。
- 非常に高速。 このために、新しいハッシュアルゴリズムが使用されます。 通常、あるページと別のページを区別するには、その一部のみをキャッシュするだけで十分です。 最良の場合、アルゴリズムはページ全体ではなく1つの32ビットワードのみをキャッシュすれば十分ですが、最悪の場合、その速度はSuperFastHashに匹敵します。 ページ検索速度:627-2445 MB /秒、登録速度:477-923 MB /秒。 また、CPUはスラッシングゾーンで浪費されないため、CPUの使用量が大幅に減り、メモリが少し節約されます。
ゲインとは何ですか?
私のデスクトップでは、メモリ消費が50〜100 MB削減されました。 理想的には、10台の同一の仮想マシンがRAMを1つとして消費します。
プロジェクトサイト: kerneldedup.org/en