68user's page 掲示板

Prev< No. 1117〜1122> Next  [最新発言に戻る] [過去ログ一覧]
No. 1117 # gongo [E-mail] 2000/08/24 (木) 18:38:46
@68user様
> 最初は TrueColor でも XCreateColormap/XInstallColormap で
> いけるんじゃないか思いました。

私も本をみて XCreateColormap/XSetWindowColormap/XInstallColormap
といった感じで動かしてみようと思いましたが、うまくいきませんでした。
本の例をまねてXCreateColormapの2番目の引数(window)を
DefaultRootWindowにしたがまずかったのか、実行すると窓が画面左上に出て
動かせなくなってしまいました(ウィンドウマネージャが動いていない!?)。
窓の表示位置がおかしいのはともかくとして、肝心のRGB値がどうなったかというと
XAllocColorの後にやはり近い値に置き換えられたと思います。

しかも、プログラムを終了して、そのプログラムを書き換えようとmuleで
開いたらmuleが勝手に画面左上に行って動かせなくなってしまいました。
で、あわててXUninstallColormapをプログラムに書き加えて
再度実行したら元の状態に戻りました。
う〜ん、難しいです・・・。

それとちょっと思ったのですが、showrgbで表示される全ての色は本当に
カラーマップに存在するのでしょうか。結構数値が細かく変わっている
ところもあるので、本当にあるのかなぁと疑問に思いました。
それとも256*256*256を本当に表示できる環境を想定して
細かく用意されているのでしょうか。

No. 1118 # YAGI [E-mail] 2000/08/25 (金) 14:18:23
>68user様
レスありがとうございます。
大体のイメージは浮かぶ事が出来ました。
ただ、また質問となってしまうのですが、
その数値(0.01)はどれくらいの値になっていれば
高負荷がかかっているといえるのでしょうか?
やはり、1.00以上だと高負荷なのでしょうか?

No. 1119 # 68user 2000/08/25 (金) 21:55:26
以下の説明には多分何個・何十個もの嘘がありますが、「ここは
嘘かもしれない」と注釈を付け出すと、全部に注釈を付けるはめに
なるので、略。ツッコミは歓迎します。


まずは基礎知識。

プロセスにはいくつかの状態がありますが、簡略化して、以下の4つを考えます。

    実行状態   … まさに CPU がそのプロセスの処理をおこなっている状態
    実行可能状態 … CPU は同時に複数の処理をできないので、CPU が現在
                               実行しているプロセスの処理を終えるまで待っている状態
    入出力待ち  … ディスクに書き込む/読み込む命令を出した後、ディスク
                               コントローラからの「終わったよ」という知らせを
                               待っている状態
    sleep 状態  … sleep を使っているか、デバイスやソケットを見張っている
                               (listen や select や read している) が、まだデータが
                               届いていない) 状態

プロセスは必ず上記のうち1つの状態を取ります。


さて、本題。

load average というのは、ある瞬間の「実行可能状態のプロセスの個数」
の平均です。個数ですから整数なんですが、平均を取るので、0.12 などと
いった小数になります。

例えば
    0:00:00 の時点での実行可能状態のプロセス数が3
    0:00:01 の時点での実行可能状態のプロセス数が0
    0:00:02 の時点での実行可能状態のプロセス数が1
なら、load average は 4/3 = 1.33 です。これは3秒間だけプロセス数を
数えましたが、最近1分、5分、10分のそれぞれのプロセス数の平均を
取ったものが、top や uptime で表示される load average です。

つまり、
    - load average が 1 なら、常に CPU が何かしらの処理をしている。
        CPU が遊んでいる時間がない。
    - load average が 1 未満なら、実行可能状態のプロセスがない
        瞬間がある。その間、CPU は遊んでいる。
    - load average が 1 超なら、実行可能状態のプロセスが多く、
        待たされているプロセスがある。
ということです。

# あくまでも平均なので、本当はそうでない瞬間が多くあるでしょう。


だからといって、1 を閾値 (いきち) として負荷が低い/高いと
言っていいかというと、多分違うと思います。


なお、
    A.「変数を1ついじくって 1秒 sleep する」という処理を永遠に繰り返す
というプロセスと、
    B.「変数の内容を1増やし続ける」という処理を永遠に繰り返す
というプロセスでは、負荷が全く違います。

A は、実行可能状態から実行状態に移ると、変数を1ついじくって、
すぐに sleep 状態に入ります (実行可能状態でなくなる)。1秒経つと
再度 実行可能状態に移ります。

B は、実行可能状態から実行状態になると、変数の内容を1増やし
続けます。一定時間が経過すると、カーネルが強制的にプロセスを
実行状態から実行可能状態に戻します。

B のようなプロセスを実行すると、load average は大体 1 だけ
上がるはずです。なぜなら、B のプロセスは入出力待ちも sleep も
しないため、「常に実行可能状態になり得るプロセス」だからです。

たとえば C でもシェル上でもいいので、無限ループするだけの
プログラム
    % while (1)
    while ? end
を実行すると、load average が大体 1 上がり、もう1つ同じのを
実行すると さらに 1 上がるでしょう。

No. 1120 # CZ 2000/08/28 (月) 14:09:34
つかぬことをお聞きしますが,"リンク集のリンク集"のSSIはいつ動作するようになるのでしょうか。

No. 1121 # 68user 2000/08/28 (月) 17:04:12
おろ、いつのまにか止まってやがる (笑)。というか、SSI が効いてないのか…。
ウチに帰ったら直します。御指摘どうもです。

No. 1122 # 68user 2000/08/29 (火) 00:34:09
> SSI が効いてないのか…。
8/28 AM8:30 ごろから5時間ほど、SEGA BBS の過去ログの CGI に
199.172.149 あたりから怒涛のアクセスがあったようです。
apache のログを見ると、500 エラーが 9000件ほど記録されてました。
# トップページのカウンタも、壊れてもうた。

どうもそれ以来 apache の動作がおかしく、一部のページで SSI が
動作していないようです

CGI 側で同時起動の制限が必要なのかもしれませんね。

ま、こういうこともあるということで。

Prev< No. 1117〜1122> Next  [最新発言に戻る] [過去ログ一覧]