PARUS
Страница проекта ПАРУС / Руководство / Утилиты / network_test EnglishRus

Краткая информация

Имя файла network_test
Краткое описание Тестирует многопроцессорную систему на предмет задержек при передаче данных между процессорами
Формат вызова

network_test <список параметров>

Ключ Значение по умолчанию Описание
{ -f | --file } $PARUS_INSTALL_DIR$\
/etc/network.mtr
Имя выходного файла
{ -t | --type } "one_to_one" Тип проводимого теста. Доступные типы:
one_to_one
async_one_to_one
send_recv_and_recv_send
all_to_all
{ -b | --begin } 0 Установка длины начального сообщения
{ -e | --end } 1000000 Установка длины конечного сообщения
{ -s | --step } 100 Величина шага
{ -n | --num_repeats } 100 Количество повторений
{ -h | --help }   Показ краткой информации по использованию
{ -v | --version }   Вывод текущей версии (PARUS version: 1.2.9)

Тестирование коммуникационной среды

Тесты производительности коммуникационной среды измеряют время передачи сообщений между MPI-нитями в секундах. Измеряются не только секунды, но и доли секунд с точностью предоставляемой функцией MPI_Wtime. Результаты измерений формируют матрицу размерности NxN, где N — число задействованных MPI-нитей, элемент (i, j) матрицы соответствует времени передачи сообщения от i-ой нити к j-ой. Для каждой длины сообщения тест «прогоняется» некоторое количество раз (оно может задаваться как параметр программы), а затем берется среднее арифметическое по этим значениям, - это делается для большей точности измерений. По способу передачи сообщений между процессорами существует несколько разновидностей тестов:

  • all_to_all — тест основан на одновременной неблокированной передаче данных от каждого к каждому и предназначен для выяснения «стрессоустойчивости» сети. По идее, должен вызывать множество коллизий в коммуникационной среде. Измеряется время между инициализацией неблокированного приёма MPI_Irecv() и соответствующем ему MPI_Waitany(). Данное значение вносится в матрицу, соответствующую тестируемой длине сообщения в позицию (i, j), где j — принимающая нить, i — нить, из которой было отправлено сообщение
  • one_to_one — тест, производящий блокированную передачу от i-ой нити к j-ой. Во время передачи данных остальные нити (кроме i-ой и j-ой) «молчат». Измеряется время исполнения функции MPI_Recv(), после чего это время считается временем передачи сообщения от i-ой нити к j-ой. Такая передача производится для всех нитей, то есть i и j пробегают значения от 1 до n , где n — число задействованных процессов. Исключение составляет ситуация, когда i = j, в этом случае в матрицу записывается 0. При помощи данного теста можно определить пропускную способность каналов связи между процессорами (машинами) при условии, что в сети при этом нет посторонних передач данных, которые могут влиять на производительность сети
  • async_one_to_one — тест, осуществляющий неблокированный обмен MPI-сообщениями навстречу друг другу между i-ой и j-ой нитью. Два процесса одновременно вызывают MPI_Isend(), затем с обеих сторон одновременно инициируется MPI_Irecv() и MPI_Waitany(). После выполнения MPI_Waitany() i-ой нитью измеряется время. Разница между измеренным временем и моментом инициализации соответствующего неблокированного приёма сообщения вносится как время передачи от j-ой нити к i-ой. При помощи рассмотренного теста можно определить, является ли канал между двумя процессорами полнодуплексным. Если канал полудуплексный, то полученные результаты будет в 2 (и более) раза меньше, чем результаты, полученные при помощи теста one_to_one
  • send_recv_and_recv_send — тест, предназначенный для выяснения усредненной производительности обменов в коммуникационной среде многопроцессорной системы. Блокированное сообщение передаётся от i-ой нити к j-ой, а затем сразу ретранслируется обратно от j-ой к i-ой. Время измеряется между первой отправкой сообщения и получением ответа обратно. После этого оно оно делится на 2 и в таком виде вносится в матрицу как время передачи от i-ой MPI-нити к j-ой.
 
Администратор: Алексей Сальников