리눅스 커널은 몇 개의 코어를 처리 할 수 ​​있습니까?


14

이론상 한계에 관심이 있는데 아마도 많은 CPU를 가진 시스템의 예일 것입니다.


2
얼마나 많은 것을 처리 할 수 ​​있습니까? 또는 혜택을 잃기 전에 얼마나 많은 사람이 처리 할 수 ​​있습니까? 또한 어떤 커널? 이 답변은 패치 된 컴퓨터가 슈퍼 컴퓨터를 실행하기 위해 약간 변경되는 것 같습니다. 4096 개의 프로세서를 사용하여 단일 인스턴스에 대해 읽은 것을 기억하는 것 같습니다.
xenoterracide

어떤 패치 세트에서 일반 패치 세트는 4096 프로세서를 처리 할 수 ​​없지만 Linux는 패치를 수행하도록 패치되었습니다. (IIRC 일부 답변은 가능하다고 제안하는 것 같습니다)
xenoterracide

@ xeno 4096 프로세서를 처리하는 패치 세트조차 있다는 사실이 Answer에 언급되어야한다고 생각합니다.
tshepang

나는 그 이상을 기억하지 못한다. 그렇지 않으면 대답을하겠다. 그녀의 성과도 16을 넘 었는가? 코어는 제한되어 있었고 커널의 특정 부분에는 이미 시작된 재 작성이 필요했습니다. 그러나 실제로 나는 인용이 없으며 100 %가 아니기 때문에 대답하지 않습니다.
xenoterracide

답변:


18

실제로 2048 년 이상. 구체적인 예로, SGI는 256 개의 소켓 (2,048 코어)과 16TB의 공유 메모리를 모두 사용할 수 있는 UV 시스템을 판매합니다 . 모두 단일 커널에서 실행됩니다. 이 구성으로 판매 된 시스템이 최소한 몇 개 있다는 것을 알고 있습니다.

SGI에 따르면 :

Altix UV는 Novell과 Red Hat의 표준 배포판을 포함하여 완전히 수정되지 않은 Linux를 실행합니다.


11

이것은 런치 패드 우분투에 대해 말한 것이므로 다른 사람들에게도 적용됩니다.

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 코어를 수행 할 수 있습니다.


4
arch / x86 / Kconfig에 따르면이 CONFIG_NR_CPUS제한을 CONFIG_MAXSMP활성화 하면 이 제한을 높일 수 있습니다 .
ephemient

6

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에서 정지합니다 .


SGI Altix UV 1000 (2009 이후)은 단일 시스템 이미지에서 최대 2560 개의 코어를 가질 수 있습니다.
SP Arif Sahari Wibowo

2

이 아기 는 10,368을 달립니다!


2
나는 이것이 오래된 게시물이라는 것을 알고 있지만 클러스터 컴퓨터에 연결하고 있습니다. 문제는 단일 커널 인스턴스 실행에 관한 것입니다.
frodeborli

1

스레드는 멀티 태스킹 모델 및 스레드 관리 체계에 따라 다릅니다. 내가 올바르게 기억한다면 인텔 기반 시스템의 Gdt는 리눅스에서 사용됩니다. 아이디어는 최대 크기에서 8192 스레드가 가능하다는 것입니다. 이것은 시스템이 스레드를 관리하기 위해 gdt를 사용하고 있다고 가정합니다. 32 비트 시스템에서는 작업 전환이 관리되고 32 비트 및 64 비트 시스템 인터럽트 벡터에는 gdt 항목이 있어야합니다. 팔이 어떻게 작동하는지 확실하지 않지만 동일한 조음이 이루어져야합니다. 작업 전환 개념은 작업 모델에서 GDT를 반복합니다.

gdt 구성표를 벗어나면 각 스레드마다 페이지 스택 프레임, 스레드의 페이지 코드베이스 및 힙 공간의 페이지가있을 때 메모리에 도달 한 것으로 가정 할 수 있습니다. 임의 변수 인 코드 페이지 나 힙이 있다고 가정 할 수 없습니다. 일반적으로 각 스레드마다 두 개의 스택 프레임이 있습니다. 하나는 스레드에 의해 유지되고 다른 하나는 Linux 커널에 의해 유지됩니다. 스왑 공간의 가상 메모리 개념을 추가하면 모델이 물 밖으로 날아가지만 스레드 우선 순위에 관한 것입니다.


0

또한:

UV SGI에서 제어로 Linux를 사용하고 있고 자체 4.15 커널과 함께 Bladecenter를 사용하는 경우 Moment에서 사용할 수 있습니다.

4096 블레이드 랙. 1024 코어 x 4096 코어를 사용하는 1 개의 랙. 이 구성은 현재 Linux에서 가장 높은 코어를 사용합니다. Red Hat에서 모든 코어를 제어 할 수 있습니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.