Jump to content 日本-日本語

製品  >  ソフトウェア  >  HP-UX   >  Knowledge-on-Demand  >  カーネル・チューニング技法

HP-UX 11iカーネル・チューニング技法

第1回:プロセスとスレッドの管理

HP-UX/Integrityサーバー お問い合せ
コンテンツに進む
HP-UX 11iカーネル・チューニング技法

HP-UX 11iカーネル・チューニング技法
カーネル・パラメータの役割
プロセス管理の
チューニング
ページ:  戻る   |   1   2

プロセス管理のチューニング


今回は、HP-UXにおけるプロセスとスレッドの管理にかかわるチューニング・ポイントを説明します。例えば「システムあたりのプロセス数」や「ユーザあたりのプロセス数」を適切に設定すれば、リソースを各ユーザに効率的に配分し、システム全体を最適な状態に保つことができます。

プロセスの最大許容数


プロセスの最大許容数として適正な値は、個々のシステムによって大きく異なります。例えば、CDE環境やMotif環境が稼動しているGUIベースのワークステーションでは、1人のユーザが100以上のプロセスを同時に実行することもあります。一方、ダム端末が接続された大規模なマルチユーザ・システムの場合、各ユーザが実行するプロセスの数は2〜3個であっても、端末数が数100台に及ぶかもしれません。この2つの対照的な例を見ても分かるように、プロセス数はシステムの構成によって大きく変化します。

プロセスの最大許容数を管理するカーネル・パラメータとしては、以下の2つがあります。


セキュリティの確保


  • nproc
    システム全体で同時に実行可能な最大プロセス数を定義します。この数には、remshなどのネットワーク・コマンドを通じて他のシステムから起動されたリモート実行プロセスも含まれます。nprocの値は、システムのピーク時に合わせて、同時にログインするすべてのユーザに対して十分な数のプロセスを提供できるように設定する必要があります。

  • maxuprc
    個々のユーザが同時に実行可能な最大プロセス数を定義します。この数には、ログイン・シェル、ユーザ・インターフェイス・プロセス、実行中のプログラムと子プロセス、I/Oプロセスなどが含まれます。

    X-window、CDE、およびMotifでは、1人のユーザが同じログイン名(ユーザID)を使って同時に複数のログインするケースがあります。このような場合は、プロセスが所属するプロセス・グループの違いにかかわらず、すべてのプロセスの個数が合算されます。プロセスが親プロセス・グループから切り離された場合、そのプロセスはカウントされなくなります(印刷ジョブや特定の専用アプリケーションなど)。

    maxuprcの値は、すべてのユーザについて、通常時のニーズを満たせるように設定します。あまり大きな値を設定すると、プログラムの暴走などによって過度に多数のプロセスが生成されたとき、他のユーザが新しいプロセスを生成できなくなる可能性が生じます。またシステムを悪用するユーザがいた場合、他のユーザを保護できなくなります。

カーネル・スレッドの最大許容数


複数のプロセッサーを備えたシステムでは、プロセス内部の複数のスレッドが、それぞれ別々のプロセッサー上で同時に実行されます。こうしたスレッドによるシステム・リソースの消費は、以下の2つのカーネル・パラメータを使って管理できます。

  • max_thread_proc
    1つのプロセスが作成して同時に実行するスレッドの最大許容数を定義します。

    プロセスが複数のスレッドを生成すると、プロセス空間の一部がスレッドごとに複製されるため、一定のシステム・リソースとメモリを消費します。もし暴走したプロセスや悪意のあるユーザが大量のスレッドを生成すると、システム性能が著しく低下したり、他の誤動作が誘発されたりするおそれがあります。max_thread_procを適切に設定することで、プロセスが異常な数のスレッドを生成した場合でも、システム・リソースが過剰に消費されるのを防止できます。

    max_thread_procに値を指定する場合は、システム上で運用するマルチスレッド・アプリケーションについて、もっとも多くのスレッドが生成される条件でのスレッド数を調査します。max_thread_procには、少なくともこの数を上回る値を設定します。ただし、上述したようなトラブル時でも他のプロセスを保護できるように、あまり大きな値に設定してはいけません。

  • nkthread
    システム上に同時に存在するカーネル・スレッドの最大許容数を定義します。

    大規模なマルチスレッド・アプリケーションでは、大量のスレッドが生成されることがあります。1つのプロセスが作成できるスレッド数は上述のパラメータ max_thread_procで制限可能ですが、そうしたプロセスがシステム上にいくつも起動するケースも考えられます。

    nkthreadは、システム上のスレッド総数を制限します。このパラメータ値により、異常な数のスレッドによってシステムが過負荷状態となることを防げます。例えば、悪意のあるユーザが故意に大量のマルチスレッド・プログラムを起動し、リソースを枯渇させるような行為に対してシステムを保護します。

    nkthreadのデフォルトでは、1プロセスにつき平均2個のスレッドと、システム自体で数個のスレッドを使用可能な値が設定されています。より多くのスレッドが必要な場合は、以下の手順を実施します。

    1. システム上の大規模なマルチスレッド・アプリケーションが生成するスレッド数を調べます
    2. それらのアプリケーションが同時に実行される場合、それぞれのスレッド数を合計します
    3. スレッド数合計に、他のユーザやプロセス用に確保しておく適切なスレッド数を追加します(nproc*2の値を使用すると便利です)。
    4. 上記で算出した総スレッド数よりも十分に大きい値で、かつシステムの完全性に影響を与えない範囲の値をnkthreadに設定します。

同時にいくつものマルチスレッド・アプリケーションを運用する大規模システムでは、HP-UXのプロセス管理ツールなどを活用し、システムを試験的に運用させながらカーネル・チューニングを施す必要があるでしょう。

  次回は、CPU時間やメモリの割り当てのチューニング方法について紹介する予定です。
連載記事一覧 戻る ページ:  戻る   |   1   2

連載 「HP-UX 11i カーネル・チューニング技法」記事一覧

第1回 プロセスとスレッドの管理
第2回 メモリ・ページングのチューニング

 その他の連載記事


本ページの内容は執筆時の情報に基づいており、異なる場合があります。

お問い合わせ

ご購入前のお問い合わせ


ご購入後のお問い合わせ

オンラインサポート
製品の標準保証でご利用いただける無償のサービスです。

ショールーム

ショールーム 導入をご検討のお客様へ
業務アプリケーションの継続・標準化・開発性とシステム担当者様、システム開発者様が抱える悩み・疑問に対する解決策実体験して頂けます。
印刷用画面へ
プライバシー ご利用条件・免責事項