現在の位置: ホーム> 最新記事一覧> getUsage()返されたデータユニット分析

getUsage()返されたデータユニット分析

M66 2025-07-08
<span><span><span class="hljs-meta"><?php</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">"読んでください PHP 技術記事。\n"</span></span><span>;
</span><span><span class="hljs-meta">?></span></span><span>

<hr>

<h1></span><span><span class="hljs-title function_ invoke__">getrusage</span></span><span>() 返されたデータユニット分析</h1>

<p>存在する PHP 真ん中,<code></span><span><span class="hljs-title function_ invoke__">getrusage</span></span><span>()

このコードは、次のようなものを出力します(異なるシステムがわずかに異なる場合があります)。

 
</span><span><span class="hljs-title function_ invoke__">Array</span></span><span>
(
    [ru_utime.tv_sec] => </span><span><span class="hljs-number">0</span></span><span>
    [ru_utime.tv_usec] => </span><span><span class="hljs-number">123456</span></span><span>
    [ru_stime.tv_sec] => </span><span><span class="hljs-number">0</span></span><span>
    [ru_stime.tv_usec] => </span><span><span class="hljs-number">7890</span></span><span>
    [ru_maxrss] => </span><span><span class="hljs-number">34560</span></span><span>
    ...
)

2。フィールドとユニットの説明
  • ru_utime.tv_sec / ru_utime.tv_usec
    それぞれ秒単位とマイクロ秒単位で、ユーザー状態のCPU時間を表します。 2つを一緒に追加して、正確なユーザー状態の時間を取得することができます。
  • ru_stime.tv_sec / ru_stime.tv_usec
    カーネル状態のCPU時間を示し、ユニットは上記と同じです。
  • ru_maxrss
    プロセス(最大居住者セットサイズ)で使用される最大居住セットサイズを示します。 Linuxでは、ユニットはKB(kilobytes)です。 MacOSでは、ユニットはバイトであるため、特別な注意が必要です。
  • ru_ixrss、ru_idrss、ru_isrss
    これらのフィールドは、共有メモリ、非共有データメモリ、および非共有スタックのメモリ使用量を理論的に表していますが、通常、最新のシステムでは利用できず、戻り値は0です
  • ru_minflt / ru_majflt
    ページエラーの回数(ページが欠落している例外)は、時間ではなく「回数」です。
  • ru_nswap
    プロセス交換の回数も「回数」です。
  • ru_inblock / ru_oublock
    ブロック入力/出力操作の数(ファイルシステムへの読み取りや書き込みなど)、ユニットはバイトではなく「ブロック操作の数」です。
  • ru_msgsnd / ru_msgrcv
    メッセージが送信および受信される回数は「時間」です。
  • ru_signals
    受信した信号の数。
  • ru_nvcsw / ru_nivcsw
    自発的/不随意のコンテキストスイッチの数。

3。ユニット変換の例

ユーザー状態の合計CPU時間を取得したいとしたら、次のように書くことができます。

 
</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-variable">$user_time</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-variable">$usage</span></span><span>[</span><span><span class="hljs-string">"ru_utime.tv_usec"</span></span><span>] / </span><span><span class="hljs-number">1e6</span></span><span>;
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"ユーザーにとって時間がかかります: <span class="hljs-subst">{$user_time}</span></span></span><span> 2番\n";

同様に、Kernel State Timeで同じ操作を実行して、プロセスCPU使用の合計時間を取得できます。

4。注意すべきこと
  • 異なるオペレーティングシステムによって返されるユニットは、特にRU_MAXRSSフィールドが異なる場合があります。
  • システムの実装はこのデータ収集をサポートしていないため、特定のプラットフォームでは常に0です。
  • getTrusage()は、メモリピークのリアルタイムデータを通知せず、リソース制限制御よりもパフォーマンス分析により適しています。

結論

getUsage()は、PHPが提供する重要なツールであり、スクリプトリソース消費に関する洞察を得ることができます。その返品価値の意味と単位を理解することは、開発者がより詳細なパフォーマンスの調整と監視を行うのに役立ちます。