runq-sz는 sar에서 어떻게 계산됩니까?

runq-sz는 sar에서 어떻게 계산됩니까?

출력에 관해 질문하고 싶습니다 sar -q. 누구든지 제가 이해하도록 도와주시면 매우 감사하겠습니다 runq-sz.

8 cpu threadsCPU 스레드가 열려 있는 시스템이 있습니다 RHEL 7.2.

[ywatanabe@host2 ~]$ cat /proc/cpuinfo | grep processor | wc -l
8

sar -q 아래는 내 시스템에 대한 결과 입니다 runq-sz.낮은에 비해 ldavg-1.

                runq-sz  plist-sz   ldavg-1   ldavg-5  ldavg-15   blocked
05:10:01 PM         0       361      0.29      1.68      2.14         0
05:11:01 PM         0       363      1.18      1.61      2.08         2
05:12:01 PM         0       363      7.03      3.15      2.58         1
05:13:01 PM         0       365      8.12      4.15      2.96         1
05:14:01 PM         3       371      7.40      4.64      3.20         1
05:15:01 PM         2       370      7.57      5.26      3.51         1
05:16:01 PM         0       366      8.42      5.90      3.84         1
05:17:01 PM         0       365      8.78      6.45      4.16         1
05:18:01 PM         0       363      7.05      6.40      4.28         2
05:19:02 PM         1       364      8.05      6.74      4.53         0
05:20:01 PM         0       367      7.96      6.96      4.74         1
05:21:01 PM         0       367      7.86      7.11      4.93         1
05:22:01 PM         1       366      7.84      7.31      5.14         0

From 은 실행 대기열 내의 작업 수를 나타내는 man sar것으로 생각되며 그 상태는 다음과 같습니다.runq-sz작업 실행의 R 상태에 해당합니다 ps.

          runq-sz
                 Run queue length (number of tasks waiting for run time).

그것은 실제로 무엇을 의미하는가 runq-sz?

답변1

이 매뉴얼 페이지에는 이 속성에 대한 더 자세한 설명이 있습니다.

q-sz 실행

CPU 실행을 기다리는 메모리의 커널 스레드 수입니다. 일반적으로 이 값은 2보다 작아야 합니다. 지속적으로 높은 값은 시스템이 CPU에 바인딩되어 있을 수 있음을 의미합니다.

결과 해석

많은 "메트릭"의 경우와 마찬가지로 성능 문제가 있는지 해석하려면 이를 함께 사용해야 합니다. 이 특정 표시기는 시스템에 CPU 시간이 부족한지 여부를 나타냅니다.

그리고 load1, 5, 15는 프로세스가 실행 대기열에 있지만 강제로 런타임을 기다려야 함을 의미합니다. load1,5,15 변수는 시스템의 전반적인 추세와 대기 중인 프로세스가 많은지(부하 증가) 대 하향 추세를 알려줍니다. 그러나 프로세스가 로드1,5,15를 기다릴 수 있는 다양한 상황이 있습니다. 일반적으로 로드가 1,5,15배 더 높은 경우 I/O가 차단됩니다.

runq-sz를 사용하면 CPU 시간을 기다릴 수 있습니다.

인용하다

답변2

이 기사는 Google에 처음으로 게재되며 위의 마지막 답변이 승인된 것으로 표시됩니다.

답변은 참고자료를 제공하고 텍스트를 인용합니다.솔라리스맨페이지. 그러나 OP의 질문은RHEL 7. 실행 가능한 프로세스 보고는 Solaris와 Linux에서 다르게 처리됩니다.

  • Solaris는 실행 대기 중인 프로세스 수를 나타내는 지표로 로드/큐 평균을 사용하는 것을 선호합니다.

  • Linux는 실행 중인 프로세스 수와 실행 대기 중인 프로세스 수를 나타내는 지표로 로드 평균/큐를 사용하는 경향이 있습니다.

  • runq-szin의 Linux 표현은 sar -q현재 실행 중인 프로세스 수 + 대기 중인 프로세스 수를 의미할 가능성이 높습니다.

8스레드 인스턴스에 대한 OP의 원래 예를 참조하면 runq-sz8 미만은 이와 관련하여 최적의 성능을 나타냅니다.

나는 낮음 runq-sz과 높음이 loadavg일종의 막힘이나 수면 과정을 나타낼 수 있다는 데 동의합니다. OP의 예제 sar 출력 blocked열 에서 이를 부분적으로 볼 수 있습니다 .

답변3

가동 시간은 마지막 1분, 5분, 15분 동안의 로드 평균을 제공합니다. 그러나 가동 시간(예 sar: ) 중에는 시스템 로드에 대한 즉각적인 스냅샷을 얻을 수 없습니다. ( sar및 )는 모두 uptime동일한 로드 정보를 보고합니다.

ldavg-1  -> last 1 minute
ldavg-5  -> last 5 minutes
ldavg-15 -> last 15 minutes.

runq-sz CPU가 필요하거나 CPU를 기다리는 프로세스 수입니다.

이는 로드 평균과 상관관계가 있지만(부하가 더 높으면 CPU 고갈이 가능함) 직접적인 상관관계는 없습니다.

대기 중 -> 프로세스는 무제한의 일부 리소스를 기다립니다(프로세스가 오랜 시간 동안 대기하므로 로드 평균이 매우 높을 수 있음).

대기열에 있는 프로세스는 대기열에 CPU를 가져오는 프로세스입니다. 즉, CPU를 100% 기다리고 CPU가 사용 가능해지면 일부를 가져옵니다. 즉, CPU가 부족합니다.

따라서 sar -qCPU 부족(큐 크기가 매우 큼)이 있는지 이해할 수 있습니다. 가동 시간과 ldavg-#을 통해 시스템 부하에 대한 아이디어를 얻을 수 있으며 대기열 크기가 높다는 힌트를 얻을 수도 있습니다.

도움이 되었기를 바랍니다.

답변4

Linux에 대해 다음과 같이 말씀하셨습니다.

  • 로드 평균 = 실행 중인 프로세스 + 대기 중인 프로세스
  • runq-sz = 실행 중인 프로세스 + 대기 중인 프로세스

이것은 의미한다부하 평균그리고q-sz 실행실행 중인 프로세스 포함

그렇다면 차이점은 무엇입니까?대기 프로세스그리고대기열 프로세스제발?

예를 들어 설명해 주실 수 있나요(첫 번째 줄 runq-sz=10)?

20코어(40스레드) 서버용입니다.

ldavg-1 > runq-sz는 많은 프로세스가 리소스(예: I/O)를 기다리고 있음을 의미합니까?

06:10:01      runq-sz  plist-sz   ldavg-1   ldavg-5  ldavg-15
06:20:02           10      1696     28.95     30.21     28.25
06:30:02            8      1672     25.93     27.57     27.78
06:40:02            8      1707     31.82     35.37     32.88
06:50:01            9      1707     28.90     31.06     31.89

내 서버의 CPU 사용량이 매우 낮습니다. 80% 유휴 상태입니다.

CPU 사용량

인사,

관련 정보