| 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 |