Win32::PerfLib - accéder aux compteurs de Performance de Windows NT |
Win32::PerfLib - accéder aux compteurs de Performance de Windows NT
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} ); } } }
Ce module permet d'extraire les compteurs de performance de n'importe quel ordinateur du réseau tournant sous Windows NT.
Sauf indication contraire, toutes les fonctions retournent faux si elles échouent. Si l'argument $server est undef, la machine locale est sélectionnée.
GetObjectList($objectid,$hashref)
Close($hashref)
Les données de performance sont retournées dans la structure de données suivante :
$hashref = { 'NumObjectTypes' => VALUE 'Objects' => HASHREF 'PerfFreq' => VALUE 'PerfTime' => VALUE 'PerfTime100nSec' => VALUE 'SystemName' => STRING 'SystemTime' => VALUE }
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} = { <object1> => HASHREF <object2> => HASHREF ... }
$hashref->{Objects}->{<object1>} = { 'DetailLevel' => VALUE 'Instances' => HASHREF 'Counters' => HASHREF 'NumCounters' => VALUE 'NumInstances' => VALUE 'ObjectHelpTitleIndex' => VALUE 'ObjectNameTitleIndex' => VALUE 'PerfFreq' => VALUE 'PerfTime' => VALUE }
$hashref->{Objects}->{<object1>}->{Instances} = { <1> => HASHREF <2> => HASHREF ... <n> => HASHREF } ou $hashref->{Objects}->{<object1>}->{Counters} = { <1> => HASHREF <2> => HASHREF ... <n> => HASHREF }
$hashref->{Objects}->{<object1>}->{Instances}->{<1>} = { Counters => HASHREF Name => STRING ParentObjectInstance => VALUE ParentObjectTitleIndex => VALUE } ou $hashref->{Objects}->{<object1>}->{Counters}->{<1>} = { Counter => VALUE CounterHelpTitleIndex => VALUE CounterNameTitleIndex => VALUE CounterSize => VALUE CounterType => VALUE DefaultScale => VALUE DetailLevel => VALUE Display => STRING }
$hashref->{Objects}->{<object1>}->{Instances}->{<1>}->{Counters} = { <1> => HASHREF <2> => HASHREF ... <n> => HASHREF }
$hashref->{Objects}->{<object1>}->{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 CounterType il y a des calculs à faire (voyez calc.html).
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]
perl(1).
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/ .
Jean-Louis Morel <jl_morel@bribes.org>
Win32::PerfLib - accéder aux compteurs de Performance de Windows NT |