1Sys::Statistics::Linux:U:sCeormpCiolnattriiobnu(t3e)d PeSryls:D:oSctuamteinsttaitciso:n:Linux::Compilation(3)
2
3
4
6 Sys::Statistics::Linux::Compilation - Statistics compilation.
7
9 use Sys::Statistics::Linux;
10
11 my $lxs = Sys::Statistics::Linux->new( loadavg => 1 );
12 my $stat = $lxs->get;
13
14 foreach my $key ($stat->loadavg) {
15 print $key, " ", $stat->loadavg($key), "\n";
16 }
17
18 # or
19
20 use Sys::Statistics::Linux::LoadAVG;
21 use Sys::Statistics::Linux::Compilation;
22
23 my $lxs = Sys::Statistics::Linux::LoadAVG->new();
24 my $load = $lxs->get;
25 my $stat = Sys::Statistics::Linux::Compilation->new({ loadavg => $load });
26
27 foreach my $key ($stat->loadavg) {
28 print $key, " ", $stat->loadavg($key), "\n";
29 }
30
31 # or
32
33 foreach my $key ($stat->loadavg) {
34 print $key, " ", $stat->loadavg->{$key}, "\n";
35 }
36
38 This module provides different methods to access and filter the
39 statistics compilation.
40
42 new()
43 Create a new "Sys::Statistics::Linux::Compilation" object. This creator
44 is only useful if you don't call get() of "Sys::Statistics::Linux". You
45 can create a new object with:
46
47 my $lxs = Sys::Statistics::Linux::LoadAVG->new();
48 my $load = $lxs->get;
49 my $stat = Sys::Statistics::Linux::Compilation->new({ loadavg => $load });
50
51 Statistic methods
52 sysinfo()
53 cpustats()
54 procstats()
55 memstats()
56 pgswstats()
57 netstats()
58 netinfo()
59 netinfo() provides raw data - no deltas.
60
61 sockstats()
62 diskstats()
63 diskusage()
64 loadavg()
65 filestats()
66 processes()
67
68 All methods returns the statistics as a hash reference in scalar
69 context. In list all methods returns the first level keys of the
70 statistics. Example:
71
72 my $net = $stat->netstats; # netstats as a hash reference
73 my @dev = $stat->netstats; # the devices eth0, eth1, ...
74 my $eth0 = $stat->netstats('eth0'); # eth0 statistics as a hash reference
75 my @keys = $stat->netstats('eth0'); # the statistic keys
76 my @vals = $stat->netstats('eth0', @keys); # the values for the passed device and @keys
77 my $val = $stat->netstats('eth0', $key); # the value for the passed device and key
78
79 Sorted ...
80
81 my @dev = sort $stat->netstats;
82 my @keys = sort $stat->netstats('eth0');
83
84 pstop()
85 This method is looking for top processes and returns a sorted list of
86 PIDs as an array or array reference depending on the context. It
87 expected two values: a key name and the number of top processes to
88 return.
89
90 As example you want to get the top 5 processes with the highest cpu
91 usage:
92
93 my @top5 = $stat->pstop( ttime => 5 );
94 # or as a reference
95 my $top5 = $stat->pstop( ttime => 5 );
96
97 If you want to get all processes:
98
99 my @top_all = $stat->pstop( ttime => $FALSE );
100 # or just
101 my @top_all = $stat->pstop( 'ttime' );
102
103 search(), psfind()
104 Both methods provides a simple scan engine to find special statistics.
105 Both methods except a filter as a hash reference. It's possible to pass
106 the statistics as second argument if the data is not stored in the
107 object.
108
109 The method search() scans for statistics and rebuilds the hash tree
110 until that keys that matched your filter and returns the hits as a hash
111 reference.
112
113 my $hits = $stat->search({
114 processes => {
115 cmd => qr/\[su\]/,
116 owner => qr/root/
117 },
118 cpustats => {
119 idle => 'lt:10',
120 iowait => 'gt:10'
121 },
122 diskusage => {
123 '/dev/sda1' => {
124 usageper => 'gt:80'
125 }
126 }
127 });
128
129 This would return the following matches:
130
131 * processes with the command "[su]"
132 * processes with the owner "root"
133 * all cpu where "idle" is less than 50
134 * all cpu where "iowait" is grather than 10
135 * only disk '/dev/sda1' if "usageper" is grather than 80
136
137 The method psfind() scans for processes only and returns a array
138 reference with all process IDs that matched the filter. Example:
139
140 my $pids = $stat->psfind({ cmd => qr/init/, owner => 'eq:apache' });
141
142 This would return the following process ids:
143
144 * processes that matched the command "init"
145 * processes with the owner "apache"
146
147 There are different match operators available:
148
149 gt - grather than
150 lt - less than
151 eq - is equal
152 ne - is not equal
153
154 Notation examples:
155
156 gt:50
157 lt:50
158 eq:50
159 ne:50
160
161 Both argumnents have to be set as a hash reference.
162
163 Note: the operators < > = ! are not available any more. It's possible
164 that in further releases could be different changes for search() and
165 psfind(). So please take a look to the documentation if you use it.
166
168 No exports.
169
171 * Are there any wishs from your side? Send me a mail!
172
174 Please report all bugs to <jschulz.cpan(at)bloonix.de>.
175
177 Jonny Schulz <jschulz.cpan(at)bloonix.de>.
178
179 Thanks to Moritz Lenz for his suggestion for the name of this module.
180
182 Copyright (c) 2006, 2007 by Jonny Schulz. All rights reserved.
183
184 This program is free software; you can redistribute it and/or modify it
185 under the same terms as Perl itself.
186
187
188
189perl v5.36.0 2023-01S-y2s0::Statistics::Linux::Compilation(3)