管理者は、資源の使用量をどの l ノードに課金するかを決める必要があります。たとえば、管理者が部門全体に対してのみ課金するのであれば、一番上のグループのグループヘッダーだけに課金します。したがって、このグループヘッダーの総使用量には、その部門レベル以下のすべての l ノードの総使用量が含まれます。
課金システムを導入するためには、管理者は課金する資源ごとのコスト関数を決める必要があります。単純な線形の関数 (使用量に関係なく単位コストが同じ)、ステップ関数などの非線型の関数、あるいは単位コストが使用量とともに変化するカーブの場合もあります。
資源ごとのコスト関数を決める際には、コスト関数が資源総使用量に対するコストの割り当てを制御するだけでなく、ユーザーが資源をどのように使用するかにも影響を与えることに留意する必要があります。たとえば、仮想メモリー使用量のコスト関数を作成するときに、使用量が増えると単位コストが増えるようにすると、ユーザーはこれが大きな動機となって仮想メモリーの使用量を少なくしようとします。したがって、管理者は、適切な課金方法を使用することによって、ユーザーの行動を制御できます。
accrue 属性は資源ごとに 1 つしかありません。この属性には、資源の usage 属性に基づく資源の総使用量が含まれています。したがって、myusage 属性に対応する総使用量はありません。グループヘッダーの場合、accrue 属性にはグループの総使用量が含まれているので、このユーザーそのものの総使用量はありません。子がない l ノード (葉 l ノード) の場合は、myusage 属性と usage 属性が同じ値なので、このことは問題ではありません。グループヘッダーそのものの総使用量に対して課金する場合は、グループの合計から各グループの子の合計を差し引いて計算する必要があります。
liminfo コマンドのデフォルト出力から、ユーザーは現在の使用量、制限値、特権などを知ることができます。さらに liminfo は、管理者が他のユーザーの属性を照会するときにも役に立ちます。情報の出力には必要に応じて選択できる形式がいくつかあります。その中には、liminfo の出力を一連のフィルタで処理するのに適した形式にするオプションもあります。コマンド行オプションの詳細とその意味、および表示可能なフィールドについては、liminfo(1SRM) のマニュアルページを参照してください。
limreport コマンドを使えば、管理者はどのユーザーのどの属性 (accrue 属性を含む) でも照会できます。このコマンドでは、選択した l ノードからどの情報を表示するかを自由に選択できます。
たとえば次のコマンドでは、usr ドメインから総使用量を持つすべての l ノードを選択し、選択した l ノードごとにユーザー ID と総使用量属性を一覧表示します。
% limreport 'cpu.accrue!=0' '%u %s %f¥n' uid lname cpu.accrue |
これらの値を cpu.accrue で sort した結果をパイプを使ってソートコマンドに渡せば、上位 10 ユーザーを簡単に表示することができます。
% limreport 'cpu.accrue!=0' '%u %s %f¥n' uid lname cpu.accrue | sort -2n | head |
補足説明については、limreport(1SRM) のマニュアルページを参照してください。
課金が終わった後に accrue 属性をゼロにするには、課金システムで limadm(1MSRM) コマンドを使用します。
# limreport 1 '%u¥tcpu.accrue=0,mem.accrue=0¥n' uid | limadm set -u -f |
たとえば、このコマンドでは、limreport コマンドを使って一連のコマンドを生成し、パイプを使って limadm に渡します。すべての l ノードが選択され、l ノードごとに accrue 属性がゼロにされます。
管理者は、l ノードの accrue 属性をいつ消去するかを慎重に決める必要があります。このタイミングは課金方針によって変わります。たとえば、グループレベルの課金処理後に、グループメンバーに個別に課金する場合には、両方の課金処理が終わるまで、グループメンバーの accrue 属性を消去することはできません。しかし、個別の課金を行わない場合は、個別の属性が使用されていない場合でも、グループメンバーの accrue 属性をグループヘッダーの属性と同時に消去してください。
補足説明については、limadm(1MSRM) のマニュアルページを参照してください。