JavaScript is required to for searching.
ナビゲーションリンクをスキップ
印刷ビューの終了
Oracle Solaris カーネルのチューンアップ・リファレンスマニュアル     Oracle Solaris 11 Information Library (日本語)
search filter icon
search icon

ドキュメントの情報

はじめに

1.  Oracle Solaris システムのチューニングの概要

2.  Oracle Solaris カーネルチューニング可能パラメータ

チューニング可能パラメータ情報の記載箇所

カーネルとメモリーの一般的なパラメータ

physmem

zfs_arc_min

zfs_arc_max

default_stksize

lwp_default_stksize

logevent_max_q_sz

segkpsize

noexec_user_stack

fsflush とそれに関連するパラメータ

fsflush

tune_t_fsflushr

autoup

dopageflush

doiflush

プロセス規模調整パラメータ

maxusers

reserved_procs

pidmax

max_nprocs

maxuprc

ngroups_max

ページング関連パラメータ

lotsfree

desfree

minfree

throttlefree

pageout_reserve

pages_pp_maximum

tune_t_minarmem

fastscan

slowscan

min_percent_cpu

handspreadpages

pages_before_pager

maxpgio

スワッピング関連パラメータ

swapfs_reserve

swapfs_minfree

カーネルメモリーアロケータ

kmem_flags

kmem_stackinfo

一般的なドライバパラメータ

moddebug

ddi_msix_alloc_limit

ネットワークドライバ パラメータ

igb パラメータ

mr_enable

intr_force

ixgbe パラメータ

tx_queue_number

rx_queue_number

intr_throttling

rx_limit_per_intr

tx_ring_size

rx_ring_size

tx_copy_threshold

rx_copy_threshold

一般的な入出力パラメータ

maxphys

rlim_fd_max

rlim_fd_cur

一般的なファイルシステムパラメータ

ncsize

dnlc_dir_enable

dnlc_dir_min_size

dnlc_dir_max_size

TMPFS パラメータ

tmpfs:tmpfs_maxkmem

tmpfs:tmpfs_minfree

仮想端末

pt_cnt

pt_pctofmem

pt_max_pty

STREAMS パラメータ

nstrpush

strmsgsz

strctlsz

System V メッセージキュー

System V セマフォー

System V 共有メモリー

segspt_minfree

スケジューリング

disp_rechoose_interval

タイマー

hires_tick

timer_max

SPARC システム固有のパラメータ

consistent_coloring

tsb_alloc_hiwater_factor

default_tsb_size

enable_tsb_rss_sizing

tsb_rss_factor

近傍性グループのパラメータ

lpg_alloc_prefer

lgrp_mem_default_policy

lgrp_mem_pset_aware

3.  NFS チューニング可能パラメータ

4.  インターネットプロトコル群のチューニング可能パラメータ

5.  ネットワークキャッシュとアクセラレータのチューニング可能パラメータ

6.  システム機能のパラメータ

A.  チューニング可能パラメータの変更履歴

B.  このマニュアルの改訂履歴

索引

ページング関連パラメータ

Solaris OS では、必要に応じてページングされる仮想メモリーシステムを使用します。システムの稼働に伴ってページが必要になると、そのページがメモリーに読み込まれます。メモリーの占有率が一定のしきい値を超え、さらにメモリーの要求が続くと、ページングが発生します。ページングには、特定のパラメータで制御されるいくつかのレベルがあります。

一般的なページングアルゴリズムは次のとおりです。

システムはページアウト操作を 1 つの CPU の 4% 以内の使用に限定しようとします。メモリーへの負荷が大きくなると、それに比例してページアウト操作をサポートするために消費される CPU 時間が増加し、最大で 1 つの CPU の 80% が消費されます。このアルゴリズムは、slowscanfastscan の間のメモリ量の一部を調べ、次の条件のどれかに当てはまると走査を終了します。

ページアウトが走査を終了してもメモリー不足が解消しない場合は、後で別の走査が 1/4 秒間スケジュールされます。

ページングサブシステムの構成メカニズムが変更されました。システムは fastscanslowscan、および handspreadpages の事前定義された値を使用せずに、ブート時にこれらのパラメータへ適切な値を割り当てます。/etc/system ファイル内のこれらのパラメータを設定すると、システムが最適でない数値を使用する場合があります。


注意

注意 - /etc/system ファイルから、VM システムのチューニングをすべて削除してください。まずデフォルトの設定値で実行してから、これらのパラメータの調整が必要かどうかを判定してください。また、cachefree および priority_paging を設定しないでください。


CPU とメモリーの動的再構成 (DR) がサポートされています。システムでメモリーの追加や削除を伴う DR 操作があると、該当のパラメータが /etc/system に明示的に設定されていなければ、そのパラメータ値が再計算されます。明示的に設定されている場合は、変数の値に対する制約に反しないかぎり、/etc/system に指定された値が使用されます。この場合は、値がリセットされます。

lotsfree

説明

システムのページングを開始する最初のきっかけになります。ページ数がこのしきい値に達すると、ページスキャナが立ち上がり、再利用するメモリーページを探します。

データ型

符号なし long

デフォルト

物理メモリーの 1/64 または 512K バイトのどちらか大きい方

範囲

最小値は、512K バイトまたは物理メモリーの 1/64 のどちらか大きい方であり、getpagesize によって返されるページサイズに基づくページ数で表されます。詳細は、getpagesize(3C) を参照してください。

最大値は物理メモリーのページ数です。この最大値は、物理メモリーの 30% 以内であるべきです。システムは、「検査」の項目で記述している場合以外は、この範囲を強制しません。

単位

ページ

動的か

はい。ただしメモリーに関して DR 操作が行われると、動的な変更は失われます。

検査

lotsfree が物理メモリーの総量より大きい場合、値はデフォルトにリセットされます。

暗黙的制約

lotsfreedesfree よりも大きく、desfree が minfree よりも大きいという関係が常に維持されるようにする必要があります。

どのような場合に変更するか

ページ要求が急激に増えるような場合には、メモリーアルゴリズムが要求に対応できないことがあります。これを回避するには、早期にメモリーの回収を開始するのも 1 つの方法です。これは、ページングシステムにいくらか余裕を与えることになります。

経験則によると、このパラメータは、システムが 2 - 3 秒で割り当てる必要がある量の 2 倍にします。このパラメータの適正値は負荷によって異なります。DBMS サーバーはデフォルトの設定で支障がないはずです。しかし、ファイルシステムの入出力負荷が非常に大きい場合は、このパラメータを調整する必要性があるかもしれません。

負荷が比較的安定し、メモリー総量が多いシステムでは、この値を引き下げます。許容される最小値は 512K バイトであり、getpagesize によって返されるページサイズに基づくページ数で表されます。

コミットレベル

変更の可能性あり

desfree

説明

システム上で常時解放しておくべきメモリー容量を指定します。

データ型

符号なし整数

デフォルト

lotsfree / 2

範囲

最小値は、256K バイトまたは物理メモリーの 1/128 のどちらか大きい方であり、getpagesize によって返されるページサイズに基づくページ数で表されます。

最大値は物理メモリーのページ数です。この最大値は物理メモリーの 15% 以内であるべきです。システムは、「検査」の項目で記述している場合以外は、この範囲を強制しません。

単位

ページ

動的か

はい。ただしメモリーの追加や削除を伴う動的再構成が行われると、動的に変更した値は無効になります。その時点でこの値は、/etc/system ファイルに指定された値か、新しい物理メモリーの値から計算された値にリセットされます。

検査

desfreelotsfree より大きい場合、desfreelotsfree / 2 に設定されます。メッセージは表示されません。

暗黙的制約

lotsfreedesfree よりも大きく、desfree が minfree よりも大きいという関係が常に維持されるようにする必要があります。

副次的な影響

このパラメータの値を増やすと、いくつかの副次的な影響が現われることがあります。新しい値がシステム上で使用できるメモリー容量に近いかそれを超えると、次の現象が生じることがあります。

  • 使用可能なメモリーが desfree を超えない限り、非同期の入出力要求が処理されません。したがって、desfree の値を増やすと、増やす前なら処理されたであろう要求が拒否されることがあります。

  • NFS の非同期書き込みが、同期書き込みとして実行されます。

  • スワッパーが本来より早く立ち上がり、そのスワッパーの動作が、積極的な動作をする方向に傾きます。

  • システムに前もって読み込む実行可能ページの数が本来よりも少なくなることがあります。この副次的な影響の結果、アプリケーションの動作が本来よりも遅くなる可能性があります。

どのような場合に変更するか

負荷が比較的安定し、メモリー総量が多いシステムでは、この値を引き下げます。許容される最小値は 256K バイトであり、getpagesize によって返されるページサイズに基づくページ数で表されます。

コミットレベル

変更の可能性あり

minfree

説明

許容される最低メモリーレベルを指定します。メモリーがこの値を下回ると、システムはページアウト動作の完了に必要な割り当て、またはプロセスのスワップ完了に必要な割り当てに重点を置いて、メモリーを割り当てます。それ以外の割り当て要求は拒否されたりブロックされたりします。

データ型

符号なし整数

デフォルト

desfree / 2

範囲

最小値は、128K バイトまたは物理メモリーの 1/256 のどちらか大きい方であり、getpagesize によって返されるページサイズに基づくページ数で表されます。

最大値は物理メモリーのページ数です。この最大値は物理メモリーの 7.5% 以内であるべきです。システムは、「検査」の項目で記述している場合以外は、この範囲を強制しません。

単位

ページ

動的か

はい。ただしメモリーの追加や削除を伴う動的再構成が行われると、動的に変更した値は無効になります。その時点でこの値は、/etc/system ファイルに指定された値か、新しい物理メモリーの値から計算された値にリセットされます。

検査

minfreedesfree より大きい場合、minfreedesfree / 2 に設定されます。メッセージは表示されません。

暗黙的制約

lotsfreedesfree よりも大きく、desfree が minfree よりも大きいという関係が常に維持されるようにする必要があります。

どのような場合に変更するか

一般にはデフォルト値で十分です。負荷が比較的安定し、メモリー総量が多いシステムでは、この値を引き下げます。許容される最小値は 128K バイトであり、getpagesize によって返されるページサイズに基づくページ数で表されます。

コミットレベル

変更の可能性あり

throttlefree

説明

要求を満たせるだけのメモリーがある場合でも、メモリー割り当て要求ブロッキングをスリープ状態にするメモリー レベルを指定します。

データ型

符号なし整数

デフォルト

minfree

範囲

最小値は、128K バイトまたは物理メモリーの 1/256 のどちらか大きい方であり、getpagesize によって返されるページサイズに基づくページ数で表されます。

最大値は物理メモリーのページ数です。この最大値は物理メモリーの 4% 以内であるべきです。システムは、「検査」の項目で記述している場合以外は、この範囲を強制しません。

単位

ページ

動的か

はい。ただしメモリーの追加や削除を伴う動的再構成が行われると、動的に変更した値は無効になります。その時点でこの値は、/etc/system ファイルに指定された値か、新しい物理メモリーの値から計算された値にリセットされます。

検査

throttlefreedesfree よりも大きい場合、throttlefreeminfree に設定されます。メッセージは表示されません。

暗黙的制約

lotsfreedesfree よりも大きく、desfree が minfree よりも大きいという関係が常に維持されるようにする必要があります。

どのような場合に変更するか

一般にはデフォルト値で十分です。負荷が比較的安定し、メモリー総量が多いシステムでは、この値を引き下げます。許容される最小値は 128K バイトであり、getpagesize によって返されるページサイズに基づくページ数で表されます。詳細は、getpagesize(3C) を参照してください。

コミットレベル

変更の可能性あり

pageout_reserve

説明

ページアウトスレッドまたはスケジューラスレッドが独占使用できるように確保するページ数を指定します。使用可能なメモリーがこの値を下回ると、ページアウトやスケジューラ以外のプロセスに対するブロックしない割り当ては拒否されます。ページアウトには専用の小さなメモリープールが必要です。ページアウトは、ページをバッキングストアに書き込む入出力に必要なデータ構造体をここから割り当てます。

データ型

符号なし整数

デフォルト

throttlefree / 2

範囲

最小値は、64K バイトまたは物理メモリーの 1/512 のどちらか大きい方であり、getpagesize(3C) によって返されるページサイズに基づくページ数で表されます。

最大値は物理メモリーのページ数です。この最大値は物理メモリーの 2% 以内であるべきです。システムは、「検査」の項目で記述している場合以外は、この範囲を強制しません。

単位

ページ

動的か

はい。ただしメモリーの追加や削除を伴う動的再構成が行われると、動的に変更した値は無効になります。その時点でこの値は、/etc/system ファイルに指定された値か、新しい物理メモリーの値から計算された値にリセットされます。

検査

pageout_reservethrottlefree / 2 より大きい場合、pageout_reservethrottlefree / 2 に設定されます。メッセージは表示されません。

暗黙的制約

lotsfreedesfree よりも大きく、desfree が minfree よりも大きいという関係が常に維持されるようにする必要があります。

どのような場合に変更するか

一般にはデフォルト値で十分です。負荷が比較的安定し、メモリー総量が多いシステムでは、この値を引き下げます。許容される最小値は 64K バイトであり、getpagesize によって返されるページサイズに基づくページ数で表されます。

コミットレベル

変更の可能性あり

pages_pp_maximum

説明

ロック解除されていなければならないページ数を指定します。ページのロック要求によって使用可能なメモリーがこの値を下回る場合は、その要求は拒否されます。

データ型

符号なし long

デフォルト

tune_t_minarmem + 100 と、ブート時に使用可能なメモリーの 4% + 4M バイトのどちらか大きい方

範囲

システムが強制する最小値は tune_t_minarmem + 100 です。最大値については、システムは強制しません。

単位

ページ

動的か

はい。ただしメモリーの追加や削除を伴う動的再構成が行われると、動的に変更した値は無効になります。その時点でこの値は、/etc/system ファイルに指定された値か、新しい物理メモリーの値から計算された値にリセットされます。

検査

/etc/system ファイルで指定された値、またはデフォルトで計算された値が tune_t_minarmem + 100 よりも小さい場合、この値は tune_t_minarmem + 100 へリセットされます。

/etc/system ファイルからの値が増やされても、メッセージは表示されません。検査は、ブート時とメモリーの追加または削除を伴なう動的再構成が行われた場合に限って実行されます。

どのような場合に変更するか

メモリーのロック要求や、SHARE_MMU フラグを指定した共有メモリーセグメントへの接続が失敗したが、使用可能なメモリーが十分ありそうな場合。

大きすぎる値が原因で、メモリーのロック要求 (mlockmlockall、および memcntl) が不必要に失敗する場合。詳細は、mlock(3C)mlockall(3C)、および memcntl(2) のマニュアルページを参照してください。

コミットレベル

変更の可能性あり

tune_t_minarmem

説明

デッドロックを回避するために維持しなければならない、利用可能な最小常駐 (スワップ不能) メモリーを指定します。この値は、OS のコアによって使用されるメモリー部分を予約するために使用されます。この方法で制限されたページは、OS が使用可能なメモリーの最大量を判定するときには計算に入れられません。

データ型

符号付き整数

デフォルト

25

範囲

1 から物理メモリー

単位

ページ

動的か

いいえ

検査

ありません。値が大きいと、物理メモリーが無駄になります。

どのような場合に変更するか

一般にはデフォルト値で十分です。システムがロックされ、使用できるメモリーがないことがデバッグ情報からわかった場合は、デフォルト値を増やすことを検討してください。

コミットレベル

変更の可能性あり

fastscan

説明

メモリー要求が大きいときにシステムが調べる、最大ページ数 / 秒を指定します。

データ型

符号付き整数

デフォルト

fastscan のデフォルト値は次のいずれかの方法で設定されます。

  • /etc/system ファイルに設定された fastscan 値が使用されます。

  • /etc/system ファイルに設定された maxfastscan 値が使用されます。

  • /etc/system ファイルに fastscanmaxfastscan も設定されていない場合は、システムのブート時に、fastscan が 64M バイトに設定されます。数分間のシステムのブート後、fastscan 値が、スキャナが CPU の 10% を使用して 1 秒間で走査できるページの数に設定されます。

これらのすべての状況で、派生した値がシステムのメモリーの半分を超えた場合、fastscan 値はシステムのメモリーの半分の値に制限されます。

範囲

64M バイトからシステムの物理メモリーの半分

単位

ページ

動的か

はい。ただしメモリーの追加や削除を伴う動的再構成が行われると、動的に変更した値は無効になります。その時点でこの値は、/etc/system ファイルに指定された値か、新しい物理メモリーの値から計算された値にリセットされます。

検査

最大値は、64M バイトと物理メモリーの 1/2 のどちらか小さい方です。

どのような場合に変更するか

メモリー不足のときにメモリーの走査を優先させたい場合。特に、システムでメモリーの要求が急激に多くなることがある場合や、多数のファイル入出力が行われることがある場合。

コミットレベル

変更の可能性あり

slowscan

説明

メモリーの再要求時にシステムが調べる、最小ページ数 / 秒を指定します。

データ型

符号付き整数

デフォルト

物理メモリーの 1/20 (ページ数) か 100 (小さい方)

範囲

1 から fastscan / 2

単位

ページ

動的か

はい。ただしメモリーの追加や削除を伴う動的再構成が行われると、動的に変更した値は無効になります。その時点でこの値は、/etc/system ファイルに指定された値か、新しい物理メモリーの値から計算された値にリセットされます。

検査

slowscanfastscan / 2 より大きい場合、slowscanfastscan / 2 にリセットされます。メッセージは表示されません。

どのような場合に変更するか

メモリー不足のときにメモリーの走査を優先させたい場合、特に、システムでメモリーの要求が急激に多くなるときがある場合。

コミットレベル

変更の可能性あり

min_percent_cpu

説明

pageout が最低限消費できる CPU の割合を指定します。このパラメータは、ページスキャナで使用できる最大時間を判定するための開始点として使用されます。

データ型

符号付き整数

デフォルト

4

範囲

1 から 80

単位

%

動的か

はい

検査

なし

どのような場合に変更するか

複数の CPU と多くのメモリーを備えたシステム (このようなシステムではメモリーの要求が急激に多くなるときがある) でこの値を増やすと、ページャがメモリーの検出に使用できる時間が増えます。

コミットレベル

変更の可能性あり

handspreadpages

説明

Oracle Solaris OS は双針クロックアルゴリズムを使用して、メモリー不足のときに再利用の候補となるページを探します。最初の針はメモリーに使用されていないという印を付けていきます。次の針は、最初の針の少し後から、そのページに依然として使用されていないという印が付けられているかを調べます。そうであれば、そのページが再利用の対象になります。最初の針と次の針の間隔が handspreadpages です。

データ型

符号なし long

デフォルト

fastscan

範囲

1 からシステムの物理メモリーの最大ページ数

単位

ページ

動的か

はい。このパラメータを変更する場合、カーネルパラメータ reset_hands もゼロ以外の値に設定する必要があります。handspreadpages の新しい値がいったん認識されると、reset_hands はゼロに設定されます。

検査

値は物理メモリー容量と handspreadpages value のどちらか小さい方に設定されます。

どのような場合に変更するか

ページが再利用されるまで置いておく時間を長くする場合。この値を増やすと 2 つの段階の間の時間が長くなるため、ページが再利用されるまでの時間が増えます。

コミットレベル

変更の可能性あり

pages_before_pager

説明

再利用に備えてページを保管する代わりに、入出力の完了後ただちにページを解放する、システムしきい値の部分を指定します。このしきい値は lotsfree + pages_before_pager です。さらに、NFS 環境も、メモリーが不足するとこのしきい値を使用して非同期の活動を減らします。

データ型

符号付き整数

デフォルト

200

範囲

1 から物理メモリーのページ数

単位

ページ

動的か

いいえ

検査

なし

どのような場合に変更するか

入出力の大半が 1 回限りのページの読み取りまたは書き込みであり、二度と参照されない場合、このパラメータを変更することができるかもしれません。この変数を大きなメモリーの値に設定すると、ページは空リストに追加され続けます。

システムが繰り返し強いメモリー要求を受ける場合も、このパラメータを変更することがあります。より大きな値は、この要求に対するより大きな緩衝剤となります。

コミットレベル

変更の可能性あり

maxpgio

説明

ページングシステムがキューに入れることのできるページ入出力要求の最大数を指定します。ページングシステムは、実際に使用する最大数を計算するために、この数字を 4 で割ります。このパラメータは、要求の数を制限する他に、プロセスのスワッピングを制御するためにも使用されます。

データ型

符号付き整数

デフォルト

40

範囲

最小値は 1 です。最大値はシステムアーキテクチャーによって決まります。主に、コントローラやディスクの数、そしてディスクのスワップサイズなどの入出力サブシステムによります。

単位

入出力

動的か

いいえ

検査

なし

暗黙的制約

ページャからの入出力要求の最大数は、要求バッファーのリストのサイズによって制限されます。現在のサイズは 256 です。

どのような場合に変更するか

このパラメータはメモリーのページアウトを早くするために増やします。複数のスワップデバイスが構成されているか、またはスワップデバイスがストライプ化デバイスである場合、この値を増やすとメモリー不足の解消が早くなることがあります。既存の入出力サブシステムは、追加される入出力の負荷に対処できる必要があります。また、スワップパーティションとアプリケーションファイルが同じディスク上にある場合、スワップ入出力の増加はアプリケーションの入出力のパフォーマンスを低下させることがあります。

コミットレベル

変更の可能性あり