Влияют ли spin_lock и spin_unlock на производительность ядра SMP на однопроцессорной машине?

На моей машине с Ubuntu работающий образ ядра по умолчанию создан для smp (CONFIG_SMP=y). Но эта машина имеет только 1 процессор.

В однопроцессорном ядре, в отличие от ядра smp, spin_lock/unlock являются нулевыми функциями. Итак, как spin_lock() и spin_unlock() ведут себя в этой настройке?

Есть ли какое-либо влияние на производительность из-за такого кода, специфичного для smp?


person Vinit Dhatrak    schedule 29.10.2009    source источник
comment
Я согласен. Это определенно звучит супер-пользовательски для меня.   -  person Michael Myers    schedule 29.10.2009
comment
Отредактировал вопрос с точки зрения программирования !!!   -  person Vinit Dhatrak    schedule 29.10.2009
comment
Можем ли мы снова открыть его? Мне нужен ответ на этот вопрос!!!   -  person Vinit Dhatrak    schedule 29.10.2009
comment
Что за ...!! этот ИС связан с программированием. Любой программист ядра согласится со мной. Это грустно :(   -  person Vinit Dhatrak    schedule 29.10.2009
comment
Я категорически против закрытого решения! Насколько больше вопросов, связанных с программным обеспечением, можно получить с вопросами об использовании программного метода в API ядра Linux!??? @Майкл @Харпер @Пабло @Джерри @Дирк @Брайан   -  person Ian Vaughan    schedule 13.05.2011
comment
@IanVaughan: Вы правы, вопрос в его нынешнем виде актуален. Проверьте историю изменений, чтобы узнать, почему она была закрыта.   -  person Michael Myers    schedule 13.05.2011
comment
@IanVaughan: В качестве примечания: работает только первое @-упоминание в комментарии, и вы не можете @-упомянуть людей, которые закрыли вопрос. К счастью, я теперь модератор (я им не был, когда писал предыдущий комментарий), так что я могу снова открыть его самостоятельно.   -  person Michael Myers    schedule 13.05.2011


Ответы (2)


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

person janneb    schedule 01.06.2011

Да (и, вероятно, нет).

Да: A. Спин-блокировка/разблокировка будет запускать фактический код блокировки и разблокировки, потому что, когда вы компилируете его, компилятор не знает, собираетесь ли вы запускать его на машине с одним или несколькими процессорами. B. Хотя у вас есть один ЦП, вы все равно можете использовать его, если используете потоки.

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

person Roee Gavirel    schedule 01.06.2011