Inter-process-communication-process-resources
プロセスリソース
プロセスは、タスクを実行するためにCPUやメモリなどの特定のリソースを必要とします。 次に、関連コマンドとシステムコールを調べて、リソースの使用率と監視に関する情報を確認します。 また、リソースの各プロセスにはデフォルトで特定の制限があり、必要に応じて制限を強化してアプリケーション要件に対応できます。
以下は、コマンドを使用した重要なシステムまたはプロセスのリソース情報です-
トップコマンド
topコマンドは、システムリソースの使用状況を継続的に表示します。 プロセスによってシステムが何らかのハング状態(CPUまたはメモリをより多く消費する)になった場合、プロセス情報を書き留め、適切なアクション(関連プロセスの強制終了など)を行うことができます。
psコマンド
psコマンドは、実行中のすべてのプロセスに関する情報を提供します。 これは、プロセスの監視と制御に役立ちます。
vmstatコマンド
vmstatコマンドは、仮想メモリサブシステムの統計情報を報告します。 プロセス(実行待機、スリープ、実行可能プロセスなど)、メモリ(空き、使用中などの仮想メモリ情報)、スワップ領域、IOデバイス、システム情報(割り込みの数、コンテキストスイッチなど)の情報を報告します。 )およびCPU(ユーザー、システム、およびアイドル時間)。
lsofコマンド
lsofコマンドは、システムプロセスを含む現在実行中のすべてのプロセスの開いているファイルのリストを出力します。
getconfコマンド
getconfコマンドは、システム構成変数情報を表示します。
次に、関連するシステムコールを見てみましょう。
- システムコールのgetrusage()。システムリソースの使用状況に関する情報を提供します。 *リソース制限へのアクセスと設定に関連するシステムコール。つまり、getrlimit()、setrlimit()、prlimit()。
システムリソース使用状況の呼び出し
システムコールgetrusage()は、システムリソースの使用状況に関する情報を返します。 これには、自己、子、または「who」変数のフラグRUSAGE_SELF、RUSAGE_CHILDREN、RUSAGE_THREADを使用した呼び出しスレッドに関する情報を含めることができます。 呼び出し後、構造rusageの情報を返します。
この呼び出しは、成功すると「0」を返し、失敗すると「-1」を返します。
次のサンプルプログラムを見てみましょう。
====/*ファイル名:sysinfo_getrusage.c */
コンパイルおよび実行手順
ここで、リソース制限へのアクセスと設定に関連するシステムコールを見てみましょう。
システムコール* getrlimit()*は、RLIMIT_NOFILE、RLIMIT_NPROC、RLIMIT_STACKなどの必要なリソースを入力することにより、構造体rlimitのリソース制限を取得します。
システムコール* setrlimit()*は、制限内である限り、rlimit構造で述べられているようにリソース制限を設定します。
システムコール* prlimit()*は、現在のリソース制限を取得したり、リソース制限を新しい値に更新したりするなど、さまざまな目的で使用されます。
構造rlimitには2つの値が含まれています-
- ソフト制限-電流制限
- ハード制限-拡張可能な最大制限。
RLIMIT_NOFILE-このプロセスで開くことができるファイル記述子の最大数を返します。 たとえば、1024を返す場合、プロセスには0から1023までのファイル記述子があります。
これらの呼び出しはすべて、成功すると「0」、失敗すると「-1」を返します。
getrlimit()システムコールを使用している次の例を考えてみましょう。
====/*ファイル名:sysinfo_getrlimit.c */
コンパイルおよび実行手順
getrlimit()システムコールを使用した別の例を考えてみましょうが、今はprlimit()システムコールを使用します。
====/* ファイル名:sysinfo_prlimit.c */