Linux 스트레스 지연 메시지가 실제로 작동하는 방식

Linux 스트레스 지연 메시지가 실제로 작동하는 방식

나는 Linux 4.20에 도입된 PSI에 대한 배경 지식을 읽었습니다. PSI는 CPU, 메모리, IO 등 자원에 대한 경쟁을 나타냅니다. 이는 성능 문제의 근본 원인을 찾는 데 매우 유용한 지표가 될 수 있습니다. 따라서 내 가설은 특정 리소스(예: CPU)의 PSI가 높을수록 /proc/pressure/cpu해당 노드에 대한 경합이 더 많다는 것입니다. 이 동작을 연구하기 위해 Kubernetes 클러스터에서 간단한 실험을 수행했습니다. 다음 포드 구성을 사용했습니다. 포드가 배포된 노드에는 88개의 코어가 있습니다.

apiVersion: v1
kind: Pod
metadata:
  name: stress-ng
  labels:
    app: stress-ng
spec:
  containers:
  - name: stress-ng
    image: alexeiled/stress-ng:latest
    imagePullPolicy: Always
    command: [ '/stress-ng' ]
    args:
    - --matrix
    - '5000'
    - -t
    - '5m'
    resources:
      requests:
        memory: "5000Mi"
        cpu: "5000m"
      limits:
        memory: "5000Mi"
        cpu: "5000m"
  nodeName: stressed-node1

이 포드는 코어 5개만 사용했지만 아래와 같이 PSI가 30초 이내에 거의 90%까지 상승했습니다. 여기에 이미지 설명을 입력하세요.

노드의 평균 CPU 사용률은 매우 낮습니다(<5%).

제가 이해한 바는 시스템 전반에 걸쳐 경합이 없다는 것입니다. 이 경우 높은 PSI는 단순히 이 명백한 작업 부하 구성으로 인한 것이며 계산에서는 전역 시스템 상태를 고려한다고 가정합니다.

그래서 내 질문은 다음과 같습니다

  • PSI는 실제로 어떻게 계산되나요?
  • 이 경우 PSI가 오해의 소지가 있는 것입니까, 아니면 제가 뭔가를 놓치고 있는 것입니까?

어떤 조언이라도 감사하겠습니다.

관련 정보