smp なカーネルにする

らでお〜ん8500

debian なマシンは PowerMac G4/450MHz dual なのに、動作しているカーネルはシングル用。マルチプロセッサ用ではないので CPU 1つしか動作していない。MkLinux や LinuxPPC でペンギンが2羽並ぶのを喜んで見たり、Celeronマルチプロセッサにして BeOS で喜んでいた自分としてはこれは悲しい。というわけで、カーネルをアップデートしようかと…。

昔から smp なカーネルは再構築しなきゃいけなくて、それが面倒でもあり困難な壁になっていた。今回も再構築は面倒だな〜と思いつつ debian のお約束を勉強したりしていたら…見つけた! PowerPC の smp パッケージあるじゃん!リスト見ると殆どの環境ではじめから smp なカーネルも用意されてるのね。
というわけで、さっくりパッケージで持ってきてインストールすることに。

まずは現状のカーネルをチェック。

paraches@debian:~$ uname -a
Linux uriel 2.6.8-powerpc #1 Thu Nov 24 00:17:15 UTC 2005 ppc GNU/Linux

とりあえず、普通のカーネルが入っていると。
それじゃ、smp なパッケージをインストールしましょう。

paraches@debian:~$ sudo apt-get install kernel-image-2.6.8-powerpc-smp
Password:
パッケージリストを読みこんでいます... 完了%
依存関係ツリーを作成しています... 完了%     
以下のパッケージが新たにインストールされます:
  kernel-image-2.6.8-powerpc-smp
アップグレード: 0 個、新規インストール: 1 個、削除: 0 個、保留: 0 個。
13.8MB のアーカイブを取得する必要があります。
展開後に追加で 41.5MB のディスク容量が消費されます。
取得:1 http://ftp.jp.debian.org stable/main kernel-image-2.6.8-powerpc-smp 2.6.8-12sarge1 [13.8MB]
13.8MB を 45s で取得しました (304kB/s)                                                 
未選択パッケージ kernel-image-2.6.8-powerpc-smp を選択しています。
(データベースを読み込んでいます... 現在 34263 個のファイルとディレクトリがインストールされています。)
(.../kernel-image-2.6.8-powerpc-smp_2.6.8-12sarge1_powerpc.deb から) kernel-image-2.6.8-powerpc-smp を展開しています...
kernel-image-2.6.8-powerpc-smp (2.6.8-12sarge1) を設定しています ...
run-parts: executing /etc/kernel/postinst.d/mkvmlinuz

なんにも問題なく終了。最後に executingってあるけど、新しいカーネルで動き始めたってこと?リスタート無しにカーネルかわらないよな。
カーネルのチェックをすると…

paraches@debian:~$ uname -a
Linux uriel 2.6.8-powerpc #1 Thu Nov 24 00:17:15 UTC 2005 ppc GNU/Linux

そうだよね。まだ変わってないよね。それじゃリスタートしましょう…

paraches@debian:~$ uname -a
Linux uriel 2.6.8-powerpc-smp #1 SMP Thu Nov 24 00:17:24 UTC 2005 ppc GNU/Linux

ちゃんと smp のカーネルになってる!!
ペンギンを2羽見る事はできないので、2つだという証拠を /proc/cpuinfo で確認。

paraches@debian:~$ cat /proc/cpuinfo
processor       : 0
cpu             : 7400, altivec supported
temperature     : 27-29 C (uncalibrated)
clock           : 450MHz
revision        : 2.9 (pvr 000c 0209)
bogomips        : 894.97

processor       : 1
cpu             : 7400, altivec supported
temperature     : 23-25 C (uncalibrated)
clock           : 450MHz
revision        : 2.9 (pvr 000c 0209)
bogomips        : 894.97

total bogomips  : 1789.95
machine         : PowerMac3,3
motherboard     : PowerMac3,3 MacRISC2 MacRISC Power Macintosh
detected as     : 65 (PowerMac G4 AGP Graphics)
pmac flags      : 00000004
L2 cache        : 1024K unified
memory          : 768MB
pmac-generation : NewWorld
paraches@debian:~$ 

次は top で確認!

top - 00:55:30 up 22:25,  3 users,  load average: 0.00, 0.00, 0.00
Tasks:  83 total,   1 running,  82 sleeping,   0 stopped,   0 zombie
Cpu(s):  0.2% us,  0.2% sy,  0.0% ni, 99.7% id,  0.0% wa,  0.0% hi,  0.0% si
Mem:    772920k total,   210800k used,   562120k free,    44148k buffers
Swap:  2267568k total,        0k used,  2267568k free,   103792k cached

  PID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  COMMAND            
11671 paraches  16   0  2616 1176 2392 R  0.3  0.2   0:00.08 top                
    1 root      16   0  1608  564 1456 S  0.0  0.1   0:00.86 init               
    2 root      RT   0     0    0    0 S  0.0  0.0   0:00.04 migration/0        
    3 root      34  19     0    0    0 S  0.0  0.0   0:00.00 ksoftirqd/0        
    4 root      RT   0     0    0    0 S  0.0  0.0   0:00.04 migration/1        
    5 root      34  19     0    0    0 S  0.0  0.0   0:00.00 ksoftirqd/1        
    6 root       5 -10     0    0    0 S  0.0  0.0   0:00.36 events/0           
    7 root       5 -10     0    0    0 S  0.0  0.0   0:00.00 events/1           
    8 root       8 -10     0    0    0 S  0.0  0.0   0:00.00 khelper            
   27 root       5 -10     0    0    0 S  0.0  0.0   0:00.05 kblockd/0          
   28 root       5 -10     0    0    0 S  0.0  0.0   0:00.00 kblockd/1          
   44 root      20   0     0    0    0 S  0.0  0.0   0:00.00 pdflush            
   45 root      15   0     0    0    0 S  0.0  0.0   0:00.09 pdflush            
   46 root      17   0     0    0    0 S  0.0  0.0   0:00.00 kswapd0            
   47 root       7 -10     0    0    0 S  0.0  0.0   0:00.00 aio/0              
   48 root       8 -10     0    0    0 S  0.0  0.0   0:00.00 aio/1              
  202 root      15   0     0    0    0 S  0.0  0.0   0:00.03 khubd              

あれ? CPU 1つしかないじゃん…Cpu(s)で複数だから良いの? 仕方がないので top の使い方を確認。
というわけで、1 を押したら CPU 2つの表示になった。トグルスイッチになってる。で、常に2つ見たいので、2つの状態で w を押してセーブする。

top - 01:06:16 up 22:35,  3 users,  load average: 0.00, 0.00, 0.00
Tasks:  83 total,   1 running,  82 sleeping,   0 stopped,   0 zombie
 Cpu0 :  0.3% us,  0.3% sy,  0.0% ni, 98.7% id,  0.7% wa,  0.0% hi,  0.0% si
 Cpu1 :  0.0% us,  0.0% sy,  0.0% ni, 100.0% id,  0.0% wa,  0.0% hi,  0.0% si
Mem:    772920k total,   212976k used,   559944k free,    44760k buffers
Swap:  2267568k total,        0k used,  2267568k free,   105000k cached

  PID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  COMMAND            
11691 paraches  16   0  2616 1180 2392 R  0.7  0.2   0:02.95 top                
    1 root      16   0  1608  564 1456 S  0.0  0.1   0:00.86 init [2]           
    2 root      RT   0     0    0    0 S  0.0  0.0   0:00.04 [migration/0]      
    3 root      34  19     0    0    0 S  0.0  0.0   0:00.00 [ksoftirqd/0]      
    4 root      RT   0     0    0    0 S  0.0  0.0   0:00.04 [migration/1]      
    5 root      34  19     0    0    0 S  0.0  0.0   0:00.00 [ksoftirqd/1]      
    6 root       5 -10     0    0    0 S  0.0  0.0   0:00.36 [events/0]         
    7 root       5 -10     0    0    0 S  0.0  0.0   0:00.00 [events/1]         
    8 root       8 -10     0    0    0 S  0.0  0.0   0:00.00 [khelper]          
   27 root       5 -10     0    0    0 S  0.0  0.0   0:00.05 [kblockd/0]        
   28 root       5 -10     0    0    0 S  0.0  0.0   0:00.00 [kblockd/1]        
   44 root      20   0     0    0    0 S  0.0  0.0   0:00.00 [pdflush]          
   45 root      15   0     0    0    0 S  0.0  0.0   0:00.09 [pdflush]          
   46 root      17   0     0    0    0 S  0.0  0.0   0:00.00 [kswapd0]          
   47 root       7 -10     0    0    0 S  0.0  0.0   0:00.00 [aio/0]            
   48 root       8 -10     0    0    0 S  0.0  0.0   0:00.00 [aio/1]            

やっぱり CPU 2つは嬉しいね!