Читать книгу Cуперкомпьютеры: администрирование - Сергей Анатольевич Жуматий - Страница 16
Глава 2. Как устроен суперкомпьютер
InfiniBand
Утилиты для просмотра информации по сетям InfiniBand
ОглавлениеВ этом разделе мы приводим примеры выдачи некоторых утилит из комплекта OFED с объяснениями выдаваемой информации. Эти данные помогут сориентироваться в том, что происходит в сети InfiniBand, и диагностировать некоторые ошибки в её работе.
Команда ibstat
показывает состояние всех портов на всех адаптерах InfiniBand, установленных на узле, где она запущена
Сначала выводится информация по адаптеру: его имя (mlx5_0
), тип адаптера (название модели), количество портов, версии встроенного программного (firmware) и аппаратного обеспечения, а также идентификаторы Node GUID и System Image GUID.
Для каждого порта в строке Link layer
выводится тип подключения: InfiiniBand или Ethernet. Некоторые адаптеры InfiniBand позволяют подключаться как к сети InfiniBand, так и к Ethernet. Тип подключения определяется установленным трансивером. Строка Port GUID
показывает GUID порта. Base lid
– первый LID, присвоенный данному порту. Всего порту присвоено, как говорилось выше, 2LMC подряд идущих LID. SM lid
– LID порта, на котором работает менеджер данной подсети. Rate – скорость передачи данных, на которой работает порт (56 в данном случае – это режим 4x FDR).
Physical state
– состояние физического уровня передачи данных. Нормальное состояние – LinkUp
. Также может быть Disabled
, Polling
(в это состояние порт переходит после включения), Configuration
(согласование режимов работы с другой стороной связи), Recovery
(восстановление после сбоя связи). Есть и другие состояния, но их появление означает серьёзный сбой в работе оборудования, и мы их здесь описывать не будем.
State
– состояние канального уровня передачи данных. Active
– состояние нормального функционирования, возможна передача любых типов данных. Down
– передача данных невозможна (физический уровень ещё не перешёл в состояние LinkUp
). Initialize
– состояние, в которое канальный уровень переходит сразу после того, как физический уровень перешёл в состояние LinkUp
. В этом состоянии возможны приём и передача только пакетов управления подсетью (SMP, Subnet Management Packets). В этом состоянии менеджер подсети должен настроить порт (задать LID и прочие параметры) и перевести порт в состояние Active
. Есть и другие состояния, но порт не должен находиться в них долгое время, поэтому мы опустим их описания.
Capability mask
– набор флагов, описывающих поддерживаемые портом режимы работы (скорости и т. п.).
Команда ibstatus
также выводит информацию обо всех портах, но немного в другом формате, и выдаёт частично отличающийся набор данных:
Обратите внимание, что информация о базовом LID и LID менеджера подсети дана в шестнадцатеричном виде. Более подробно дана информация о скорости, на которой работает порт. Ещё добавлена строка default gid
, в которой указан GID для данного порта.
Иногда нужно узнать, какой машине назначен конкретный LID. Для этого можно применить утилиту smpquery
. Вообще эта утилита предназначена для посылки пакетов управления подсетью SMP (Subnet Management Packet) и выдачи ответов в понятной человеку форме. В нашем случае нам нужен запрос описания узла (node description). Вот пример выдачи команды smpquery nodedesc 914
(запрос описания узла с LID 914
):
Узел ответил, что LID 914
назначен адаптеру HCA-1 вычислительного узла с именем n51001
.
При помощи smpquery
доступна информация о том узле, которому адресован запрос. В то же время менеджер подсети имеет информацию обо всех узлах подсети. Запросить информацию у менеджера подсети можно при помощи утилиты saquery
. Информацию об узле подсети с LID 914
можно запросить командой saquery 914
. Вот пример выдачи такой команды:
В последней строке указано описание узла, включающее имя хоста. Также приводится дополнительная информация. Ещё раз обращаем внимание, что команда smpdump
позволяет запрашивать информацию об узле в сети InfiniBand у самого этого узла, а команда saquery
– у менеджера подсети. Если результаты этих запросов различаются или если команда saquery
выдаёт ошибку – это свидетельство того, что имеются проблемы с менеджером подсети. Ещё две полезные утилиты при диагностике сетей InfiniBand – утилиты ibnetdiscover
и ibdiagnet
. Утилита ibnetdiscover
пытается обнаружить все компоненты подсети: конечные узлы, коммутаторы, маршрутизаторы и связи между ними, и выводит информацию обо всех найденных компонентах. Утилита ibdiagnet
также пытается найти все компоненты подсети, но кроме этого она ещё и пытается обнаружить ошибки в конфигурации подсети, такие как совпадающие GUID, скорости портов и т. п.
Мы не будем приводить примеры выдачи этих утилит, так как они достаточно объёмны, а для ibdiagnet
ещё и состоят из нескольких файлов. Мы упоминаем эти утилиты, чтобы иметь представление, какие средства можно использовать при диагностике проблем с сетью InfiniBand.
Утилиты, которые посылают информацию в сеть, имеют ключи для выбора адаптера и порта, с которым следует работать (напомним, что в разных подсетях один и тот же LID может относиться к разным устройствам). Ключ -C
предназначен для указания адаптера (например, mlx4_0
в примерах выше), а ключ -P
позволяет указать номер порта заданного адаптера (порты нумеруются, начиная с 1).