印刷用表示へ切り替え 通常表示へ切り替え 更新履歴を表示 更新履歴を隠す
Linux Vine 3.1 でカーネルの再構築

マシンのパフォーマンスが全く出ていないので,カーネルの再構築を行うことにした。時間はかかるが,自動的に RPM パッケージまで作成してくれるのがありがたい。

■ ■ ■

Movable Type の再構築に時間が異様にかかる。調べてみると,マシンのパフォーマンスが十分に出ていないことが分かった (nlog(n): CPU の動作周波数が低過ぎる)。そこで,カーネルの再構築を行うことにした。

Vine には mkkpkg という,コンパイルからパッケージ作成までの一連の作業を自動的に行ってくれるコマンドがインストールされている。mkkpkg の使い方については詳しく解説してくれているサイトがある。基本的には Vine Linux 3.1で電源が切れない場合の対処 を参考にして, Vine 流カーネル再構築メモ のオプションの指定方法を使った。参考にさせていただいたサイトは,どちらも X Window の GUI を使う方法で分かりやすいのだが,余計な CPU 負荷をかけたくないので,ここではコマンドラインから行う方法をとることにした。

# mkkpkg --rpmarg="--target=i686" kernel-2.4.27-0vl7.6.src.rpm menuconfig
Welcome to mkkpkg

Please wait for a while "make menuconfig" to be executed...
Executing "rpmbuild -bp /root/rpm/SPECS/kernel-2.4-vl.spec"...done.
Input your kernel Revision [SRPM = 0vl7.6]: 0vl7.6.1
  kernel Revision [yours = 0vl7.6.1]. OK? [y/n] y

Do you want to edit kernel-2.4.27-0vl7.6.1.spec? [y/n] n
Do you want to build SRPM? (If no, only RPMs are built) [y/n] y
Ready for make "menuconfig" by kernel-2.4.27-i386.config
[Push enter to continue] (Enter を押す)

Load an Alternate Configuration File (選択)
/usr/src/linux/configs/kernel-2.4.27-i686.config (入力)

Processor type and features  ---> (選択)
CPU Frequency scaling  ---> (選択)
<*>  Intel Speedstep (ICH) (チェックが入っていることを確認)

Do you wish to save your new kernel configuration?
< Yes > (設定を保存)

mkkpkg

Now we are prepared for executing:
  rpmbuild -ba /root/rpm/SPECS/kernel-2.4.27-0vl7.6.1.spec --target=i386

  Log output goes to /tmp/kernel-mkkpkg.log.
  You can read it by following sequence:
    1. Push "Ctrl+Z" to suspend the next long process
    2. Type "bg" to continue background
    3. Use "less" to print /tmp/kernel-mkkpkg.log
    3.1 Push "Shift+F" to "Forward forever; like tail -f"
    3.2 If you want to stop reading, Push "Ctrl+C"
    4. Type "fg" to get back to mkkpkg
    X. If you are using X, you can read log thru another term window

  It takes about 10-240 minutes depending on your configuration and also
  depending on your machine: It's not freezing!

Ready for Action?
[Push enter to continue] (Enter を押す)
Started: Wed Aug 17 08:46:35 2005
Building...
Finished: Wed Aug 17 19:39:59 2005
[Push enter] (Enter を押す)
Created:
/root/rpm/RPMS/i386/kernel-2.4.27-0vl7.6.1.i386.rpm
/root/rpm/RPMS/i386/kernel-doc-2.4.27-0vl7.6.1.i386.rpm
/root/rpm/RPMS/i386/kernel-headers-2.4.27-0vl7.6.1.i386.rpm
/root/rpm/RPMS/i386/kernel-source-2.4.27-0vl7.6.1.i386.rpm
/root/rpm/SRPMS/kernel-2.4.27-0vl7.6.1.src.rpm
How do you want kernel-mkkpkg.log in /tmp?
m)move to /root  r)remove  *)leave in /tmp : m
Do you want to clean up BUILD tree and files in SOURCES? [y/n] y

途中で menuconfig が呼び出される。一般的なカーネルの再構築方法である「cd /usr/src/linux; make menuconfig」と同じである。menuconfig 内では,「スペース」または「Enter」で選択,「Esc」で上位メニューに戻ることができる。最初に「i686」のコンフィグレーションを読み込んで,その後に必要な設定を行っていく。目的の speedstep-ich モジュールは,ビルトインの指定になっているようなので,そのまま保存して抜ける。準備ができたらビルドに入る。「Building...」の表示になってから時間がかかる。「止まっているのか?」と思うこともあるが,Ctrl+C などとしてはいけない。top コマンドや ps コマンドで見ると,magicdev, bzip2, cc1, rpmbuild などのプロセスが次々と走る様子が表示される。

結局ほぼ 11 時間近くかかったことになる。カーネル関連のパッケージ doc, headers, source もすべてビルドされる。インストールして lilo.conf の設定後 lilo を走らせて再起動を行った。再起動後の cpuinfo は次の通り。
# cat /proc/cpuinfo
processor       : 0
vendor_id       : GenuineIntel
cpu family      : 6
model           : 8
model name      : Pentium III (Coppermine)
stepping        : 10
cpu MHz         : 696.987
cache size      : 256 KB
fdiv_bug        : no
hlt_bug         : no
f00f_bug        : no
coma_bug        : no
fpu             : yes
fpu_exception   : yes
cpuid level     : 2
wp              : yes
flags           : fpu vme de pse tsc msr pae mce cx8 sep mtrr pge mca cmov pat pse36 mmx fxsr sse
bogomips        : 1389.36

デフォルトのカーネルでは 200 MHz 以下だったのが 700 MHz 程度出るようになった。体感的にもかなり改善された。しかし,最大パフォーマンスが出ていない。そして cpufreqd は正常に動いていない様子(/proc/cpufreq に数値表示なし)。speedstep-ich はビルトインではなく,モジュールとして組み込まなければいけなかったのかも知れない。つまり,「チェックが入っていることを確認」したところで「* から M に変更」という設定になるだろうか。となると,もう一度再構築? ガーン!! 寝ている間にやってもらおうか…。

2005年8月23日追記:
上記では,--rpmarg="--target=i686" オプションが思惑に反して効いていないため,i686 として最適化されていません。i386 用になってしまっています。「mkkpkg --target i686」が正解のようです(理事のひとりごと:mkkpkg によるカーネルの再構築)。

2005年9月23日追記:
Vine Linux 3.2 で動作するようになりました (nlog(n): カーネルの再構築でスピードステップに対応)。

Posted by n at 2005-08-17 23:37 | Edit | Comments (4) | Trackback(0)
Trackbacks

  • 「手違いで複数トラックバックを送ってしまった!」という場合でも気にしないでください (重複分はこちらで勝手に削除させていただきます)
  • タイムアウトエラーは,こちらのサーバの処理能力不足が原因です (詳細は トラックバック送信時のエラー をご覧ください)
  • トラックバックする記事には,この記事へのリンクを含めてください(詳細は 迷惑トラックバック対策 をご覧ください)
Comments

余裕で速くなっていることを期待してコメントを送信します。
お疲れ様でした。

高負荷時に最高パフォーマンスを出せるようになることに期待……

Posted by: ち印 at August 20, 2005 02:33

ご声援ありがとうございます。頑張ってみたのですが…。「高負荷時に最高パフォーマンスを出せるように」には,至りませんでした。
高負荷でも低負荷でも中程度の 700 MHz で動作しています。最高パフォーマンスの 1 GHz は出せないのです。

パフォーマンス的にはかなり改善されましたので,しばらくはこれで様子を見ようかと思っています。

Posted by: n at August 20, 2005 06:57

充分、前回のコメントの登録にかかった時間は速かったです。

これからも閲覧させて頂きます(たまにコメントやトラックバックなどもあるかも)

お疲れ様でした。

Posted by: ち印 at August 21, 2005 18:57

別の問題に気づいちゃいました。ぬをー!!!

Posted by: n at August 21, 2005 22:44
Post a comment
  • 電子メールアドレスは必須ですが,表示されません (気になる場合は「メールアドレスのような」文字列でもOKです)
  • URL を入力した場合はリンクが張られます
  • コメント欄内ではタグは使えません
  • コメント欄内に URL を記入した場合は自動的にリンクに変換されます
  • コメント欄内の改行はそのまま改行となります
  • 「Confirmation Code」に表示されている数字を入力してください (迷惑コメント対策です)


(必須, 表示されます)


(必須, 表示されません)


(任意, リンクされます)


Confirmation Code (必須)


Remember info (R)?