Solaris のシステム管理 (資源管理とネットワークサービス)

第 7 章 拡張アカウンティング

プロジェクトおよびタスク機能 (第 6 章「プロジェクトとタスク」で説明) を使って作業負荷にラベル付けを行い、分離すると、システム上で実行している作業負荷による資源消費を監視できます。拡張アカウンティングサブシステムを使用すると、プロセスとタスクの両方について詳細な資源消費統計情報を取得し、行われた作業の対象プロジェクトのラベルを使用状況レコードに付けることができます。

拡張アカウンティングを開始する方法については、「プロセスおよびタスクの拡張アカウンティングを起動する方法」を参照してください。

概要

資源管理メカニズムを適用する前に、まず、さまざまな作業負荷がシステムに対して行う資源消費要求の特徴をつかむ必要があります。Solaris オペレーティング環境の拡張アカウンティング機能は、資源消費をタスクまたはプロジェクトベースで記録する柔軟な方法を提供します。この機能は、システムの使用状況をリアルタイムで計測できるオンライン監視ツールとは異なります。拡張アカウンティングでは、使用状況の履歴を調べ、将来の作業負荷の容量要件を算定できます。

拡張アカウンティングのデータを使用すれば、資源についての課金、作業負荷の監視、容量計画などの目的でソフトウェアを開発したり購入したりできます。

拡張アカウンティングの動作

Solaris 環境の拡張アカウンティング機能は、アカウンティングデータを含めるために、バージョン番号が付けられた拡張可能なファイル形式を使用します。このデータ形式を使用するファイルは、添付のライブラリ libexacct で提供されている API を使ってアクセスまたは作成できます。作成されたファイルは、拡張アカウンティング機能を使用できる任意のプラットフォーム上で分析でき、データを容量計画やチャージバックに使用できます。

拡張アカウンティングを起動すると、libexacct API で調べることができる統計情報が収集されます。libexacct は、exacct ファイルを前後どちらの方向からも検査できます。API は、カーネルが作成するファイルだけでなく、libexacct によって生成されたサードパーティ製のファイルもサポートします。

拡張アカウンティングを有効にすると、タスクは、自分のメンバープロセスの総資源使用状況を追跡します。タスクのアカウンティングレコードは、そのタスクの完了時に書き込まれます。中間レコードを書き込むこともできます。タスクの詳細については、第 6 章「プロジェクトとタスク」を参照してください。

図 7-1 拡張アカウンティング起動時のタスクの追跡

Graphic

拡張可能な形式

拡張アカウンティングの形式は、古い SunOSTM システムのアカウンティングソフトウェアの形式に比べて拡張性があります (Solaris のシステム管理 (上級編)』の「システムアカウンティング」参照)。拡張アカウンティングでは、システムアカウンティングメトリックスのシステムへの追加や削除をシステムの解放時またはシステムの操作中に行うことができます。


注 -

拡張アカウンティングと古いシステムのアカウンティングソフトウェアの両方をシステム上で同時に起動できます。


exacct レコードとその形式

exacct レコードを作成するルーチンは、次の 2 つの目的で使用できます。

この形式では、すべての変更を明示的なバージョン変更にしなくても、さまざまな形式のアカウンティングレコードを取得できます。アカウンティングデータを使用するアプリケーションは、認識不可能なレコードを無視するように作成する必要があります。

libexacct ライブラリは、ファイルを exacct 形式に変換し、exacct でファイルを作成します。このライブラリは、exacct 形式のファイルに対するインタフェースとしてサポートされている唯一のインタフェースです。

拡張アカウンティング構成

/etc/acctadm.conf ファイルには、現在の拡張アカウンティング構成が含まれます。このファイルは、ユーザーが直接編集するのではなく、acctadm インタフェースを介して編集します。

拡張アカウンティングデータは、デフォルトでは /var/adm/exacct ディレクトリに置かれます。acctadm(1M) コマンドを使用すると、プロセスやタスクのアカウンティングデータファイルの格納場所を変更できます。

拡張アカウンティングで使用されるコマンド

コマンド名 

説明 

acctadm(1M)

拡張アカウンティング機能のさまざまな属性の変更、拡張アカウンティングの停止と起動を行う。また、プロセスとタスクを追跡するためのアカウンティング属性を選択するのに使用する 

wracct(1M)

アクティブなプロセスおよびタスクの拡張アカウンティングアクティビティを書き込む 

lastcomm(1)

直前に呼び出されたコマンドを表示する。lastcomm では、標準アカウンティングプロセスのデータまたは拡張アカウンティングプロセスのデータのどちらかを使用できる

タスクおよびプロジェクト関連のコマンドの詳細については、「プロジェクトとタスクの管理に使用するコマンド」を参照してください。

拡張アカウンティング機能の使用

プロセスおよびタスクの拡張アカウンティングを起動する方法

タスクおよびプロセスの拡張アカウンティング機能を起動するには、acctadm(1M) コマンドを使用します。acctadm の最後に付けられたオプションのパラメータは、このコマンドが、拡張アカウンティング機能のプロセスアカウンティングコンポーネントとシステムタスクアカウンティングコンポーネントのどちらに対して動作するかを指定します。

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

  2. プロセスの拡張アカウンティングを起動します。


    # acctadm -e extended -f /var/adm/exacct/proc process 
    
  3. タスクの拡張アカウンティングを起動します。


    # acctadm -e extended,mstate -f /var/adm/exacct/task task
    

起動スクリプトを使って拡張アカウンティングを起動する方法

/etc/init.d/acctadm スクリプトへのリンクを /etc/rc2.d に作成することにより、実行中に拡張アカウンティングを起動できます。


# ln -s /etc/init.d/acctadm /etc/rc2.d/Snacctadm
# ln -s /etc/init.d/acctadm /etc/rc2.d/Knacctadm

変数 n は番号で置き換えられます。

アカウンティング構成の詳細については、「拡張アカウンティング構成」を参照してください。

拡張アカウンティング状態を表示する方法

引数なしで acctadm と入力すると、拡張アカウンティング機能の現在の状態が表示されます。


# acctadm
                 Task accounting: active
            Task accounting file: /var/adm/exacct/task
          Tracked task resources: extended,mstate
        Untracked task resources: host
              Process accounting: active
         Process accounting file: /var/adm/exacct/proc
       Tracked process resources: extended
     Untracked process resources: host,mstate

この例では、システムタスクアカウンティングが拡張モードと mstate モードで動作しています。プロセスアカウンティングは、拡張モードで動作しています。


注 -

拡張アカウンティングの文脈では、マイクロステート (mstate ) は、プロセス状態の微小な変化を反映した拡張データを意味し、このデータはプロセス使用状況ファイルで利用できます (proc(4) 参照)。このデータは、プロセスの活動に関して、基本レコードや拡張レコードよりも詳細な情報を提供します。


使用可能なアカウンティング資源を表示する方法

使用可能な資源は、システムやプラットフォームによってさまざまです。-r オプションを使用すると、システム上の使用可能なアカウンティング資源を表示できます。


# acctadm -r
process:
extended pid,uid,gid,cpu,time,command,tty,projid,taskid,ancpid,wait-status,flag
basic    pid,uid,gid,cpu,time,command,tty,flag
task:
extended taskid,projid,cpu,time,host,mstate,anctaskid
basic    taskid,projid,cpu,time

プロセスおよびタスクアカウンティングを停止する方法

プロセスおよびタスクアカウンティングを停止するには、それぞれを個別にオフにします。

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

  2. プロセスアカウンティングをオフにします。


    # acctadm -x process 
    
  3. タスクアカウンティングをオフにします。


    # acctadm -x task
    
  4. タスクアカウンティングおよびプロセスアカウンティングがオフになったことを確認します。


    # acctadm
                     Task accounting: inactive
                Task accounting file: none
              Tracked task resources: extended,mstate
            Untracked task resources: host
                  Process accounting: inactive
             Process accounting file: none
           Tracked process resources: extended
         Untracked process resources: host,mstate