멀티소켓 시스템에서 프로세스 선호도 설정하기
멀티소켓 시스템(예: 듀얼 소켓 EPYC 또는 Xeon)에서는 프로세스 선호도(Process Affinity) 를 설정하여 특정 CPU 소켓이나 코어에 작업을 고정할 수 있음.
이는 NUMA 최적화, 캐시 효율성, 병목 현상 방지 등의 이점을 제공함.
📌 Windows에서 프로세스 선호도 설정
Windows에서는 taskset 대신 Start-Process, wmic, 또는 PowerShell을 사용하여 설정 가능.
🔹 방법 1: 작업 관리자에서 설정 (GUI)
- 작업 관리자(Task Manager, Ctrl + Shift + Esc) 실행
- 프로세스 탭에서 원하는 프로세스 우클릭 → "세부 정보로 이동"
- 해당 프로세스 우클릭 → "선호하는 CPU 설정(Affinity)"
- 원하는 코어 선택 (예: 특정 소켓의 코어만 선택)
🔹 방법 2: PowerShell을 이용한 설정
$process = Get-Process -Name "ffmpeg"
$process.ProcessorAffinity = 0xF # CPU 0~3 사용 (0b1111)
✅ 설명:
- ProcessorAffinity = 0xF → 0, 1, 2, 3번 코어만 사용
- 특정 소켓만 사용하고 싶다면 해당 소켓의 코어 비트마스크를 계산
✅ 듀얼 소켓 시스템 예제 (예: 소켓 1만 사용)
$process = Get-Process -Name "ffmpeg"
$process.ProcessorAffinity = 0xFF00 # 8~15번 코어 사용
🔹 방법 3: CMD에서 start /affinity 사용
start /affinity F "C:\Program Files\ffmpeg\ffmpeg.exe" -i input.mp4 -c:v libx265 output.mp4
✅ 설명:
- /affinity F → 16진수 0xF (0b1111) → 0~3번 코어만 사용
- 특정 소켓 코어만 사용하려면 해당 CPU 비트마스크 적용
📌 Linux에서 프로세스 선호도 설정
🔹 taskset 사용 (NUMA 고려 X)
taskset -c 0-7 ffmpeg -i input.mp4 -c:v libx265 output.mp4
✅ 0~7번 코어만 사용 (소켓 0)
🔹 numactl 사용 (NUMA 최적화)
NUMA 아키텍처에서는 특정 노드에 프로세스를 고정하는 것이 성능상 더 유리함.
numactl --cpunodebind=0 --membind=0 ffmpeg -i input.mp4 -c:v libx265 output.mp4
✅ 소켓 0의 CPU와 메모리만 사용
✅ NUMA 최적화로 메모리 접근 지연 최소화
📌 프로세스 자동화 및 설정 유지
- Windows: PowerShell 또는 Task Scheduler를 이용하여 자동 적용
- Linux: systemd 서비스로 taskset이나 numactl 적용
🔹 결론
✅ 멀티소켓 환경에서는 Processor Affinity 또는 NUMA를 활용하여 최적화 가능
✅ Windows는 PowerShell, CMD, 작업 관리자로 설정 가능
✅ Linux는 taskset, numactl로 소켓/코어 제어 가능
✅ NUMA 시스템에서는 numactl을 적극 활용해야 최적 성능 유지 가능
GUI로 프로세스 선호도(Affinity) 설정하는 방법 (Windows)
작업 관리자(Task Manager)에서 "엑세스가 거부되었습니다" 오류가 발생하는 경우
✅ 관리자 권한으로 실행해야 함
✅ 일부 시스템 프로세스 또는 UAC 보호 프로세스는 기본적으로 변경할 수 없음
📌 GUI를 사용한 방법
1️⃣ Process Explorer (Microsoft 공식 도구) 사용
Windows 기본 작업 관리자보다 강력한 Microsoft Process Explorer를 사용하면 GUI에서 선호도(Affinity) 설정이 가능함.
✅ 사용법:
- Process Explorer 다운로드
- Microsoft 공식 사이트에서 다운로드
- procexp64.exe 또는 procexp.exe 실행 (관리자 권한 필요)
- 원하는 프로세스를 우클릭 → Set Affinity
- 원하는 CPU 코어 체크 후 적용
2️⃣ Process Lasso (고급 프로세스 관리 도구) 사용
Process Lasso는 더 강력한 제어 기능을 제공하며, 특정 프로그램을 항상 특정 코어에서 실행되도록 설정 가능함.
✅ 사용법:
- Process Lasso 다운로드 및 설치
- 실행 후 원하는 프로세스를 선택
- 우클릭 → CPU Affinity → 원하는 코어 선택
- "Always" 옵션을 활성화하면 프로세스를 실행할 때마다 자동 적용
3️⃣ Run as Administrator로 작업 관리자 실행 후 변경
- Ctrl + Shift + Esc → 작업 관리자 실행
- taskmgr.exe를 관리자 권한으로 다시 실행
- 방법 1: "파일(File) → 새 작업 실행 (Run new task)"
- 방법 2: Ctrl + Shift + Esc → Shift + 우클릭 → 관리자 권한으로 실행
- 변경하려는 프로세스 우클릭 → "세부 정보 보기" → "선호하는 CPU 설정(Affinity)"
✅ 작업 관리자를 관리자 권한으로 실행하면 엑세스 거부 문제 해결 가능
📌 결론
✔ 가장 쉬운 방법: Process Explorer 사용 (Microsoft 공식 지원)
✔ 자동 적용을 원하면: Process Lasso 사용
✔ 작업 관리자를 관리자 권한으로 실행하면 해결될 가능성 있음
프로세스를 실행하기 전에 특정 CPU 코어에 고정(Affinity)하는 방법
Windows에서는 start /affinity 명령어 또는 Process Lasso 같은 GUI 도구를 사용하여 실행 전에 프로세스 선호도(Affinity)를 설정할 수 있음.
📌 1️⃣ CMD에서 start /affinity 사용 (간단한 방법)
예제: 특정 코어에서 ffmpeg.exe 실행
start /affinity 0xF "C:\Program Files\ffmpeg\ffmpeg.exe" -i input.mp4 -c:v libx265 output.mp4
✅ 설명:
- /affinity 0xF → 0~3번 코어만 사용 (0b1111)
- 특정 코어만 사용하여 실행되므로 불필요한 코어 스위칭 방지
- 프로세스 실행 전에 미리 설정 가능
📌 2️⃣ PowerShell로 실행 전 Affinity 설정
Start-Process -FilePath "C:\Program Files\ffmpeg\ffmpeg.exe" -ArgumentList "-i input.mp4 -c:v libx265 output.mp4" -PassThru | ForEach-Object { $_.ProcessorAffinity = 0xF }
✅ 설명:
- 실행 후 바로 0~3번 코어로 고정
- ProcessorAffinity = 0xF → 16진수로 첫 4개 코어(0,1,2,3)만 사용
📌 3️⃣ Process Lasso로 자동 적용 (GUI)
- Process Lasso 다운로드 및 설치
- "프로세스 관리 규칙"에서 특정 프로그램이 실행될 때 자동으로 Affinity 지정
- ffmpeg.exe 같은 프로그램을 추가하고 원하는 코어 설정
- 실행할 때마다 자동으로 적용됨
✅ 장점: GUI 환경에서 설정 가능 & 자동 적용
📌 4️⃣ 레지스트리나 스크립트를 활용한 자동 적용
- taskschd.msc (작업 스케줄러)에서 새 작업(Task) 생성
- 실행할 프로그램을 추가하고 "고급 속성"에서 CPU Affinity 설정
- 특정 조건에서 자동 실행되도록 설정 가능
🔹 결론
✔ CMD에서 실행 전 설정 → start /affinity
✔ PowerShell에서 실행 후 즉시 고정
✔ GUI에서 설정 후 자동 적용 → Process Lasso
✔ 작업 스케줄러 활용 가능
✅ 가장 추천하는 방법:
→ GUI 선호: Process Lasso
→ 스크립트 실행: CMD start /affinity 또는 PowerShell
'IT생활' 카테고리의 다른 글
멀티소켓 시스템에서 프로세스 선호도를 설정할 때 한 소켓의 CPU만 선택되거나, 다른 소켓의 CPU를 선택하면 기존 선택이 해제되는 문제 (0) | 2025.02.17 |
---|---|
RAM 메모리의 싱글채널 듀얼채널 쿼드채널 성능 차이가 많이 날까? (0) | 2025.02.17 |
FFmpeg로 BT.709 SDR 영상을 HDR10으로 변환할 수 있을까? (0) | 2025.02.17 |
ffmpeg에서 pix_fmt(픽셀 포맷)을 꼭 명시해야 할까? (0) | 2025.02.17 |
SVT-AV1에서 장기적인 비트레이트 최적화 방법 (0) | 2025.02.17 |