web-dev-qa-db-ja.com

Linuxカーネルのコンパイルをスピードアップするには?

私は8GB RAMのコアi5を持っています。マシンにVMwareワークステーション10.0.1がインストールされています。ゲストOSとしてFedora 20 Desktop EditionをVMwareにインストールしています。

Linuxカーネルのソースコードv 3.14.1に取り組んでいます。 Linuxカーネル用のI/Oスケジューラを開発しています。毎回コードを変更した後、変更を確認するためにカーネルコード全体をコンパイルしてインストールするのに約1時間30分かかります。

コンパイルおよびインストールコマンド:make menuconfigmakemake modulesmake modules_installmake install

だから私の質問は、1時間30分を10〜15分に短縮することは可能ですか

18
momersaleem

ソースに加えたすべての変更に対してmake menuconfigを実行しないでください。変更がどれほど些細なものであっても、すべての完全なコンパイルがトリガーされます。これは、カーネルの構成オプションが変更された場合にのみ必要であり、開発中に発生する可能性があります。

ただやる:

make

または、並列コンパイルを好む場合:

make -j4

または好きな数の同時タスク.

もちろん、最近ビルドされたバイナリをデプロイするには、make installなどが必要になる場合があります。

別のトリックは、テストに必要な最小限にカーネルを構成することです。多くのタスクでは、UMLコンパイル(ユーザーモードLinux)が最速であることがわかりました。また、make localmodconfigではなく、make menuconfigが便利な場合もあります。

22
rodrigo
  1. make並列ビルドと-jオプションを使用
  2. それ以外の場合、makeはリストされたすべてのアーキテクチャー用のカーネルを構築するため、ターゲット・アーキテクチャーのみのためにコンパイルします。

つまり、たとえば実行する代わりに:

make

実行:

make Arch=<your architecture> -jN

ここで、Nはマシン上のコアの数です(cat /proc/cpuinfoはコアの数を示します)。たとえば、i386ターゲットおよび4 corescat /proc/cpuinfoの出力)を備えたホストマシンの場合:

make Arch=i386 -j4

同様に、modules_installフラグを使用して、他のmakeターゲット(modules-jNinstall)を実行できます。

注:makeは、変更されたファイルのチェックを行い、変更されたファイルのみをコンパイルするため、最初のビルドのみに時間がかかり、その後のビルドはより高速になります。

4
brokenfoot

変更するたびにmake menuconfigを再度実行する必要はありません。カーネル.configファイルを作成するために1回だけ必要です。 (あるいは、Kconfigファイルを編集して構成オプションを追加または変更した場合、おそらくこれは頻繁には発生しないはずです。)

.configをそのままにしておく限り、makeを実行しても、変更したファイルのみが再コンパイルされます。毎回コンパイルする必要のあるファイルがいくつかありますが、大部分はそうではありません。

4

make -jは、使用可能なすべてのCPUを使用します。

2
Eric Wang

ccache はコンパイル時間を劇的にスピードアップできるはずです。これは、以前のコンパイルをキャッシュし、同じコンパイルが再度行われるタイミングを検出することにより、再コンパイルを高速化します。 ccacheを使用した最初のコンパイルは、キャッシュにデータを追加する必要があるため遅くなりますが、その後のビルドははるかに高速になります。

Ccacheの設定に煩わされたくない場合は、次のように実行してカーネルをコンパイルします。

ccache make
2
Elias

十分なRAMがあり、カーネルの構築中にマシンを使用しない場合、uは多数の同時ジョブを生成する可能性があります。しかし、RAM =それ以外の場合、システムはハングしてクラッシュします。

0
sohom154

おそらく、前の提案に加えて、ccacheを使用しているときに、CONFIG_GCC_PLUGINS(設定されている場合)そうしないと、 this の例にあるように、多くのキャッシュミスが発生する可能性があります。

0
user10239615

おそらく前の提案に加えて、ccacheソフトウェア( https://ccache.samba.org/ )とSSDドライブのコンパイルディレクトリを使用すると、コンパイル時間が大幅に短縮されます。

0
a.grochmal