Определение NR_CPUS переведено в 8192 во время компиляции ядра - PullRequest
0 голосов
/ 20 января 2019

Я пытаюсь скомпилировать 4.14 ядро ​​Linux для Ubuntu 18.04 с некоторыми небольшими изменениями, которые я внес в код (не относящиеся к обсуждению).

По какой-то причине определение NR_CPUS переводится для меня как число 8192, которое является слишком большим числом и портится с моим кодом.(У меня только 4 ядра процессора на моей машине Kabylake).Почему он такой большой?Я что-то пропустил в конфигах, прежде чем пытался скомпилировать ядро?Как правильно изменить определение?

Ответы [ 2 ]

0 голосов
/ 22 января 2019

В вашем дереве ядра проверьте arch / x86 / Kconfig, чтобы увидеть, какие параметры ядра, установленные вами из menuconfig, могут влиять на Kabylake NR_CPUS. Согласно моей версии 4.14.2 этого Kconfig:

config NR_CPUS
        int "Maximum number of CPUs" if SMP && !MAXSMP
        range 2 8 if SMP && X86_32 && !X86_BIGSMP
        range 2 512 if SMP && !MAXSMP && !CPUMASK_OFFSTACK
        range 2 8192 if SMP && !MAXSMP && CPUMASK_OFFSTACK && X86_64
        default "1" if !SMP
        default "8192" if MAXSMP
        default "32" if SMP && X86_BIGSMP
        default "8" if SMP && X86_32
        default "64" if SMP
        ---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 8192, otherwise the maximum value is 512.  The
          minimum value which makes sense is 2.

Таким образом, установка MAXSMP (появляется в сеансе menuconfig как «Включить максимальное количество процессоров SMP и узлов NUMA [N / Y]») может привести к 8192. Обратите внимание, что с NR_CPUS вы указываете максимум количество процессоров, которые будут использоваться с этим ядром; он не должен точно соответствовать вашему текущему количеству процессоров. Это должно быть сделано на лету.

Пожалуйста, не забудьте пометить как правильный ответ, если это решит его для вас - спасибо.

0 голосов
/ 20 января 2019

Отредактируйте ваш «.config» напрямую или измените его, используя menuconfig из каталога ядра (в разделе «kernel-features»). NR_CPUS по умолчанию только 4. Не знаю, как у вас получилось 8192. Лучше поделитесь своим ядром defconfig, чтобы можно было многое прокомментировать

...