현재 위치: > 최신 기사 목록> 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 시간을 각각 초 및 마이크로 초로 나타냅니다. 두 가지를 함께 추가하여 정확한 사용자 상태 시간 소비를 얻을 수 있습니다.
  • ru_stime.tv_sec / ru_stime.tv_usec
    커널 상태 CPU 시간을 나타내고 장치는 위와 동일합니다.
  • ru_maxrss
    프로세스가 사용하는 최대 거주 세트 크기 (최대 거주 세트 크기)를 나타냅니다. Linux에서는 장치가 KB (킬로 바이트)입니다. MacOS에서는 장치가 바이트이므로 특별한주의가 필요합니다.
  • ru_ixrss, ru_idrss, ru_isrss
    이 필드는 이론적으로 공유 메모리, 공유 데이터 메모리 및 공유 스택의 메모리 사용량을 나타내지 만 일반적으로 최신 시스템에서는 사용할 수 없으며 반환 값은 0 입니다 .
  • ru_minflt / ru_majflt
    페이지 오류 (페이지 누락 예외) 횟수는 시간이 아닌 "횟수"입니다.
  • ru_nsswap
    프로세스 교환의 횟수는 또한 "횟수"입니다.
  • 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> 두번째\n";

마찬가지로, 동일한 작업은 커널 상태 시간에 수행하여 전체 프로세스 CPU 사용 시간을 얻을 수 있습니다.

4. 주목할만한 것들
  • 다른 운영 체제에 의해 반환 된 장치, 특히 RU_MAXRSS 필드에 따라 다를 수 있습니다.
  • 시스템 구현 이이 데이터 수집을 지원하지 않기 때문에 일부 필드는 항상 특정 플랫폼에서 0 입니다.
  • GetTrusage ()는 메모리 피크의 실시간 데이터를 알려주지 않으며 리소스 제한 제어보다 성능 분석에 더 적합합니다.

결론

getUsage ()는 스크립트 리소스 소비에 대한 통찰력을 얻기 위해 PHP가 제공하는 중요한 도구입니다. 반환 가치의 의미와 단위를 이해하면 개발자가보다 자세한 성능 튜닝 및 모니터링을 수행하는 데 도움이됩니다.