2010年12月09日

openSUSEでミラクルパッチ

Linusも大喜びしたというMike Galbraith氏のカーネルスケジューリングパッチですが、その後カーネルにパッチをあてなくとも設定ファイルのいくつかを書き換えるだけで同様の効果が得られるという話題をみかけました。

http://www.webupd8.org/2010/11/alternative-to-200-lines-kernel-patch.html
ここに書いてあるのが、設定ファイルを書き換える方法ですね。

今回はこの設定ファイルの修正を試してみました。
公開されている方法はUbuntu用が多くopenSUSEではいくつか変更点があるので、備忘録として残しておきます。

結論からいくと
http://forums.opensuse.org/english/get-help-here/install-boot-login/450079-new-kernel-speed-up-patch-file-mike-galbraith-4.html
ここのスレッドに書いてあるとおりの手段で大丈夫だと思います。

1. ルートユーザで/etc/init.d/boot.localを書き換える。
  openSUSEには/etc/rc.localが無いので、/etc/init.d/boot.localの末尾に下記の4行を追加する。

  mkdir -p /dev/cgroup/cpu
  mount -t cgroup cgroup /dev/cgroup/cpu -o cpu
  mkdir -m 0777 /dev/cgroup/cpu/user
  echo "/usr/local/sbin/cgroup_clean" > /dev/cgroup/cpu/release_agent

2. 一般ユーザで ~/.bashrcの末尾に下記の5行を追加する。
  
  if [ "$PS1" ] ; then
  mkdir -p -m 0700 /dev/cgroup/cpu/user/$$ > /dev/null 2>&1
    echo $$ > /dev/cgroup/cpu/user/$$/tasks
   echo "1" > /dev/cgroup/cpu/user/$$/notify_on_release
  fi

3. ルートユーザで /usr/local/sbin/cgroup_cleanというファイルを作成。以下のコードを追加。

  #!/bin/sh
  rmdir /dev/cgroup/cpu/$*

4. 3のファイルを実行可能にする(以下のコマンドを実行)。

  su -c 'chmod +x /usr/local/sbin/cgroup_clean'

5. ブート時に以下のコードを行末に追加する。自動実行の為に/boot/grub/menu.lstに追加しておく。
  
  cgroup_enable=memory

後は再起動すれば、作業完了です。
体感では動画再生時に別作業をする際や、仮想マシン起動時など動作が軽快になったように感じました。
厳密に言うとデスクトップ環境でのスケジューリングの最適化で高速化ではないので、作業内容や、PCのスペック(クアッドコアCPU等)によっては体感出来ないと思われます。ネットブック環境などでは試してみると良いのではないでしょうか?

※カーネルアップデート時にはmenu.lstが書き換えられるため、5の作業をやり直す必要があります。
ラベル:備忘録 Linux openSUSE
posted by ベニーファンク at 14:42| Comment(0) | TrackBack(0) | Linux | このブログの読者になる | 更新情報をチェックする
この記事へのコメント
コメントを書く
お名前:

メールアドレス:

ホームページアドレス:

コメント:

認証コード: [必須入力]


※画像の中の文字を半角で入力してください。

この記事へのトラックバック
×

この広告は180日以上新しい記事の投稿がないブログに表示されております。