한눈에 보기
- 문제: 구형 ThinkPad 노트북이 갑자기 느려졌습니다. CPU 사용률은 100%인데 클럭이 797MHz에서 올라가지 않았습니다.
- 원인: 펌웨어가 CPU를 최대 성능의 30%로 묶고 있었습니다. 성능 제한 값이 29%였고, 시스템 로그에 Kernel-Processor-Power 이벤트 37이 남아 있었습니다. 온도 제한은 아니었고, 충전기를 제대로 인식하지 못한 것이 원인이었습니다.
- 해결: 충전기를 뽑았다가 다시 꽂자 클럭 2492MHz, 성능 제한 95%로 돌아왔습니다. 재발을 바로 알아채도록 성능 제한 값을 트레이에 띄우는 12KB짜리 도구를 만들었습니다.
확인한 환경: 구형 ThinkPad 노트북, Windows 10 Home 22H2, 4코어 CPU, RAM 8GB · 처음 쓴 날 2026-10-28 · 마지막 확인 2026-10-29
몇 년째 쓰고 있는 구형 ThinkPad 노트북이 어느 날 눈에 띄게 느려졌습니다. 포맷까지 각오하고 Claude Code에게 원인을 찾아 달라고 맡겼는데, 결론은 충전기를 뽑았다 다시 꽂는 것이었습니다. 이 글에서는 CPU가 펌웨어에 묶여 있는지 확인하는 방법과, 같은 일이 다시 생겼을 때 바로 알아채는 방법을 정리합니다.

1. 증상: CPU 사용률 100%인데 클럭은 797MHz
느린 PC를 보면 보통 과열, 무거운 백그라운드 프로그램, 디스크부터 의심합니다. 이번에는 CPU 클럭과 사용률을 함께 찍어 보자 바로 이상한 숫자가 나왔습니다.
load 100% | freq 797MHz | max-freq 30% | perf-limit 29%
load 100% | freq 797MHz | max-freq 30% | perf-limit 29%
load 98% | freq 797MHz | max-freq 30% | perf-limit 29%
CPU는 쉬지 않고 일하는데 클럭은 797MHz에서 꼼짝하지 않았습니다. 액셀을 끝까지 밟았는데 시속 30km에서 멈춰 있는 자동차와 같습니다. 성능 제한(perf-limit) 값이 29%라는 것은 무언가가 CPU를 최대 성능의 30% 안팎으로 묶어 두었다는 뜻입니다.
2. 원인 찾기: 온도가 아니라 펌웨어 제한
먼저 온도를 봤습니다. CPU는 79~81°C로 뜨거웠지만, 온도 때문에 거는 제한 값(PercentPassiveLimit)은 100%였습니다. 온도 제한은 걸려 있지 않았다는 뜻입니다.
결정적인 증거는 시스템 이벤트 로그에 있었습니다. Kernel-Processor-Power 이벤트 37, “프로세서 속도가 시스템 펌웨어에 의해 제한되고 있습니다”라는 기록입니다. Microsoft는 이 이벤트를 하드웨어 플랫폼이 프로세서가 지원하는 주파수 범위 일부를 운영체제가 쓰지 못하게 막았을 때 남는 기록으로 설명합니다(Microsoft 지원 문서). Windows 전원 설정이 아니라 노트북 펌웨어가 건 제한이라는 뜻입니다.
직접 확인하려면 PowerShell에서 아래 명령을 실행하세요. 한국어 Windows에서는 Get-Counter의 카운터 이름이 한글로 바뀌어 있어서 영어 예제가 그대로 돌아가지 않습니다. WMI 클래스는 이름이 바뀌지 않아서 언어와 상관없이 같은 값을 읽을 수 있습니다.
# 성능 제한(%)·클럭·사용률: 정상이면 PercentPerformanceLimit이 95~100 근처
Get-CimInstance Win32_PerfFormattedData_Counters_ProcessorInformation -Filter "Name='_Total'" |
Select-Object PercentPerformanceLimit, ProcessorFrequency, PercentofMaximumFrequency, PercentProcessorTime
# 온도 제한(%): 100이면 온도 때문에 걸린 제한은 없음
Get-CimInstance Win32_PerfFormattedData_Counters_ThermalZoneInformation |
Select-Object Name, PercentPassiveLimit
# 펌웨어 제한 기록(이벤트 37)
Get-WinEvent -FilterHashtable @{LogName='System'; ProviderName='Microsoft-Windows-Kernel-Processor-Power'; Id=37} -MaxEvents 5
3. 범인은 충전기: 뽑았다 다시 꽂자 풀렸습니다
노트북 펌웨어는 전원 어댑터를 제대로 인식하지 못하면 공급 전력이 모자라다고 보고 CPU 속도를 낮추는 경우가 있습니다. 그래서 가장 먼저 충전기를 뽑았다가 다시 꽂아 봤습니다. 다시 측정하자 클럭이 797MHz에서 2492MHz로, 성능 제한이 29%에서 95%로 바로 돌아왔습니다. 포맷을 각오했던 일이 플러그 한 번으로 끝났습니다.
ThinkPad 사용자 커뮤니티에는 부팅할 때 “The connected AC adapter has a lower wattage than the recommended AC adapter” 경고가 뜨면서 느려졌다는 사례가 많습니다. 이 경고를 본 적이 있다면 같은 원인일 가능성이 큽니다.
다시 꽂아서 풀렸다는 것은 같은 일이 또 생길 수 있다는 뜻이기도 합니다. 구형 노트북은 어댑터 단자와 케이블이 닳아 접촉이 불안정해질 수 있습니다. 자주 반복되면 케이블과 단자 상태를 확인하고, 정품이면서 노트북 권장 용량 이상인 어댑터로 바꿔 보세요.
4. 재발 대비: 성능 제한 값을 트레이에 띄우기
CPU 사용률이나 클럭은 쉴 때도 자연스럽게 내려가서, 그 숫자만으로는 제한에 걸렸는지 구분할 수 없습니다. 반면 성능 제한 값은 정상일 때 95% 안팎을 유지하다가, 펌웨어가 CPU를 묶으면 30% 근처로 뚝 떨어집니다. 그래서 이 값 하나만 보는 작은 트레이 프로그램을 만들었습니다.
프로그램은 5초마다 값을 읽어 트레이 아이콘에 숫자로 표시합니다. 50% 미만인 상태가 10초 넘게 이어지면 아이콘이 빨갛게 바뀌고 “충전기를 뽑았다가 다시 꽂아 보세요”라는 알림이 뜹니다. 핵심 로직은 다음과 같습니다.
var cpuQuery = new ManagementObjectSearcher(
"SELECT PercentPerformanceLimit, ProcessorFrequency FROM " +
"Win32_PerfFormattedData_Counters_ProcessorInformation WHERE Name='_Total'");
// 5초마다 실행
foreach (ManagementObject o in cpuQuery.Get())
limit = Convert.ToInt32(o["PercentPerformanceLimit"]);
bool limited = limit < 50; // 정상은 95 안팎
UpdateIcon(limit.ToString(), limited); // 빨간 바탕 / 검은 바탕
if (limited && ++lowSamples >= 2 && !alerted)
tray.ShowBalloonTip(15000, "CPU 성능 제한 감지",
"충전기를 뽑았다가 다시 꽂아 보세요.", ToolTipIcon.Warning);
빌드에 Visual Studio는 필요 없습니다. Windows에 기본으로 들어 있는 .NET Framework C# 컴파일러로 충분합니다. 결과물은 12KB짜리 exe이고, 실행하면 메모리를 32MB 정도 씁니다.
& "$env:WINDIR\Microsoft.NET\Framework64\v4.0.30319\csc.exe" /target:winexe /codepage:65001 `
/r:System.Management.dll /r:System.Windows.Forms.dll /r:System.Drawing.dll CpuLimitTray.cs
시작 폴더(shell:startup)에 바로가기를 넣어 두면 로그인할 때마다 자동으로 켜집니다. Windows 10은 새 트레이 아이콘을 작업 표시줄 오른쪽 ^ 안에 숨겨 두므로, 한 번 작업 표시줄로 끌어다 놓으면 항상 보입니다.
정리
노트북이 갑자기 느려졌다면 포맷보다 먼저 클럭과 성능 제한 값을 확인해 보세요. 사용률은 100%인데 클럭이 바닥에 붙어 있고 성능 제한 값이 30% 근처라면, 소프트웨어보다 펌웨어 제한을 의심하는 것이 맞습니다. 온도 제한이 아니라면 충전기를 다시 꽂아 보는 것이 가장 빠른 확인 방법입니다.
자주 묻는 질문
CPU가 펌웨어에 의해 제한됐는지 어떻게 확인하나요?
PowerShell에서 Win32_PerfFormattedData_Counters_ProcessorInformation의 PercentPerformanceLimit 값을 확인합니다. 정상이면 95~100% 근처이고, 30% 근처로 떨어져 있다면 제한에 걸린 것입니다. 시스템 이벤트 로그의 Kernel-Processor-Power 이벤트 37도 같은 상황을 기록합니다.
CPU 사용률은 높은데 클럭이 800MHz 근처에서 안 올라가면 무엇부터 보나요?
먼저 온도 제한 값(PercentPassiveLimit)을 봅니다. 100%라면 온도 때문이 아니므로 전원 어댑터를 의심합니다. 충전기를 뽑았다가 다시 꽂아 보고, 성능 제한 값이 95% 안팎으로 돌아오는지 확인하세요.
충전기를 다시 꽂아도 계속 느리면 어떻게 하나요?
정품이면서 노트북 권장 용량 이상인 다른 어댑터로 바꿔서 성능 제한 값이 돌아오는지 봅니다. 돌아오면 원래 어댑터나 케이블 문제입니다. 그래도 30% 근처에 머문다면 온도 제한 값과 이벤트 37 기록을 다시 확인하고 제조사 지원을 받는 편이 좋습니다.
한국어 Windows에서 Get-Counter 예제가 왜 안 돌아가나요?
Get-Counter는 카운터 이름이 Windows 표시 언어에 따라 바뀌어서, 영어 이름으로 쓴 예제는 한국어 Windows에서 찾지 못합니다. Get-CimInstance로 WMI 클래스를 읽으면 언어와 상관없이 같은 이름으로 같은 값을 얻을 수 있습니다.
참고 자료
- Kernel-Processor-Power 이벤트 ID 37 안내(Microsoft Learn) — 이벤트 37이 “시스템 펌웨어가 프로세서 속도를 제한하고 있다”는 경고이고, 하드웨어 플랫폼이 프로세서가 지원하는 주파수 범위 일부를 운영체제가 쓰지 못하게 할 때 남는다는 설명을 확인했습니다.
- Get-Counter 명령 문서(Microsoft Learn) — 성능 카운터 이름이 Windows 표시 언어에 따라 현지화되어, 영어 이름으로 쓴 예제가 다른 언어의 Windows에서는 맞지 않는다는 공식 안내를 확인했습니다.
- Get-WinEvent 명령 문서(Microsoft Learn) — -FilterHashtable에 LogName·ProviderName·ID 키를 넣어 이벤트 로그를 거르고, -MaxEvents로 가져올 개수를 정하는 사용법을 확인했습니다.
함께 보면 좋은 글
- 파이어폭스 탭 관리 완벽 가이드 — 메모리가 빠듯한 구형 PC에서 브라우저 메모리를 줄이는 설정을 정리했습니다.
- GitHub 문서를 NotebookLM에서 활용하는 가장 간단한 방법 — AI 도구를 개발 업무에 쓰는 또 다른 사례입니다.

답글 남기기