2 votes

recherche de dtrace script pour lister les fichiers nfs les plus utilisés

J'utilise actuellement https://github.com/siebenmann/cks-dtrace/blob/master/nfs3-mon.d pour identifier les jeux de données les plus actifs sur notre serveur NFS (Solaris 10)

Malheureusement, je dois creuser davantage, et j'aimerais pouvoir retrouver les fichiers les plus utilisés. Existe-t-il un moyen de répertorier les X fichiers les plus utilisés pour diverses opérations ?

Je ne suis pas un gourou de dtrace et je n'ai pas pu trouver de réponse en quelques heures .

1voto

Dan Points 270

Les documents relatifs au fournisseur de DTrace NFS sont assez bien rédigés sur le site Web de la Commission européenne. Site web d'Oracle . Les scripts en particulier qui vous semblent utiles sont les suivants nfsv3fileio.d ou (pour obtenir un lot plus de données que vous devrez peut-être post-traiter) nfsv3rwsnoop.d .

En supposant que vous voulez dire "le plus utilisé" comme dans "le plus grand nombre de lectures / écritures", et que vous ne vous souciez pas de la proportion entre ceux-ci ou de qui les fait, un simple script pour imprimer les noms de fichiers et le nombre d'entrées-sorties à chacun d'eux est :

nfsv3:::op-read-start, nfsv3:::op-write-start {
     @[args[1]->noi_curpath] = count();
}

tick-10sec {
    printa(@);
    trunc(@);
}

(Je ne l'ai pas exécuté car je n'ai pas de partages NFS configurés, mais je pense que cela fonctionnera). Pour résumer ce qu'il fait :

  1. nfsv3:::op-{read|write}-start sont les événements qui se déclenchent lorsqu'une lecture ou une écriture commence sur un partage NFSv3. Chaque fois que l'un de ces événements se produit, l'événement reçoit un argument args[1] qui contient la variable noi_curpath qui donne le chemin d'accès du fichier (s'il est disponible ; parfois, il n'est pas mis en cache et vous n'obtenez rien). Nous l'utilisons comme clé, et nous utilisons la fonction count() de fois, cela se produit comme la valeur dans une carte nommée @ .
  2. tick-10sec est un événement qui se déclenche toutes les 10 secondes, en commençant 10 secondes après le début du script. Il imprime d'abord la carte avec printa() et efface ensuite les valeurs qu'il contient avec la commande trunc() pour qu'on ait des données fraîches pour la prochaine fenêtre de 10 secondes.

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X