カスタムカーネルの利点はありますか

多くの人がさまざまな最適化お​​よび改善されたカーネルのことを聞いています;これらは私が知っているZen Kernelとpf-kernelです。 新機能(TuxOnIce、aufsサポート)の追加に加えて、改善されたタスクマネージャー(BFS)とスケジューラー(BFQ)のおかげでパフォーマンスを改善できます。 このトピックでは、pf-kernelのパフォーマンスをUbuntuおよびArch Linuxの標準カーネルと比較し、Ubuntu用のpf-kernelのビルドおよびインストールのプロセスについても説明します。 Zen Kernelをテストしてもあまり意味がありません。 第一に、プロジェクトは放棄されたように見え、第二に、パッチのセットはあちこちで非常に似ています。

テスト


Arch Linux

ネットブックでのArch Linuxテストから始めましょう。
標準コア(3.0-ARCH)でのUnixBenchテスト結果:
テスト得点単位時間イタース。ベースライン索引
レジスタ変数を使用したDhrystone 23432673.5lps10.0秒7116700.0294.1
倍精度砥石821.7MWIPS10.2秒755.0149.4
実行スループット1048.3lps29.7秒243.0243.8
ファイルコピー1024 bufsize 2000 maxblocks120834.3Kbps30.0秒23960.0305.1
ファイルコピー256 bufsize 500 maxblocks36417.8Kbps30.0秒21655.0220.0
ファイルコピー4096 bufsize 8000 maxblocks290993.0Kbps30.0秒25800.0501.7
パイプスループット240124.9lps10.0秒712440.0193.0
パイプベースのコンテキストスイッチング21672.7lps10.0秒74000.054.2
プロセス作成2885.9lps30.0秒2126.0229.0
シェルスクリプト(1同時)738.5lpm60.0秒242.4174.2
シェルスクリプト(8同時)135.6lpm60.4秒26.0226.1
システムコールのオーバーヘッド600176.7lps10.0秒715000.0400.1
システムベンチマークインデックススコア:221.1

そして、pf-kernel(3.0-pf)の同じテストがあります:
テスト得点単位時間イタース。ベースライン索引
レジスタ変数を使用したDhrystone 23700926.6lps10.0秒7116700.0317.1
倍精度砥石846.1MWIPS10.2秒755.0153.8
実行スループット1343.2lps29.6秒243.0312.4
ファイルコピー1024 bufsize 2000 maxblocks127468.0Kbps30.0秒23960.0321.9
ファイルコピー256 bufsize 500 maxblocks37622.9Kbps30.0秒21655.0227.3
ファイルコピー4096 bufsize 8000 maxblocks342606.2Kbps30.0秒25800.0590.7
パイプスループット296672.7lps10.0秒712440.0238.5
パイプベースのコンテキストスイッチング41227.5lps10.0秒74000.0103.1
プロセス作成3969.3lps30.0秒2126.0315.0
シェルスクリプト(1同時)861.1lpm60.1秒242.4203.1
シェルスクリプト(8同時)159.4lpm60.2秒26.0265.6
システムコールのオーバーヘッド642005.3lps10.0秒715000.0428.0
システムベンチマークインデックススコア:264.6


ご覧のとおり、全体的な生産性の向上は20%でした。
Ubuntu

これで、同じテストの結果が、Ubuntuでも同じになりました。
標準カーネル(2.6.38-11-generic)の場合:
テスト得点単位時間イタース。ベースライン索引
レジスタ変数を使用したDhrystone 239162082.2lps10.0秒7116700.03355.8
倍精度砥石9143.1MWIPS9.9秒755.01662.4
実行スループット11472.2lps29.8秒243.02668.0
ファイルコピー1024 bufsize 2000 maxblocks1041722.3Kbps30.0秒23960.02630.6
ファイルコピー256 bufsize 500 maxblocks327345.4Kbps30.0秒21655.01977.9
ファイルコピー4096 bufsize 8000 maxblocks1730411.9Kbps30.0秒25800.02983.5
パイプスループット4204868.3lps10.0秒712440.03380.1
パイプベースのコンテキストスイッチング738528.0lps10.0秒74000.01846.3
プロセス作成32309.9lps30.0秒2126.02564.3
シェルスクリプト(1同時)11023.5lpm60.0秒242.42599.9
シェルスクリプト(8同時)1425.4lpm60.0秒26.02375.7
システムコールのオーバーヘッド5723850.3lps10.0秒715000.03815.9
システムベンチマークインデックススコア:2580.4


pfコア(2.6.38-pf8)の場合:

テスト得点単位時間イタース。ベースライン索引
レジスタ変数を使用したDhrystone 271269301.5lps10.0秒7116700.06107.1
倍精度砥石9175.2MWIPS9.9秒755.01668.2
実行スループット12014.6lps30.0秒243.02794.1
ファイルコピー1024 bufsize 2000 maxblocks1580881.5Kbps30.0秒23960.03992.1
ファイルコピー256 bufsize 500 maxblocks428842.2Kbps30.0秒21655.02591.2
ファイルコピー4096 bufsize 8000 maxblocks2315055.5Kbps30.0秒25800.03991.5
パイプスループット4389021.4lps10.0秒712440.03528.2
パイプベースのコンテキストスイッチング831655.8lps10.0秒74000.02079.1
プロセス作成34789.6lps30.0秒2126.02761.1
シェルスクリプト(1同時)11890.9lpm60.0秒242.42804.5
シェルスクリプト(8同時)1506.4lpm60.0秒26.02510.7
システムコールのオーバーヘッド5815793.6lps10.0秒715000.03877.2
システムベンチマークインデックススコア:3050.7


私の意見では、この増加は18%でした。 2番目のテストの結果がわずかに低いのはなぜですか? 最も可能性が高いのは、テストがx86_64で実行され、標準カーネルでは、Intel Atom上のPentium Pro(SSEなど)用に組み立てられたコアよりもプロセッサアーキテクチャの最適化が多かったということです。

このすべてからわかるように、カーネルを組み立てる意味があります。 結果は、Intel Atom N270とCore 2 Duo E8500の2つのかなり異なるプロセッサーでほぼ同じです。

ARCHのカーネルインストールプロセスについては説明しません。可能な限り簡単です。 ユーザーにとって難しいことではないと確信しています。

Ubuntu用のpf-kernelをビルドしてインストールする


kernel.orgからバージョンのカーネルをダウンロードします。 注意:安定化パッチなしのバージョンをダウンロードする必要があります(2.6.38.11の場合、2.6.38をダウンロードするだけです)。
このカーネルバージョンのpf-kernelをここからダウンロードします
アーカイブを解凍し、パッチをインストールします。
patch -p1 <(pfkernelパッチアドレス)

カーネルを含むフォルダーに構成をコピーします。
cp / boot / config-`uname -r` .config

必要に応じて、localmodconfigを作成すると、不要なモジュールがすべて無効になり、カーネルのアセンブリが大幅に加速されます。

localmodconfigを作成します
/ sbin / lsmodがないと誓う場合
ln -s / bin / lsmod / sbin / lsmod

カーネルをカスタマイズする
menuconfigを作成します
必要に応じて、BFS、BFQ、およびtuxoniceを有効にする必要があります。また、プロセッサに関するタブで、プロセッサの最適化を選択する価値があります。

kernel.orgでカーネルパッチを置きます
sed -rie 's / echo "\ +" /#echo "\ +" /' scripts / setlocalversion

ディレクトリをきれいにします
make-kpkg clean

集める
CONCURRENCY_LEVEL = `getconf _NPROCESSORS_ONLN` fakeroot make-kpkg --initrd --append-to-version = -pf kernel_image kernel_headers

それだけです。 dpkg -i * .debコマンドを使用してカーネルを配置し、ブートローダーで再起動して選択します。

更新:
Zen Kernelは、ほぼ同じ結果を示しましたが、わずかに優れている場合もありますが、一般的には5%以下であり、すべてのテストを完了することなく明るくなりました(テスト時間は約40分)。
z氏は計算の正確性を非常に疑ってました。 ここの表は、各テストの指標の成長と、インデックスの成長だけでなく平均の成長を見ることができます。 数字はほぼ同じでした。
IoGaWiseLordおよびgnomebyの場合 -バニラカーネルとそのア​​ーキテクチャ用にアセンブルされたバニラの比較。パフォーマンスの向上が見られた場合、エラーレベル以下で、ほとんど違いはありません。

Source: https://habr.com/ru/post/J131263/


All Articles