home *** CD-ROM | disk | FTP | other *** search
/ Chip 2000 May / Chip_2000-05_cd1.bin / zkuste / Perl / ActivePerl-5.6.0.613.msi / 䆊䌷䈹䈙䏵-䞅䞆䞀㡆䞃䄦䠥 / _5209814126ed3163b3df76f70ab43b63 < prev    next >
Text File  |  2000-03-23  |  9KB  |  249 lines

  1.  
  2. <HTML>
  3. <HEAD>
  4. <TITLE>Win32::PerfLib - accessing the Windows NT Performance Counter</TITLE>
  5. <LINK REL="stylesheet" HREF="../../../Active.css" TYPE="text/css">
  6. <LINK REV="made" HREF="mailto:">
  7. </HEAD>
  8.  
  9. <BODY>
  10. <TABLE BORDER=0 CELLPADDING=0 CELLSPACING=0 WIDTH=100%>
  11. <TR><TD CLASS=block VALIGN=MIDDLE WIDTH=100% BGCOLOR="#cccccc">
  12. <STRONG><P CLASS=block> Win32::PerfLib - accessing the Windows NT Performance Counter</P></STRONG>
  13. </TD></TR>
  14. </TABLE>
  15.  
  16. <A NAME="__index__"></A>
  17. <!-- INDEX BEGIN -->
  18.  
  19. <UL>
  20.  
  21.     <LI><A HREF="#name">NAME</A></LI><LI><A HREF="#supportedplatforms">SUPPORTED PLATFORMS</A></LI>
  22.  
  23.     <LI><A HREF="#synopsis">SYNOPSIS</A></LI>
  24.     <LI><A HREF="#description">DESCRIPTION</A></LI>
  25.     <LI><A HREF="#functions">FUNCTIONS</A></LI>
  26.     <UL>
  27.  
  28.         <LI><A HREF="#note">NOTE</A></LI>
  29.     </UL>
  30.  
  31.     <LI><A HREF="#datastructures">Datastructures</A></LI>
  32.     <LI><A HREF="#author">AUTHOR</A></LI>
  33.     <LI><A HREF="#see also">SEE ALSO</A></LI>
  34. </UL>
  35. <!-- INDEX END -->
  36.  
  37. <HR>
  38. <P>
  39. <H1><A NAME="name">NAME</A></H1>
  40. <P>Win32::PerfLib - accessing the Windows NT Performance Counter</P>
  41. <P>
  42. <HR>
  43. <H1><A NAME="supportedplatforms">SUPPORTED PLATFORMS</A></H1>
  44. <UL>
  45. <LI>Windows</LI>
  46. </UL>
  47. <HR>
  48. <H1><A NAME="synopsis">SYNOPSIS</A></H1>
  49. <PRE>
  50.   use Win32::PerfLib;
  51.   my $server = "";
  52.   Win32::PerfLib::GetCounterNames($server, \%counter);
  53.   %r_counter = map { $counter{$_} => $_ } keys %counter;
  54.   # retrieve the id for process object
  55.   $process_obj = $r_counter{Process};
  56.   # retrieve the id for the process ID counter
  57.   $process_id = $r_counter{'ID Process'};</PRE>
  58. <PRE>
  59.   # create connection to $server
  60.   $perflib = new Win32::PerfLib($server);
  61.   $proc_ref = {};
  62.   # get the performance data for the process object
  63.   $perflib->GetObjectList($process_obj, $proc_ref);
  64.   $perflib->Close();
  65.   $instance_ref = $proc_ref->{Objects}->{$process_obj}->{Instances};
  66.   foreach $p (sort keys %{$instance_ref})
  67.   {
  68.       $counter_ref = $instance_ref->{$p}->{Counters};
  69.       foreach $i (keys %{$counter_ref})
  70.       {
  71.           if($counter_ref->{$i}->{CounterNameTitleIndex} == $process_id)
  72.           {
  73.               printf( "% 6d %s\n", $counter_ref->{$i}->{Counter},
  74.                       $instance_ref->{$p}->{Name}
  75.                     );
  76.           }
  77.       }
  78.   }</PRE>
  79. <P>
  80. <HR>
  81. <H1><A NAME="description">DESCRIPTION</A></H1>
  82. <P>This module allows to retrieve the performance counter of any computer
  83. (running Windows NT) in the network.</P>
  84. <P>
  85. <HR>
  86. <H1><A NAME="functions">FUNCTIONS</A></H1>
  87. <P>
  88. <H2><A NAME="note">NOTE</A></H2>
  89. <P>All of the functions return FALSE (0) if they fail, unless otherwise noted.
  90. If the $server argument is undef the local machine is assumed.</P>
  91. <DL>
  92. <DT><STRONG><A NAME="item_GetCounterNames">Win32::PerfLib::GetCounterNames($server,$hashref)</A></STRONG><BR>
  93. <DD>
  94. Retrieves the counter names and their indices from the registry and stores them
  95. in the hash reference
  96. <P></P>
  97. <DT><STRONG><A NAME="item_GetCounterHelp">Win32::PerfLib::GetCounterHelp($server,$hashref)</A></STRONG><BR>
  98. <DD>
  99. Retrieves the counter help strings and their indices from the registry and
  100. stores them in the hash reference
  101. <P></P>
  102. <DT><STRONG><A NAME="item_new">$perflib = Win32::PerfLib->new ($server)</A></STRONG><BR>
  103. <DD>
  104. Creates a connection to the performance counters of the given server
  105. <P></P>
  106. <DT><STRONG><A NAME="item_GetObjectList">$perflib-><CODE>GetObjectList($objectid,$hashref)</CODE></A></STRONG><BR>
  107. <DD>
  108. retrieves the object and counter list of the given performance object.
  109. <P></P>
  110. <DT><STRONG><A NAME="item_Close">$perflib-><CODE>Close($hashref)</CODE></A></STRONG><BR>
  111. <DD>
  112. closes the connection to the performance counters
  113. <P></P>
  114. <DT><STRONG><A NAME="item_GetCounterType">Win32::PerfLib::GetCounterType(countertype)</A></STRONG><BR>
  115. <DD>
  116. converts the counter type to readable string as referenced in <EM>calc.html</EM> so
  117. that it is easier to find the appropriate formula to calculate the raw counter
  118. data.
  119. <P></P></DL>
  120. <P>
  121. <HR>
  122. <H1><A NAME="datastructures">Datastructures</A></H1>
  123. <P>The performance data is returned in the following data structure:</P>
  124. <DL>
  125. <DT><STRONG><A NAME="item_Level_1">Level 1</A></STRONG><BR>
  126. <DD>
  127. <PRE>
  128.   $hashref = {
  129.       'NumObjectTypes'   => VALUE
  130.       'Objects'          => HASHREF
  131.       'PerfFreq'         => VALUE
  132.       'PerfTime'         => VALUE
  133.       'PerfTime100nSec'  => VALUE
  134.       'SystemName'       => STRING
  135.       'SystemTime'       => VALUE
  136.   }</PRE>
  137. <DT><STRONG><A NAME="item_Level_2">Level 2</A></STRONG><BR>
  138. <DD>
  139. The hash reference $hashref->{Objects} has the returned object <CODE>ID(s)</CODE> as keys and
  140. a hash reference to the object counter data as value. Even there is only one
  141. object requested in the call to GetObjectList there may be more than one object
  142. in the result.
  143. <PRE>
  144.   $hashref->{Objects} = {
  145.       <object1>  => HASHREF
  146.       <object2>  => HASHREF
  147.       ...
  148.   }</PRE>
  149. <P></P>
  150. <DT><STRONG><A NAME="item_Level_3">Level 3</A></STRONG><BR>
  151. <DD>
  152. Each returned object ID has object-specific performance information. If an
  153. object has instances like the process object there is also a reference to
  154. the instance information.
  155. <PRE>
  156.   $hashref->{Objects}->{<object1>} = {
  157.       'DetailLevel'           => VALUE
  158.       'Instances'             => HASHREF
  159.       'Counters'              => HASHREF
  160.       'NumCounters'           => VALUE
  161.       'NumInstances'          => VALUE
  162.       'ObjectHelpTitleIndex'  => VALUE
  163.       'ObjectNameTitleIndex'  => VALUE
  164.       'PerfFreq'              => VALUE
  165.       'PerfTime'              => VALUE
  166.   }</PRE>
  167. <P></P>
  168. <DT><STRONG><A NAME="item_Level_4">Level 4</A></STRONG><BR>
  169. <DD>
  170. If there are instance information for the object available they are stored in
  171. the 'Instances' hashref. If the object has no instances there is an 'Counters'
  172. key instead. The instances or counters are numbered.
  173. <PRE>
  174.   $hashref->{Objects}->{<object1>}->{Instances} = {
  175.       <1>     => HASHREF
  176.       <2>     => HASHREF
  177.       ...
  178.       <n>     => HASHREF
  179.   }
  180.   or
  181.   $hashref->{Objects}->{<object1>}->{Counters} = {
  182.       <1>     => HASHREF
  183.       <2>     => HASHREF
  184.       ...
  185.       <n>     => HASHREF
  186.   }</PRE>
  187. <P></P>
  188. <DT><STRONG><A NAME="item_Level_5">Level 5</A></STRONG><BR>
  189. <DD>
  190. <PRE>
  191.   $hashref->{Objects}->{<object1>}->{Instances}->{<1>} = {
  192.       Counters               => HASHREF
  193.       Name                   => STRING
  194.       ParentObjectInstance   => VALUE
  195.       ParentObjectTitleIndex => VALUE
  196.   }
  197.   or
  198.   $hashref->{Objects}->{<object1>}->{Counters}->{<1>} = {
  199.       Counter               => VALUE
  200.       CounterHelpTitleIndex => VALUE
  201.       CounterNameTitleIndex => VALUE
  202.       CounterSize           => VALUE
  203.       CounterType           => VALUE
  204.       DefaultScale          => VALUE
  205.       DetailLevel           => VALUE
  206.       Display               => STRING
  207.   }</PRE>
  208. <DT><STRONG><A NAME="item_Level_6">Level 6</A></STRONG><BR>
  209. <DD>
  210. <PRE>
  211.   $hashref->{Objects}->{<object1>}->{Instances}->{<1>}->{Counters} = {
  212.       <1>     => HASHREF
  213.       <2>     => HASHREF
  214.       ...
  215.       <n>     => HASHREF
  216.   }</PRE>
  217. <DT><STRONG><A NAME="item_Level_7">Level 7</A></STRONG><BR>
  218. <DD>
  219. <PRE>
  220.   $hashref->{Objects}->{<object1>}->{Instances}->{<1>}->{Counters}->{<1>} = {
  221.       Counter               => VALUE
  222.       CounterHelpTitleIndex => VALUE
  223.       CounterNameTitleIndex => VALUE
  224.       CounterSize           => VALUE
  225.       CounterType           => VALUE
  226.       DefaultScale          => VALUE
  227.       DetailLevel           => VALUE
  228.       Display               => STRING
  229.   }</PRE>
  230. <P>Depending on the <STRONG>CounterType</STRONG> there are calculations to do (see calc.html).</P>
  231. </DL>
  232. <P>
  233. <HR>
  234. <H1><A NAME="author">AUTHOR</A></H1>
  235. <P>Jutta M. Klebe, <A HREF="mailto:jmk@bybyte.de">jmk@bybyte.de</A></P>
  236. <P>
  237. <HR>
  238. <H1><A NAME="see also">SEE ALSO</A></H1>
  239. <P>perl(1).</P>
  240. <TABLE BORDER=0 CELLPADDING=0 CELLSPACING=0 WIDTH=100%>
  241. <TR><TD CLASS=block VALIGN=MIDDLE WIDTH=100% BGCOLOR="#cccccc">
  242. <STRONG><P CLASS=block> Win32::PerfLib - accessing the Windows NT Performance Counter</P></STRONG>
  243. </TD></TR>
  244. </TABLE>
  245.  
  246. </BODY>
  247.  
  248. </HTML>
  249.