Sebastien GODARD [Sat, 19 Feb 2022 11:44:44 +0000 (12:44 +0100)]
XML: Update DTD and XSD documents
If the user selects only a CPU which happens to be offline then the XML
output generated by sadf -x will contain no cpu element.
Update DTD and XSD documents so that the XML output won't be considered
as invalid.
Sebastien GODARD [Sun, 13 Feb 2022 07:57:04 +0000 (08:57 +0100)]
PCP: A_NET_NFS(D): Fix instance names for getattr call
RPC call is getattr and not lookup.
The instance definition in pcp_stats.c was wrong for getattr call for
NFS and NFSD activities. Yet pcp_stats.c used the expected name getattr,
resulting in a name mismatch and no values being displayed.
Nathan Scott [Wed, 9 Feb 2022 00:36:32 +0000 (11:36 +1100)]
A_IRQ: sadf: Update PCP interface for per-CPU interrupts statistics
Use the PCP instance domain convention with kernel.percpu.interrupts
where the interrupt line and cpu ID are combined. This provides the
same metric as PCP and also a single stable metric identifier (pmID).
sar/sadf: Don't reallocate buffers for activities not present in file
Buffer reallocation would fail for activities which are not in the file
being read. This is because @nr2 = -1 and @nr2 is used to compute the
memory to allocate in reallocate_all_buffers():
A_IRQ: sar: Display 0.00 when number of interrupts decreases
When a CPU goes offline, the number of interrupts among all CPU can
decrease. In this case, display a value of 0.00 instead of the huge
number that would appear otherwise.
A_IRQ: sar: Always display a header line for each sample
Make sure that the header line gets printed with each sample.
This is because CPU can go offline or come back online, and so the
header line needs to be updated accordingly.
A_IRQ: sadf: Update PCP interface for interrupts statistics
Update/create new PCP metrics for interrupts statistics:
kernel.all.intr: This is the total number of all interrupts among
all processors
kernel.all.interrupts.total: This is the total number of each interrupt
among all processors. A domain instance is created for each interrupt
("0", "1", "LOC", "CAL", etc.)
kernel.percpu.interrupts.XXX: This is the number of interrupts XXX for a
given processor. A domain instance is created for each processor (cpu0,
cpu1, etc.)
E.g.:
kernel.percpu.interrupts.sum is the total number of all interrupts for a
given processor.
kernel.percpu.interrupts.LOC is the number of LOC interrupts for a given
processor.
Metric names cannot contain digits. As a consequence,
kernel.percpu.interrupts.0 is replaced with kernel.percpu.interrupts.a
kernel.percpu.interrupts.1 is replaced with kernel.percpu.interrupts.b
kernel.percpu.interrupts.30 is replaced with kernel.percpu.interrupts.da
etc.
A_IRQ: Add new method to create the list of interrupts names
Add count_new_int() method to A_IRQ activity structure.
This method will be used to create the list of all the interrupts names
present in file (unless a list has been explicitly entered by the user
on the command line with option "--int=").
Sebastien GODARD [Fri, 28 Jan 2022 16:04:31 +0000 (17:04 +0100)]
A_IRQ: Add new "--int=" option to sar and sadf
The option "--int=" can be used with sar and sadf to enter a list of
comma-separated interrupts values, ranges of interrupts values, or even
interrupts names.
These interrupts will then be displayed using option -I.
Sebastien GODARD [Sun, 23 Jan 2022 14:54:07 +0000 (15:54 +0100)]
A_IRQ: Change syntax for option -I
Option -I was followed by a list of interrupts or the SUM/ALL keywords.
Now option -I doesn't need to be followed par additional parameters.
Keywords SUM and ALL may still be used (but the ALL keyword will be
ignored).
The list of interrupts will be entered using a new option: --int=
Sebastien GODARD [Sun, 23 Jan 2022 14:48:52 +0000 (15:48 +0100)]
A_IRQ: Move to new structure
Interrupts activity structure is modified.
The interrupt name will now be saved together with the number of
interrupts.
The number of interrupts is saved as an unsigned int to be consistent
with the type used by the kernel.
Sebastien GODARD [Sun, 23 Jan 2022 09:57:16 +0000 (10:57 +0100)]
Make sure that datafiles with unknown activities can be read by sar
When the structure containing statistics for an activity is modified
(with the number of fields of type A increased and of type B decreased),
sar and sadf might not be able to read the corresponding datafile.
Make sure that they can read the other activities in file, even if the
unknown activity is ignored.
Sebastien GODARD [Wed, 12 Jan 2022 16:48:44 +0000 (17:48 +0100)]
mpstat: Don't use read_stat_irq() function
mpstat used read_stat_irq() function from rd_stats.c to get the total
number of interrupts among all processors.
This function is to be heavily modified to deal with sar's new
interrupts statistics report. So create a new function which will be
used only by mpstat and include it in its code.
Sebastien GODARD [Mon, 10 Jan 2022 16:57:25 +0000 (17:57 +0100)]
Fix index value used in online_cpu_bitmap array
The online_cpu_bitmap[] array size is based on the number of CPU
allocated (see sa_wrap.c:wrap_read_softnet()). The size is calculated as
BITMAP_SIZE(a->nr_allocated).
So the index used in read_softnet() function (rd_stats.c) shall not
exceed the size of the array, and so cannot reach NR_CPUS.
Sebastien GODARD [Wed, 29 Dec 2021 09:12:42 +0000 (10:12 +0100)]
A_IRQ: Count number of interrupts using /proc/interrupts
sar/sadc will no longer use /proc/stat file to calculate interrupts
statistics. They will use /proc/interrupts and will display per-CPU
statistics.
This first patch updates the function used to count the number of
interrupts.
Sebastien GODARD [Sun, 14 Nov 2021 10:28:11 +0000 (11:28 +0100)]
mpstat: Don't display offline CPU
Offline CPU are no longer displayed with options -I {SUM, CPU, SCPU}.
This was already the case with option -u. So this should make display
consistent for all options.
Ville Skyttä [Sat, 13 Nov 2021 21:30:39 +0000 (23:30 +0200)]
*: use `grep -E` instead of `egrep`
`egrep` has been deprecated in GNU grep since 2007, and in current post
3.7 Git it has been made to emit obsolescence warnings:
https://git.savannah.gnu.org/cgit/grep.git/commit/?id=a9515624709865d480e3142fd959bccd1c9372d1
Sebastien GODARD [Thu, 10 Jun 2021 13:06:19 +0000 (15:06 +0200)]
sar: Tell the user to convert its file when needed
When sar or sadf tries to read a datafile with an old format, tell the
user that he can convert it to current format to be able to read it.
This message is displayed only for datafiles created by sysstat versions
9.1.6 and later. Datafiles older than 9.1.6 cannot be converted.
sysstat version 12.5.4 final packaging.
Changelog added.
spec and lsm files updated.
This version brings better integration with PCP (thanks go to Nathan
Scott).
It also adds a small improvement to the pidstat command: Using option -e
and not specifying an interval nor a count value on the command line
will make pidstat show global task statistics when the task terminates.
sadf: PCP: Don't check for newly registered network interfaces
It is useless to check if current network interface has just been
registered or not before displaying its PCP statistics.
This is because PCP displays the raw counter values, not their variation
over the interval. Moreover the whole list of network interfaces present
in file has been created with each one having already its instance.
Nathan Scott [Thu, 8 Apr 2021 03:39:44 +0000 (13:39 +1000)]
Fix PCP issues found by Sebastien during code review
- Resolve duplication of kernel.all.nprocs by switching
one over to kernel.all.sysfork to match Linux PCP
- Add total physical memory metrics
- Fix units metadata for the kernel.all.nptys metric
- Drop not-yet-used network interface metric defitions
(speed, baudrate, duplex)
- Correct the spelling of "celsius"
- Resolve confusion with rq_ticks/rd_ticks disk fields
Relates to https://github.com/sysstat/sysstat/pull/287
Parth Shah [Wed, 31 Mar 2021 11:59:06 +0000 (17:29 +0530)]
pidstat: Monitor and show stats at the end of the exec program
Do not set alarms for undefined value of the interval. Also allow to
print stats even if the SIGINT/SIGCHLD occurs before first interval.
Hence, the command `pidstat -e <prog-name>`
will monitor the prog-name process and show the PID stats after the
prog-name is completed its execution.
Nathan Scott [Tue, 23 Mar 2021 06:59:18 +0000 (17:59 +1100)]
Update sadf to use metadata matching the same metrics from PCP
When operating with the -l option in sadf we want to generate PCP
archives that match the PCP archives generated by pmlogger(1) as
closely as possible. The advantage to doing this is that the live
and historical modes to the PCP tools become interchangeable; i.e.
pmchart views, pmie rules, grafana-pcp dashboards, and so on, all
expect metrics named according to the PCP conventions.
The reason sadf is not already doing this (AIUI), is that it was
originally based on the sar2pcp(1) utility. This tool (which we
plan to deprecate in PCP in favour of the sysstat functionality)
used the rate-converted counter values as its starting point and
not the raw counters we have access to within sysstat itself.
I've audited all of the metrics being added to PCP archives with
the sadf -l option now, and all now align with current metadata
in PCP. I've also added a few uname(2) metrics from the record
header (in the way hinv.ncpu was already being used).
Sebastien GODARD [Sun, 14 Feb 2021 10:07:01 +0000 (11:07 +0100)]
sysstat-12.5.3
sysstat version 12.5.3 final packaging.
Changelog added.
spec and lsm files updated.
This also is mainly a bugfix version (sar, sadf).
One noteworthy new feature is the addition of Link Time Optimization
(LTO) support for smaller binary executables (use --enable-lto to
enable it when compiling sysstat).