Я экспериментирую с моим алгоритмом распределенной кластеризации (реализованным с помощью MPI) на 24 компьютерах, которые я настроил в качестве кластера с помощью BCCD (Bootable Cluster CD), который можно загрузить по адресу http://bccd.net/.
Я написал пакетную программу для запуска моего эксперимента, которая заключается в том, что мой алгоритм несколько раз менял количество узлов и размер входных данных.
Я хочу знать объем данных, используемых в коммуникациях MPI для каждогозапустить мой алгоритм, чтобы я мог видеть, как изменяется объем данных при изменении ранее упомянутых параметров.И я хочу сделать все это автоматически с помощью пакетной программы.
Кто-то сказал мне использовать tcpdump, но я обнаружил некоторые трудности в этом подходе.
Во-первых, я не знаю, какВызывайте tcpdump в моей пакетной программе (которая написана на C ++ с использованием системы команд для выполнения вызовов) перед каждым запуском моего алгоритма, поскольку tcpdump требует, чтобы другой терминал работал параллельно с моим приложением.И я не могу запустить tcpdump на другом компьютере, так как сеть использует коммутатор.Поэтому мне нужно запустить его на главном узле.
Во-вторых, я видел трафик с помощью tcpdump во время моего эксперимента и не мог понять, какой порт использовался MPI.Кажется, использовать много портов.Я хотел знать, что для фильтрации пакетов.
В-третьих, я попытался захватить целые пакеты и сохранить их в файл, используя tcpdump, и через несколько секунд файл был размером 3,5 МБ.Но весь мой эксперимент занимает 2 дня.Таким образом, конечный файл журнала будет огромным, если я последую этому подходу.
Идеальным подходом было бы собрать только поле размера в заголовке пакетов и суммировать его, чтобы получить общий объем передаваемых данных.Таким образом, файл журнала будет намного меньше, чем если бы я захватывал весь пакет.Но я не знаю, как это сделать.
Еще одно ограничение - у меня нет доступа к диску компьютера.Таким образом, у меня есть только RAM и мой 4 Гб USB-накопитель.Поэтому у меня не может быть огромных лог-файлов.
Я уже думал об использовании какого-либо инструмента трассировки или профилирования MPI, такого как упомянутые в http://www.open -mpi.org / faq /? Category = perftools .До сих пор я тестировал только Sun Performance Analyzer.Проблема в том, что я думаю, что будет трудно установить эти инструменты на BCCD и, возможно, даже невозможно.В дополнение к этому, этот инструмент заставит мой эксперимент закончиться дольше, так как он добавляет накладные расходы.Но если кто-то знаком с BCCD и считает, что использовать один из этих инструментов является хорошим выбором, пожалуйста, дайте мне знать.
Надеюсь, у кого-то есть решение.