[ Страница назад | Страница вперед | Содержание | Индекс | Библиотека | Юридическая информация | Поиск ]

Руководство по настройке производительности


Планирование выполнения нитей в SMP

С появлением в операционной системе AIX версии 4 поддержки нитей, в управлении выполнением программы стало участвовать два объекта:

В операционной системе AIX версии 4 планировщик работает с нитями.

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

Существует два уровня поддержки нитей:

Управление старыми рабочими схемами

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

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

Для изменения приоритета предназначены команды nice и renice, а также системные вызовы setpri() и setpriority() (как и в предыдущих версиях). Планировщик передает управление нити максимум на один квант времени (как правило, 10 мсек), а затем передает управление следующей готовой к выполнению нити с таким же (или более высоким) приоритетом. Более подробная информация по этому вопросу приведена в разделе Конкуренция за использование процессора.

Переменные планирования

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

Приоритет
Значение приоритета - это основной фактор, от которого зависит вероятность захвата нитью очередного кванта времени процессора.

Положение в очереди выполнения планировщика
Положение нитей, готовых к выполнению, в очереди планировщика зависит от числа нитей с более высоким приоритетом.

Стратегия планирования
От этого атрибута зависит, что происходит с активной нитью по истечении выделенного ей кванта времени.

Область действия
Этот атрибут указывает, конкурирует ли нить со всеми нитями в системе, или только с нитями своего процесса. Выполнение нитей pthread, действующих в рамках процесса, планируется библиотекой, а выполнение нитей с глобальной областью действия планируется ядром. Для управления нитями "pthread", конкурирующими только с нитями своего процесса, планировщик библиотеки использует пул нитей ядра. Нити pthread, выполняющие операции ввода-вывода, рекомендуется создавать с глобальной областью действия. Понятие области действия применяется по отношению к нитям libpthreads.a.

Принадлежность процесса процессору
Степень связанности процессов с процессорами сказывается на производительности системы.

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

По умолчанию
Процесс состоит из одной нити, приоритет которой изменяется в зависимости от нагрузки на CPU, а стратегия планирования равна SCHED_OTHER.

Управление на уровне процесса
Процесс может состоять из одной или нескольких нитей, но их стратегия планирования остается прежней (по умолчанию - SCHED_OTHER). Эта стратегия позволяет использовать существующие функции для изменения значения nice и задания фиксированных приоритетов. Все эти функции применяются ко всем нитям в составе процесса. При выполнении функции setpri() для всех нитей процесса устанавливается стратегия планирования SCHED_RR.

Управление на уровне нитей
Процесс может состоять из одной или нескольких нитей. Для этих нитей можно установить стратегию планирования SCHED_RR или SCHED_FIFOn. Приоритет нитей фиксирован. Для его изменения используются функции уровня нитей.

Подробное описание стратегий планирования приведено в разделе Стратегия планирования нитей.


[ Страница назад | Страница вперед | Содержание | Индекс | Библиотека | Юридическая информация | Поиск ]