--- loncom/loncron 2021/01/30 21:26:04 1.125 +++ loncom/loncron 2021/02/02 20:53:05 1.127 @@ -2,7 +2,7 @@ # Housekeeping program, started by cron, loncontrol and loncron.pl # -# $Id: loncron,v 1.125 2021/01/30 21:26:04 raeburn Exp $ +# $Id: loncron,v 1.127 2021/02/02 20:53:05 raeburn Exp $ # # Copyright Michigan State University Board of Trustees # @@ -46,6 +46,8 @@ use GDBM_File; use Storable qw(thaw); use File::ReadBackwards; use File::Copy; +use GDBM_File qw(GDBM_READER); +use Storable qw(thaw nfreeze); use Sys::Hostname::FQDN(); #globals @@ -231,6 +233,21 @@ sub log_machine_info { &log($fh,'

Machine Information

'); &log($fh,"

loadavg

"); + my $cpucount; + if (open(PIPE,"lscpu |grep '^CPU(s)' 2>&1 |")) { + my $info = ; + chomp($info); + ($cpucount) = ($info =~ /^\QCPU(s):\E\s+(\d+)$/); + close(PIPE); + } + if (!$cpucount) { + $cpucount = 1; + } + my %loadtarget = ( + error => 4.0*$cpucount, + warn => 2.0*$cpucount, + note => 1.0*$cpucount, + ); open (LOADAVGH,"/proc/loadavg"); my $loadavg=; close (LOADAVGH); @@ -238,11 +255,11 @@ sub log_machine_info { &log($fh,"$loadavg"); my @parts=split(/\s+/,$loadavg); - if ($parts[1]>4.0) { + if ($parts[1]>$loadtarget{'error'}) { $errors++; - } elsif ($parts[1]>2.0) { + } elsif ($parts[1]>$loadtarget{'warn'}) { $warnings++; - } elsif ($parts[1]>1.0) { + } elsif ($parts[1]>$loadtarget{'note'}) { $notices++; }