=head1 NOM Win32::PerfLib - accéder aux compteurs de Performance de Windows NT =head1 SYNOPSIS use Win32::PerfLib; my $server = ""; # machine locale Win32::PerfLib::GetCounterNames($server, \%counter); %r_counter = map { $counter{$_} => $_ } keys %counter; # Trouver l'id de l'objet processus $process_obj = $r_counter{Process}; # Trouver l'id du compteur 'ID process ' $process_id = $r_counter{'ID Process'}; # Création d'un connexion au serveur $server $perflib = new Win32::PerfLib($server); $proc_ref = {}; # Obtient les données de performance pour l'objet processus $perflib->GetObjectList($process_obj, $proc_ref); $perflib->Close(); $instance_ref = $proc_ref->{Objects}->{$process_obj}->{Instances}; foreach $p (sort keys %{$instance_ref}) { $counter_ref = $instance_ref->{$p}->{Counters}; foreach $i (keys %{$counter_ref}) { if($counter_ref->{$i}->{CounterNameTitleIndex} == $process_id) { printf( "% 6d %s\n", $counter_ref->{$i}->{Counter}, $instance_ref->{$p}->{Name} ); } } } =head1 DESCRIPTION Ce module permet d'extraire les compteurs de performance de n'importe quel ordinateur du réseau tournant sous Windows NT. =head1 FONCTIONS =head2 NOTE Sauf indication contraire, toutes les fonctions retournent faux si elles échouent. Si l'argument $server est undef, la machine locale est sélectionnée. =over 10 =item Win32::PerfLib::GetCounterNames($server,$hashref) Extrait du Registre les noms des compteurs et leurs index et les entrepose dans le hachage donné par sa référence. =item Win32::PerfLib::GetCounterHelp($server,$hashref) Extrait du Registre les chaînes d'aide des compteurs et leurs index et les entrepose dans le hachage donné par sa référence. =item $perflib = Win32::PerfLib->new ($server) Crée une connexion aux compteurs de performance du serveur donné. =item $perflib->GetObjectList($objectid,$hashref) Extrait la liste des compteurs et objets de l'objet performance donné. =item $perflib->Close($hashref) Ferme la connexion aux compteurs de performance. =item Win32::PerfLib::GetCounterType(countertype) convertit le type de compteur en une chaîne lisible comme référencé dans L afin qu'il soit plus facile de trouver la formule appropriée pour convertir la donnée brute du compteur. =back =head1 Structures de données Les données de performance sont retournées dans la structure de données suivante : =over 10 =item Niveau 1 $hashref = { 'NumObjectTypes' => VALUE 'Objects' => HASHREF 'PerfFreq' => VALUE 'PerfTime' => VALUE 'PerfTime100nSec' => VALUE 'SystemName' => STRING 'SystemTime' => VALUE } =item Niveau 2 Le hachage référencé par $hashref->{Objects} a comme clefs les ID(s) de l'objet retourné et comme valeur une référence de hachage à la donnée du compteur de l'objet. Même s'il n'y a qu'un objet demandé dans l'appel à GetObjectList il peut y avoir plusieurs objets dans le résultat. $hashref->{Objects} = { => HASHREF => HASHREF ... } =item Niveau 3 Chaque ID d'objet retourné a des informations de performance qui lui sont spécifiques. Si un objet a des instances, comme par exemple l'objet process, il y a aussi une référence à l'information de l'instance. $hashref->{Objects}->{} = { 'DetailLevel' => VALUE 'Instances' => HASHREF 'Counters' => HASHREF 'NumCounters' => VALUE 'NumInstances' => VALUE 'ObjectHelpTitleIndex' => VALUE 'ObjectNameTitleIndex' => VALUE 'PerfFreq' => VALUE 'PerfTime' => VALUE } =item Niveau 4 S'il y a des informations d'instance pour l'objet disponible, elles sont conservées dans la référence de hachage 'Instances'. Si l'objet n'a pas d'instances, il y a une clef 'Counters' à la place. Les instances et les compteurs sont numérotés. $hashref->{Objects}->{}->{Instances} = { <1> => HASHREF <2> => HASHREF ... => HASHREF } ou $hashref->{Objects}->{}->{Counters} = { <1> => HASHREF <2> => HASHREF ... => HASHREF } =item Niveau 5 $hashref->{Objects}->{}->{Instances}->{<1>} = { Counters => HASHREF Name => STRING ParentObjectInstance => VALUE ParentObjectTitleIndex => VALUE } ou $hashref->{Objects}->{}->{Counters}->{<1>} = { Counter => VALUE CounterHelpTitleIndex => VALUE CounterNameTitleIndex => VALUE CounterSize => VALUE CounterType => VALUE DefaultScale => VALUE DetailLevel => VALUE Display => STRING } =item Niveau 6 $hashref->{Objects}->{}->{Instances}->{<1>}->{Counters} = { <1> => HASHREF <2> => HASHREF ... => HASHREF } =item Niveau 7 $hashref->{Objects}->{}->{Instances}->{<1>}->{Counters}->{<1>} = { Counter => VALUE CounterHelpTitleIndex => VALUE CounterNameTitleIndex => VALUE CounterSize => VALUE CounterType => VALUE DefaultScale => VALUE DetailLevel => VALUE Display => STRING } Selon le type du compteur B il y a des calculs à faire (voyez calc.html). =back =head1 AUTEUR Jutta M. Klebe, jmk@bybyte.de [Pour des informations complémentaires (en anglais) et des exemples, voir le site de l'auteur: http://www.bybyte.de/jmk/docs/Perl5/PerfLib/PerfLib.html NdT] =head1 VOIR AUSSI perl(1). =head1 VERSION FRANÇAISE Cette traduction française correspond à la version anglaise distribuée avec perl 5.8.0. Pour en savoir plus concernant ces traductions, consultez http://www.enstimac.fr/Perl/ . =head1 TRADUCTION EN FRANÇAIS Jean-Louis Morel =cut