이론상 한계에 관심이 있는데 아마도 많은 CPU를 가진 시스템의 예일 것입니다.
이론상 한계에 관심이 있는데 아마도 많은 CPU를 가진 시스템의 예일 것입니다.
답변:
이것은 런치 패드 가 우분투에 대해 말한 것이므로 다른 사람들에게도 적용됩니다.
1.Intel x86:
Maximum CPUs: 32 (including logical CPUs)
Maximum memory: 64GB
Maximum filesize: 8TB
Maximum filesystem size (ext3) 16TB
Maximum per-process virtual address space: 4GB
2.AMD64/EM64T:
Maximum CPUs: 64
Maximum memory: 128GB
Maximum filesize: 8TB
Maximum filesystem size (ext3): 16TB
Maximum per-process virtual address space: N/A
These are standard max limitations whereas Linux cluster systems can scale up to 1024 CPU's.
x86 및 x86_64 각각 32 또는 64 CPU입니다.
Redhat은 동일하지만 관리하기 쉬운 테이블 에 있다고 말합니다 . Redhat EL6은 x86의 경우 32, x86_64의 경우 128 또는 4096 CPU 코어를 수행 할 수 있습니다.
x86_64 Linux 커널은 단일 시스템 이미지에서 최대 4096 개의 프로세서 스레드를 처리 할 수 있습니다. 이는 하이퍼 스레딩이 활성화 된 경우 최대 프로세서 코어 수는 2048입니다. 예, 2048 개 이상의 프로세서 코어가있는 컴퓨터가 있습니다. 그러나 이들은 여러 Linux 커널이 협력하는 고속 클러스터, 일반적으로 Infiniband 패브릭으로 연결된 클러스터로 실행됩니다.
~ / arch / x86 / Kconfig의 최신 커널 3.13에서 :
구성 NR_CPUS
---help---
This allows you to specify the maximum number of CPUs which this
kernel will support. If CPUMASK_OFFSTACK is enabled, the maximum
supported value is 4096, otherwise the maximum value is 512. The
minimum value which makes sense is 2.
This is purely to save memory - each supported CPU adds
approximately eight kilobytes to the kernel image.
업데이트 : 최신 커널에서는 아키텍처에 따라 다릅니다. 예를 들어 4.15 x86_64에서는 올바른 환경에서 NR_CPUS를 8192로 설정할 수 있지만 32 비트는 32에서 정지합니다 .
이 아기 는 10,368을 달립니다!
스레드는 멀티 태스킹 모델 및 스레드 관리 체계에 따라 다릅니다. 내가 올바르게 기억한다면 인텔 기반 시스템의 Gdt는 리눅스에서 사용됩니다. 아이디어는 최대 크기에서 8192 스레드가 가능하다는 것입니다. 이것은 시스템이 스레드를 관리하기 위해 gdt를 사용하고 있다고 가정합니다. 32 비트 시스템에서는 작업 전환이 관리되고 32 비트 및 64 비트 시스템 인터럽트 벡터에는 gdt 항목이 있어야합니다. 팔이 어떻게 작동하는지 확실하지 않지만 동일한 조음이 이루어져야합니다. 작업 전환 개념은 작업 모델에서 GDT를 반복합니다.
gdt 구성표를 벗어나면 각 스레드마다 페이지 스택 프레임, 스레드의 페이지 코드베이스 및 힙 공간의 페이지가있을 때 메모리에 도달 한 것으로 가정 할 수 있습니다. 임의 변수 인 코드 페이지 나 힙이 있다고 가정 할 수 없습니다. 일반적으로 각 스레드마다 두 개의 스택 프레임이 있습니다. 하나는 스레드에 의해 유지되고 다른 하나는 Linux 커널에 의해 유지됩니다. 스왑 공간의 가상 메모리 개념을 추가하면 모델이 물 밖으로 날아가지만 스레드 우선 순위에 관한 것입니다.