Контроль производительности.

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

Накопленная диспетчером информация – рабочий профиль – может использоваться для анализа выполнения параллельной программы. Далее описан примерный сценарий анализа.

Пусть задан вопрос: работает ли программа эффективно.

Гипотеза H0: программа работает эффективно.

Гипотеза H1: программа работает неэффективно.

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

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

Упрощенно это выражается следующим выражением:

Можно взять критерий: Eп < 0,8.

Итак, если время простоя занимает более 20 процентов общего времени работы программы, то есть основания считать работу программы неэффективной.

Подтвердив данную гипотезу – первого уровня, – переходим к анализу гипотез второго уровня. Предположим, в программе имеется «узкое место» в плане обмена данных. Рассмотрим участок графа потоков данных программы, показанный на рисунке.

Взаимодействуют две задачи через канал. Задача T1 генерирует данные, они передаются по каналу, являющемуся выходным для T1, а задача T2 принимает их на свой входной порт и обрабатывает.

Существует два типа «узких мест»:

1. T2 не успевает обрабатывать входные данные, T1 находится в состоянии ожидания обработки выходных данных. При этом наблюдается:

a) загруженность T2 высока (> 90 %), загруженность T1 низка (< 50%),

b) количество сгенерированных L1 и обработанных L2 данных находятся в отношении L1 – L2 > d > 0,

c) длина очереди данных входного канала для T2 велика.

2. T1 генерирует мало данных, T2 находится в состоянии ожидания входных данных. При этом наблюдается:

a) загруженность T1 высока (> 90 %), загруженность T2 низка (< 50%),

b) длина очереди данных входного канала для T2 мала.

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

Рассмотрим метрику канала связи процессоров – среднее время обмена. Для первой задачи это функция send, для второй – recv.

Пусть процесс изменения этих метрик во времени выглядят примерно так, как показано на рисунке.

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

Если имеет место вторая причина, то все наоборот.

Для подтверждения тех или иных гипотез можно применить методы анализа случайных процессов.

Заключение

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

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

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

Перейти на страницу: 1 2