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

多くの人がさまざまな最適化お​​よび改善されたカーネルのことを聞いています;これらは私が知っている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 2 3432673.5 lps 10.0秒 7 116700.0 294.1
倍精度砥石 821.7 MWIPS 10.2秒 7 55.0 149.4
実行スループット 1048.3 lps 29.7秒 2 43.0 243.8
ファイルコピー1024 bufsize 2000 maxblocks 120834.3 Kbps 30.0秒 2 3960.0 305.1
ファイルコピー256 bufsize 500 maxblocks 36417.8 Kbps 30.0秒 2 1655.0 220.0
ファイルコピー4096 bufsize 8000 maxblocks 290993.0 Kbps 30.0秒 2 5800.0 501.7
パイプスループット 240124.9 lps 10.0秒 7 12440.0 193.0
パイプベースのコンテキストスイッチング 21672.7 lps 10.0秒 7 4000.0 54.2
プロセス作成 2885.9 lps 30.0秒 2 126.0 229.0
シェルスクリプト(1同時) 738.5 lpm 60.0秒 2 42.4 174.2
シェルスクリプト(8同時) 135.6 lpm 60.4秒 2 6.0 226.1
システムコールのオーバーヘッド 600176.7 lps 10.0秒 7 15000.0 400.1
システムベンチマークインデックススコア: 221.1


そして、pf-kernel(3.0-pf)の同じテストがあります:

テスト 得点 単位 時間 イタース。 ベースライン 索引
レジスタ変数を使用したDhrystone 2 3700926.6 lps 10.0秒 7 116700.0 317.1
倍精度砥石 846.1 MWIPS 10.2秒 7 55.0 153.8
実行スループット 1343.2 lps 29.6秒 2 43.0 312.4
ファイルコピー1024 bufsize 2000 maxblocks 127468.0 Kbps 30.0秒 2 3960.0 321.9
ファイルコピー256 bufsize 500 maxblocks 37622.9 Kbps 30.0秒 2 1655.0 227.3
ファイルコピー4096 bufsize 8000 maxblocks 342606.2 Kbps 30.0秒 2 5800.0 590.7
パイプスループット 296672.7 lps 10.0秒 7 12440.0 238.5
パイプベースのコンテキストスイッチング 41227.5 lps 10.0秒 7 4000.0 103.1
プロセス作成 3969.3 lps 30.0秒 2 126.0 315.0
シェルスクリプト(1同時) 861.1 lpm 60.1秒 2 42.4 203.1
シェルスクリプト(8同時) 159.4 lpm 60.2秒 2 6.0 265.6
システムコールのオーバーヘッド 642005.3 lps 10.0秒 7 15000.0 428.0
システムベンチマークインデックススコア: 264.6




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

Ubuntu


これで、同じテストの結果が、Ubuntuでも同じになりました。

標準カーネル(2.6.38-11-generic)の場合:

テスト 得点 単位 時間 イタース。 ベースライン 索引
レジスタ変数を使用したDhrystone 2 39162082.2 lps 10.0秒 7 116700.0 3355.8
倍精度砥石 9143.1 MWIPS 9.9秒 7 55.0 1662.4
実行スループット 11472.2 lps 29.8秒 2 43.0 2668.0
ファイルコピー1024 bufsize 2000 maxblocks 1041722.3 Kbps 30.0秒 2 3960.0 2630.6
ファイルコピー256 bufsize 500 maxblocks 327345.4 Kbps 30.0秒 2 1655.0 1977.9
ファイルコピー4096 bufsize 8000 maxblocks 1730411.9 Kbps 30.0秒 2 5800.0 2983.5
パイプスループット 4204868.3 lps 10.0秒 7 12440.0 3380.1
パイプベースのコンテキストスイッチング 738528.0 lps 10.0秒 7 4000.0 1846.3
プロセス作成 32309.9 lps 30.0秒 2 126.0 2564.3
シェルスクリプト(1同時) 11023.5 lpm 60.0秒 2 42.4 2599.9
シェルスクリプト(8同時) 1425.4 lpm 60.0秒 2 6.0 2375.7
システムコールのオーバーヘッド 5723850.3 lps 10.0秒 7 15000.0 3815.9
システムベンチマークインデックススコア: 2580.4




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



テスト 得点 単位 時間 イタース。 ベースライン 索引
レジスタ変数を使用したDhrystone 2 71269301.5 lps 10.0秒 7 116700.0 6107.1
倍精度砥石 9175.2 MWIPS 9.9秒 7 55.0 1668.2
実行スループット 12014.6 lps 30.0秒 2 43.0 2794.1
ファイルコピー1024 bufsize 2000 maxblocks 1580881.5 Kbps 30.0秒 2 3960.0 3992.1
ファイルコピー256 bufsize 500 maxblocks 428842.2 Kbps 30.0秒 2 1655.0 2591.2
ファイルコピー4096 bufsize 8000 maxblocks 2315055.5 Kbps 30.0秒 2 5800.0 3991.5
パイプスループット 4389021.4 lps 10.0秒 7 12440.0 3528.2
パイプベースのコンテキストスイッチング 831655.8 lps 10.0秒 7 4000.0 2079.1
プロセス作成 34789.6 lps 30.0秒 2 126.0 2761.1
シェルスクリプト(1同時) 11890.9 lpm 60.0秒 2 42.4 2804.5
シェルスクリプト(8同時) 1506.4 lpm 60.0秒 2 6.0 2510.7
システムコールのオーバーヘッド 5815793.6 lps 10.0秒 7 15000.0 3877.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の場合 -バニラカーネルとそのア​​ーキテクチャ用にアセンブルされたバニラの比較。パフォーマンスの向上が見られた場合、エラーレベル以下で、ほとんど違いはありません。



All Articles