<img width="1408" height="538" alt="X3Dctl_logo_final_butcltleft" src="https://github.com/user-attachments/assets/4ae01d22-af40-4112-a47a-4791f61a98e1" />
GitHub tag (latest SemVer)
RelatedRepos
x3dctl은 Linux 시스템에서 AMD X3D CPU 운영 모드를 제어하는 경량의 커맨드라인 유틸리티입니다.
이 도구는 다음을 위한 안전하고 결정론적인 인터페이스를 제공합니다:
- 전역 X3D 운영 모드 전환
- CCD 인식 프로세스 정책 적용
- 시스템 상태에 기반한 GPU IRQ 어피니티 제어
x3dctl은 데몬(daemon)을 실행하지 않으며 백그라운드 폴링(polling)도 수행하지 않습니다. 모든 동작은 명시적이고 커맨드 기반이며 런타임 전용입니다. 따라서 백그라운드 오버헤드가 없습니다.
개요 (What it is)
x3dctl은 **시스템 상태(system posture)**와 **프로세스 정책(process policy)**을 분리합니다.
- **모드 명령어(Mode commands)**는 전역 X3D 운영 모드 및 GPU IRQ 제어를 제어합니다.
- **프로파일(Profiles)**은 개별 애플리케이션이 어떻게 스케줄링되고 고정될지 정의합니다.
이를 통해 사용자는 다음 중 선택할 수 있습니다:
- 지연 시간에 민감한 워크로드를 위한 엄격한 캐시-CCD 고정(cache-CCD pinning)
- 처리량 중심 작업용 주파수-CCD 고정(frequency-CCD pinning)
- 시스템 수준의 IRQ 제어를 유지하면서 모든 코어를 사용 가능한 상태로 두는 가벼운 프로파일
문서화 (Documentation)
작동 방식 (How it works)
전역 모드 제어 (Global mode control)
| 명령어 | 설명 |
|---|
| gaming | 캐시 우선 모드로 전환하고 GPU IRQ를 제어합니다. |
| ... | |
run은 단일한 전역 동작을 강제하지 않으면서, 고유한 개별 프로세스 정책을 가진 동시 워크로드를 실행합니다.
- 이를 통해 별도의 전역 X3D 모드가 활성화된 상태에서도 서로 다른 프로세스 수준의 동작을 가지는 여러 워크로드가 동시에 실행될 수 있습니다.
x3dctl은 두 가지 시스템 상태를 지원합니다:
- gaming → X3D를 캐시 우선 모드로 전환합니다.
- performance → X3D를 주파수 우선 모드로 전환합니다.
결정론적 GPU IRQ 스티어링
- gaming 모드에서는 GPU IRQ가 주파수 CCD로 스티어링됩니다.
- performance 모드에서는 GPU IRQ가 전체 CPU 마스크로 복원됩니다.
- IRQ 변경 사항은 런타임 전용이며 재부팅 시 유지되지 않습니다.
프로세스 정책 적용
프로필은 다음에서 정의됩니다:
/etc/x3dctl.conf
애플리케이션은 다음에서 매핑됩니다:
/etc/x3dctl.conf
- 표시 항목:
. 현재 X3D 모드
. GPU IRQ 스티어링 상태
. irqbalance 서비스 상태
<img width="433" height="265" alt="good_status_pic" src="https://github.com/user-attachments/assets/70f7213c-61c4-4009-aa5c-6b42ba022490" />
irqbalance에 대한 참고 사항:
irqbalance 서비스는 하드웨어 인터럽트를 사용 가능한 CPU 전반에 걸쳐 분배합니다.
이는 멀티 코어 시스템에서 부하 균형을 개선하기 위해 IRQ를 동적으로 마이그레이션합니다.
이종(heterogeneous) CPU 설계(AMD X3D 프로세서와 같은)의 경우, 자동 IRQ 마이그레이션은 워크로드 및 구성에 따라 **캐시-투-캐시 지연 시간(cache-to-cache latency)**을 유발할 수 있습니다.
x3dctl은 모드를 전환할 때 결정론적 GPU IRQ 친화성(affinity)을 적용합니다. 만약 irqbalance가 활성화되어 있다면, 이 친화성 설정을 덮어쓸 수 있습니다.
완전히 결정론적인 동작을 위해서는 x3dctl 사용 시 irqbalance를 비활성화하거나 적절하게 구성하는 것이 권장됩니다.
x3dctl에 의해 이루어진 IRQ 친화성 변경은 런타임 전용이며 시스템 재부팅 시 유지되지 않습니다.
irqbalance 서비스는 수동으로 적용된 IRQ 친화성을 덮어쓸 수 있습니다.
- 가장 결정론적인 동작을 위해:
irqbalance를 비활성화하거나. 또는.
시스템에 맞게 적절하게 구성하십시오.
x3dctl은 irqbalance에 의존하지 않으며, 서비스가 활성화되었는지 여부만 보고합니다.
amd_pstate / CPPC Preferred Cores에 대한 참고 사항
x3dctl은 지원되는 AMD X3D 시스템에서 명시적인 워크로드 배치 및 정책을 적용합니다. 그 핵심 기능은 펌웨어의 선호 코어 가이드(preferred-core guidance)에 전적으로 의존하지 않습니다.
최상의 결과를 얻으려면, 해당되는 경우 amd_pstate가 활성화되어 있어야 하며 BIOS/펌웨어에서 CPPC Preferred Cores가 Driver로 설정되어야 합니다.
이는 커널과 스케줄러가 x3dctl의 명시적 배치 로직과 함께 선호 코어(preferred-core) 정보를 더 잘 활용할 수 있도록 합니다.
만약 CPPC Preferred Cores가 Driver로 설정되어 있지 않다면, x3dctl도 작동할 수는 있지만, 워크로드, 커널, 스케줄러 및 펌웨어 처리 방식에 따라 동작이 일관적이지 않을 수 있거나 더 일반적인 스케줄러 동작으로 되돌아갈 수 있습니다.
BIOS의 문구는 제조사마다 다를 수 있으며, x3dctl은 이 설정을 런타임에 수정하지 않습니다.
irqbalance 및 amd_pstate 문서 링크가 다음 업데이트에서 readme에 추가될 예정이며, 사용법은 man 페이지에 있을 것입니다.
지원되는 프로파일:
| Profile | CPU Affinity | Nice | Scheduler | IO |
|---|
| gaming | cache CCD | -5 | SCHED_OTHER | BE/0 |
| ... | | | | |
- gaming → 공격적인 포그라운드/캐시 중심.
- unrestricted → 전체 코어에 약한 편향, CPU 고정 없음.
- frequency → 중립적인 주파수-CCD 정책.
- workstation → 백그라운드 처리량/지속적 워크로드.
unrestricted는 정책 적용을 비활성화하는 것이 아니라, 스케줄러, niceness(우선순위), I/O 우선순위는 계속 적용하면서 CPU 친화도만 건너뜁니다.
(워크로드 및 시스템 사용량에 따라 일부 게임이 이 모드에서 더 잘 실행될 수 있습니다)
프로파일은 특권 계층의 헬퍼 내부에서 강제되며, 동적 또는 런타임 중에는 정의할 수 없습니다. 애플리케이션 키는 실행 파일의 기본 이름과 일치해야 합니다.
설치:
로컬 빌드 및 설치/제거
make
sudo make install
sudo make uninstall
선택적 비밀번호 없는 편의 모드
x3dctl은 수동 설치 시 비밀번호 프롬프트를 줄이거나 제거하려는 사용자를 위해 선택적인 기능 기반 편의 경로를 지원합니다.
확장 모드 (고급, 최선 노력):
커널 및 권한 모델에 따라 cap_sys_nice + cap_sys_admin은 전역 모드 작업에 대해 더 광범위한 비밀번호 없는 동작을 활성화할 수 있습니다.
활성화(Enable):
비활성화(Disable):
이를 통해 권한을 제거하고 기본 sudo/sudoers 동작으로 되돌립니다.
- 로컬 설치 시 파일은 다음 경로에 위치합니다:
/usr/local/bin
/usr/local/share/man/man1
AUR에서 설치하기 (Install from the AUR)
.AUR 헬퍼 사용 시.
git clone https://aur.archlinux.org/x3dctl.git
cd x3dctl
makepkg -si
.이 패키지는 설치된 바이너리, man 페이지 및 sudoers 정책을 제거합니다.
.설정 파일은 보존됩니다.
참고 사항 (NOTE):
은 소스 설치 편의(source-install convenience) 타겟이며 AUR/패키지 설치 중에는 사용되지 않습니다.
AUR 사용자들은 설치 후 다음 명령어로 동일한 확장된 권한 모드를 활성화할 수 있습니다:
활성화(Enable):
sudo setcap 'cap_sys_nice,cap_sys_admin=ep' /usr/bin/x3dctl-helper
비활성화(Disable):
sudo setcap -r /usr/bin/x3dctl-helper
- 향후 업데이트에서는 패키지 설치 후 권한 모드를 활성화하거나 비활성화하는 프론트엔드 명령어가 추가될 예정입니다.
설계 목표 (Design Goals):
- 결정론적 동작 (Deterministic behavior)
- 데몬 없음 (No daemon)
- 폴링 또는 PID 추적 없음 (No polling or PID chasing)
- 시스템 상태와 프로세스 정책 간의 명확한 분리 (Clear separation between system posture and process policy)
- 최소 권한 공격 표면 (Minimal privileged attack surface)
- 투명한 구성 (Transparent configuration)
- 낮은 런타임 오버헤드 (Low runtime overhead)
요구 사항 (Requirements)
- AMD X3D sysfs 인터페이스 지원을 갖춘 Linux 커널
- 헬퍼 실행을 위해 sudo가 구성되어 있을 것
- 헬퍼 바이너리 빌드를 위한 GCC
- Make
- CFS 또는 EEVDF 스케줄러
- libcap
안정성 공지 (Stability Notice)
- x3dctl은 현재 1.x 릴리스 시리즈에 있습니다.
- 동작 방식은 릴리스 간에 변경되지 않을 것입니다.
- CLI 의미론(semantics)이 진화하지 않을 것입니다.
- 하위 호환성이 보장됩니다.
- 더 자세한 내용은 로드맵의 프로젝트 중장기 목표를 참조하십시오.