Solaris のシステム管理 (第 2 巻)

第 28 章 カーネルパラメタの調整手順

この章では、カーネルパラメタを調整する手順について説明します。この章で説明する手順は以下のとおりです。

カーネルパラメタを表示する

sysdef -i コマンドを使用して、現在のカーネルパラメタの値を表示します。

# sysdef -i
* Hostid
  53001b80
*
* sun4m Configuration
* Devices
	packages (driver not attached)
		disk-label (driver not attached)
	   deblocker (driver not attached)
  	obp-tftp (driver not attached)
              .
              .
              .
options, instance #0
aliases (driver not attached)
openprom (driver not attached)
iommu, instance #0
	sbus, instance #0
		espdma, instance #0
			esp, instance #0
				sd (driver not attached)
				st (driver not attached)
				      .
               .
               .

カーネルパラメタの値を変更する方法

  1. スーパーユーザーになります。

  2. 次の 1 行を /etc/system ファイルに追加します。

    set parameter=value
    
  3. カーネルパラメタの変更を確認します。

    # grep parameter /etc/system
    
  4. システムをリブートします。

    カーネルは自動構成中に /etc/system ファイルを構文解析し、このファイル内で指定されたパラメタでデフォルト値を上書きします。

例 - カーネルパラメタの値を変更する

/etc/system ファイル内の次の行は、max_nprocs パラメタの値を 500 に設定します。

set max_nprocs=500

カーネルモジュール変数の値を設定する方法

  1. スーパーユーザーになります。

  2. 次の 1 行を /etc/system ファイルに追加します。

    set module_name:variable=value
    
  3. カーネルモジュール変数の変更を確認します。

    # grep module_name /etc/system
    
  4. システムをリブートします。

    カーネルは自動構成中に /etc/system ファイルを構文解析し、このファイル内で指定されたパラメタでデフォルト値を上書きします。

例 - カーネルモジュール変数の値を設定する

/etc/system ファイル内の次の行は、msgsys モジュール内の msginfo_msgmap パラメタの値を 150 に設定します。

set msgsys:msginfo_msgmap=150  

バッファーキャッシュパラメタ

bufhwm パラメタでは、バッファーキャッシュメモリーの最大サイズを 1K バイト単位で指定します。デフォルトは物理メモリーの 2% です。sar(1M) を使用して、バッファーキャッシュの統計情報を表示します。

UFS ファイルシステムパラメタ

表 28-1 は、調整可能な UFS パラメタを示します。

表 28-1 UFS ファイルシステムパラメタ

パラメタ 

説明 

ufs_ninode

i ノードテーブルの最大サイズ (デフォルト = max_nprocs + 16 + maxusers + 64)

ncsize

dnlc エントリ数 (デフォルト = max_nprocs + 16 + maxusers + 64)。dnlc はディレクトリ名検索キャッシュ

STREAMS パラメタ

表 28-2 は、調整可能な STREAMS パラメタを示します。

表 28-2 STREAMS パラメタ

パラメタ 

デフォルト 

説明 

nstrpush

9

STREAMS プッシュの最大許容数 

strmsgsz

0

ユーザーが作成できる STREAMS メッセージの最大サイズ。値 0 は上限がないことを示す。このパラメタは、今後のリリースからは削除される可能性がある

strctlsz

1024

メッセージの ctl 部分の最大サイズ

strthresh

0

STREAMS サブシステムが消費できる動的メモリーの最大バイト数。このしきい値を超えると、root プロセス以外での STREAMS デバイス上のプッシュ、オープン、書き込みは失敗する。値 0 は無制限を意味する

sadcnt

16

sad デバイス数

プロセス間通信 (IPC) パラメタ

表 28-3 は、調整可能なプロセス間通信パラメタを示します。

表 28-3 プロセス間通信パラメタ

パラメタ 

デフォルト 

説明 

メッセージ待ち行列 

msginfo_msgmap

100 

メッセージマップ内のエントリ数 

msginfo_msgmax

2048 

メッセージの最大サイズ 

msginfo_msgmnb

4096 

待ち行列上の最大バイト数 

msginfo_msgmni

50 

メッセージ待ち行列識別子の数 

msginfo_msgssz

メッセージのセグメントサイズ (ワードサイズの倍数) 

msginfo_msgtql

40

システムメッセージのヘッダ数 

msginfo_msgseg

1024

メッセージセグメント数 (必ず 32768 未満であること) 

セマフォ機能 

seminfo_semmap

10

セマフォマップ内のエントリ数 

seminfo_semmni

10

セマフォ識別子の数 

seminfo_semmns

60

システム内のセマフォ数 

seminfo_semmnu

30

システム内の undo 構造体の数

seminfo_semmsl

25

id ごとの最大セマフォ数

seminfo_semopm

10

セマフォコールごとの最大操作数 

seminfo_semume

10

プロセスごとの最大 undo エントリ数

注: システムに割り当てられている undo 構造体の合計数は次のとおりです。

seminfo_semmnu * seminfo_semume

seminfo_semvmx

32767

セマフォの最大値 

seminfo_semaem

16384

終了時の最大調整値 

共有メモリー 

shminfo_shmmax

1048576

共有メモリーセグメントの最大サイズ 

shminfo_shmmin

1

共有メモリーセグメントの最小サイズ 

shminfo_shmmni

100

共有メモリー識別子の数 

shminfo_shmseg

6

プロセスごとのセグメント数 

プロセス間通信パラメタを調整する方法

  1. スーパーユーザーになります。

  2. 表 28-4 の構文を使用して 1 行を /etc/system ファイルに追加します。

    表 28-4 プロセス間通信パラメタの調整

    パラメタのタイプ 

    パラメタ 

    調整構文 

    Message Queue

    msgsys

    set msgsys:msginfo_variable = value
    

    Semaphore Facility

    semsys

    set semsys:seminfo_variable=value
    

    Shared Memory

    shmsys

    set shmsys:shminfo_variable=value
    

  3. カーネルパラメタの変更を確認します。

    # grep parameter /etc/system
    
  4. システムをリブートします。

    カーネルは自動構成中に /etc/system ファイルを構文解析し、このファイル内で指定されたパラメタでデフォルト値を上書きします。

メモリー管理パラメタ

表 28-5 は、調整可能なメモリー管理パラメタを示します。

表 28-5 メモリー管理パラメタ

パラメタ 

デフォルト 

説明 

lotsfree

物理メモリーに基づいて調整 

freememlotsfree を下回ると、システムはプロセスからページを取り始める

tune_t_fsflushr

30

fsflush の実行速度を表す秒数

tune_t_minarmem

25

デッドロックを防ぐために必要な最小使用可能 (スワップ可能ではなく) 常駐メモリーのページ数 

tune_t_minasmem

25

デッドロックを防ぐために必要な最小スワップ可能メモリーのページ数 

tune_t_flckrec

512

有効な frlocks の最大数


注 -

Solaris 2.4 リリース以降では、tune_t_gpgslo パラメタは、実行可能スレッド数に基づくスワッピングのために、より複雑な基準に置き換えられています。


freemem パラメタはページ単位で定義されます。vmstat などのユーティリティは、freemem をページ数からバイト数に変換します。

メモリー管理パラメタを調整する方法

  1. スーパーユーザーになります。

  2. 次の構文を使用して /etc/system ファイルに 1 行を追加します。

    set tune:variable=value
    
  3. カーネルパラメタの変更を確認します。

    # grep parameter /etc/system
    
  4. システムをリブートします。

    カーネルは自動構成中に /etc/system ファイルを構文解析し、このファイル内で指定されたパラメタでデフォルト値を上書きします。

その他のパラメタ

表 28-6 は、調整可能なその他のパラメタを示します。

表 28-6 その他のパラメタ

パラメタ 

デフォルト 

説明 

lwp_default_stksize

8192

lwps のカーネルスタックのサイズ。カーネルのオーバーフローが発生した場合以外は、この値を調整しないこと。この値はバイト数で表され、PAGESIZE バイトの倍数でなければならない

npty

48

構成済みの 4.x の疑似 tty の合計数 

pt_cnt

48

構成済みの 5.x の疑似 tty の合計数

その他のパラメタを調整する方法

  1. スーパーユーザーになります。

  2. 次の構文を使用して /etc/system ファイルに 1 行を追加します。

    set parameter=value
    
  3. カーネルパラメタの変更を確認します。

    # grep parameter /etc/system
    
  4. システムをリブートします。

    デバイス関連のカーネルパラメタを変更した場合は、システムをブートするときに -r オプションを使用する必要があります。システムブート時の自動構成中に、カーネルは /etc/system ファイルを構文解析し、このファイル内で指定されたパラメタでデフォルト値を上書きします。

例 - その他のパラメタを調整する

/etc/system ファイル内の次の行は、pt_cnt パラメタの値を 200 に設定します。

set pt_cnt=200