diff --git a/sysstat-post-process b/sysstat-post-process index 4cf06b3..dac060c 100755 --- a/sysstat-post-process +++ b/sysstat-post-process @@ -118,6 +118,9 @@ if (scalar @sar_files == 1) { } elsif ( /(\d+:\d+:\d+)\s+%smem-10\s+%smem-60\s+%smem-300\s+%smem\s+%fmem-10\s+%fmem-60\s+%fmem-300\s+%fmem$/ ) { #16:19:33 %smem-10 %smem-60 %smem-300 %smem %fmem-10 %fmem-60 %fmem-300 %fmem $scan_mode = "memory-starved"; + } elsif ( /(\d+:\d+:\d+)\s+kbmemfree\s+kbavail\s+kbmemused\s+%memused\s+kbbuffers\s+kbcached\s+kbcommit\s+%commit\s+kbactive\s+kbinact\s+kbdirty$/ ) { + #21:28:50 kbmemfree kbavail kbmemused %memused kbbuffers kbcached kbcommit %commit kbactive kbinact kbdirty + $scan_mode = "memory-utilization"; } elsif ($scan_mode eq "paging") { if ( /(\d+):(\d+):(\d+)\s+(\d+\.\d+)\s+(\d+\.\d+)\s+(\d+\.\d+)\s+(\d+\.\d+)\s+(\d+\.\d+)\s+(\d+\.\d+)\s+(\d+\.\d+)\s+(\d+\.\d+)\s+(\d+\.\d+)$/ ) { @@ -230,6 +233,66 @@ if (scalar @sar_files == 1) { } elsif ($_ eq '') { $scan_mode = ''; } + } elsif ($scan_mode eq "memory-utilization") { + if ( /(\d+):(\d+):(\d+)\s+(\d+)\s+(\d+)\s+(\d+)\s+(\d+\.\d+)\s+(\d+)\s+(\d+)\s+(\d+)\s+(\d+\.\d+)\s+(\d+)\s+(\d+)\s+(\d+)$/ ) { + #21:28:53 1865772 66317648 28872324 29.63 40 63292632 58318396 59.84 41768712 32304200 11020 + my $hour = $1; + my $min = $2; + my $sec = $3; + my $kb_mem_free = $4; + my $kb_available = $5; + my $kb_mem_used = $6; + my $percent_mem_used = $7; + my $kb_buffers = $8; + my $kb_cached = $9; + my $kb_commit = $10; + my $percent_commit = $11; + my $kb_active = $12; + my $kb_inactive = $13; + my $kb_dirty = $14; + $hms_ms = get_hms_ms($hour, $min, $sec); + if (defined $prev_hms_ms and $prev_hms_ms > $hms_ms) { + # hour-minute-second is lower than last reading so one day has passed + $ymd_timestamp_ms = advance_ymd($ymd_timestamp_ms); + } + my %sample = ('end' => $ymd_timestamp_ms + $hms_ms); + + $desc{'type'} = 'Memory-Free-KB'; + $sample{'value'} = $kb_mem_free; + log_sample($source, \%desc, \%no_names, \%sample); + $desc{'type'} = 'Memory-Available-KB'; + $sample{'value'} = $kb_available; + log_sample($source, \%desc, \%no_names, \%sample); + $desc{'type'} = 'Memory-Used-KB'; + $sample{'value'} = $kb_mem_used; + log_sample($source, \%desc, \%no_names, \%sample); + $desc{'type'} = 'Memory-Used-Percent'; + $sample{'value'} = $percent_mem_used; + log_sample($source, \%desc, \%no_names, \%sample); + $desc{'type'} = 'Memory-Buffers-KB'; + $sample{'value'} = $kb_buffers; + log_sample($source, \%desc, \%no_names, \%sample); + $desc{'type'} = 'Memory-Cached-KB'; + $sample{'value'} = $kb_cached; + log_sample($source, \%desc, \%no_names, \%sample); + $desc{'type'} = 'Memory-Commit-KB'; + $sample{'value'} = $kb_commit; + log_sample($source, \%desc, \%no_names, \%sample); + $desc{'type'} = 'Memory-Commit-Percent'; + $sample{'value'} = $percent_commit; + log_sample($source, \%desc, \%no_names, \%sample); + $desc{'type'} = 'Memory-Active-KB'; + $sample{'value'} = $kb_active; + log_sample($source, \%desc, \%no_names, \%sample); + $desc{'type'} = 'Memory-Inactive-KB'; + $sample{'value'} = $kb_inactive; + log_sample($source, \%desc, \%no_names, \%sample); + $desc{'type'} = 'Memory-Dirty-KB'; + $sample{'value'} = $kb_dirty; + log_sample($source, \%desc, \%no_names, \%sample); + } elsif ($_ eq '') { + $scan_mode = ''; + } } } elsif ($source eq "sar-io") { if ( /(\d+:\d+:\d+)\s+%sio-10\s+%sio-60\s+%sio-300\s+%sio\s+%fio-10\s+%fio-60\s+%fio-300\s+%fio$/ ) { diff --git a/sysstat-start b/sysstat-start index 7a641e3..48fbd2d 100755 --- a/sysstat-start +++ b/sysstat-start @@ -79,8 +79,9 @@ for subtool in `echo $subtools | sed -e 's/,/ /g'`; do echo "iostat pid is $iostat_pid" ;; sar) - echo "Starting sar" - TZ=UTC S_TIME_FORMAT=ISO sar -n ALL -B -q ALL -W -H -m ALL -w $interval >sar-stdout.txt 2>sar-stderr.txt & + cmd=(sar -r -n ALL -B -q ALL -W -H -m ALL -w $interval) + echo "Starting sar: ${cmd[@]}" + TZ=UTC S_TIME_FORMAT=ISO "${cmd[@]}" >sar-stdout.txt 2>sar-stderr.txt & sar_pid=$! echo "$sar_pid" >>sysstat-pids.txt echo "sar pid is $sar_pid"