連続稼動実験 観察日誌


1999年06月20日 157時間7分10秒

02:57 動作停止を確認。

なんとなく動作が遅くなってきたと思っていたが BBBをスクロールさせた瞬間に 全ての入力を受け付けなくなった。今にして思えば(通常時)メモリが少なくなった時に全体の動作がスローダウンした状態と同じであった。実にあっけなく、そして突然に停止した。これを持って連続稼動実験は終了です。

1999年06月19日 152時間28分56秒
動作自体は問題ないが ちょっと・・・・

ページファイルの使用量が60%を超えました。昨日の晩BBBを終了させた後に60%を超えまして ちょっと内心ドキドキしています。突然疲れでも出たかのようにページファイル使用量が増えたので B-right/Vの問題なのかBBBの問題なのか どちらとも言えないですね。今までと使い方を変えたって訳でも無いので 様子を見守るしかないですね。

1999年06月18日 130時間23分37秒
  問題なく動作中、いたって普通な状態。

  最近のOSは仮想メモリ機能を持っています。この機能はメモリを仮想化して(物理的なメモリと切り離して)アプリケーションに使用させます。 つまりアプリケーションが使用している”つもり”のメモリの場所(番地・アドレス)は実際のメモリのアドレスと必ずしも一致しないのです。OSが「プロセスAのXXXX番地は物理メモリのXXXX番地」といった具合に管理・変換しているのです。
  これがどういった意味があるのかと言えば まずメモリの使用効率が上がります。ハードディスクのフラグメントを思い出してもらえば分かるように使用と解放を繰り返せば 自然と斑模様な使用状態になる事が想像できると思います。もしメモリを仮想化していなければ、小さな破片のようなメモリ領域が残り合計では多量になるのに一つ一つが小さくて使えない状態になります。
  次に実際の搭載メモリ量よりも広い(多い)メモリをアプリケーションに(OS自身にも)提供できます。つまり”合計で”200M分のメモリが必要なアプリケーションを180Mしかメモリを積んでいないマシンで動かす事が出来ると言う訳です。 このカラクリを支えているのがページファイルです(長いネタ振りでした (^^;;)。 アプリケーションが確保しているメモリは全てが常に使われている訳じゃないので、遊んでいる部分のメモリを”ページ”という単位でHDDへ追い出します。この動作をページングと言います。で、その追い出される先がページファイルという訳です。
  補足しておくと追い出される先は必ずファイルという訳でもありません。ページング専用のパーティションを用意する場合もあります(UNIX系ではこちらが一般的)。
  ちなみによく似た意味の言葉に”スワップ”があります。こちらも使っていないメモリをHDDへ追い出すのですが 追い出す単位がページングと違います。スワップの場合はプロセス単位で追い出します、つまり動いていないプロセスが使っているメモリが丸ごと追い出される訳です(ページングは使っていないメモリ単位)。
  ついでに言いますと この追い出し先のページファイルですが 大きければいい訳ではありません。ある程度以上は大きくても意味が無く 逆にパフォーマンスを落とす場合もあります。一般的にUNIX系は搭載しているメモリ量と同程度を目安とするようです。NTの場合は使い方にもよりますが2.5倍程度が目安になります。あくまでも目安ですので 搭載メモリ量2Gみたいな場合はまたちゃんと考えないといけないですよ (^^;;
  確かB-right/Vではページファイルのサイズは40M〜(システム領域の10%)で確保されたと思います。
  ついでのついでに言いますと、”どうやって使っていないメモリを区別するのか”ですが これはアクセスしたメモリ(ページ単位)に印を付けていくのです。一定間隔で印を消してやれば、使っていない部分は常に印が無いので追い出し対象と判断できる訳です。
  さらに補足。ページって単位は何かと言いますと ”メモリを都合のいい大きさでまとめた単位”です。一般的には4096バイト(か8192バイト)のようですね。この都合のいい大きさはマシンのアーキテクチャ(設計)に依存し”この大きさがどんな環境でも都合がいい”って数字はありません。

  なぜ連続稼動実験でページファイルが少しづつ消費されているかと言えば こういった事が考えられる。アプリケーションやOS自身によって確保されたメモリが正常に解放されない事があります。こういうのをメモリーリークと言いまして、要するにバグです(しかも避け難いバグ)。で、こういったリークしたメモリ領域がページファイルへ追い出されていると考えるのが自然かなと思います。(アプリやOS自身にとっては物理メモリ上でもページファイル上でも同じ扱いです。ソフトにとっては仮想メモリが何処に対応付けされているかが変わるだけです)もっとも まだきちんとデータ採って調べた訳じゃないのでなんとも言えないんですけどね。

1999年06月17日 104時間28分13秒
  本日より観察日記を分離します。期間は実験を行なっている間とし実験終了後は資料として図書館へ移動させます。

  100時間を超えた当たりである傾向がはっきりとしてきた。その傾向とは少しづつではあるがページファイルが消費されていく事である。当初ページファイルの消費量は22%程度であったが現在は30%を超えている。もちろん立ち上げているソフト・ウィンドウの数は同一にしている。物理メモリの消費量は変化していないので観測時のページング量の違いでは説明がつかない。一応今までの消費速度で行けば1ヶ月強でシステムダウンする計算になる。もっともB-right/Vが(一定量以上仮想メモリの消費が進んで)ガベージコレクションを行なう様な機能を持っていればさらに長持ちする事になるが・・・。 全ては時間が解決してくれる事だろう。
  もし予想を裏切り 夏場まで実験が続くと 熱暴走対策が問題となってくる。テスト機であるChandraはかなり発熱が激しく 熱が溜まりやすい布団の上などで使用すると4・5時間で暴走する事もある。それまでの苦労が水の泡となってしまうので それだけは避けたいものだ。

1999年06月16日 78時間40分
 順調に動いているのが面白くないのでナイトステージを作ってみました(笑)。それは、「9種類のJPEGのCGを31秒毎に表示させるスクリプト!」。要するに画像ビュアを使ってCGをどんどん表示させて消していくのを繰り替えしているんですよ。画像ビュアだけだと偏りが出る可能性もあるので基本図形エディッタもしようして大きなTADを表示させています。長時間使用している環境を簡単にシミュレートするのと「ちょっとストレスを与えたろ」という悪戯心から作ってみました(笑)
1999年06月15日
  現在小康状態、容態は安定してきました。ガンバレガンバレ(^^)

  ページファイルの使用量がちょっと大目なのが気になりますが、このまま順調に動き続けて欲しいですね。B-right/Vのように若いOSはこういった連続稼動テストには不利で、枯れたOSであるUNIX系と比べるのはあまりフェアでないんですが 健闘してほしいもんです。とりあえずはWindows9Xは倒したので(笑)、次の目標はNTですね。

1999年06月14日
連続稼動実験ですが、30時間経過した時点でちょっと動きが妖しくなってきました。B-right/V自体は安定しているのですがマイクロスクリプトとVJEが少し奇妙な動作をしています。VJEは○でひらがなに戻ってしまう事が2・3度あっただけでそれ以外は順調です。しかし、マイクロスクリプトはどんどん関数が動作しなくなり最後には立ち上げ後速固まり状態です(強制終了以外打つ手なし)。ちなみに、このスクリプトで経過時間の表示をさせていたので 今は時計を見ないと動作時間が分かりません。ただ、立ち上がっているスクリプトは問題なく動作している(ように見える)ので今後も継続して観察していきます。ひょっとすると思っていたよりも速い段階でこの実験は終わるのかもしれません。(3ヶ月ぐらいは覚悟していたんですけどね)
1999年06月13日
 
  本日13:50よりB-right/Vの連続稼動実験を開始しました
  どういった実験かと言うと「再起動する事なく連続何時間動作させる事ができるか」です。これはOSの安定度を測る一つの目安とできます。ちなみに(使い方にもよりますが)FreeBSDやLinuxなら1年程度は持つそうです。個人的な経験で知っているのはFireWallとして使っていたSolaris 2.5.1が9ヶ月目でダウン・ファイルサーバとして使っていたNetware4で7ヶ月でダウン・ファイルサーバとして使用していたNTが3ヶ月でダウン・Notesサーバとして使っていたNTが3週間でダウン・ウェブサーバとして使っていたNTが1週間でダウン・Proxyサーバとして使っていたNTが23時間でダウンという結果です。ちなみにWindows95・98は8時間持ちません(笑)。(皆さんも勤務中に1回は再起動しているでしょ)
  とりあえず1ヶ月連続動作でOK・2ヶ月連続でGood・3ヶ月連続でGreat!としましょうかね。正直言ってどれだけ連続かどうできるか予測がつきませんので(7時間ぐらいでアッサリダウンする可能性だってあります)私にとってちょっと興味深い実験です。ぁ、補足しておきますと「普段と同じように使用します」。長持ちする様になるべく使わないとかはしません。普段どおりにしないと実験の意味がなくなりますので。