Как делает sched_setaffinity () работа?

Пространство имен должно быть зарегистрировано:

doc.xpath('//dms:ComplexResponse', 'dms' => 'http://dmsmanagerservice').first.attributes['ErrorCode'].value
12
задан Community 23 May 2017 в 12:34
поделиться

4 ответа

sched_setaffinity() simply tells the scheduler which CPUs is that process/thread allowed to run on, then calls for a re-schedule.

The scheduler actually runs on each one of the CPUs, so it gets a chance to decide what task to execute next on that particular CPU.

If you're interested in how you can actually call some code on other CPUs, I suggest you take a look at smp_call_function_single(). In case we want to call something on another CPU, this calls generic_exec_single(). The latter simply adds the function to the target CPU's call queue and forces a reschedule through some IPI stuff (if the queue was empty).

Bottom line is: there no actual SMP variant of the _jmp_ instruction. Instead, code running on other CPUs cooperates in order to accomplish the task.

9
ответ дан 2 December 2019 в 21:04
поделиться

Я думаю, что вы не понимаете, что ядро ​​работает на всех CPU сердечники. При каждом прерывании таймера (~ 1000 в секунду) планировщик запускается на каждом процессоре и выбирает процесс для запуска. Нет ни одного процессора, который каким-то образом велел бы другим запускать процесс. sched_setaffinity () работает, просто устанавливая флаги для процесса. Планировщик считывает эти флаги и не будет запускать этот процесс на своем ЦП, если он не установлен.

4
ответ дан 2 December 2019 в 21:04
поделиться

Где в коде сборки мы указываем, какое ядро ​​выполняет эту операцию?

Сборка не задействована Вот. Каждая задача (поток) назначается одному процессору (или ядру в ваших терминах) одновременно. Чтобы остановить работу на одном процессоре и продолжить на другом, задача должна « перенести » (также это ). Когда задача мигрирует из одного ЦП в другой, планировщик выбирает ЦП, который более простаивает среди ЦП, разрешенных sched_setaffinity () .

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

1
ответ дан 2 December 2019 в 21:04
поделиться
Другие вопросы по тегам:

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