LINUX.ORG.RU

CONFIG_SMP на многоядерном ОДНОпроцессорном. Все по-старому или что-то покультурней уже есть?

 , ,


0

0

Этот анахронизм все еще жив? Все еще надо ставить поддержку многопроцессорности во многоядерном? Возник такой вопрос, собрал ведро с CONFIG_SCHED_SMT=Y (гепертрединг) и в то же время CONFIG_NR_CPUS=4 (ну а что, ядер то у меня 4 физических, а уж процессоров так и вовсе 1) И вот что теперь пишет при загрузке

[    0.000000] APIC: NR_CPUS/possible_cpus limit of 4 reached. Processor 4/0x1 ignored.
[    0.000000] APIC: NR_CPUS/possible_cpus limit of 4 reached. Processor 5/0x3 ignored.
[    0.000000] APIC: NR_CPUS/possible_cpus limit of 4 reached. Processor 6/0x5 ignored.
[    0.000000] APIC: NR_CPUS/possible_cpus limit of 4 reached. Processor 7/0x7 ignored.

Очевидно что оно считает не только каждое ядро за процессор, но и каждый виртуальный поток от гипертрединга - тоже за процессор. И это со включенной поддержкой гипертрединга в самом ядре, типа «я уже знаю что это за технология, но все равно костылю». Так вот вопрос в следующем, как сейчас в лучших домах европы конфигурят многоядерность - все так же, через SMP или что-то более грамотное уже запилено, просто я не знаю?

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.

	  This is purely to save memory - each supported CPU adds
	  approximately eight kilobytes to the kernel image.

</thread>

Deleted
()
Ответ на: комментарий от devl547

А потому что не своими именами вещи названы. SMP это МНОГОПРОЦЕССОРНОСТЬ. А многоядерность появилась я уже забыл когда давно. Даже хелп вводит в заблуждение, типа «говорите буковку Н на однопроцессорном».

justin_case
() автор топика

многоядерность - все так же, через SMP

Я стесняюсь спросить, а ты как хотел? Многоядерность — частный случай многопроцессорности, HT — тоже. Если не принимать во внимание ряд оптимизаций производительности, то для ОС это вообще не имеет значения, она видит несколько процессоров.

intelfx ★★★★★
()
Ответ на: комментарий от justin_case

А потому что не своими именами вещи названы. SMP это МНОГОПРОЦЕССОРНОСТЬ.

Алё, доброе утро, а давай ты матчасть подучишь?

intelfx ★★★★★
()
Ответ на: комментарий от Deleted

А вот тут не совсем понятно, почему 8 это только на 32битный проц (такие еще есть?) Откуда берутся 64?

justin_case
() автор топика
Ответ на: комментарий от intelfx

А давай нет. На коробке с процессором что написано? Процессор (один штук), с 4 ядрами, поддерживает гипертрединг (тут погуглив что такое гипертрединг можно понять что это добавит еще 4 виртуальных ядра). На коробке с мамкой что написано? Написано - мамка однопроцессорная. В хелпе ведра что написано? Нажимайте нет если у вас 1 процессор. То что написано на заборе я и так знаю, но ведь там дрова лежат. А тут либо хелп нужно по другому писать уже, либо как то по другому конфигурить (об этом и вопрос - если по другому то как?)

justin_case
() автор топика
Ответ на: комментарий от intelfx

Как будто идиоты, сознательно наступающие на грабли, когда-нибудь так же сознательно хотели учить матчасть :).

post-factum ★★★★★
()
Ответ на: комментарий от justin_case

А вроде никто никогда и не говорил, что человек некомпетентный может собрать ядро. Для таких есть готовые сборки.

Deleted
()
Ответ на: комментарий от justin_case

Успокойся. Ты просто один такой альтернативной одарённый, все остальные прекрасно знают что многоядерность подразумевает многопроцессорность

anonymous
()
Ответ на: комментарий от justin_case

А ничего что внутри этого «процессора» кроме вычислительных ядер есть еще контроллер памяти, контроллер pcie-шины, контроллер sata и половина видеокарты?

Khnazile ★★★★★
()

«многоядерность» это маркетинговый термин, процессоров у тебя много, а не один, пусть даже в одном корпусе и половина из них виртуальные (привет HT)

Harald ★★★★★
()
Ответ на: комментарий от Khnazile

внутри этого «процессора» кроме вычислительных ядер есть еще контроллер памяти, контроллер pcie-шины, контроллер sata и половина видеокарты

Кого это волнует, ведь на «коробке написано»!

mandala ★★★★★
()

Бан за провокацию флейма!

anonymous
()
Ответ на: комментарий от Harald

ОК, а какого буя за много много лет в хелп ведра не добавлено «Нажимайте У если у вас многопроцессорное ИЛИ многоядерное?» всего то ничего, одно предложение. Но не добавлено, а значит так нужно. Или уже не нужно?

justin_case
() автор топика
Ответ на: комментарий от justin_case

Запили патч, а мы посмотрим, что тебе в LKML ответят :D.

post-factum ★★★★★
()
Ответ на: комментарий от justin_case

Оно не или, под крышкой «процессора» куча оборудования, в том числе и несколько процессоров, тебе уже на это указали. Несколько процессоров для операционной системы, т.к. её не колышет хардварная реализация:

Процессоры, предназначенные для работы одной копии операционной системы на нескольких ядрах, представляют собой высокоинтегрированную реализацию мультипроцессорности.

Все так плотно упаковано для производительности, а не из-за невозможности всё это растащить на пару десятков отдельных электронных плат (так раньше и было).

mandala ★★★★★
()
Последнее исправление: mandala (всего исправлений: 1)
Ответ на: комментарий от mandala

А я вот недавно видел двухпроцессорный многоядерный комп, там было 2 ксеона каждый по 8 ядер. Новый притом. так что понятия все еще существуют, параллельно друг с другом и нельзя одно заменить другим (во всяком случае без пояснений).

justin_case
() автор топика
Ответ на: комментарий от justin_case

ОК, а какого буя за много много лет в хелп ведра не добавлено
«Нажимайте У если у вас многопроцессорное ИЛИ многоядерное?»

Тебе уже написали: «А вроде никто никогда и не говорил, что человек некомпетентный может собрать ядро». Всё написано совершенно понятно, но для тех, кто в теме.

AS ★★★★★
()
Ответ на: комментарий от justin_case

А я вот недавно видел двухпроцессорный многоядерный
комп, там было 2 ксеона каждый по 8 ядер.

Операционной системе про это совершенно не известно. У неё 16 процессоров в этом случае. То есть, если нужно, то известно, но с точки зрения распараллеливания это просто 16 процессоров.

AS ★★★★★
()
Последнее исправление: AS (всего исправлений: 1)
Ответ на: комментарий от justin_case

так что понятия все еще существуют, параллельно друг с другом и нельзя одно заменить другим (во всяком случае без пояснений)

Надо всего-то различать процессор в представлении для ядра ОС и физические микросхемы.

mandala ★★★★★
()
Ответ на: комментарий от post-factum

Что значит wrong? Межпроцессорные прерывания всегда одни и те же. Нума нумой, но это оптимизации, можно и без них.

intelfx ★★★★★
()
Ответ на: комментарий от intelfx

То и значит, что wrong. IPI — это одно, а локальность памяти, например, — другое, и ядро об этом знает, если принудительно не выключить, конечно.

post-factum ★★★★★
()
Ответ на: комментарий от intelfx

Как-то он быстро свой комментарий отредактировал. ОК.

post-factum ★★★★★
()
Ответ на: комментарий от mandala

именно. а у некоторых бывает что «процессор» - это вообще системный блок...

NiTr0 ★★★★★
()
Ответ на: комментарий от legolegs

Вообще то на столе, но с гудит угадал. ТелепатЪ однако! Ну так наполовину.

justin_case
() автор топика
Ответ на: комментарий от mandala

Да говно вопрос. Точнее говно в том что этого нигде не написано в хелпе ведра. И от этого возникают вопросы. Например такой - сколько нужно ведрохелпописателей чтобы вкрутить 1 строчку за 10 лет?

justin_case
() автор топика
Ответ на: комментарий от justin_case

Ну хватит петросянить и гнать на софт. Так и скажи:«Я запутался в этих ваших многоядерных мультипроцессорных гипертрединговых ядрах-потоках.»

mandala ★★★★★
()

чет в голосину с треда

прикиньте этот одноядерный сверхразум дойдет до определения многозадачности в ОС реального времени....ох лол

vtq34957
()
Ответ на: комментарий от mandala

Уф, мандалуша, так это ж еще со времен моих виндузячьих в диспетчере устройств ядра отображались как отдельные процессоры. Мало ли что там на картоне пишут :)

Deleted
()
Ответ на: комментарий от Deleted

Так всегда было, я когда комп с Celeron D с EM64T брал погонять на недельку у своего другана (у меня денех тогда не было даже на целерон новый) — так там при активированной EM64T тоже два CPU, но меня это тогда ну не удивило ни сколько хотя я в первый раз столкнулся с виртуальной многоядерностью. А у нас тут просто ТС упоролся чем-то забористым.

mandala ★★★★★
()

ТС, ты, случаем, не брат того чувака, который 6 страниц допытывался про nginx и doman name case insensitiveness? Очень похоже.

Deleted
()
Ответ на: комментарий от post-factum

Wrong.

И ? В чём отличие в случае распараллеливания для 16-и ядер в двух корпусах ? Вот HT сечётся, и в первую очередь занимаются очереди на свободных ядрах, а вот без HT разницу поясни, если Wrong.

AS ★★★★★
()
Ответ на: комментарий от intelfx

Так он об этом и говорит...

Кстати, про память я не то, чтобы не знал, но но ввиду не имел. Про AMD знаю, про новые Intel - тоже, но у меня пока только старых поколений Intel, там не было такого, чтобы память размещать в привязке к процессорам. Вроде бы.

AS ★★★★★
()

Это всё легаси. Хелп по параметрам ядра писали еще в мохнатых годах, и с тех пор никто его не поддерживает (ну, кроме совсем уж необходимых случаев).

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

Конфиг ядра и его «UI» ещё то говно, с точки зрения юзабельности.

Местных кукаретиков не слющай, каждый гнёт понты как он крут и знает матчасть. А на деле это патлатые прыщавые гентушники жрущие мамкин борсч.

anonymous
()
Ответ на: комментарий от mandala

Я и не распутывался. Помню в 200мохнатом году прочитал костыль рецепт на тему вот у вас один проц но много ядер включайте СМП. Ну и включил, а щас думаю прогресс все дела, а раз в справке написано все так же, как раньше то наверное это именно на однопроцессорных и не надо, а для ядер в другом месте. Оказывается нет. Прыщезеалоты ленивы как стадо тюленей, даже строчку дописать не смогли за все это время. Ну или убрать что на одном процессоре жмите Н.

justin_case
() автор топика
Ответ на: комментарий от justin_case

Есть определенная терминология и один процессор для ПО это один процессор. Как там на уровне железяки оно реализовано не важно (не правда — важно, но совсем другом месте, не там где считаем количество CPU).

mandala ★★★★★
()
Ответ на: комментарий от intelfx

Не корми тролля. А то и так ужо толстый.

Meyer ★★★★★
()
Ответ на: комментарий от anonymous

Хелп по параметрам ядра писали еще в мохнатых годах, и с тех пор никто его не поддерживает (ну, кроме совсем уж необходимых случаев).

Это утверждение ложно.

anonymous
()

поставь CONFIG_NR_CPUS=8 и не мучайся. поддержка HT сделана поверх SMP, там планировщик старается подбирать треды из одного процесса и всё.

i36_zubov
()
Ответ на: комментарий от i36_zubov

Я поставил. В итоге внезапно даже сильней тормозит при загрузке. Выпилил нафиг, не так уж он и нужен этот гипертрединг.

justin_case
() автор топика
Ответ на: комментарий от justin_case

ты что, загружаешь комп по 10 раз в минуту? нашел проблему.

на всякий случай: HT представляется как 2 процессора. всегда. оно так сделано даже на уровне ACPI и APIC. я когда то свою операционку писал и как SMP работает изучал. у тебя как раз нечетные процы вырублены оказались - вот это оно и есть.

i36_zubov
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.