Community코딩 & 개발github.com

pc-perf-audit - 성능 감사

측정 기반 방식으로 모든 Windows 게임 PC의 성능(스터터, 1% Low, 히치, 지연, 프리즈, 오디오 끊김)을 진단하고 최적화합니다. 하드웨어/소프트웨어/BIOS 인벤토리, PresentMon 프레임타임 캡처, CPU vs GPU 진단, Intel/AMD/NVIDIA/AMD GPU 레버 카탈로그, 가역적 A/B 테스트 및 승인된 상태 고정을 제공합니다. 사용자가 게임 PC 최적화, 진단 또는 '튜닝'을 요청하거나, 다른 기기/게임에서 분석을 복제하거나, 미세 스터터, 불안정한 FPS, 프리즈 또는 지연을 조사할 때 사용합니다.

pc-perf-audit - 성능 감사란 무엇인가요?

이 기술은 측정 기반 성능 감사 방법으로, 어떤 Windows 게임 PC에서도 특정 게임에 구애받지 않고 작동합니다. CPU(Intel/AMD)와 GPU(NVIDIA/AMD/Intel)에 대해 에이전노스틱한 접근 방식을 사용하며, 게임별 세부 사항은 'references/jogos.md' 파일에 기록됩니다. 이 스킬은 0단계(프로필 및 목표 수집)부터 8단계(라이브 문서화)까지 체계적인 순서로 진행되며, 각 단계마다 명확한 종료 기준이 있습니다. 핵심 규칙으로는 가역성, 단일 변수 테스트, 사용자 주관적 평가와 객관적 측정값의 분리, 그리고 저렴한 비용의 최적화부터 고비용 조정까지의 우선 순위가 있습니다. Claude Code, Cursor, Codex 등 다양한 AI 에이전트 플랫폼에서 사용 가능하며, PresentMon 기반 프레임타임 캡처, PowerShell 인벤토리 스크립트, Python 분석 도구 등 포함된 스크립트를 통해 실무에 바로 적용할 수 있습니다. 이 기술은 성능 문제를 진단하고, A/B 테스트를 통해 각 변경의 효과를 측정하며, 최종적으로 승인된 구성을 고정하여 회귀를 방지하는 데 목적이 있습니다.

지원 대상✓Claude Code~Codex CLI~Cursor
npx skills add https://github.com/clayprod/pc-perf-audit/tree/HEAD

Installed? Explore more 코딩 & 개발 skills: steipete/bluebubbles, steipete/eightctl, steipete/blucli · View all 6 →

즐겨 사용하는 AI에게 물어보기

이 에이전트 스킬이 미리 로드된 새 채팅을 엽니다.

문서

pc-perf-audit - 측정 기반 성능 감사, 모든 PC 대상

실제 머신(Ryzen 7 5700X + RTX 2060, Valorant 경쟁전)에서 몇 달간의 작업을 증류했습니다. 어떤 게임, 어떤 CPU(Intel/AMD), 어떤 GPU(NVIDIA/AMD/Intel)에도 적용 가능합니다: 방법은 에이전노스틱하며, 게임별로 달라지는 부분(exe, 설정, 로그, 안티치트, 불만 사항 시나리오)은 references/jogos.md에 있습니다. 여기서 중요한 것은 방법과 이미 측정된 것들의 카탈로그입니다; 해당 머신의 수치는 예시일 뿐, 다른 머신에 대한 레시피가 아닙니다. 예시에서 Valorant를 언급하면 "게임 예시"로 읽으십시오.

어떤 트윅보다 중요한 규칙

  1. 당신이 소유자에게 무엇이 최선인지 결정하지 않습니다. 당신은 테스트를 구성합니다. 가설, 가역적 변경, 그가 플레이하고, 당신이 결과를 수집합니다.
  2. 두 가지 유형의 판정을 절대 혼합하지 마십시오:
    • 측정 가능(프레임타임, 1% Low, 히치, 지연, 안정성): 숫자가 결정합니다.
    • 판단 가능(선명도, 대비, 소리, "느낌", 가시성): 오직 소유자만 결정하며, 한 번에 하나의 변경만. 두 가지를 분리하여 보고하십시오.
  3. 한 번에 하나의 변수만. 단 한 번의 실행으로는 아무것도 결정되지 않습니다. 최소 두 번의 실행, 워밍업은 버리고, 분 단위 편차를 보며 평균만 보지 마십시오.
  4. 기준선을 넘지 못하면 되돌립니다. 시각적 이득이 프레임타임 저하를 정당화하지 않습니다(소유자가 반대를 명시하지 않는 한, 그래도 비용을 측정하고 보고하십시오).
  5. 비용이 들지 않는 경로를 항상 우선합니다. CPU/GPU/지연/위험을 소모하는 무언가를 제안하기 전에, 동일한 효과를 비디오 출력에 더 가까운 계층이나 비용이 없는 곳에서 찾으십시오(예: 프레임별 필터 대신 패널의 디지털 선명도; 모니터 대신 GPU에서 스케일링; 드라이버 제한기 대신 게임 내 FPS 제한기; 우선순위 조정 대신 앱 종료).
  6. 절대 "머신이 낼 수 있는 성능을 내고 있다"고 결론내지 마십시오. "비용이 어디에 있는가"와 "더 빠르게 실행할 수 있는가"는 다른 질문입니다: 직렬 코드는 더 높은 실효 클럭, 더 낮은 메모리 지연, 더 적은 캐시 경합으로 더 빨리 실행됩니다.
  7. 주장보다 증거가 먼저입니다. 그럴듯한 이론이 여러 라운드를 망가뜨렸습니다. 가설을 결과로 제시하지 말고, 측정 없이 이득을 선언하지 마십시오.
  8. 측정 도구 역시 부하입니다. 측정기, 수집기, 감시기, 오버레이, 그리고 에이전트 자체(Claude, 터미널, PowerShell)도 CPU를 소모합니다. 캡처 중에는 머신을 사용하지 마십시오.
  9. 며칠 동안 측정값이 사용자의 인식과 일치하지 않으면, 그의 인식보다 측정값을 의심하십시오. 이는 4번 반복되었습니다(references/armadilhas.md 참조).
  10. 위험하거나 되돌릴 수 없는 것만 확인하십시오(펌웨어, BIOS, 보안, 데이터 삭제). 나머지는: 선택하고, 이유를 한 줄로 말하고, 진행하십시오.
  11. 가역성: 변경 전에 원래 값과 되돌리기 명령을 기록하십시오. 흔적을 남기는 드라이런은 금지; 시뮬레이션은 디스크를 건드리지 않습니다.

단계 (순서대로 따르십시오; 각 단계에는 종료 기준이 있습니다)

단계 0 - 프로필 및 목표 (짧은 인터뷰)

질문(한 번에 AskUserQuestion으로, 긴 대화가 아닌):

  • 주요 게임, 모드(경쟁/캐주얼), 목표(목표 FPS, 모니터 주사율). 각 게임에 대해 references/jogos.md의 시트를 작성하십시오(exe, API, 엔진, 설정, 로그, 안티치트, 테스트 모드).
  • 증상: 미세 스터터, 교전 시 드랍, 완전 프리즈, BSOD, 오디오 끊김, 입력 지연, 깜빡임/계단 현상, 블랙 스크린. 어느 분/맵/순간? (캡처 기준점)
  • 소유자의 불가침 영역(건드리거나 논쟁하지 않음): 감도, DPI, 해상도, 늘린 화면 모드, 조준점, 선명도, 그가 열어둬야 하는 앱(예: Discord).
  • 그가 이미 시도한 것과 좋았던/나빴던 것. "완벽했던" 날이 있었습니까? 언제?
  • 게임의 안티치트(Vanguard, EAC, BattlEye, FACEIT): 선호도, 우선순위, 오버레이 및 타사 드라이버 주입을 제한합니다. references/catalogo-alavancas.md 섹션 11을 참조하십시오. 종료: 일지에 프로필 작성(references/template-diario.md 템플릿).

단계 1 - 인벤토리 (읽기 전용)

scripts/inventario.ps1 -Saida <pasta> 실행(PowerShell 5.1, 관리자 권한 권장; 관리자 권한 없으면 일부 필드가 비어 있으며 스크립트가 경고합니다). CPU, GPU, RAM(설정된 속도 x 공칭, 전압), BIOS/보드, OS, 전원 계획 및 EPP, MPO, HAGS, VBS/HVCI, 게임 모드, GameDVR, Secure Boot, Defender, 업데이트 서비스, NIC, 디스크, 모니터, 해상도/재생률, 시작 프로그램, 서비스 및 타사 프로세스, 알려진 오버레이, 이벤트 6008/1001/WHEA 개수를 수집합니다. inventario.txt를 읽고 플랫폼을 분류하십시오: CPU: AMD Zen2/3/4/5 (X3D?) | Intel Core 하이브리드(P+E) | Intel Core 비하이브리드, GPU: NVIDIA | AMD | Intel Arc | iGPU. 이에 따라 카탈로그 섹션이 선택됩니다. 종료: 일지에 "항목 -> 값 -> 정상? -> 가설" 표를 작성합니다. 아직 아무것도 변경하지 마십시오.

단계 2 - 환경 위생 (게임 중 실행되는 것)

목표: 알려지고 깨끗한 게임 환경. 인벤토리 + Get-Process를 사용하십시오.

  • 백그라운드에서 CPU를 소모하는 항목을 나열하십시오(브라우저, 런처, 클라우드 동기화, 업데이터, 오버레이, RGB, 캡처 도구, 에이전트 자체). 구분: 종료, 생성 방지, 유지(소유자 결정).
  • 매 N분마다 종료하는 것보다 생성을 방지(StartupApproved, 정책, Store 앱의 백그라운드 앱 권한)하는 것을 선호하십시오. 목록 항목이 실제로 프로세스 이름과 일치하는지 확인하십시오('WhatsApp'이 WhatsApp.Root와 일치하지 않아 17일간 생존).
  • 스스로 다시 켜지는 업데이터/서비스(Windows Update, 벤더 업데이터): 격리 방법을 결정하고 그것이 지속되는지 확인하십시오(함정 참조: 설치 프로그램이 작업/서비스를 재생성).
  • Present에 DLL을 주입하는 오버레이(RTSS/Afterburner OSD, Discord 오버레이, Steam, GeForce, Medal, OBS 후크): 작은 비용이지만 렌더 스레드에 영향을 줍니다. 나열하고, 소유자 모르게 종료하지 마십시오; 효과 측정은 선택 사항입니다(이 머신에서는 이득이 입증되지 않음). 종료: '게임 중 앱' 목록 + 격리 메커니즘 + 확인 방법.

단계 3 - 측정된 기준선

전체 프로토콜은 references/metodo.md에 있습니다. 요약:

  1. 게임 종료, 머신 안정화(부팅 후 5분 이상), 새로 열린 것 없음.
  2. scripts/capturar.ps1 -Processo <exe> -Segundos 420 -Rotulo <texto> 실행하여 불만 사항의 모드/맵에서 실제 게임 중 캡처(Deathmatch는 PresentMon이 위험할 경우 폐기 가능). 캡처는 분석하지 않습니다(분석은 게임 중 CPU/RAM 부하 시 수행).
  3. 게임 종료 후: python scripts/analisar-frametime.py <csv>.
  4. 최소 두 번의 실행, 같은 맵. 첫 번째는 부팅/패치/드라이버 후 차가운 상태입니다.
  5. 소유자에게 판정(점수/문구)을 묻고 숫자 옆에 기록합니다. 8회 이상의 캡처와 판정이 있으면 어떤 지표가 상관관계가 있는지(순위) 검증하고 이를 사용합니다. 종료: 시나리오별 기준선(DM과 5v5는 다릅니다!)과 히치/분, 최악 프레임, 1%/0.1% Low, p99, 분당 편차, 그리고 그의 판정.

단계 4 - 진단

references/diagnostico.md의 트리. 순서대로 질문:

  1. CPU-bound 또는 GPU-bound? (MsCPUBusy vs MsGPUBusy, 중앙값 및 나쁜 프레임에서)
  2. 문제는 평균 또는 꼬리? (히치/분, 최악 프레임, 20ms 초과 심각)
  3. 히치에 트리거가 있습니까? (라운드 전환, 로딩, 리스폰, 맵, 능력, 게임 종료, 최근 패치/드라이버 = 셰이더 재컴파일) - 게임 로그와 교차 확인.
  4. 외부 요소가 경합합니까? (커널/ETW 추적; ISR/DPC; 디스크 I/O; 여유 메모리; 온도 및 클럭) - 올바른 도구로만 결론내리십시오.
  5. 프리즈/BSOD/오디오 끊김인 경우, 다른 트리입니다(하드웨어/안정성/무선). 종료: (확률 x 테스트 비용 x 가역성) 순으로 정렬된 가설.

단계 5 - 레버 (가장 저렴한 것부터 가장 비싼 것까지)

references/catalogo-alavancas.md를 참조하고, 감지된 플랫폼의 섹션만, 그리고 무언가를 제안하기 전에 반박된 목록을 확인하십시오. 공격 순서:

  1. 비용이 없는 계층: 스캔아웃/디스플레이(GPU 스케일링, 디지털 선명도, 모니터 응답 시간), Windows(MPO, 전원 계획/EPP, 업데이트 격리, 백그라운드 앱).
  2. 게임 스레드를 실행하는 코어의 속도: EPP/부스트, 전력 제한, SMT/E-코어, 메모리 지연 및 전압, FCLK/링, Curve Optimizer/언더볼트, 냉각.
  3. 안정성: 메모리 전압, XMP/DOCP, BIOS, C-상태, 전원 공급 장치, 온도.
  4. 게임 설정: 캐릭터당 CPU를 줄이는 항목만(그림자, 시체, 카운터); 불가침 영역과 경쟁 정보(소리, 적 그림자)를 존중.
  5. 네트워크/오디오/주변기기: 측정 먼저; 네트워크 트윅은 이미 5배 악화된 사례가 있습니다. 각 레버에 대해: 원래 값, 적용 명령, 되돌리기 명령, 측정 가능한 가설, 그리고 소유자가 판단해야 할 것.

단계 6 - A/B 테스트 및 판정

각 레버(한 번에 하나): 적용 -> 동일 시나리오에서 두 번 캡처 -> 같은 맵/모드의 기준선과 비교 -> 그가 느낀 것을 묻기 -> 결정: 채택 | 되돌리기 | 판정 불가 (추가 데이터 필요). 반박된 것도 숫자와 함께 기록하십시오: 반박된 목록은 프로젝트의 가장 가치 있는 자산입니다. 비교 규칙: 날짜가 아닌 머신 상태로 기준선을 필터링하십시오. 두 실행 사이에 무언가를 건드렸다면, 시리즈는 일화가 됩니다 - 다시 하십시오.

단계 7 - 승인된 상태 고정

소유자가 "좋아, 회귀하지 않았으면 좋겠다"고 말할 때: BIOS, 드라이버, 서비스, 작업, 레지스트리, 전원, 게임 설정, 시작 프로그램을 프로브 목록으로 스냅샷하고, 주기적으로 실행하고 패치/드라이버/BIOS 후 실행하십시오. 규칙:

  • 고정하기 전에, 고정하지 않고 비교를 실행하고 각 편차를 해결하십시오(의도적 -> 고정; 회귀 -> 수정). 편차를 안고 고정하면 회귀를 금으로 기록합니다.
  • 게임이 종료된 상태와 관리자 권한 세션으로 고정하십시오.
  • 잘못된 경보를 생성하는 프로브는 프로브를 무시하는 법을 가르칩니다: 값의 이력을 조사하십시오.
  • 잘못된 키 이름/값을 가진 프로브는 프로브가 없는 것보다 나쁩니다: 실제 파일과 대조하십시오.
  • BIOS/CMOS 초기화가 자동으로 되돌리는 것(SMT, C-상태, DOCP, DRAM 전압, Secure Boot, Resizable BAR, PBO)과 복구 경로를 문서화하십시오.

단계 8 - 라이브 문서화

일지(references/template-diario.md) 유지: 현재 상태, 기준선, 반박된 목록, 지불된 함정, 우선순위별 미해결 사항. 잘못된 항목은 명시적 정정을 상단에 추가하여 수정하고, 삭제하지 마십시오 - 오류 기록은 재발을 방지합니다.

사용자에게 결과를 전달하는 방법

  • pt-BR(또는 소유자의 언어)로, 직접적으로. 결정당 한 줄의 이유.
  • 캡처별 표: 시나리오, 히치/분, 최악 프레임, 20ms 초과 심각, 1%/0.1% Low, 편차, 그의 판정. "숫자가 말하는 것"과 "오직 당신만이 말할 수 있는 것"을 분리하십시오.
  • 절대 초당 고정 FPS를 "그가 보는 것"으로 보고하지 마십시오: 게임 카운터는 짧은 창을 사용합니다.
  • 각 주장에 표시: 측정됨, 가설, 문헌(출처), 소유자 결정.

이 스킬의 파일

  • references/metodo.md - 캡처 프로토콜, 지표, 컷, 지표 검증.
  • references/jogos.md - 게임별 시트, 로그 마커, 장르/엔진별 프로필, 보편적 vs 특정.
  • references/diagnostico.md - 증상 -> 도구 -> 가능한 원인 트리.
  • references/catalogo-alavancas.md - 시도/측정된 모든 것, 계층 및 제조사별.
  • references/armadilhas.md - 이미 반복을 소모한 도구 및 추론 오류.
  • references/template-diario.md - 감사 대상 머신의 일지/AGENTS.md 템플릿.
  • scripts/inventario.ps1 - 읽기 전용 인벤토리(PS 5.1, ASCII).
  • scripts/capturar.ps1 - 분석 없는 PresentMon 캡처 + 프로세스 스냅샷.
  • scripts/analisar-frametime.py - 강력한 오프라인 분석(Python 3 stdlib).

관련 스킬