web-dev-qa-db-fra.com

Quelle est une alternative pour DTrace sous Linux?

D'après ce que je peux voir, une implémentation de DTrace sur Linux est retardée par les licences et la politique. Quelles sont les alternatives actuellement?

40
JanePhanie

Systemtap est conçu pour résoudre le même type de problèmes que dtrace, et possède une interface utilisateur similaire - l'utilisateur écrit de petits scripts qui attachent des actions aux sondes nommées.

On dit qu'il est instable, il n'est généralement pas compilé dans votre noyau par défaut, mais une fois que je l'ai fait fonctionner, je n'ai eu aucun problème.

Vous pouvez voir comment il se compare à dtrace dans ce tableau sur le site web de systemtap (Peut être partisan :-)

Dtrace a été partiellement porté sur Linux par Paul Fox, un passionné, et est disponible en téléchargement pour que vous puissiez essayer - consultez les liens sur son blog .

Il a été dit que kprobes sont un remplacement de dtrace, mais je ne les ai jamais essayés.

30
Alex Brown

SystemTap est une abstraction de niveau supérieur construite sur Kprobes. Pour plus d'informations sur le fonctionnement de Kprobes, vous pouvez lire mon article technique sur LWN.

Comme Alex l'a mentionné, Systemtap résout essentiellement le même problème que dtrace, sauf qu'il est un peu plus lent (vous ne le percevrez peut-être pas, selon ce que vous essayez d'en faire) que dtrace et pas tout à fait aussi poli ou sûr utiliser.

Pour installer le package de développement SystemTap SDT, essayez:

yum install systemtap-sdt-devel
14
Sudhanshu

sysdig est maintenant une excellente solution.

Certains cas d'utilisation incluent (leur le wiki a des exemples exceptionnellement intéressants ):

Pour les E/S disque

  • Voir les meilleurs processus en termes d'utilisation de la bande passante du disque

    sysdig -c topprocs_file

  • Énumérez les processus qui utilisent un grand nombre de fichiers

    sysdig -c fdcount_by proc.name "fd.type = file"

  • Voir les meilleurs fichiers en termes d'octets de lecture + écriture

    sysdig -c topfiles_bytes

  • Imprimez les principaux fichiers depuis lesquels Apache a lu ou écrit

    sysdig -c topfiles_bytes proc.name = httpd

  • opensnoop de base: le fichier snoop s'ouvre au fur et à mesure

    sysdig -p "% 12user.name% 6proc.pid% 12proc.name% 3fd.num% fd.typechar% fd.name" evt.type = open

  • Voir les meilleurs répertoires en termes d'activité du disque R + W

    sysdig -c fdbytes_by fd.directory "fd.type = file"

  • Voir les meilleurs fichiers en termes d'activité du disque R + W dans le répertoire/tmp

    sysdig -c fdbytes_by fd.filename "fd.directory =/tmp /"

  • Observez l'activité d'E/S sur tous les fichiers nommés 'passwd'

    sysdig -A -c echo_fds "fd.filename = passwd"

  • Afficher l'activité d'E/S par type FD

    sysdig -c fdbytes_by fd.type

12
ylluminate
6
Paul Fox

Oracle porte DTrace vers Linux: https://oss.Oracle.com/projects/DTrace/

Je ne sais pas si cela ne fonctionne qu'avec leur distribution Linux ou toute autre.

4
Christian

Linux a strace/ltrace (voir cet article sur strace). Mais ils ne sont pas vraiment équivalents à DTrace, ils couvrent juste une petite partie de ce que DTrace peut faire (en fait, DTrace est largement supérieur à tout ce que Linux offre).

1
Pascal Thivent