본문 바로가기
IT생활

멀티소켓 시스템에서 프로세스 선호도 설정하기

by 우물 밖 개구리. 2025. 2. 17.
반응형

멀티소켓 시스템에서 프로세스 선호도 설정하기

멀티소켓 시스템(예: 듀얼 소켓 EPYC 또는 Xeon)에서는 프로세스 선호도(Process Affinity) 를 설정하여 특정 CPU 소켓이나 코어에 작업을 고정할 수 있음.
이는 NUMA 최적화, 캐시 효율성, 병목 현상 방지 등의 이점을 제공함.


📌 Windows에서 프로세스 선호도 설정

Windows에서는 taskset 대신 Start-Process, wmic, 또는 PowerShell을 사용하여 설정 가능.

🔹 방법 1: 작업 관리자에서 설정 (GUI)

  1. 작업 관리자(Task Manager, Ctrl + Shift + Esc) 실행
  2. 프로세스 탭에서 원하는 프로세스 우클릭 → "세부 정보로 이동"
  3. 해당 프로세스 우클릭 → "선호하는 CPU 설정(Affinity)"
  4. 원하는 코어 선택 (예: 특정 소켓의 코어만 선택)

🔹 방법 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) 설정이 가능함.

사용법:

  1. Process Explorer 다운로드
  2. procexp64.exe 또는 procexp.exe 실행 (관리자 권한 필요)
  3. 원하는 프로세스를 우클릭 → Set Affinity
  4. 원하는 CPU 코어 체크 후 적용

2️⃣ Process Lasso (고급 프로세스 관리 도구) 사용

Process Lasso는 더 강력한 제어 기능을 제공하며, 특정 프로그램을 항상 특정 코어에서 실행되도록 설정 가능함.

사용법:

  1. Process Lasso 다운로드 및 설치
  2. 실행 후 원하는 프로세스를 선택
  3. 우클릭 → CPU Affinity → 원하는 코어 선택
  4. "Always" 옵션을 활성화하면 프로세스를 실행할 때마다 자동 적용

3️⃣ Run as Administrator로 작업 관리자 실행 후 변경

  1. Ctrl + Shift + Esc → 작업 관리자 실행
  2. taskmgr.exe를 관리자 권한으로 다시 실행
    • 방법 1: "파일(File) → 새 작업 실행 (Run new task)"
    • 방법 2: Ctrl + Shift + Esc → Shift + 우클릭 → 관리자 권한으로 실행
  3. 변경하려는 프로세스 우클릭 → "세부 정보 보기" → "선호하는 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)

  1. Process Lasso 다운로드 및 설치
  2. "프로세스 관리 규칙"에서 특정 프로그램이 실행될 때 자동으로 Affinity 지정
  3. ffmpeg.exe 같은 프로그램을 추가하고 원하는 코어 설정
  4. 실행할 때마다 자동으로 적용됨

장점: GUI 환경에서 설정 가능 & 자동 적용


📌 4️⃣ 레지스트리나 스크립트를 활용한 자동 적용

  1. taskschd.msc (작업 스케줄러)에서 새 작업(Task) 생성
  2. 실행할 프로그램을 추가하고 "고급 속성"에서 CPU Affinity 설정
  3. 특정 조건에서 자동 실행되도록 설정 가능

🔹 결론

CMD에서 실행 전 설정 → start /affinity
PowerShell에서 실행 후 즉시 고정
GUI에서 설정 후 자동 적용 → Process Lasso
작업 스케줄러 활용 가능

✅ 가장 추천하는 방법:
→ GUI 선호: Process Lasso
→ 스크립트 실행: CMD start /affinity 또는 PowerShell

반응형