web-dev-qa-db-ja.com

CFSスケジューラとBFSスケジューラを切り替えるにはどうすればよいですか?

CFSまたはBFSスケジューラのほうが良い :に関する質問に関連

利用可能なスケジューラーのリストはどこにありますか?

そして、それらをどうやって切り替えるのですか?

17
j-g-faustus

BFSは現在メインラインカーネルの一部ではないため、独自のカーネルをダウンロード、パッチ、およびコンパイルする必要があります。メインラインカーネルにはスケジューラが1つだけ含まれており、同じコードベースに複数のスケジューラ、またはオンザフライの切り替え可能なスケジューラを含めることは意図されていません(それはおそらく実行可能なことです)。単純に複雑すぎて、努力する価値はありません。

したがって、システムでBFSを取得するには:

ただし、特に新しいカーネルバージョンでは、CFSよりもBFSを実行する利点は非常に小さいです。 CFSは常に改善されていることに留意してください。

7
Cedric

これについて少し調べてみると、Linux用のスケジューラは2つしかないようです。 CFSBFS です。

Ubuntu 10.10にBFSをインストールする最も簡単な方法は、 PPAパッチ

Sudo add-apt-repository ppa:chogydan/ppa 
Sudo apt-get update
Sudo apt-get install linux-image-generic-ck linux-headers-generic-ck

「PPAとは何か、どうすれば使用できるか」 の説明に従って、Ubuntu Software Centerを使用してパッチをインストールすることもできます。

このパッチは、新しい(パッチを適用した)カーネルをインストールします。これは、ブート時にGRUBメニューに接尾辞「-ck」とともに表示されます。再起動し、ブートメニューで適切なカーネルを選択して、スケジューラを切り替えます。


パフォーマンスについて

私の場合、デスクトップPCのバックグラウンドで Folding @ Home (Intel i7 2600Kの8コアの8つのF @ Hスレッド)を実行すると、BFSが大幅に向上します。大きな違いですが、間違いなく顕著です)、バックグラウンドのF @ Hアプリケーションは20〜25%高速です。

このシナリオでは、対話型デスクトップの使用と長時間実行されるCPU負荷の高いバックグラウンドタスクを同時に処理するため、CFSは一度に1つのコアをアイドル状態のままにする傾向がありました。 BFSは、すべてのコアをバックグラウンドタスクに100%使用することではるかに優れているように見えますが、インタラクティブなデスクトップタスクに高速応答を提供します。

おそらく、負荷のあらゆる可能な組み合わせの下で最適に実行される単一のスケジューラーはありませんが、BFSの方が優れている場合があります。

9
j-g-faustus

以下はPrecise Pangolin(Ubuntu 12.04)YMMVで私のために働いたが、

BFSはpf-kernelの一部です

今日(2013年12月)UbuntuシステムにBFSをインストールする最良の方法は、 pf-kernel をインストールすることです。これは基本的に、多数のパフォーマンスパッチが適用された標準カーネルです。これらのパッチは次のとおりです。

  • BFS (CPUスケジューラは、CPUコアが16未満のマシンで低レイテンシを提供します)
  • BFQ (高負荷下での低遅延に最適化されたI/Oディスクスケジューラー)
  • TuxOnIce (より高速な休止状態)

ウェブ上の指示

Ubuntuのpf-kernelパッケージをインストールする方法については、「 pf-kernelでLinuxデスクトップのパフォーマンスを向上させる 」という記事に記載されています。ただし、これらの手順はやや時代遅れです。関連するDebianパッケージの存在しないソースを指します。しかし、「 pf-kernel for Ubunt 」(pk-kernelフォーラムで)というスレッドを見つけました。このスレッドでは、Debianパッケージは フォーラムユーザーbig_bumのDropboxアカウント からダウンロードできます。

pf-kernelをインストールしています

私がインストールしたマシンは古い32ビットのラップトップなので、必要なlinux-headersおよびlinux-imageパッケージをマシンの~/kernelというディレクトリにダウンロードすることから始めました。

(上記の Dropboxアカウント に移動して、これらのパッケージの64ビット以降のバージョンを見つけてください。)

その後、「 pf-kernelを使用してLinuxデスクトップのパフォーマンスを向上させる 」の指示に従い、次のコマンドを実行しました。

$ cd ~/kernel
$ Sudo dpkg -i *.deb

すべてがスムーズに動作するように見えるので、再起動しました。

動作するかどうかを確認する

クイックインスペクションは、それが機能していることを示しているようです。コマンドuname -aは、pf-kernelを使用していることを報告します。

Linux siobhan 3.12.2-pf + #6 SMP PREEMPT Mon Dec 2 19:09:52 EET 2013 i686 i686 i386 GNU/Linux

cat /sys/block/sda/queue/schedulerは、BFQが現在のディスクスケジューラであることを示しています(sdaディスクの場合):

noop deadline cfq [bfq] 
3
zrajm

BFSを使用して新しいカーネルにパッチを適用してインストールします。別々のカーネルを使用する必要があります。同じカーネルイメージで両方を使用する方法はありません(特にオンザフライで切り替えるには)

1
user11924