압력 정체 지표

Pressure stall metrics

CPU 사용률이 비슷해도 작업이 자원을 기다린 시간을 따로 봅니다.

···
html
<div class="stage" data-phase="0"><div class="title">SAME UTILIZATION · DIFFERENT WAIT</div><div class="comparison"><div class="panel node">NODE A<div class="bar"><i></i></div><span>CPU 65% · low wait</span></div><div class="panel node b">NODE B<div class="bar"><i></i></div><span>CPU 65% · low wait</span></div></div><div class="sub">pressure reveals contention</div></div>
css
.stage{width:min(94vw,760px);height:min(88vh,330px);padding:clamp(9px,2.6vmin,20px);border:1px solid var(--line);border-radius:14px;background:var(--surface);font:600 clamp(12px,2.5vmin,16px)/1.3 "Pretendard Variable",Pretendard,-apple-system,BlinkMacSystemFont,"Apple SD Gothic Neo",sans-serif;display:flex;flex-direction:column;gap:clamp(6px,1.7vmin,12px);overflow:hidden;position:relative}.stage *{min-width:0}.stage .title{color:var(--accent);font-weight:800}.stage .sub{color:var(--muted)}.stage .row{display:flex;align-items:center;gap:clamp(5px,1.6vmin,12px)}.stage .panel{border:1px solid var(--line);border-radius:8px;background:var(--bg);padding:clamp(6px,1.6vmin,12px)}.stage .mono{font-family:ui-monospace,SFMono-Regular,monospace;font-size:clamp(12px,2.5vmin,15px)}.stage .grow{flex:1}.stage .on{color:var(--accent)}.comparison{flex:1;display:flex;gap:clamp(6px,2vmin,16px)}.node{width:50%;display:flex;flex-direction:column;justify-content:center;gap:clamp(7px,2vmin,14px)}.node span{color:var(--muted)}.bar{height:clamp(20px,5vmin,32px);background:var(--line);border-radius:5px;overflow:hidden}.bar i{display:block;width:12%;height:100%;background:var(--accent);transition:width .35s}.stage[data-phase="1"] .b .bar i,.stage[data-phase="2"] .b .bar i{width:72%;background:var(--accent-3)}.stage[data-phase="1"] .b span,.stage[data-phase="2"] .b span{font-size:0}.stage[data-phase="1"] .b span:after,.stage[data-phase="2"] .b span:after{content:'CPU 65% · high wait';font-size:clamp(12px,2.5vmin,16px);color:var(--accent-3)}
js
const stage=document.querySelector('.stage');let phase=0;function advance(){phase=(phase+1)%3;stage.dataset.phase=String(phase)}const timer=setInterval(advance,1200);stage.addEventListener('pointerdown',()=>{clearInterval(timer);advance()})

PSI는 CPU, 메모리, I/O 부족으로 작업이 진행하지 못한 시간의 비율을 나타냅니다. 사용률만 보면 두 노드가 비슷해 보여도 한쪽은 대기 시간이 크게 늘 수 있습니다.

데모는 같은 CPU 사용률 아래에서 대기 압력 막대만 높아지는 경우를 비교합니다. 쿠버네티스 1.36에서 kubelet의 PSI 지표 내보내기가 안정 기능이 되었으며, 경보는 사용자의 지연과 함께 해석해야 합니다.

언제 쓰나

사용률은 정상인데 응답이 느린 노드의 자원 경합을 찾을 때 사용합니다.

페이지로 열기 ↗