Планировщик задач и изоляция процессора в Linux - PullRequest
0 голосов
/ 29 января 2019

Я нуб ядра, включая планировщики.Я понимаю, что есть планировщик ввода-вывода и планировщик задач, и в соответствии с этим post Планировщик ввода-вывода использует обычные задачи, которые обрабатываются расписанием задач в конце.

  1. Таким образом, если я запустлю поток пользовательского пространства, который был назначен изолированному ядру (с использованием isolcpus), и он выполнит некоторую операцию ввода-вывода, выполнится ли задача, созданная планировщиком ввода-вывода, на изолированном ядре?
  2. Поскольку CFS, по-видимому, поддерживает взаимодействие с пользователем, означает ли это, что потоки, интенсивно использующие ЦП, могут получить меньшее время ЦП в долгосрочной перспективе?Изолирующие ядра могут помочь решить эту проблему?
  3. Изолирующие ядра могут уменьшить задержку планирования (время, которое требуется для потока, который был помечен как работоспособный для выполнения) для потоков, привязанных к изолированным ядрам?

1 Ответ

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

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

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

С CFSПохоже, что это способствует взаимодействию с пользователем. Означает ли это, что потоки, интенсивно использующие ЦП, могут получить меньше времени ЦП в долгосрочной перспективе?Изоляция ядер может помочь смягчить эту проблему?

По моему мнению, изоляция процессора имеет иное применение.По сути, если в ваших приложениях есть как быстрые потоки (потоки без системных вызовов и чувствительные к задержке), так и медленные потоки (потоки с системными вызовами), вы бы хотели иметь выделенные ядра ЦП для ваших быстрых потоков, чтобы они не прерывались планированием ядра.процесс и, следовательно, может работать до их завершения без шума.Быстрые потоки обычно чувствительны к задержке.С другой стороны, медленные потоки или потоки, которые на самом деле не чувствительны к задержке и выполняют вспомогательную логику для вашего приложения, не должны иметь выделенных ядер ЦП.Как упоминалось ранее, isloting процессорные серверы другого назначения.Мы все это делаем в нашей организации все время.

Изоляция ядер может уменьшить задержку планирования (время, которое требуется для потока, который был помечен как выполняемый, чтобы быть выполненным) для потоков, которые находятся в очередик изолированным ядрам?

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

Надеюсь, это поможет.

...