게임 데이터 가이드

멀티코어 스케줄러 표준, 프로세스 우선도·코어 파킹, 타이머 정밀도 운영

oneplay1 2025. 9. 13. 21:56
멀티코어 시스템에서 게임 성능은 단순 평균 FPS가 아니라 프레임 도착 간격의 안정성과 입력 지연의 일관성으로 체감된다. 그 두 축을 지배하는 요소는 커널 스케줄러의 코어 배치, 사용자 프로세스 우선도·스레드 친화도, 그리고 타이머 정밀도다. 첫째, 멀티코어 스케줄러 표준의 골자는 전경 게임 프로세스를 동일 코어 집합에서 꾸준히 실행시키고 백그라운드 작업은 다른 코어로 격리해 캐시 오염과 동시성 경쟁을 줄이는 것이다. 하이브리드 아키텍처(P·E코어)에서는 스케줄러가 선택하는 코어군을 예측 가능하게 만드는 것이 관건이며, 전원 정책·프로세서 성능 상태·게임 모드 설정의 조합으로 전경 스레드가 주 코어를 지속 점유하도록 한다. 둘째, 프로세스 우선도·코어 파킹은 시스템 전반의 인터럽트·I/O 스파이크에 대응하기 위한 운영 기술이다. 전경 프로세스는 보통 높은 우선도 수준과 짧은 큐 길이를 유지해야 하고, 백그라운드 가속기·동기화·미디어 인코딩처럼 간헐적 버스트를 일으키는 프로세스는 별도 코어에 둬야 프레임 타임 상단 꼬리를 억제할 수 있다. 셋째, 타이머 정밀도 운영은 전 모듈의 시간 단위가 충돌하지 않게 맞추는 작업이다. 일부 앱이 타이머 해상도를 과도하게 낮추면 문맥 전환이 잦아지고, 반대로 너무 높으면 입력·오디오 타이밍이 거칠어진다. 운영 기준은 세션 시작에서 단일 정확도로 고정하고, 세션 종료와 함께 원복하는 방식이다. 본 가이드는 화면 캡처 없이 인라인 SVG로만 원리를 설명하며, 범용 PC 환경에서 재현 가능한 순서와 안전한 권장값 범위를 제공한다.

멀티코어 스케줄러 표준

멀티코어 스케줄러 표준은 전경 게임 스레드가 동일한 코어 집합에서 연속 실행되도록 하여 캐시 적중률을 높이고, 동시성 경쟁과 인터럽트 개입을 최소화하는 운용 규범을 뜻한다. 먼저 코어 토폴로지를 이해한다. 현대 데스크톱은 물리 코어와 논리 코어(SMT)가 계층형 캐시(L1/L2/L3) 위에 묶여 있다. 동일 코어 내부에서 연속적으로 실행될수록 재활용 가능한 캐시 라인이 많아지고, 다른 코어로 이동할수록 리필 비용과 동기화 잠금의 대기시간이 커진다. 따라서 전경 스레드를 특정 코어군으로 고정하고(스레드 친화도), 백그라운드 스레드는 다른 코어군으로 분리하는 전략이 유효하다. 하이브리드 아키텍처(P/E코어)에서는 전력·빈도 스케일링과 스케줄링 결정을 통일감 있게 만드는 것이 중요하다. 균형 전원 정책을 사용한다면, 전경 프로세스의 성능 힌트가 제대로 전달되어 고성능 코어 우선 배치가 일어나도록 해야 한다. 또한 전경 창 우선 정책과 게임 전용 모드를 함께 사용하면 시분할에서 전경 우선권이 강화되어 그래픽 제출 스레드와 물리·네트워크 스레드가 안정적으로 시간 조각을 확보한다. 인터럽트 분포도는 또 다른 변수다. NIC·오디오·스토리지 인터럽트를 전경 코어와 분리해 배치하면, 프레임 제출 직전에 발생하는 마이크로 스톨을 줄일 수 있다. 이런 흐름의 목적은 최대치를 끌어올리는 것이 아니라 변동 폭을 낮추는 것이다. 평균 FPS는 약간 낮아지더라도 프레임 도착 간격의 표준편차가 줄면 조준·트래킹이 일정해지고, 입력 지연 상단 꼬리가 짧아진다. 마지막으로 운영 절차는 간단하다. 세션 시작 전 프로파일을 한 번 적용하고, 세션 종료 시 원복한다. 이렇게 해야 일상 작업과 충돌하지 않으며 관리 복잡도도 낮다.

프로세스 우선도·코어 파킹

프로세스 우선도·코어 파킹은 전경 프로세스의 실행 가능 시간을 보장하고, 버스트성 백그라운드 작업이 프레임 타임을 흔들지 않도록 분리·억제하는 운영 기법이다. 우선도와 친화도를 동시에 조정할 때 주의할 점은 과도한 고정이 오히려 OS의 부하 분산 능력을 저해할 수 있다는 사실이다. 적절한 범위는 전경 프로세스는 높은 우선도, 렌더·물리·오디오·네트워크 등 핵심 스레드는 동일 코어군에 가까이 배치하고, 백그라운드 인덱싱·동기화·클라우드 업로더·RGB·오버레이 같은 보조 프로세스는 다른 코어군으로 떼어놓는 것이다. 코어 파킹은 절전과 발열에 유리하지만, 게임 세션에서는 동적으로 주파수를 올리기 전에 깨어나는 지연으로 변동이 커질 수 있다. 따라서 세션 동안에는 주요 코어군의 파킹을 억제하고, 백그라운드 코어에는 완화된 파킹을 허용하는 혼합 구성이 안정적이다. 인터럽트 관점에서도 NIC와 오디오는 전경 코어와 충돌하지 않게 분산한다. 네트워크 어댑터의 인터럽트 모더레이션은 지연과 CPU 부하의 교환 관계인데, 세션용 프로필에서는 낮추거나 해제해 일관성을 확보한다. 오디오 버퍼도 지나치게 공격적으로 낮추면 XRUN과 함께 시스템 타이머가 불안정해져 입력·출력 동조가 흔들린다. 3~5ms 수준의 버퍼링은 체감 지연과 안전성의 균형점이 된다. 백그라운드 가속기(예: 미디어 인코더)는 우선도를 낮추고 코어군을 분리하지 않으면 렌더 제출 직전의 문맥 전환을 유발할 수 있다. 운영의 핵심은 모든 튜닝을 영구값으로 박아두지 않고, 세션 시작·종료 시 적용과 원복이 버튼 하나로 끝나는 프로파일 구조를 만드는 것이다. 이렇게 하면 작업용 워크로드와 충돌하지 않으면서 게임 세션의 재현성을 유지한다.

타이머 정밀도 운영

타이머 정밀도 운영은 시스템 전반의 시간 해상도를 세션 동안 단일 값으로 고정하고, 입력·오디오·프레임 제출의 동조를 흐트러뜨리는 요소를 최소화하는 절차다. 운영체제는 기본 타이머 해상도를 넉넉한 값으로 두며, 특정 앱이 더 미세한 해상도를 요청하면 시스템 전체가 그 값으로 내려가게 된다. 문제는 여러 앱이 제각각 해상도를 요청하고 해제하지 않으면 문맥 전환 빈도와 인터럽트가 들쭉날쭉해진다는 것이다. 해결책은 세션 시작 시 단일 해상도를 설정하고(예: 1ms 수준), 세션 종료 시 원복하는 관리다. 이때 오디오 엔진이 독점 모드로 일정한 버퍼 주기를 유지하도록 구성하면 입력·오디오·디스플레이의 위상 정렬이 쉬워진다. 너무 낮은 해상도는 CPU 웨이크업을 과도하게 늘려 발열과 쓰로틀링으로 되돌아올 수 있으니, 주사율·프레임 목표·게임 로직에 맞는 안전 구간에서 운용한다. 또한 오버레이·RGB·클립/녹화·메신저처럼 주기적으로 타이머를 조작하는 앱은 세션 프로필에서 일괄 정지한다. 마지막으로 성과 평가는 평균이 아니라 상단 꼬리로 한다. 동일 리플레이·고정 시퀀스에서 95백분위 프레임 타임과 입력 지연의 표준편차가 줄었다면 운영이 성공한 것이다. 타이머와 스케줄러·우선도 세 축을 함께 묶어야 재현 가능한 결과를 얻을 수 있다.

코어군 격리 배치 개념 코어군 A(전경) 코어군 B(백그라운드) 렌더 제출 물리/네트워크 동기화/업로더 RGB/오버레이
전경 스레드는 같은 코어군에서 연속 실행, 백그라운드는 분리해 캐시 오염·인터럽트 경쟁을 줄인다.
운영 순서: 우선도 → 친화도 → 인터럽트 분산 전경 우선도 설정 스레드 친화도 배치 인터럽트 분산
단계별로 적용하면 과도한 고정 없이 전경 실행 시간을 안정적으로 확보할 수 있다.
타이머 해상도 단일화 타임라인 세션 시작: 1ms 고정 세션 진행 세션 종료: 원복
여러 앱이 해상도를 제각각 바꾸지 못하게 세션 단위로 단일 값 적용–원복을 수행한다.