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

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


Рабочие схемы SMP

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

Ниже перечислены критерии работоспособности программы в среде SMP:

SMP-защищенность
Программа удовлетворяет этому критерию, если она не выполняет никаких действий, которые могли бы вызвать неполадки в работе системы SMP (например, параллельный доступ к общим данным). Это минимальное требование, которое предъявляется к программам, работающим в среде SMP.

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

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

Возможность многопроцессорной обработки

Когда мы наблюдаем работу многозадачной операционной системы на мощном компьютере, нам кажется, что она выполняет очень много задач одновременно. На самом деле, даже в больших рабочих схемах в каждый момент времени поддерживается лишь небольшое число нитей. Это справедливо даже для однопроцессорной системы, в которой нет проблемы сериализации доступа к данным. Если число готовых к выполнению нитей в системе меньше числа процессоров, то часть времени один или несколько процессоров будут простаивать.

Число готовых к выполнению нитей равно общему числу нитей в системе

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

Существует два способа адаптации рабочей схемы к многопроцессорной среде:

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

Масштабируемость производительности в многопроцессорных системах

В системах SMP с реальной рабочей схемой увеличение числа процессоров не всегда приводит к значительному росту производительности. При масштабируемости системы возникают следующие проблемы:

Все эти факторы влияют на масштабируемость рабочей схемы. Масштабируемость указывает, насколько повысится производительность системы с данной рабочей схемой при добавлении новых процессоров. Она равна отношению производительности многопроцессорной системы к производительности однопроцессорной системы с той же рабочей схемой. Например, если однопроцессорная система с данной рабочей схемой обрабатывает 20 запросов в минуту, а четырехпроцессорная - 58 запросов в минуту, то коэффициент масштабируемости равен 2.9. Это довольно высокий коэффициент масштабируемости. У рабочей схемы, состоящей из вычислительных программ с большим периодом выполнения, содержащих небольшое число операций ввода-вывода и не работающих с общими данными, коэффициент масштабируемости на четырехпроцессорной системе будет равен 3.2 - 3.9. У большинства реальных рабочих схем коэффициент намного ниже. Поскольку оценку масштабируемости получить довольно сложно, она всегда должна базироваться на информации о реальных рабочих схемах.

Трудности, возникающие при масштабируемости, проиллюстрированы на приведенном ниже рисунке. Рабочая схема системы представляет собой последовательность команд. При выполнении каждой команды треть времени тратится на обычную обработку, треть - на ожидание ввода-вывода, а еще треть - на работу с блокировками. В однопроцессорной системе, независимо от наличия блокировки, в каждый момент времени выполняется только одна команда. За рассматриваемый промежуток времени (время автономного выполнения команды * 5) однопроцессорная система обрабатывает 7.67 команд.

Рис. 3-4. Масштабируемость многопроцессорной системы. На этом рисунке проиллюстрированы трудности, возникающие при масштабировании системы. Рабочая схема системы представляет собой последовательность команд. При выполнении каждой команды треть времени тратится на обычную обработку, треть - на ожидание ввода-вывода, а еще треть - на работу с блокировками. В однопроцессорной системе, независимо от наличия блокировки, в каждый момент времени выполняется только одна команда. За рассматриваемый интервал времени однопроцессорная система обрабатывает 7,67 команд. За тот же интервал времени многопроцессорная система обрабатывает 14 команд, если коэффициент масштабируемости равен 1,83.
Рисунок h03i3

Если программа будет выполняться на двух процессорах, скорость выполнения увеличиться вдвое, так как блокировка всего одна. Для простоты будем считать, что блокировка влияет только на работу процессора B. За показанный промежуток времени многопроцессорная система обрабатывает 14 команд. Таким образом, коэффициент масштабируемости равен 1.83. В качестве примера мы взяли систему с двумя процессорами, так как в данном случае дополнительные процессоры не увеличили бы производительность (потому что блокировка занята всегда). В четырехпроцессорной системе коэффициент масштабируемости остался бы прежним или даже снизился.

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

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

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

Кроме того, следует заметить, что в общем случае однопроцессорная система SMP будет работать на 5-15 процентов медленнее, чем аналогичная однопроцессорная система, в которой будет работать версия операционной системы для однопроцессорной системы.

Время ответа в многопроцессорных системах

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

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

Максимальная производительность, которой можно достичь путем применения всех трех способов, вычисляется по закону Амдаля:

Рис. 3-5. Закон Амдаля. В законе Амдаля говорится, что ускорение составляет время выполнения программы в многопроцессорной системе, поделенное на время линейной обработки плюс время выполнения в многопроцессорной системе (1/(x+x/n)). Предельное ускорение при n, стремящемся к бесконечности, составляет 1 поделенное на x.
Рисунок h03i4

Например, если 50 процентов вычислений программы распараллелить нельзя, то время отклика можно улучшить не более, чем в 2 раза (в 4-х процессорной системе коэффициент составит 1.6).


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