본문 바로가기
IT생활

운영체제별 프로세스 그룹 및 스레드 수 제한 비교

by 우물 밖 개구리. 2025. 3. 11.
반응형

 

운영체제별 프로세스 그룹 및 스레드 수 제한 비교

Windows, Linux, macOS 같은 주요 운영체제는 각기 다른 방식으로 멀티코어 및 멀티소켓 시스템에서 프로세스를 스케줄링하고 그룹화한다. Windows 10 Pro의 경우 프로세스 그룹 (Processor Groups) 개념 때문에 최대 64개 논리 프로세서 (Logical Processor)까지만 하나의 그룹에서 사용할 수 있는 제한이 있다. 반면, Linux나 macOS는 이러한 제한이 다르게 작동한다.


1. Windows의 프로세스 그룹 제한

1.1 Windows의 프로세서 그룹 (Processor Groups) 개념

Windows는 SMP (Symmetric Multiprocessing)를 활용하는데, 특정 버전에서 64개 논리 프로세서(=HT 포함 코어 수) 이상을 다룰 때 "프로세서 그룹"이라는 개념을 도입했다.

  • Windows 7부터 도입된 이 개념은 Windows가 64개 이상의 논리 프로세서를 다룰 수 있도록 하는 일종의 트릭이다.
  • 단, 하나의 프로세스는 기본적으로 하나의 그룹만 사용할 수 있음.
  • 프로세스가 다중 그룹을 활용하려면 Explicit Group Affinity API를 사용해야 한다.

1.2 Windows 10 Pro의 제한

  • Windows 10 Pro 및 대부분의 일반 Windows 버전에서는 하나의 프로세스가 64개 논리 프로세서 이상을 직접 사용할 수 없음.
  • CPU가 64개 논리 프로세서를 초과하면 자동으로 "Processor Group 0", "Processor Group 1" 등의 그룹으로 나뉨.
  • 멀티소켓 CPU의 경우, 소켓당 코어 수가 64개를 넘으면 강제로 나뉘게 됨.

예제:
듀얼소켓 시스템에서 72개 논리 프로세서를 가진 경우:

  • Group 0: 36코어 (72스레드 중 절반)
  • Group 1: 나머지 36코어 (72스레드 중 절반)

🚨 문제점:

  • 기본적으로 Windows는 하나의 그룹만 프로세스에 할당하므로 일반적인 프로그램은 한 그룹(최대 64개 논리 프로세서)에서만 실행됨.
  • 따라서, Windows 10 Pro에서는 한 프로세스가 최대 64개 논리 프로세서만 활용 가능하며, 나머지 코어는 할당되지 않음.
  • 이 문제는 Windows Server 또는 특정 API를 사용하면 해결 가능.

1.3 Windows Server의 개선된 프로세서 그룹 관리

  • Windows Server 2016/2019/2022에서는 다중 프로세서 그룹을 활용하는 API 및 기능이 추가됨.
  • SetThreadGroupAffinity() 같은 API를 사용하면 한 프로세스를 여러 프로세서 그룹으로 분배 가능.
  • 그러나 여전히 Windows는 Linux처럼 모든 논리 프로세서를 자연스럽게 하나로 관리하지 않음.

결론:

  • Windows 10 Pro에서는 기본적으로 한 프로세스가 64개 논리 프로세서 이상을 사용 불가.
  • Windows Server에서는 API를 사용해 64개 이상 활용 가능하지만, 완전한 자유 분배는 아님.

2. Linux의 프로세스 및 스레드 관리 (무제한에 가까운 지원)

Linux 커널은 Windows와 달리 Processor Group 같은 인위적인 제한이 없음.
즉, 한 프로세스가 64개 이상 논리 프로세서를 자유롭게 활용 가능하다.

2.1 Linux에서의 CPU 스케줄링 방식

  • Linux는 NUMA 및 SMP를 기본적으로 지원하며, 커널이 직접 모든 코어를 관리한다.
  • 코어 수 제한은 커널 설정과 sched_setaffinity() 등의 API를 통해 제어 가능.
  • 기본적으로 한 프로세스는 커널이 할당한 모든 코어를 활용 가능.

2.2 CPU 제한 및 확장성

  • 64개 이상의 논리 프로세서 지원이 기본으로 제공됨.
  • taskset, numactl 같은 명령어를 통해 특정 프로세스를 특정 코어에 배정 가능.
  • CPU 수 제한은 커널 설정 (CONFIG_NR_CPUS)에 따라 결정되며, 64, 128, 256, 512, 1024개 이상의 CPU도 지원 가능.

🚀 결론:

  • Linux는 Windows보다 확장성이 훨씬 뛰어나며, 논리 프로세서 개수 제한이 없음.
  • Windows처럼 프로세서 그룹으로 나누지 않고, 모든 CPU를 하나로 관리 가능.

3. macOS의 프로세스 및 스레드 관리

macOS는 UNIX 기반 운영체제이며, Windows보다 Linux와 유사한 스레드 관리 방식을 가짐.
즉, macOS에서도 64개 이상의 논리 프로세서를 하나의 그룹으로 다룰 수 있음.

3.1 macOS의 멀티코어 스케줄링

  • macOS는 기본적으로 XNU 커널을 사용하며, SMP 및 NUMA 지원.
  • 모든 코어가 커널에 의해 동적으로 관리되며, Windows의 프로세서 그룹 제한이 없음.

3.2 macOS의 CPU 제한

  • macOS는 주로 애플 실리콘 (M1, M2 등) 및 Intel 기반 CPU를 사용.
  • Apple Silicon (M1 Ultra 등)에서는 최대 20코어 (16P+4E) 구조를 가짐.
  • XNU 커널이 프로세스 및 스레드 분배를 자유롭게 수행함.

🚀 결론:

  • macOS도 Linux와 같이 프로세서 그룹 개념 없이 모든 코어를 활용 가능.
  • Windows의 프로세서 그룹 문제는 macOS에서는 발생하지 않음.

4. 운영체제별 비교 정리

운영체제  프로세서 그룹 개념   프로세스당 최대 논리 프로세서 다중 NUMA 지원  기본적으로 모든 코어 활용 가능?
Windows 10 Pro 있음 (64코어 제한) 64개 부분 지원 (NUMA-aware) ❌ 기본적으로 하나의 그룹만 사용
Windows Server 있음 (64코어 제한, API로 우회 가능) 64개 이상 (API 필요) 지원 ⚠️ 일부 API 필요
Linux 없음 1024개 이상 가능 완벽 지원 ✅ 모든 코어 활용 가능
macOS 없음 제한 없음 지원 ✅ 모든 코어 활용 가능

5. 결론

  • Windows 10 Pro는 프로세서 그룹(Processor Group) 개념으로 인해 한 프로세스가 최대 64개 논리 프로세서만 사용 가능.
  • Windows Server는 일부 API를 사용하면 해결 가능하지만, 완전한 자유로운 사용은 어려움.
  • Linux와 macOS는 인위적인 프로세서 그룹 제한 없이 모든 코어를 자유롭게 활용 가능.
  • 서버급 환경에서는 Linux가 가장 유리하며, Windows Server는 특정 API를 사용해야 한다.

💡 즉, Windows 10 Pro에서는 64코어 이상 활용이 제한되므로, 고성능 시스템에서는 Linux나 Windows Server로 이전하는 것이 더 효과적일 수 있음.

반응형