Path: sramha!katsu From: katsu@sran14.sra.co.jp (Katsuhiro Watanabe) Message-ID: Date: 22 Jun 92 08:39:37 Organization: Software Research Associates, Inc.,Japan In-reply-to: hisasima@sran216.sra.co.jp's message of Thu, 18 Jun 1992 02:54:41 GMT Newsgroups: sra.wssi.sys.sony Subject: Re: text table extension Distribution: sra References: <2973@sran333.sra.co.jp>  file system の inode 数を増やすには安保さんがおっしゃるように newfs でやるべきでしょう。ニューススプールに関して inode が 足りないなどという場合はまさにこれにあたるでしょう。  一方、ニュースシステムで kernel の inode table(これはキャッシュです) を増やしてみても、短時間に同一のファイルが参照されることは少ないですから、 特にどうにもならないと思います。  一方、kernel の inode table を *本当に* 増やしたい場合に関して 記事 で hisasima@sran216.sra.co.jp (Hiroyuki Hisashima) さんいはく > kernel 内の inode table の量を増やす方法ですけど、もしmaxusers がき > ちんと config に反映されるなら、それで拡張できると思います。ですから > NEWS OS 4.X でならうまく行くのではないでしょうか  NEWS OS 4.1C/R の param.c にはいいかげんな部分があるために、 4.1C で maxusers を設定すると変数の2重定義だったか?が起きて カーネルを作ることができなかったと記憶しています。(4.1R だと cc が警告だけで許してくれるのでなんとかカーネルが出来上がります。)  この問題を修正すれば、4.1C でも maxusers の設定は反映されます。 修正のパッチをこの記事の最後につけておきます。 > (または例によって > ninode をパッチするとかいうてもありそうですけどね)。  これは maxusers を陽に指定していない場合はうまくいかないと思います。 なぜなら NEWS OS 4.1 では以前 sra.os.unix あたりで議論があったように、 (a) maxusers を指定せずに config した場合 主記憶の大きさを元に、ブート時に init_param() という関数で テーブル類の大きさを動的に定める。この時、主記憶量*2/1MB が maxusers として指定されたのと同様の効果が生まれる。 (b) maxusers を指定して config した場合 maxusers の値を元に、vmunix の生成時にテーブル類の大きさを 静的に定める。 ような哲学になっているからです。(a) の場合パッチを当てても無駄ですね。  ところで、maxusers をいじると、これに依存しているプロセステーブル (nproc),テキストテーブル(ntext), ファイルテーブル(nfile)………等も みんな増えてしまいます。平均的利用者の数が大きく増減する時のような、 システム全体に関わる設定を変えたい時だけ(だけ、といっても実際には こういった場合の方が多いかもしれません)maxusers を変更するのが 良いと思います。  inode table *だけ* を増やす時のようなテーブル間のバランスを保たない 調整では、param.c の中の具体的な各定義を変更するべきだと考えます。 (テーブルを小さくする方向に変更するのには知恵と勇気がいりますが。)  普通プロセステーブルが足りなくなった時には nproc ではなくて maxusers を変更するのがよく行なわれるようですが、これは、 プロセステーブルがあふれるような状況では、実際には他の部分の負荷も 同時に増大していることが多いことから来ているものと想像しています。  NEWS OS 4.1 での ninode(だけ)の具体的な変え方ですが、maxusers を 設定しているなら、#define NINODE の行を、maxusers を設定しないなら init_param() 関数内で変数 ninode に代入をしている行を変えて下さい。  まあ、「論よりコード」で param.c を見てもらった方が早いです。  そうそう、私は options quota がはずせないのに怒って nquota = 1; ndquot = 1; などとしてしまいました。 ↓ param.c がコンパイラーを素直に通るようにするためのパッチ ---- ちょきちょき ---- ちょきちょき ---- *** param.c.orig Sun Jun 9 06:23:19 1991 --- param.c Fri Nov 15 18:23:57 1991 *************** *** 76,96 **** int ndquot = NINODE + (MAXUSERS * NMOUNT) / 4; #endif /* QUOTA */ #else /* MAXUSERS */ int maxusers = 0; - #endif /* MAXUSERS */ - #ifdef sony_news int maxuprc; /* int nchsize; */ int nport; int ncsize; - int nregion; - int nrnode; int nquota; int ndquot; init_param() { --- 76,98 ---- int ndquot = NINODE + (MAXUSERS * NMOUNT) / 4; #endif /* QUOTA */ #else /* MAXUSERS */ int maxusers = 0; #ifdef sony_news int maxuprc; + #endif /* sony_news */ /* int nchsize; */ int nport; int ncsize; int nquota; int ndquot; + #endif /* MAXUSERS */ + + #ifdef sony_news + int nregion; + int nrnode; init_param() { ---- ちょきちょき ---- ちょきちょき ---- -- ----____----____ 渡邊克宏@ソフトウェア工学研究所(四谷) June Programmer のいいつたえ「6月にプログラミングすると幸せになれる」