Utilisez CloudMonitor, eadm, iproute2 et l'outil de diagnostic pour surveiller le trafic eRDMA, localiser les pannes et évaluer les performances du réseau.
Prérequis
eRDMA est installé et déployé sur l'instance ECS cible. Consultez la rubrique Activer eRDMA pour une instance ECS.
Surveiller eRDMA avec CloudMonitor
CloudMonitor suit l'état d'eRDMA et prend en charge les alertes personnalisées. Pour plus d'informations, consultez la rubrique Surveillance personnalisée.
Afficher les métriques de surveillance prises en charge par eRDMA
Connectez-vous à la console CloudMonitor.
-
Dans la zone de recherche de la liste des métriques, saisissez eri pour afficher les métriques de surveillance d'eRDMA.
Les résultats de la recherche incluent les 5 métriques de surveillance eRDMA suivantes (type de métrique :
erdma, Dimensions :userId,instanceId, Statistiques :Value, MinPeriods :60s; toutes les métriques prennent en charge la configuration des alertes) :eri_active_qp_num: Nombre de connexions dans la dimension ERI de l'instance, unité : nombrerx_eri_bw_bps: Bande passante entrante dans la dimension ERI de l'instance, unité : bit/srx_eri_pkt_pps: PPS des paquets de données entrants dans la dimension ERI de l'instance, unité : nombre/stx_eri_bw_bps: Bande passante sortante dans la dimension ERI de l'instance, unité : bit/stx_eri_pkt_pps: PPS des paquets de données sortants dans la dimension ERI de l'instance, unité : nombre/s
Diagnostiquer eRDMA avec l'outil eadm
eadm est un outil en espace utilisateur déployé avec le pilote eRDMA. Il offre des fonctionnalités de surveillance en temps réel et de diagnostic pour vous aider à localiser les pannes. Ses principales fonctionnalités sont les suivantes :
Surveillance du trafic et diagnostic assisté : statistiques de trafic en temps réel pour l'ensemble du périphérique.
Interrogation et définition des configurations : configurez la fonctionnalité ACK différé et l'algorithme CC.
Voici les commandes eadm courantes. Pour connaître les autres commandes, exécutez eadm -h.
Cet outil est réservé au diagnostic et au débogage. Il peut évoluer à l'avenir et sa disponibilité n'est pas garantie dans tous les scénarios.
-
Affichez l'aide de la commande
eadm.eadm -h[root@xxx ~]# eadm -h Usage: eadm OBJECT { COMMAND | help } where OBJECT := { dump stat info ver conf help } -
Surveillez le trafic en temps réel d'un périphérique eRDMA
Requiert la version
0.2.34ou ultérieure du pilote.eadm stat -d <ibdev_name> -l<ibdev_name>: nom du périphérique eRDMA. Exécutezibv_devinfopour le trouver. Si un seul périphérique eRDMA existe, vous pouvez omettre-d <ibdev_name>.[root@xxx xxx ~]# ibv_devinfo hca_id: erdma_0 transport: eRDMA (1) fw_ver: 0.2.0 node_guid: 0216:3eff:fe13:1914 sys_image_guid: 0216:3eff:fe13:1914 vendor_id: 0x1ded vendor_part_id: 4223 hw_ver: 0x0 phys_port_cnt: 1 port: 1 state: PORT_ACTIVE (4) max_mtu: 4096 (5) active_mtu: 4096 (5) sm_lid: 0 port_lid: 0 port_lmc: 0x00 link_layer: Ethernet [root@xxx xxx ~]# eadm stat -d erdma_0 -l Monitoring erdma_0... (press CTRL-C to stop) 14:07:57 rx: 218.46 MiB/s 1000313 p/s tx: 218.46 MiB/s 1000315 p/s -
Obtenez les statistiques du périphérique eRDMA, telles que les comptes de messages CM et verbs ainsi que les comptes de trafic.
eadm stat -d <ibdev_name><ibdev_name>: nom du périphérique eRDMA. Exécutezibv_devinfopour le trouver. Si un seul périphérique eRDMA existe, vous pouvez omettre-d <ibdev_name>.[root@ixxxxxxZ ~]# eadm stat -d erdma_0 return cnts:55 listen_create_cnt : 1 listen_ipv6_cnt : 0 listen_success_cnt : 1 listen_failed_cnt : 0 listen_destroy_cnt : 0 accept_total_cnt : 300 accept_success_cnt : 300 accept_failed_cnt : 0 reject_cnt : 0 reject_failed_cnt : 0 connect_total_cnt : 300 connect_success_cnt : 300 connect_failed_cnt : 0 connect_timeout_cnt : 0 connect_reset_cnt : 0 cmdq_submitted_cnt : 266 cmdq_comp_cnt : 266 cmdq_eq_notify_cnt : 263 cmdq_eq_event_cnt : 0 -
Obtenez la version actuelle du pilote eRDMA.
eadm ver
D'autres commandes, telles que info, dump et conf, présentent des contraintes d'utilisation. Ne les exécutez que si nécessaire.
Surveiller et diagnostiquer eRDMA avec iproute2
iproute2 est une boîte à outils de mise en réseau Linux qui fournit des utilitaires tels que ip et ss pour gérer les interfaces réseau, les tables de routage et le contrôle du trafic. Utilisez sa commande intégrée rdma pour surveiller et diagnostiquer le sous-système RDMA.
La plupart des distributions Linux, telles qu'Alibaba Cloud Linux 3 et Ubuntu 20.04 ou versions ultérieures, incluent iproute2 par défaut. Consultez la documentation de votre système d'exploitation pour plus de détails.
-
Interrogez l'état du périphérique eRDMA.
rdma link[root@xxx log]# rdma link link erdma_0/1 state ACTIVE physical_state LINK_UP netdev eth0 -
Interrogez l'utilisation des ressources eRDMA, telles que le nombre de CQ, QP et MR.
RemarqueDans la communication réseau RDMA, Queue Pair (QP), Completion Queue (CQ), Memory Region (MR) et verbs Opcode constituent les composants principaux. Ils jouent un rôle essentiel dans la communication RDMA et garantissent une efficacité élevée et une faible latence.
Consultez la rubrique Capacités et spécifications d'eRDMA.
rdma res[root@xxx log]# rdma res 1: erdma_0: pd 12 cq 2 qp 200 cm_id 201 mr 301 ctx 2 -
Interrogez les statistiques de performance d'eRDMA, telles que le nombre de connexions, l'état des connexions et le nombre de paquets.
rdma -p stat[root@xxx log]# rdma -p stat link erdma_0/1 link erdma_0/1 listen_create_cnt 1 listen_ipv6_cnt 0 listen_success_cnt 1 listen_failed_cnt 0 listen_destroy_cnt 0 accept_total_cnt 500 accept_success_cnt 500 accept_failed_cnt 0 reject_cnt 0 reject_failed_cnt 0 connect_total_cnt 500 connect_success_cnt 500 connect_failed_cnt 0 connect_timeout_cnt 0 connect_reset_cnt 0 cmdq_submitted_cnt 6344 cmdq_comp_cnt 6344 cmdq_eq_notify_cnt 5453 cmdq_eq_event_cnt 0 cmdq_cq_armed_cnt 5454 erdma_aeq_event_cnt 0
Diagnostiquer et évaluer eRDMA avec l'outil de diagnostic
L'outil de diagnostic prend en charge les vérifications des fonctions de base, les vérifications de l'environnement HPC et les vérifications de latence pour eRDMA.
Résultats possibles d'une vérification de diagnostic
PASS: la vérification a réussi.SKIP: la version actuelle du système ne prend pas en charge cette vérification.FAIL: l'outil de vérification n'est pas installé ou la vérification a échoué. La commande ayant échoué est répertoriée dansfail info.Autres messages INFO : détails de la configuration eRDMA, tels que le mode d'installation, la version du pilote et l'algorithme CC.
Installer diagnose
Sur une instance configurée avec eRDMA, téléchargez l'outil de diagnostic :
-
Téléchargement depuis une URL interne
wget http://mirrors.cloud.aliyuncs.com/erdma/tools/diagnose.py -
Téléchargement depuis une URL publique
wget https://mirrors.aliyun.com/erdma/tools/diagnose.py
Diagnostiquer les fonctions de base d'eRDMA
Le test fonctionnel de base vérifie l'installation du pilote, la connectivité réseau et le mode d'installation du pilote noyau eRDMA.
Procédure :
-
Connectez-vous à l'instance configurée avec eRDMA.
Consultez la rubrique Se connecter à une instance Linux à l'aide de Workbench.
-
Téléchargez l'outil de diagnostic.
-
Téléchargement depuis une URL interne
wget http://mirrors.cloud.aliyuncs.com/erdma/tools/diagnose.py -
Téléchargement depuis une URL publique
wget https://mirrors.aliyun.com/erdma/tools/diagnose.py
-
-
Vérifiez les fonctions de base d'eRDMA :
python diagnose.py -dVoici un exemple de sortie. Pour obtenir des descriptions des éléments de diagnostic, consultez la rubrique Éléments de diagnostic des fonctions de base d'eRDMA.
[root@jxxx ~]# python diagnose.py -d [INFO] Begin to run erdma basic diagnoses. It's better to ensure that erdma driver and related tools, e.g. eadm, ibv_devinfo, rdma, have been installed. [INFO] The diagnose results mean: [INFO] PASS: pass the test or meet the requirement. [INFO] SKIP: encounter some problems when running the diagnose. [INFO] FAIL: test failed or requirements are not met. [INFO] XXXX: the erdma-related information, e.g. erdma driver version, cc algorithm. Name Result Desc fail info ------------------------------------------------------------------------------------------------------------------------------ erdma device PASS erdma pci device is present erdma installed PASS erdma module has been installed erdma loaded PASS erdma module has been loaded ibverbs loaded PASS ib_uverbs module has been loaded erdma tools PASS eadm|rdma|ibv_devinfo tools have been installed hca detected PASS IB device exist hca active PASS status is PORT_ACTIVE erdma stats PASS no failed counter network config PASS network configuration seems ok erdma dmesg PASS no concerning error logs detected atomic support PASS atomic capacity support go-back-n support FAIL Go-back-N capacity support CHCK FAILED [eadm info -t ext_attr -d erdma_0 | grep -w attr_mask | awk '{print $2}'] erdma install mode Standard erdma installation mode kernel driver version 0.2.37 erdma kernel driver version rdma-core version 44.1-2 rdma-core version cc algorithm hpcc_rtt current cc algorithm
Diagnostiquer l'environnement HPC eRDMA
Les applications HPC dans un environnement eRDMA peuvent nécessiter des dépendances et des configurations supplémentaires. L'outil de diagnostic vérifie ces dépendances.
Procédure :
-
Connectez-vous à l'instance configurée avec eRDMA.
Consultez la rubrique Se connecter à une instance Linux à l'aide de Workbench.
-
Téléchargez l'outil de diagnostic.
-
Téléchargement depuis une URL interne
wget http://mirrors.cloud.aliyuncs.com/erdma/tools/diagnose.py -
Téléchargement depuis une URL publique
wget https://mirrors.aliyun.com/erdma/tools/diagnose.py
-
-
Vérifiez les dépendances de l'environnement HPC :
python diagnose.py --hpc-checkExemple de sortie. Pour obtenir des descriptions des éléments de diagnostic, consultez la rubrique Vérifications des dépendances de l'environnement HPC eRDMA.
ecs-user@xxx ~$ python diagnose.py --hpc-check [INFO] Begin to run hpc related diagnoses for erdma. If the missing dependencies are not required, please ignore them. [INFO] The diagnose results mean: [INFO] PASS: pass the test or meet the requirement. [INFO] SKIP: encounter some problems when running the diagnose. [INFO] FAIL: test failed or requirements are not met. [INFO] XXXX: the erdma-related information, e.g. erdma driver version, cc algorithm. Name Result Desc fail info ---------------------------- ------------------- ------------------------------------------------------- ------------------- cc algorithm cubic current cc algorithm go-back-n support PASS Go-back-N capacity support dapl1 install FAIL dapl1 installation check CHCK FAILED [ls /etc/rdma/compat-dapl/dat.conf && ls /usr/lib64/libdaplcma.so.1.0.2] dapl2 install PASS dapl2 installation check dapl2 config PASS dapl2 erdma configuration check dapl2 test PASS dapl2 dtest result
Évaluer les performances du réseau eRDMA
Utilisez la fonctionnalité perftest de l'outil de diagnostic pour tester les performances du réseau entre les instances.
-
Prérequis
Avant d'exécuter le test :
eRDMA est installé et déployé sur tous les nœuds de test. Consultez la rubrique Activer eRDMA pour une instance ECS.
SSH sans mot de passe est configuré entre tous les nœuds de test. Consultez la rubrique Configurer la connexion SSH sans mot de passe.
-
Python paramiko est installé sur tous les nœuds de test.
RemarqueL'outil de diagnostic utilise paramiko pour les connexions à distance.
Installez paramiko à l'aide des commandes suivantes. Python 3 est recommandé.
Alibaba Cloud Linux/CentOS
# python3 sudo python3 -m pip install --upgrade pip sudo python3 -m pip install paramiko # python2 # If the pip module is not installed for Python 2, install python2-pip. sudo yum -y install python2-pip sudo python2 -m pip install --upgrade pip==20.3.4 sudo python2 -m pip install paramikoUbuntu
# python3 sudo python3 -m pip install --upgrade pip sudo python3 -m pip install paramiko # python2 # If python2-pip is not installed on the current node, install it. sudo apt install software-properties-common sudo add-apt-repository universe sudo apt update sudo apt install python2 sudo curl https://bootstrap.pypa.io/pip/2.7/get-pip.py --output get-pip.py sudo python2 get-pip.py sudo python2 -m pip install --upgrade pip==20.3.4 sudo python2 -m pip install paramiko
-
Procédure
-
Connectez-vous à l'instance configurée avec eRDMA.
Consultez la rubrique Se connecter à une instance Linux à l'aide de Workbench.
-
Téléchargez l'outil de diagnostic.
-
Téléchargement depuis une URL interne
wget http://mirrors.cloud.aliyuncs.com/erdma/tools/diagnose.py -
Téléchargement depuis une URL publique
wget https://mirrors.aliyun.com/erdma/tools/diagnose.py
-
-
Testez la latence eRDMA :
python diagnose.py --perftest --hosts <n1> <n2> --user <username> --key-file </path/to/private_key>Paramètres :
--hosts <n1> <n2>: nœuds de test, séparés par des espaces. Remplacez<n1> <n2>par l'adresse IP privée de l'ENI activée pour eRDMA sur chaque nœud.--user <username>: nom d'utilisateur pour SSH sans mot de passe.--key-file </path/to/private_key>: chemin absolu vers le fichier de clé privée pour SSH.
Exemple de sortie pour un test de latence entre deux instances. Consultez la rubrique Tests de performance réseau eRDMA.
Chaque tableau affiche la latence pour différentes opérations. Les lignes représentent les demandeurs, les colonnes représentent les répondeurs. Les valeurs des cellules indiquent la latence moyenne en microsecondes (le 99,9e centile entre parenthèses).
[ecs-xxx ~]$ python diagnose.py --perftest --hosts 172.17.0.87 172.17.0.86 --user ecs-user --key-file /home/ecs-user/.ssh/id_rsa /usr/local/lib/python3.6/site-packages/paramiko/transport.py:32: CryptographyDeprecationWarning: Python 3.6 is no longer supported by the Python core team. or Python 3.6. from cryptography.hazmat.backends import default_backend INFO:paramiko.transport:Connected (version 2.0, client OpenSSH_8.0) INFO:paramiko.transport:Authentication (publickey) successful! INFO:paramiko.transport:Connected (version 2.0, client OpenSSH_8.0) INFO:paramiko.transport:Authentication (publickey) successful! [INFO] Begin to run perftest, the results will be shown in table. [INFO] In each table, the line represents client while the column represents server. [INFO] Each table cell shows the average latency and p999 latency(in the bracket). [INFO] Current perftest configuration: [INFO] tests: send_lat read_lat write_lat message_size: 2 iterations: 10000 ---------------------------------------------------------------------- | ib_send_lat latency table(us) | ---------------------------------------------------------------------- | | 172.17.0.87 | 172.17.0.86 | ---------------------------------------------------------------------- | 172.17.0.87 | 14.60(87.53) | 14.29(25.25) | ---------------------------------------------------------------------- | 172.17.0.86 | 14.35(51.63) | 8.31(21.09) | ---------------------------------------------------------------------- ---------------------------------------------------------------------- | ib_read_lat latency table(us) | ---------------------------------------------------------------------- | | 172.17.0.87 | 172.17.0.86 | ---------------------------------------------------------------------- | 172.17.0.87 | 24.28(51.43) | 27.57(57.42) | ---------------------------------------------------------------------- | 172.17.0.86 | 27.43(41.14) | 13.88(49.83) | ---------------------------------------------------------------------- ---------------------------------------------------------------------- | ib_write_lat latency table(us) | ---------------------------------------------------------------------- | | 172.17.0.87 | 172.17.0.86 | ---------------------------------------------------------------------- | 172.17.0.87 | 183.71(25003.59) | 12.76(27.00) | ---------------------------------------------------------------------- | 172.17.0.86 | 12.80(26.05) | 6.41(13.75) | ----------------------------------------------------------------------
-