- •Глава 11
- •В.Г.Олифер, н.А.Олифер. Сетевые операционные системы. Учебное пособие.-сПб.:бхв-Петербург, 2006.-536с.
- •В.А.Шеховцов. Операційні системи. Підручник .-к.:Виканавча група внv. 2005. 576с.
- •Столлингс в. Операционные системы. М.: Вильямс, 2001. -672с.
- •Раздел 11
- •11.1. Многопроцессорные системы
- •11.1.1. Типы многопроцессорных систем
- •11.1.2. Поддержка многопроцессорной в операционных системах
- •11.1.3. Производительность многопроцессорных систем
- •11.1.4. Планирование в многопроцессорных системах
- •11.1.5. Родство процессора
- •11.1.6. Поддержка многопроцессорности в Linux
- •11.1.7. Поддержка многопроцессорной в Windows xp
- •11.2. Принципы разработки распределенных систем
- •11.2.1. Отдалены вызовы процедур
- •11.2.2. Использование Sun rpc
- •11.2.3. Использование Microsoft rpc
- •11.2.4. Обработка ошибок и координация в распределенных системах
- •11.3. Распределеные файловые системы
- •11.3.1. Организация распределенных файловых систем
- •11.3.2. Файловая система nfs
- •11.3.3. Файловая система Microsoft dfs
- •11.4. Современные архитектуры распределенных систем
- •11.4.1. Кластерные системы
- •11.4.2. Grid-системы
- •Контрольные вопросы и задания
11.1.5. Родство процессора
Под родством процессора (CPU affinity) понимают вероятность того, что поток будет запланирован для выполнения на процессоре, который выполнял код этого потока в прошлый раз . Высокое родство означает малую вероятность миграции потока между процессорами во время его выполнения.
Типы родства процессора
Есть два типа родства процессора — мягкая (soft affinity) и жесткая (hard affinity).
Мягкое или натуральное родство - свойство планировщика поддерживать выполнение потока на одном и том же процессоре на протяжении максимального промежутка времени. Мягкое родство не является требованием, обязательным для выполнения, в случае необходимости поток может мигрировать на другой процессор, но это должно случаться как можно реже.
Отсутствие реализации мягкого родства в планировщике ОС может повлечь появление эффекта пинг-понга (ping-pong effect), когда каждое переключение контекста влечет миграцию потока на другой процессор.
Жесткое родство задают для отдельного потока, это - явное ограничение набора процессоров, на которых ему разрешено выполняться. В таком случае говорят, что поток привязанный к одному или нескольким процессорам. Требование жесткого родства является обязательным (например, если определенно, что поток может быть выполнен только на процессоре 0, процессор 1 для него будет не доступен). Для задания жесткого родства обычно реализуют специальный системный вызов.
Преимущества задания родства процессора
Опишем некоторые преимущества, которые предоставляет задание родства процессора для потоков.
Важнейшим является повышение эффективности использования аппаратного кэша. Чем реже мигрируют потоки между процессами, то ниже вероятность очистки кэша. Это связано с тем, что любая попытка изменить данные в коде потока, который начал выполнение на новом процессоре, влечет перекрестную очистку кэша для процессоров, где он выполнялся раньше. Кроме того, после миграции на новый процессор поток никогда не находит в его кэше «свои» данные, в результате чего процент попаданий кэша уменьшается. Особенно производительность снижается в результате эффекта пинг-понга.
Второе преимущество заключается в том, что, задав жесткое родство, можно выделять потоки, которым для выполнения нужные гарантированы процессорные ресурсы (например, потоки реального времени). В этом случае можно привязать к некоторому подмножеству процессоров все потоки, кроме одного, а выделеный поток - другим процессорам. Например, если привязать конкретный поток к одному из процессоров системы, а другие потоки выполнять на всех других процессорах, то процессор очутится в распоряжении выделенного потока, который даст возможность контролировать его выполнение в реальном масштабе времени.
Кроме того, жесткое родство дает возможность эффективнее распределять системную нагрузку процессорами. Например, когда известно, что в системе с четырьмя процессорами постоянно выполняются процессы А и В, при этом выполнение А требует 75 % процессорного времени, а В — 25 %, целесообразно привязать процесс В к одному из процессоров, а процесс А — к остальным трем.
Маска родства
Задание жесткого родства для потока происходит с использованием маски родства (affinity mask) - битовой маски, каждый бит которой соответствует процессору, присутствующему в системе. Когда такой бит отключен, то это значит, что потоку разрешено выполняться на соответствующем процессоре; когда нет, то это может значить, что поток не может быть выполнен на соответствующем процессоре или процессор отсутствует в системе. Эту маску передают как параметр в системный вызов задания жесткого родства, после установления ее обычно хранят в управляющем блоке потока. Дальше будут приведены примеры привязки потоков к процессорам в Linux и Windows XP с помощью задания маски родства.
