ci-metrics

Par pytorch · pytorch

Interroge les métriques CI PyTorch, GitHub Actions, HUD, Grafana et d'infrastructure. À utiliser lorsque les utilisateurs posent des questions sur la durée du CI, les échecs de jobs, les temps de file d'attente, les tendances de workflow, l'état des runners, les données de dashboard ou les métriques d'infrastructure PyTorch.

npx skills add https://github.com/pytorch/pytorch --skill ci-metrics

Métriques CI PyTorch

Les métriques de CI et d'infrastructure PyTorch sont exposées via Grafana. Utilisez .agents/skills/ci-metrics/gcx-wrapper.sh pour tous les accès Grafana ; il configure le serveur Grafana PyTorch, le contexte et l'authentification. Seuls les utilisateurs avec une permission d'écriture sur le repo ont accès à Grafana. L'authentification fournit un accès en lecture seule.

Requirements

Le wrapper a besoin de ces outils sur PATH :

  • gh - récupère le token Grafana et doit être authentifié ; sinon, exécutez gh auth login --hostname github.com --git-protocol ssh --web.
  • curl - télécharge gcx et récupère le token depuis HUD.

Lors de la première utilisation, le wrapper télécharge un binaire gcx épinglé et vérifié par checksum dans un cache privé (~/.cache/pytorch-ci-metrics/) et s'authentifie automatiquement. Rien n'est installé sur votre PATH. Si un outil manque ou si gh n'est pas authentifié, il se termine avec une erreur décrivant ce qu'il faut corriger.

Datasources

Obtenez la liste des datasources disponibles :

.agents/skills/ci-metrics/gcx-wrapper.sh datasources list

Les données contiennent des métriques pour de nombreux repos appartenant au repo PyTorch. Quand possible, limitez les requêtes au seul repo pytorch/pytorch.

Données CI et Test Run

Les données CI et test run sont stockées dans grafana-clickhouse-datasource. Listez toutes les tables disponibles :

.agents/skills/ci-metrics/gcx-wrapper.sh datasources clickhouse list-tables

Dataset important :

  • Données webhook GitHub
  • Tests
    • Database : tests
    • tests.all_test_runs - contient chaque test run. C'est une table extrêmement grande, soyez réfléchi avec le filtrage et le timing.
    • N'utilisez pas tests.test_run_s3 car elle ne contient que des données partielles.

Pour obtenir des conseils supplémentaires sur les requêtes courantes, clonez https://github.com/pytorch/test-infra dans un répertoire temporaire et lisez le dossier torchci.

Exemples de Requêtes

Dans le repo pytorch/pytorch sur main, listez les top jobs de workflow les plus défaillants des 2 dernières semaines :

.agents/skills/ci-metrics/gcx-wrapper.sh datasources clickhouse query "
  SELECT name, count(DISTINCT id) AS failures
  FROM default.workflow_job
  WHERE conclusion = 'failure'
    AND completed_at >= now() - INTERVAL 2 WEEK
    AND repository_full_name = 'pytorch/pytorch'
    AND head_branch = 'main'
  GROUP BY name ORDER BY failures DESC LIMIT 10"

Pour un fichier de test, combien de fois a-t-il été exécuté la semaine dernière ? Combien de fois a-t-il réussi ou échoué ?

.agents/skills/ci-metrics/gcx-wrapper.sh datasources clickhouse query "
  SELECT
    file,
    classname,
    name,
    count() AS runs,
    countIf(failure_count = 0 AND error_count = 0 AND skipped_count = 0) AS successful,
    countIf(failure_count > 0 OR error_count > 0) AS fails,
    countIf(skipped_count > 0) AS skipped
  FROM tests.all_test_runs
  WHERE time_inserted >= now() - INTERVAL 7 DAY
    AND file = 'lazy/test_ts_opinfo.py'
  GROUP BY file, classname, name
  ORDER BY runs DESC"

Infrastructure CI

Les métriques d'infrastructure CI sont stockées dans grafanacloud-pytorchci-prom. Pour mieux comprendre les données, clonez ces repos dans un répertoire temporaire :

Exemples de Requêtes

Quels types de runner ont la queue la plus profonde en ce moment (jobs assignés mais pas encore en cours) ?

.agents/skills/ci-metrics/gcx-wrapper.sh datasources prometheus query -d grafanacloud-prom 'topk(10, clamp_min(sum by (name) (gha_assigned_jobs) - sum by (name) (gha_running_jobs), 0))'

Combien de jobs ont tourné par cluster sur les 6 dernières heures, échantillonné toutes les 30 minutes ? Utilisez --since/--step (ou --from/--to) pour une requête de plage :

.agents/skills/ci-metrics/gcx-wrapper.sh datasources prometheus query -d grafanacloud-prom 'sum by (cluster) (gha_running_jobs)' --since 6h --step 30m

Skills similaires