68user's page 掲示板

Prev< No. 1117〜1125> 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 側で同時起動の制限が必要なのかもしれませんね。

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

No. 1123 # とも [E-mail] 2000/08/29 (火) 06:18:52
皆様 始めまして。 ともと申します。
UNIX暦 3ヶ月の超初心者です。

スクリプトを書いておりますが、そのスクリプトのあるステップでどうしてもユーザーをスイッチしなくてはいけない事になってしまいました。
現在 su コマンドを使ってその部分だけわざわざパスワードを入れて、またスクリプトを実行するという 2スクリプト制になってます。
もしユーザーの変更も自動的にスクリプト上でできればとても楽なんですが、よい方法ありませんでしょうか?
当分はスクリプト自体にパスワードをハードコードしてもいいと思ってます。

どなたか お知恵をお貸しください!

とも

No. 1124 # 68user 2000/08/29 (火) 17:03:20
最も簡単なのは root 権限でスクリプトを動かし、適時 su で
特定のユーザ権限を得るか、su username command とすることです。

それが無理なら、suid なプログラムを作ればよいです。
    http://X68000.startshop.co.jp/~68user/unix/pickup?setuid

> 当分はスクリプト自体にパスワードをハードコードしてもいいと思ってます。
su は端末 (/dev/tty) からパスワードを読もうとするので、
標準入力などからデータを流し込むことは不可能です。

No. 1125 # 68user 2000/08/30 (水) 02:27:25
> 8/28 AM8:30 ごろから5時間ほど、SEGA BBS の過去ログの CGI に
> 199.172.149 あたりから怒涛のアクセスがあったようです。
今日も同じ時間帯に同じところから。うっとうしいのので、
SEGA BBS の CGI をしばらく止めます。

ところで、またカウンタが壊れました。/var/log/messages を
見るに、オープンしたファイル数が OS の最大値を越えたため
だと思われます。
# よく見ると、カウンタで open のエラーチェックを
# 全くしてなかった。そりゃ壊れるわな。

> su username command とすることです。
su username -c command でした。

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