- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
- 39
- 40
- 41
- 42
- 43
- 44
- 45
- 46
- 47
- 48
- 49
- 50
- 51
- 52
- 53
- 54
- 55
- 56
- 57
- 58
- 59
- 60
- 61
- 62
- 63
- 64
- 65
- 66
- 67
- 68
- 69
- 70
#!/usr/bin/perl
#
# Plugin to monitor CPU frequency scaling via time_in_state
#
# Origional Author: Kamen Naydenov @pau4o
# Contributors:
#
#
#
use strict;
use warnings;
my $data_file = '/sys/devices/system/cpu/cpu0/cpufreq/stats/time_in_state';
if ($ARGV[0] and $ARGV[0] eq "autoconf") {
if (-r "$data_file") {
print "yes\n";
exit 0;
} else {
print $data_file, " not found\n";
exit 1;
}
}
my (%cpufreq_stats, $cpufreq, $freq, $total_time, $graphOrder, $firstOne);
&fetch_info;
if ($ARGV[0] and $ARGV[0] eq "config") {
print 'graph_args --base 1000 -l 0 -u 100', "\n";
print 'graph_vlabel %', "\n";
print 'graph_scale no', "\n";
print 'graph_title CPU scaling statistics', "\n";
print 'graph_category system', "\n";
print 'graph_info This graph shows how much time CPU spend in each supported frequency.', "\n";
foreach $freq (sort { $b <=> $a } keys %cpufreq_stats) {
$graphOrder .= 'cpu_at_' . $freq . ' ';
print 'cpu_at_', $freq, '.label ', $freq, "\n";
print 'cpu_at_', $freq, '.info Time spend using frequency of ', $freq, " Hz \n";
print 'cpu_at_', $freq, '.min 0', "\n";
print 'cpu_at_', $freq, '.max 100', "\n";
# if ($firstOne) {
# print $freq, ".draw STACK\n";
# } else {
# print $freq, ".draw AREA\n";
# }
# $firstOne++;
}
print 'graph_order ', $graphOrder, "\n";
exit 0;
}
foreach $cpufreq (sort { $b <=> $a } keys %cpufreq_stats ) {
my $time_in_percent = $cpufreq_stats{"$cpufreq"} * 100 / $total_time;
print 'cpu_at_', $cpufreq, '.value ', $time_in_percent, "\n";
}
sub fetch_info {
open (IN, '<', "$data_file")
or die "Could not open $data_file for reading: $!";
while (<IN>) {
if (/^(\d+)\s+(\d+)\s+/) {
$cpufreq_stats{"$1"} = $2;
$total_time += $2;
}
}
close (IN) or die "$!";
}
как это вообще можно читать? это каким больным ублюдком надо быть?
Есть же - die + eval { }.
Братишка, ты ли это?
Если в языке можно вызвать функцию по указателю, в нём возможны продолжения. А от них до исключений -- один шаг.
И сто́ит шаг пройти,
Заносит время след.
Обратного пути
У жизни просто нет.
я видел тыщу плагинов к мамину, и все они такие
Ну да, для новичка тяжеловато, но осилить примерно три строки можно на любом ЯП, тем более если ты перловик
Хугин и Мунин
над миром всё время
летают без устали;
мне за Хугина страшно,
страшней за Мунина, —
вернутся ли вороны!