Friday, May 18th

Last update12:13:00 PM GMT

Вы находитесь на: FreeBSD Службы ядра Планировщик ULE

Планировщик ULE

Планировщик ULE был разработан как часть пересмотра FreeBSD для поддержки SMP. Новый планировщик был разработан по нескольким причинам.

Для обращения к потребности притяжения к процессору (processor affinity) в системах SMP.

Для предоставления лучшей поддержки симметричной многопоточности (SMT) - процессоры с несколькими ядрами на одном чипе.

Для повышения производительности алгоритма планирования таким образом, чтобы он больше не зависел от числа потоков в системе.

Целью многопроцессорной системы является применение для решения проблемы или ряда проблем мощи нескольких процессоров, чтобы достичь результата за меньшее время, чем на однопроцессорной системе. Если в системе столько же выполняющихся потоков, сколько процессоров, достижение этой цели просто. Каждый выполняющийся поток получает для себя свой процессор и выполняется до завершения. Обычно имеется множество выполняющихся потоков, соперничающих за небольшое число процессоров. Одной из задач планировщика является обеспечение того, чтобы процессоры были все время заняты и не расходовали впустую свои циклы. Когда поток завершает свою работу или блокируется в ожидании ресурса, он удаляется из процессора, на котором выполнялся. Пока поток выполняется на процессоре, он заполняет своим рабочим набором - выполняемыми им инструкциями и данными, с которыми он работает, - кеш памяти процессора. Перемещение потока имеет свою цену. Когда поток перемещается от одного процессора на другой, его находящийся в кеше рабочий набор теряется и должен быть удален из процессора, на котором он работал, и загружен в новый процессор, на который он был перемещен. Производительность системы SMP с простым планировщиком, который не принимает в расчет эту стоимость, может оказаться ниже, чем у однопроцессорной системы. Термин притяжение к процессору (processor affinity) описывает планировщик, который перемещает потоки лишь при необходимости, чтобы обеспечить работой незанятый процессор.

В настоящее время многие микропроцессоры обеспечивают поддержку симметричной многопоточности, когда процессор содержит несколько процессорных ядер, в каждом из которых может выполняться поток. Процессорные ядра в SMT-npo-цессоре разделяют все ресурсы процессора, такие, как кеши памяти и доступ к основной памяти, поэтому они более тесно синхронизированы по сравнению с процессорами в системе SMP. С точки зрения потока он не знает, что имеются другие потоки, выполняющиеся на том же самом процессоре, поскольку процессор работает с ними независимо. Одним из фрагментов кода системы, которому нужно знать о нескольких ядрах, является алгоритм планирования. Случай SMT является слегка отличающейся версией проблемы притяжения к процессору, представленной системой SMP. Каждое процессорное ядро можно рассматривать как процессор со своим собственным набором потоков. В системе SMP, составленной из процессоров, поддерживающих SMT, планировщик рассматривает каждое ядро процессора как менее мощный ресурс, но на который дешевле перемещать потоки.

Оригинальный планировщик FreeBSD поддерживает глобальный список процессов, который он просматривает раз в секунду для пересчета их приоритетов. Использование одного списка для всех потоков означает, что производительность планировщика зависит от числа задач в системе, и по мере роста числа задач большее процессорное время должно тратиться в планировщике, поддерживающем список. Целью проекта планировщика ULE - избежать необходимости просмотра всех выполняющихся в системе потоков для принятия планирующих решений.


Похожие:
Еще по теме:
Советуем прочитать:

Сейчас 70 гостей онлайн

Реклама на сайте: