チェンジセットを削除してみる

おおしまさん(id:squeaker)にアドバイスを受けて、changesetのdestroyをしてみることに。
実は、Classのシュリンクと聞いて真っ先にやったのが、ChangeSetツールのメニューにある"Uninstall this ChangeSet"だったのですが、何をやってもHaltしてしまうため、Changeset経由のシュリンクは諦めていたのでしたが、"destroy"のメニューが削除だったんですね。いや、名前からするといかにもなんですけど(^^;)。
それ以前にSystemBrouserツール経由であらかたクラスは削除していたのですが、その上でさらにChangeSetもdestroyしてみました。
以下は"Smalltalk garbageCollect."後に"Help->VM statistics"で出た値です。

元イメージ
12660940
元イメージ-クラス
11105880
元イメージ-クラス-チェンジセット
10089600

試しに、今度はチェンジセットを削除してからやってみたものも。

元イメージ
12660940
元イメージ-チェンジセット
11829224
元イメージ-チェンジセット-クラス
10055438

チェンジセットを削除してからの方が若干小さいような気もしますが、まぁ、この辺はガーベジコレクトをさんざんやってるとそのうちまた変化するし。
と、いうわけで、実に10M近くにまで減らすことが出来たのでした。削減量、約2.5Mbyte、元容量の20%の削減は結構メモリに響いてきますね。
……とはいえ、私のSpecialKernel入りZaurusはターミナルのみでそれ以外は何も動いていない状態で、

total used free
Mem: 29844 26832 3012
Swap: 62588 11560 51028
Total: 92432 38392 54040

という素敵なメモリ食いっぷりなので、2M程度削減したところでメモリ領域はswap経由になるでしょうですから、パフォーマンスに与える影響はさほど大きくないんですけどね(^^;)。やっぱり、仮想メモリって遅いし。

ま、元の目的(パフォーマンス改善のために必要メモリを減らそう)はこの際さておき、相対的に貧弱な環境でのチューニングが大変楽しかったので週末はなかなか有意義な時間を過ごしました。いろいろ教えてくださったSqueakコミュニティの皆さん、ありがとうございました。

ニンジン

どうでも良いけど、おおしまさんの日記(id:squeaker:20040417#p1)にあった、「朴念仁」と「僕はニンジンと言いたいらしい(着ぐるみ付き)」というネタは世代言語なんだろうなぁ、と思ってみた Florian は、ばっちりリアルタイムで「あーる」のいろんなものを集めていました。つい最近、アニメ版の脚本を書いていた方に会って舞い上がってみたりね(^^;)。

クロックアップ

カーネルパッチのぴろさんのページ(http://www.piro.hopto.org/~piro/pukiwiki/pukiwiki.php)が復活していたのでいろいろと情報収集。
ふーむ、なるほど。RunModeとTurboModeってなんだろう?
(検索中)
あー、やっぱり動的周波数変更なのかぁ。
ryutaさんの「戦うデジタリアン」のXScaleのクロックのページ(http://www.t12.jp/~ryuta/misclab/zaurus/chcclk.html)
ふむ。でも、この説明によれば、今のカーネルはRunModeはあんまり使ってないっぽいですね。LinuxZaurusは省電力としてはOSをCPU-IDLEやHALTなんかで明示的に止めておいて、その間の電力をなるべく使わない方向で制御してるのかな? だとしたら、CPUの速度を目一杯速くしても、CPU-IDLEの時間がOS的に長ければあんまり電力は消費しないで済むのかな?
考えてみれば、昨日の日記や文章を電車でZEditorで書いていてもあんまり消費電力は変わらなかったけど、Squeakを使い始めたら途端に減り始めたもんなぁ。ZEditorはポーリングで動くリアルタイムプログラムではないでしょうし、普段はCPU-IDLEでずっとユーザーの入力を待っているでしょうから、さほど変わらないんでしょうね。
ま、ぴろさんのページでクロックを自動変更するアプレットがあったので、しばらくはこれで使ってみましょう。

そうそう。周波数は、通常カーネルで200MHz、定格外(最高速)で400MHzだと思ってたんですが、実際には、

(通常カーネル)
メモリバス 100MHz
RunMode 200MHz
TurboMode 400MHz
PXBux 100MHz

(定格外)
メモリバス 120MHz
RunMode 200MHz
TurboMode 471MHz
PXBus 120MHz

だったんですね。メモリバス、TurboModeともに20%高速化ってのが結構効いてるんだろうなぁ。
ところで、PXBusってなんだろう(^^;)? Peripheral eXternal-BUSなのかな?