Linux Systemsでは、 TOPとHTOPが一般的に使用される外部ツールであり、ユーザーがリアルタイムでシステムのパフォーマンスを監視し、CPU、メモリ、プロセスなどに関する詳細情報を表示するのに役立ちます。GetUsage()は、プロセスリソース使用量に関する情報を取得できるPHPによって提供される機能です。それでは、 getUsage()は、 TOPやHTOPなどの外部監視ツールを置き換えることができますか?この記事でこの問題を検討し、PHPで同様の機能を実装する方法について説明します。
getUsage()は、プロセスリソースの使用に関する詳細情報を返すPHPに組み込まれた機能です。この関数は通常、プロセスのCPU使用時間、メモリ使用量などを取得するために使用されますが、 TOPやHTOPなどのシステムレベルのリアルタイム監視データを提供しません。システム全体のリソースステータスではなく、関数を呼び出すPHPプロセスのリソース使用量のみを提供します。
getUsage()関数は、プロセスリソースの使用に関する統計を含む配列を返します。通常、配列の内容には以下が含まれます。
ru_maxrss :プロセスの最大居住メモリセット(ユニット:バイト)
RU_IXRSS :プロセス共有メモリ使用(ユニット:バイト)
ru_idrss :非共有メモリ使用量を処理する(ユニット:バイト)
ru_isrss :プロセス共有ライブラリの使用(ユニット:バイト)
ru_minflt :ページミス数(ユーザー状態)
ru_majflt :ページが欠落しているページの数(カーネル状態)
RU_NSWAP :交換数
ru_inblock :ブロック操作の数を入力します
Ru_oublock :出力ブロック操作
ru_msgsnd :送信されるメッセージの数
RU_MSGRCV :受信したメッセージの数
RU_SIGNALS :受信した信号の数
RU_NVCSW :コンテキストスイッチング時間の数(ユーザー状態)
ru_nivcsw :コンテキストスイッチの数(カーネル状態)
getTrusage()は、プロセスレベルのリソース使用量を提供できますが、 TOPやHTOPなどの外部ツールと比較して、次の大きな違いがあります。
監視範囲: getUsage()は、現在のPHPスクリプトのリソース使用量のみを取得できますが、 TOPとHTOPは、すべての実行プロセスを含むシステムレベルでの全体的なリソース使用量を表示できます。
リアルタイム: TOPとHTOPは、動的に変更されたリソース使用量を示すことができるリアルタイムの更新ツールであり、 getUsage()は、呼び出された場合にのみリソースデータを返すことができ、動的に更新できません。
監視の粒度: TOPとHTOPは、プロセスステータス、CPU使用率、メモリ使用量などを含むより詳細なプロセス情報を提供しますが、 getUsage()が提供するデータは比較的簡潔で、より豊富な監視情報がありません。
システム情報: TOPおよびHTOPは、トータルメモリ、スワップスペース、CPU負荷など、システムレベルのハードウェアリソース使用量を表示することもできます。GetUsage ()は、プロセス自体のリソース使用に関するものです。
getTrusage()はTopまたはHTOPを完全に置き換えることはできませんが、特に特定のPHPスクリプトのパフォーマンス分析が必要な場合、開発者にいくつかの有用な情報を提供できます。
<span><span><span class="hljs-meta"><?php</span></span><span>
</span><span><span class="hljs-comment">// 現在のものを取得します PHP プロセスのリソース使用</span></span><span>
</span><span><span class="hljs-variable">$usage</span></span><span> = </span><span><span class="hljs-title function_ invoke__">getrusage</span></span><span>();
</span><span><span class="hljs-comment">// リソースの使用量を表示します</span></span><span>
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"最大居住者メモリセット: "</span></span><span> . </span><span><span class="hljs-variable">$usage</span></span><span>[</span><span><span class="hljs-string">"ru_maxrss"</span></span><span>] . </span><span><span class="hljs-string">" bytes\n"</span></span><span>;
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"ユーザーステータス CPU 時間: "</span></span><span> . </span><span><span class="hljs-variable">$usage</span></span><span>[</span><span><span class="hljs-string">"ru_utime.tv_sec"</span></span><span>] . </span><span><span class="hljs-string">" seconds\n"</span></span><span>;
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"カーネル状態 CPU 時間: "</span></span><span> . </span><span><span class="hljs-variable">$usage</span></span><span>[</span><span><span class="hljs-string">"ru_stime.tv_sec"</span></span><span>] . </span><span><span class="hljs-string">" seconds\n"</span></span><span>;
</span><span><span class="hljs-meta">?></span></span><span>
</span></span>
上記の例では、 getUsage()を呼び出して、現在のPHPプロセスのリソース使用量を取得し、最大居住者メモリセットやCPU時間などの情報を印刷します。このデータを通じて、開発者は操作中のスクリプトのリソース消費を理解できます。
実行中にPHPスクリプトのリソース使用を監視する必要がある場合は、 getRusage()を定期的に呼び出してリソースの変更を計算できます。たとえば、リソースの使用は、ループで特定の時間ごとに取得でき、それにより、単純な監視システムを実装できます。
<span><span><span class="hljs-meta"><?php</span></span><span>
</span><span><span class="hljs-function"><span class="hljs-keyword">function</span></span></span><span> </span><span><span class="hljs-title">get_usage</span></span><span>(</span><span><span class="hljs-params"></span></span><span>) {
</span><span><span class="hljs-keyword">return</span></span><span> </span><span><span class="hljs-title function_ invoke__">getrusage</span></span><span>();
}
</span><span><span class="hljs-variable">$startUsage</span></span><span> = </span><span><span class="hljs-title function_ invoke__">get_usage</span></span><span>();
</span><span><span class="hljs-comment">// シミュレーション PHP スクリプトの実行</span></span><span>
</span><span><span class="hljs-title function_ invoke__">sleep</span></span><span>(</span><span><span class="hljs-number">2</span></span><span>); </span><span><span class="hljs-comment">// スクリプトが実行されていると仮定します 2 2番</span></span><span>
</span><span><span class="hljs-variable">$endUsage</span></span><span> = </span><span><span class="hljs-title function_ invoke__">get_usage</span></span><span>();
</span><span><span class="hljs-comment">// 違いを計算します</span></span><span>
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"メモリの使用量が変化します: "</span></span><span> . (</span><span><span class="hljs-variable">$endUsage</span></span><span>[</span><span><span class="hljs-string">'ru_maxrss'</span></span><span>] - </span><span><span class="hljs-variable">$startUsage</span></span><span>[</span><span><span class="hljs-string">'ru_maxrss'</span></span><span>]) . </span><span><span class="hljs-string">" bytes\n"</span></span><span>;
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"CPU 時間变化 (ユーザーステータス): "</span></span><span> . (</span><span><span class="hljs-variable">$endUsage</span></span><span>[</span><span><span class="hljs-string">'ru_utime.tv_sec'</span></span><span>] - </span><span><span class="hljs-variable">$startUsage</span></span><span>[</span><span><span class="hljs-string">'ru_utime.tv_sec'</span></span><span>]) . </span><span><span class="hljs-string">" seconds\n"</span></span><span>;
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"CPU 時間变化 (カーネル状態): "</span></span><span> . (</span><span><span class="hljs-variable">$endUsage</span></span><span>[</span><span><span class="hljs-string">'ru_stime.tv_sec'</span></span><span>] - </span><span><span class="hljs-variable">$startUsage</span></span><span>[</span><span><span class="hljs-string">'ru_stime.tv_sec'</span></span><span>]) . </span><span><span class="hljs-string">" seconds\n"</span></span><span>;
</span><span><span class="hljs-meta">?></span></span><span>
</span></span>
このようにして、実行中にPHPスクリプトのリソースの変更について大まかなアイデアを得ることができます。
getTrusage()はPHPで特定のプロセス監視機能を提供できますが、 TOPやHTOPなどのツールの完全な機能を置き換えることはできません。開発者の場合、 getTrusage()は、完全なシステム監視ツールよりも、パフォーマンスの調整を支援するツールのようなものです。リアルタイムで包括的なシステム監視が必要な場合、 TOPとHTOPは間違いなく適用可能です。
ただし、PHPでのプロセスレベルのリソース監視が必要な場合は、特に特定の重要な操作を実行する場合、 GetTrusage()は依然として非常に便利なツールです。
getUsage()は、特定のプロセスリソースの使用を提供できますが、 TOPやHTOPなどのシステムレベルの監視ツールを完全に置き換えることはできません。あなたの要件が特定のPHPスクリプトのパフォーマンスを監視することである場合、それは非常に効果的なツールです。ただし、包括的かつリアルタイムのシステム監視には、 TOPとHTOPがさらに適した選択肢があります。