Linux kernel - Número de CPUs limitadas

2

Eu estava navegando no código do kernel Linux nos dias de hoje e fui atingido por muitas perguntas sobre o possível número de CPUs suportadas pelo kernel.

Pelo que entendi, o kernel, de acordo com o arco, pode lidar com um certo número de CPUs. Este número é especificado no arquivo Kconfig e é passado para a opção CONFIG_NR_CPUS.

Aqui está minha saída do dmesg:

setup_percpu: NR_CPUS:5120 nr_cpumask_bits:240 nr_cpu_ids:240 nr_node_ids:1 RCU restricting CPUs from NR_CPUS=5120 to nr_cpu_ids=240

Minhas perguntas são:

  • por que o NR_CPUS é tão grande?

  • de onde vêm os 240 nr_cpumask_bits e nr_cpu_ids ?

Muito obrigado pela sua ajuda

    
por user250081 07.09.2017 / 14:33

1 resposta

2

why the NR_CPUS is this large ?

Porque existem sistemas Linux reais com contagens de CPU nessa ordem. Eu vi resultados de teste reais para 1024 máquinas de CPU.

Não me refiro a clusters de pequenos sistemas independentes, quero dizer, computadores individuais com muitos núcleos de CPU, todos executando um único kernel Linux.

Por exemplo, A SGI tem atualmente um sistema capaz de escalar até 32 soquetes de CPU. Com a contagem máxima atual de 22 núcleos na linha Xeon da Intel, você chega a 704 núcleos, depois o dobro disso com Hyperthreading . Entre o tempo em que este texto foi escrito e o tempo que você leu, esse limite central provavelmente terá sido excedido.

where does the 240 nr_cpumask_bits and nr_cpu_ids come from ?

Provavelmente algum limite do seu hardware real. É preciso um sistema especialmente projetado para lidar com até dois processadores físicos. Sistemas que suportam muitos chips de CPU físicos requerem todos os tipos de suporte de hardware especial para torná-lo eficiente: tecidos de comutação de barra cruzada , NUMA esquemas, etc.

    
por 07.09.2017 / 14:45