나는 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가 오해의 소지가 있는 것입니까, 아니면 제가 뭔가를 놓치고 있는 것입니까?
어떤 조언이라도 감사하겠습니다.