В многоядерной системе каждый процессор будет иметь собственное ядро ​​Linux?

2309
tracemein

Я имел в виду, что в многоядерной системе с числом процессоров 'n' будет ли на каждом процессоре установлено собственное ядро ​​linux, или на всех процессорах будет копия одного и того же образа ядра?

Другой вопрос, касающийся многоядерности - это трассировка ядра. Поскольку трассировка работает на уровне ядра, следует ли выполнять трассировку для каждого процессора отдельно, или можно выполнить трассировку ядра в целом для всей сборки процессора?

2
Звучит как вопрос супер пользователя, так как он не имеет прямого отношения к программированию. Mark Byers 14 лет назад 3
Я не уверен, что этот вопрос является довольно фундаментальным для орехов и болтов ядер. Я бы хотел оставить здесь вопрос. stsquad 14 лет назад 1

3 ответа на вопрос

7
DigitalRoss

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

Strace реализован с помощью ptrace, который, я считаю, работает с отдельными PID, поэтому я думаю, что это означает, что он будет отслеживать только выполнение одного потока.

Конечно, есть переменные per-cpu для вещей, которые имеют отношение только к работе на одном ядре. stsquad 14 лет назад 0
0
t0mm13b

У вас будет один образ ядра с разделами кода, выполненными по числу ядер / процессоров. Это будет варьироваться в зависимости от параметров ядра / как оно было скомпилировано.

Относительно трассировки ядра у вас все еще будет одна трассировка!

Помните, что одно и то же ядро ​​будет выполняться несколькими процессорами / ядрами ...

Надеюсь, это поможет, С наилучшими пожеланиями, Том.

0
tracemein

Спасибо всем за ваши ответы. Я провел небольшое исследование и обнаружил, что оба варианта возможны в многоядерных системах. Многоядерная система SMP будет иметь одно ядро ​​Linux для всех ядер, где, как и в многоядерной системе AMP, каждое ядро ​​будет иметь свое собственное ядро. Как правило, некоторые многоядерные системы будут иметь несколько ядер для AMP, выполняющих критические задачи в реальном времени, а остальные будут SMP, выполняющими некритические и обычные задачи.

Вопрос, который я задал, касается трассировки ядра. В настоящее время большинство ядер поставляются со встроенными kprobes, которые позволяют разработчикам ядра получать информацию о производительности ядра. Я думаю, ответ на первый вопрос также решает этот вопрос. В SMP генерируется одна трассировка для ядра, где, как и в AMP, генерируется столько трасс, сколько число процессоров.

AMP расшифровывается как Asymmetric Multi Processing, SMP обозначает Symmetric Multi Processing

Похожие вопросы