pc-perf-audit - 측정 기반 성능 감사, 모든 PC 대상
실제 머신(Ryzen 7 5700X + RTX 2060, Valorant 경쟁전)에서 몇 달간의 작업을 증류했습니다. 어떤 게임, 어떤 CPU(Intel/AMD), 어떤 GPU(NVIDIA/AMD/Intel)에도 적용 가능합니다: 방법은 에이전노스틱하며, 게임별로 달라지는 부분(exe, 설정, 로그, 안티치트, 불만 사항 시나리오)은 references/jogos.md에 있습니다. 여기서 중요한 것은 방법과 이미 측정된 것들의 카탈로그입니다; 해당 머신의 수치는 예시일 뿐, 다른 머신에 대한 레시피가 아닙니다. 예시에서 Valorant를 언급하면 "게임 예시"로 읽으십시오.
어떤 트윅보다 중요한 규칙
- 당신이 소유자에게 무엇이 최선인지 결정하지 않습니다. 당신은 테스트를 구성합니다. 가설, 가역적 변경, 그가 플레이하고, 당신이 결과를 수집합니다.
- 두 가지 유형의 판정을 절대 혼합하지 마십시오:
- 측정 가능(프레임타임, 1% Low, 히치, 지연, 안정성): 숫자가 결정합니다.
- 판단 가능(선명도, 대비, 소리, "느낌", 가시성): 오직 소유자만 결정하며, 한 번에 하나의 변경만. 두 가지를 분리하여 보고하십시오.
- 한 번에 하나의 변수만. 단 한 번의 실행으로는 아무것도 결정되지 않습니다. 최소 두 번의 실행, 워밍업은 버리고, 분 단위 편차를 보며 평균만 보지 마십시오.
- 기준선을 넘지 못하면 되돌립니다. 시각적 이득이 프레임타임 저하를 정당화하지 않습니다(소유자가 반대를 명시하지 않는 한, 그래도 비용을 측정하고 보고하십시오).
- 비용이 들지 않는 경로를 항상 우선합니다. CPU/GPU/지연/위험을 소모하는 무언가를 제안하기 전에, 동일한 효과를 비디오 출력에 더 가까운 계층이나 비용이 없는 곳에서 찾으십시오(예: 프레임별 필터 대신 패널의 디지털 선명도; 모니터 대신 GPU에서 스케일링; 드라이버 제한기 대신 게임 내 FPS 제한기; 우선순위 조정 대신 앱 종료).
- 절대 "머신이 낼 수 있는 성능을 내고 있다"고 결론내지 마십시오. "비용이 어디에 있는가"와 "더 빠르게 실행할 수 있는가"는 다른 질문입니다: 직렬 코드는 더 높은 실효 클럭, 더 낮은 메모리 지연, 더 적은 캐시 경합으로 더 빨리 실행됩니다.
- 주장보다 증거가 먼저입니다. 그럴듯한 이론이 여러 라운드를 망가뜨렸습니다. 가설을 결과로 제시하지 말고, 측정 없이 이득을 선언하지 마십시오.
- 측정 도구 역시 부하입니다. 측정기, 수집기, 감시기, 오버레이, 그리고 에이전트 자체(Claude, 터미널, PowerShell)도 CPU를 소모합니다. 캡처 중에는 머신을 사용하지 마십시오.
- 며칠 동안 측정값이 사용자의 인식과 일치하지 않으면, 그의 인식보다 측정값을 의심하십시오. 이는 4번 반복되었습니다(
references/armadilhas.md참조). - 위험하거나 되돌릴 수 없는 것만 확인하십시오(펌웨어, BIOS, 보안, 데이터 삭제). 나머지는: 선택하고, 이유를 한 줄로 말하고, 진행하십시오.
- 가역성: 변경 전에 원래 값과 되돌리기 명령을 기록하십시오. 흔적을 남기는 드라이런은 금지; 시뮬레이션은 디스크를 건드리지 않습니다.
단계 (순서대로 따르십시오; 각 단계에는 종료 기준이 있습니다)
단계 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에 있습니다. 요약:
- 게임 종료, 머신 안정화(부팅 후 5분 이상), 새로 열린 것 없음.
scripts/capturar.ps1 -Processo <exe> -Segundos 420 -Rotulo <texto>실행하여 불만 사항의 모드/맵에서 실제 게임 중 캡처(Deathmatch는 PresentMon이 위험할 경우 폐기 가능). 캡처는 분석하지 않습니다(분석은 게임 중 CPU/RAM 부하 시 수행).- 게임 종료 후:
python scripts/analisar-frametime.py <csv>. - 최소 두 번의 실행, 같은 맵. 첫 번째는 부팅/패치/드라이버 후 차가운 상태입니다.
- 소유자에게 판정(점수/문구)을 묻고 숫자 옆에 기록합니다. 8회 이상의 캡처와 판정이 있으면 어떤 지표가 상관관계가 있는지(순위) 검증하고 이를 사용합니다. 종료: 시나리오별 기준선(DM과 5v5는 다릅니다!)과 히치/분, 최악 프레임, 1%/0.1% Low, p99, 분당 편차, 그리고 그의 판정.
단계 4 - 진단
references/diagnostico.md의 트리. 순서대로 질문:
- CPU-bound 또는 GPU-bound? (
MsCPUBusyvsMsGPUBusy, 중앙값 및 나쁜 프레임에서) - 문제는 평균 또는 꼬리? (히치/분, 최악 프레임, 20ms 초과 심각)
- 히치에 트리거가 있습니까? (라운드 전환, 로딩, 리스폰, 맵, 능력, 게임 종료, 최근 패치/드라이버 = 셰이더 재컴파일) - 게임 로그와 교차 확인.
- 외부 요소가 경합합니까? (커널/ETW 추적; ISR/DPC; 디스크 I/O; 여유 메모리; 온도 및 클럭) - 올바른 도구로만 결론내리십시오.
- 프리즈/BSOD/오디오 끊김인 경우, 다른 트리입니다(하드웨어/안정성/무선). 종료: (확률 x 테스트 비용 x 가역성) 순으로 정렬된 가설.
단계 5 - 레버 (가장 저렴한 것부터 가장 비싼 것까지)
references/catalogo-alavancas.md를 참조하고, 감지된 플랫폼의 섹션만, 그리고 무언가를 제안하기 전에 반박된 목록을 확인하십시오. 공격 순서:
- 비용이 없는 계층: 스캔아웃/디스플레이(GPU 스케일링, 디지털 선명도, 모니터 응답 시간), Windows(MPO, 전원 계획/EPP, 업데이트 격리, 백그라운드 앱).
- 게임 스레드를 실행하는 코어의 속도: EPP/부스트, 전력 제한, SMT/E-코어, 메모리 지연 및 전압, FCLK/링, Curve Optimizer/언더볼트, 냉각.
- 안정성: 메모리 전압, XMP/DOCP, BIOS, C-상태, 전원 공급 장치, 온도.
- 게임 설정: 캐릭터당 CPU를 줄이는 항목만(그림자, 시체, 카운터); 불가침 영역과 경쟁 정보(소리, 적 그림자)를 존중.
- 네트워크/오디오/주변기기: 측정 먼저; 네트워크 트윅은 이미 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).