• Http://fabrikaokon.ru

    Пластиковые окна отзывы - http://fabrikaokon.ru, цены на окна пвх в типовых квартирах.

    www.fabrikaokon.ru





Linux Kernel (Ядро линукса) (часть 1)


Области планирования

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

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

Каждая группа из областей верхнего уровня соответствует дочерней области планирования и включает в себя один физический процессор. Области планирования нижнего уровня (называемые также базовыми областями планирования) состоят из двух групп, по одной для каждого логического процессора.
На рис. 7.2, в иллюстрируется двухуровневая иерархическая структура для восьмипроцессорной архитектуры NUMA с двумя узлами по четыре процессора в каждом. Область верхнего уровня организована в две группы, каждая из которых соответствует отдельному узлу. Каждая базовая область планирования охватывает процессоры внутри узла и состоит из четырех групп по одному процессору.

Любая область планирования имеет дескриптор sched domain, а любая группа внутри нее — дескриптор sched group. Дескриптор sched domain включает в себя поле groups, указывающее на первый элемент в списке дескрипторов групп. Кроме того, поле parent структуры sched domain указывает на дескриптор родительской области планирования, если таковая существует.

Дескрипторы sched domain всех физических процессоров в системе хранятся в переменных phys domains, причем у каждого процессора своя такая переменная. Если ядро не поддерживает Hyper-Threading, эти области находятся на нижнем уровне иерархии областей планирования, а поля sd дескрипторов очередей на выполнение указывают на них. Иными словами — это базовые области планирования. Если же ядро поддерживает Hyper-Threading, области планирования нижнего уровня хранятся в процессорных переменных cpu_domains.

Предыдущая страница | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 | Следующая страница




Возможно, Вас также заинтересует:

ОС Knoppix - это Linux без проблем

ВведениеЕсли вы цените свое время, умеете считать деньги и знаете стоимость информации, то эта книга для вас. А так как к книге прилагается компакт- диск с готовой к работе операционной системой Knoppix Live CD, то лишь достаточно вставить его в привод и перегрузить компьютер,...

Linux Kernel (Ядро линукса) (часть 1)

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

Linux Kernel (Ядро линукса) (часть 2)

Копирование при записи В системах Unix первых поколений создание процесса было реализовано довольно неуклюже: получив системный вызов fork о, ядро в буквальном смысле дублировало все адресное пространство родителя и присваивало копию процессу-потомку. Такая операция...

Linux Kernel (Ядро линукса) (часть 3)

Буферы блоков и головы буферовУ каждого буфера есть дескриптор голова буфера, имеющий тип buffer head. Этот дескриптор содержит всю информацию, необходимую ядру для работы с блоком, так что перед обработкой блока ядро обязательно проверяет голову...