diff -pruN 12.7.5-2/CHANGES 12.7.7-0ubuntu2/CHANGES
--- 12.7.5-2/CHANGES	2023-12-17 14:33:28.000000000 +0000
+++ 12.7.7-0ubuntu2/CHANGES	2025-02-02 07:37:25.000000000 +0000
@@ -1,5 +1,57 @@
 Changes:
 
+2025/02/02: Version 12.7.7 - Sebastien Godard (sysstat <at> orange.fr)
+	* Rework overflow check function.
+	* pidstat: Add JSON output format (option "-o JSON").
+	* [Siddhi Katage]: pidstat: Fix bogus %usr values in pidstat output.
+	* pidstat: Free structures before exiting.
+	* pidstat: Make sure interval is specified when option -e is used.
+	* pidstat: Create separate functions to display data for current task.
+	* pidstat: Various cosmetic changes.
+	* cifsiostat: Add JSON output format (option "-o JSON").
+	* cifsiostat: Display error message when no CIFS fs are found.
+	* cifsiostat: Add new option -y to tell cifsiostat to omit the first
+	  report with statistics since system restart.
+	* tapestat: Add JSON output format (option "-o JSON").
+	* tapestat: Set handler for SIGALRM in rw_tape_stat_loop() function.
+	* tapestat: Call write_sample_timestamp() to display timestamp.
+	* mpstat: Properly terminate JSON output when ^C entered on first
+	  interval.
+	* iostat: Remove extra blank line when omitting first report.
+	* cifsiostat, tapestat and pidstat manual pages updated.
+	* Use the binary units (kibibytes, mebibytes...) instead of kilobytes,
+	  megabytes... in all manual pages.
+	* FAQ updated.
+	* [Peter Portante]: Slight changes to compile on Mac OS X.
+	* [Peter Portante]: Add missing "void" parameter to
+	  init_custom_color_palette() function.
+	* Use xflags variable for options used by multiple commands.
+	* Move write_sample_timestamp() function to common.c file.
+	* Update headers files included.
+	* Add new non regression tests.
+
+2024/07/03: Version 12.7.6 - Sebastien Godard (sysstat <at> orange.fr)
+	* sar/sadf: [A_NET_ETCP]: Rename retrans/s field to retrseg/s
+	  because it was already used in A_NET_NFS report.
+	* sadf: SVG: Fix oversized SVG canvas height.
+	* sadf: Don't cap SVG graph output at 100%.
+	* sadf: A_NET_SOFT: Don't display graphs for offline CPU.
+	* sadf: SVG: Don't ignore other views when one has to be skipped.
+	* sadf: Make sure structures will be alloacated for every installed
+	  CPU.
+	* sadf: Define MIN_CANVAS_HEIGHT constant.
+	* sar: Display min/max values only when available.
+	* Define macros for CPU manipulation.
+	* SREALLOC() macro: Make sure size is not zero.
+	* Fix a warning given by gcc v13 with -fanalyzer option.
+	* [Eli Schwartz]: configure.ac: fix erroneous bashisms.
+	* sar manual page updated.
+	* DTD and XSD documents updated.
+	* Year updated in copyright messages.
+	* Other cosmetic changes in code.
+	* FAQ and README files updated.
+	* Non regression tests updated. New tests added.
+
 2023/12/17: Version 12.7.5 - Sebastien Godard (sysstat <at> orange.fr)
 	* [Quan quan Cao]: sar/sadc: Add new metrics pgprom/s and pgdem/s.
 	* sar: Remove %vmeff metric.
diff -pruN 12.7.5-2/FAQ.md 12.7.7-0ubuntu2/FAQ.md
--- 12.7.5-2/FAQ.md	2023-05-06 16:26:53.000000000 +0000
+++ 12.7.7-0ubuntu2/FAQ.md	2024-12-18 15:06:12.000000000 +0000
@@ -8,6 +8,7 @@
 [1.2.](#1_2) When I try to compile sysstat, it fails and says it cannot find some include files.  
 [1.3.](#1_3) I don't understand why sysstat displays the time sometimes as `HH:MM:SS` and sometimes as `HH:MM:SS AM/PM`...  
 [1.4.](#1_4) What are the units actually used by sysstat commands?  
+[1.5.](#1_5) Does sysstat still use odd/even numbers for development/stable versions?
 
 **[2. Questions related to sar, sadc and sadf](#sar)**
 
@@ -136,13 +137,23 @@ even some words (like "Average") have ch
 
 A: Although sysstat commands use the following abbreviations: kB, MB, etc.
 as part of the metrics names (e.g. kB_read/s, wkB/s, or even sometimes with a
-lower 'b': kbmemfree, kbavail...), and the manual pages speak of kilobytes,
-megabytes, etc., we always actually refer to kibibytes (kiB), mebibytes (MiB),...  
+lower 'b': kbmemfree, kbavail...), we always actually refer to kibibytes (kiB),
+mebibytes (MiB),...  
 A kibibyte is equal to 1024 bytes, and a mebibyte is equal to 1024 kibibytes.  
 Metrics names have been defined many years ago. We don't modify them to avoid
 breaking third-party programs parsing sysstat commands' output.
 
 ---
+
+1.5.<a name="1_5"></a> Does sysstat still use odd/even numbers for development/stable
+versions?
+
+
+No, starting with sysstat versions 12.7.x, sysstat no longer uses odd and even version
+numbers to identify development and stable series. The latest sysstat release should
+always be considered as a stable version that can be used for distribution packaging.
+
+---
 ### 2. Questions related to sar, sadc and sadf<a name="sar"></a>
 
 2.1.<a name="2_1"></a> The sar command complains with the following message:
@@ -511,7 +522,7 @@ your machine uptime is high and/or there
 Sysstat up to version 5.0.6 uses 32-bit integer variables to store CPU usage.
 Then, beginning with version 5.1.1, sysstat has shifted to 64-bit variables,
 which has fixed the problem. So try to upgrade your version of sysstat to
-the latest stable release and check that the problem has gone.  
+the latest release and check that the problem has gone.
 Also see question 2.6 above.
 
 ---
diff -pruN 12.7.5-2/Makefile.in 12.7.7-0ubuntu2/Makefile.in
--- 12.7.5-2/Makefile.in	2023-07-09 08:59:41.000000000 +0000
+++ 12.7.7-0ubuntu2/Makefile.in	2025-02-02 07:33:42.000000000 +0000
@@ -259,10 +259,10 @@ common.o: common.c version.h common.h
 
 systest.o: systest.c systest.h
 
-sa_common_light.o: sa_common.c version.h sa.h common.h rd_stats.h rd_sensors.h ioconf.h sysconfig.h
+sa_common_light.o: sa_common.c version.h sa.h common.h rd_stats.h rd_sensors.h
 	$(CC) -o $@ -c $(CFLAGS) -DSOURCE_SADC $(DFLAGS) $<
 
-sa_common.o: sa_common.c version.h sa.h common.h rd_stats.h rd_sensors.h ioconf.h sysconfig.h
+sa_common.o: sa_common.c version.h sa.h common.h rd_stats.h rd_sensors.h
 
 ioconf.o: ioconf.c ioconf.h common.h sysconfig.h
 
@@ -289,19 +289,19 @@ count_light.o: count.c common.h rd_stats
 
 rd_sensors.o: rd_sensors.c common.h rd_sensors.h rd_stats.h
 
-pr_stats.o: pr_stats.c sa.h common.h rd_stats.h rd_sensors.h ioconf.h sysconfig.h pr_xstats.h
+pr_stats.o: pr_stats.c sa.h common.h rd_stats.h rd_sensors.h pr_xstats.h
 
 pr_xstats.o: pr_xstats.c sa.h common.h rd_stats.h rd_sensors.h
 
-rndr_stats.o: rndr_stats.c sa.h common.h rd_stats.h rd_sensors.h ioconf.h sysconfig.h rndr_stats.h
+rndr_stats.o: rndr_stats.c sa.h common.h rd_stats.h rd_sensors.h rndr_stats.h
 
 xml_stats.o: xml_stats.c sa.h common.h rd_stats.h rd_sensors.h ioconf.h sysconfig.h
 
-json_stats.o: json_stats.c sa.h common.h rd_stats.h rd_sensors.h ioconf.h sysconfig.h
+json_stats.o: json_stats.c sa.h common.h rd_stats.h rd_sensors.h
 
 svg_stats.o: svg_stats.c sa.h common.h rd_stats.h rd_sensors.h ioconf.h sysconfig.h
 
-raw_stats.o: raw_stats.c sa.h common.h rd_stats.h rd_sensors.h ioconf.h sysconfig.h
+raw_stats.o: raw_stats.c sa.h common.h rd_stats.h rd_sensors.h
 
 pcp_stats.o: pcp_stats.c common.h rd_stats.h rd_sensors.h sa.h
 
@@ -352,7 +352,7 @@ sadf: LFLAGS += $(LFPCP)
 
 sadf: sadf.o act_sadf.o format_sadf.o sadf_misc.o pcp_def_metrics.o sa_conv.o rndr_stats.o xml_stats.o json_stats.o svg_stats.o raw_stats.o pcp_stats.o sa_common.o librdstats_light.a libsyscom.a
 
-iostat.o: iostat.c iostat.h version.h common.h ioconf.h sysconfig.h rd_stats.h count.h
+iostat.o: iostat.c iostat.h version.h common.h rd_stats.h count.h
 
 iostat: iostat.o librdstats_light.a libsyscom.a
 
@@ -544,7 +544,7 @@ copyyear:
 	catalogs="$(SOURCE_CODE) iconfig do_test README.md sa1.in sa2.in sysconfig.in sysstat.in version.in"; \
 	for c in $$catalogs; do \
 		echo "Updating file: $$c"; \
-		sed 's/-2022/-2023/g' $$c > copyyear.tmp; \
+		sed 's/-2024/-2025/g' $$c > copyyear.tmp; \
 		mv copyyear.tmp $$c; \
 	done
 	chmod 755 iconfig do_test
diff -pruN 12.7.5-2/README.md 12.7.7-0ubuntu2/README.md
--- 12.7.5-2/README.md	2023-12-14 16:51:46.000000000 +0000
+++ 12.7.7-0ubuntu2/README.md	2025-02-02 07:33:59.000000000 +0000
@@ -2,7 +2,7 @@
 [![Coverity Scan Build Status](https://scan.coverity.com/projects/4040/badge.svg)](https://scan.coverity.com/projects/sysstat-sysstat)
 [![Donate](https://img.shields.io/badge/Donate-PayPal-blue.svg)](https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=45U6F9R73ESFQ)
 
-(C) 1999-2023 Sebastien GODARD (sysstat (at) orange (dot) fr)
+(C) 1999-2025 Sebastien GODARD (sysstat (at) orange (dot) fr)
 
 ### Introduction
 
@@ -80,6 +80,10 @@ The latest version of sysstat can always
 See the CHANGES file to know the new features/improvements/bug fixes added
 in this release of sysstat.
 
+Note that sysstat no longer uses odd and even version numbers to identify development and stable
+versions. The latest sysstat release should always be considered as a stable version that can be
+used for distribution packaging.
+
 Sysstat development can be tracked on [GitHub](https://github.com/sysstat/sysstat).
 
 ### Installation
diff -pruN 12.7.5-2/activity.c 12.7.7-0ubuntu2/activity.c
--- 12.7.5-2/activity.c	2023-12-09 15:53:16.000000000 +0000
+++ 12.7.7-0ubuntu2/activity.c	2025-02-02 07:33:58.000000000 +0000
@@ -1,6 +1,6 @@
 /*
  * activity.c: Define system activities available for sar/sadc.
- * (C) 1999-2023 by Sebastien GODARD (sysstat <at> orange.fr)
+ * (C) 1999-2025 by Sebastien GODARD (sysstat <at> orange.fr)
  *
  ***************************************************************************
  * This program is free software; you can redistribute it and/or modify it *
@@ -55,7 +55,7 @@ struct act_bitmap cpu_bitmap = {
 
 
 /*
- * CPU statistics.
+ * CPU statistics. Switch: -u
  * This is the only activity which *must* be collected by sadc
  * so that uptime can be filled.
  */
@@ -112,7 +112,7 @@ struct activity cpu_act = {
 	.bitmap		= &cpu_bitmap
 };
 
-/* Process (task) creation and context switch activity */
+/* Process (task) creation and context switch activity. Switch: -w */
 struct activity pcsw_act = {
 	.id		= A_PCSW,
 	.options	= AO_COLLECTED,
@@ -163,7 +163,7 @@ struct activity pcsw_act = {
 	.bitmap		= NULL
 };
 
-/* Interrupts statistics */
+/* Interrupts statistics. Switch: -I */
 struct activity irq_act = {
 	.id		= A_IRQ,
 	.options	= AO_COUNTED + AO_MATRIX + AO_PERSISTENT,
@@ -197,8 +197,8 @@ struct activity irq_act = {
 	.item_list	= NULL,
 	.item_list_sz	= 0,
 	.g_nr		= 0,
-	.nr_ini		= -1,
-	.nr2		= -1,
+	.nr_ini		= -1,	/* Nr of CPU */
+	.nr2		= -1,	/* Nr of int */
 	.nr_max		= NR_CPUS + 1,
 	.nr		= {-1, -1, -1},
 	.nr_allocated	= 0,
@@ -214,7 +214,7 @@ struct activity irq_act = {
 	.bitmap		= &cpu_bitmap
 };
 
-/* Swapping activity */
+/* Swapping activity. Switch: -W */
 struct activity swap_act = {
 	.id		= A_SWAP,
 	.options	= AO_COLLECTED,
@@ -265,7 +265,7 @@ struct activity swap_act = {
 	.bitmap		= NULL
 };
 
-/* Paging activity */
+/* Paging activity. Switch: -B */
 struct activity paging_act = {
 	.id		= A_PAGE,
 	.options	= AO_COLLECTED,
@@ -318,7 +318,7 @@ struct activity paging_act = {
 	.bitmap		= NULL
 };
 
-/* I/O and transfer rate activity */
+/* I/O and transfer rate activity. Switch: -b */
 struct activity io_act = {
 	.id		= A_IO,
 	.options	= AO_COLLECTED,
@@ -369,7 +369,7 @@ struct activity io_act = {
 	.bitmap		= NULL
 };
 
-/* Memory and swap space utilization activity */
+/* Memory and swap space utilization activity. Switch: -r */
 struct activity memory_act = {
 	.id		= A_MEMORY,
 	.options	= AO_COLLECTED + AO_MULTIPLE_OUTPUTS,
@@ -421,7 +421,7 @@ struct activity memory_act = {
 	.bitmap		= NULL
 };
 
-/* Kernel tables activity */
+/* Kernel tables activity. Switch: -v */
 struct activity ktables_act = {
 	.id		= A_KTABLES,
 	.options	= AO_COLLECTED,
@@ -472,7 +472,7 @@ struct activity ktables_act = {
 	.bitmap		= NULL
 };
 
-/* Queue and load activity */
+/* Queue and load activity. Switch: -q LOAD */
 struct activity queue_act = {
 	.id		= A_QUEUE,
 	.options	= AO_COLLECTED,
@@ -523,7 +523,7 @@ struct activity queue_act = {
 	.bitmap		= NULL
 };
 
-/* Serial lines activity */
+/* Serial lines activity. Switch: -y */
 struct activity serial_act = {
 	.id		= A_SERIAL,
 	.options	= AO_COLLECTED + AO_COUNTED,
@@ -574,7 +574,7 @@ struct activity serial_act = {
 	.bitmap		= NULL
 };
 
-/* Block devices activity */
+/* Block devices activity. Switch: -d */
 struct activity disk_act = {
 	.id		= A_DISK,
 	.options	= AO_COUNTED + AO_GRAPH_PER_ITEM,
@@ -625,7 +625,7 @@ struct activity disk_act = {
 	.bitmap		= NULL
 };
 
-/* Network interfaces activity */
+/* Network interfaces activity. Switch: -n DEV */
 struct activity net_dev_act = {
 	.id		= A_NET_DEV,
 	.options	= AO_COLLECTED + AO_COUNTED + AO_GRAPH_PER_ITEM,
@@ -676,7 +676,7 @@ struct activity net_dev_act = {
 	.bitmap		= NULL
 };
 
-/* Network interfaces (errors) activity */
+/* Network interfaces (errors) activity. Switch: -n EDEV */
 struct activity net_edev_act = {
 	.id		= A_NET_EDEV,
 	.options	= AO_COLLECTED + AO_COUNTED + AO_GRAPH_PER_ITEM,
@@ -728,7 +728,7 @@ struct activity net_edev_act = {
 	.bitmap		= NULL
 };
 
-/* NFS client activity */
+/* NFS client activity. Switch: -n NFS */
 struct activity net_nfs_act = {
 	.id		= A_NET_NFS,
 	.options	= AO_COLLECTED,
@@ -779,7 +779,7 @@ struct activity net_nfs_act = {
 	.bitmap		= NULL
 };
 
-/* NFS server activity */
+/* NFS server activity. Switch: -n NFSD */
 struct activity net_nfsd_act = {
 	.id		= A_NET_NFSD,
 	.options	= AO_COLLECTED,
@@ -831,7 +831,7 @@ struct activity net_nfsd_act = {
 	.bitmap		= NULL
 };
 
-/* Network sockets activity */
+/* Network sockets activity. Switch: -n SOCK */
 struct activity net_sock_act = {
 	.id		= A_NET_SOCK,
 	.options	= AO_COLLECTED,
@@ -882,7 +882,7 @@ struct activity net_sock_act = {
 	.bitmap		= NULL
 };
 
-/* IP network traffic activity */
+/* IP network traffic activity. Switch: -n IP */
 struct activity net_ip_act = {
 	.id		= A_NET_IP,
 	.options	= AO_NULL,
@@ -933,7 +933,7 @@ struct activity net_ip_act = {
 	.bitmap		= NULL
 };
 
-/* IP network traffic (errors) activity */
+/* IP network traffic (errors) activity. Switch: -n EIP */
 struct activity net_eip_act = {
 	.id		= A_NET_EIP,
 	.options	= AO_NULL,
@@ -984,7 +984,7 @@ struct activity net_eip_act = {
 	.bitmap		= NULL
 };
 
-/* ICMP network traffic activity */
+/* ICMP network traffic activity. Switch: -n ICMP */
 struct activity net_icmp_act = {
 	.id		= A_NET_ICMP,
 	.options	= AO_NULL,
@@ -1036,7 +1036,7 @@ struct activity net_icmp_act = {
 	.bitmap		= NULL
 };
 
-/* ICMP network traffic (errors) activity */
+/* ICMP network traffic (errors) activity. Switch: -n EICMP */
 struct activity net_eicmp_act = {
 	.id		= A_NET_EICMP,
 	.options	= AO_NULL,
@@ -1088,7 +1088,7 @@ struct activity net_eicmp_act = {
 	.bitmap		= NULL
 };
 
-/* TCP network traffic activity */
+/* TCP network traffic activity. Switch: -n TCP */
 struct activity net_tcp_act = {
 	.id		= A_NET_TCP,
 	.options	= AO_NULL,
@@ -1139,7 +1139,7 @@ struct activity net_tcp_act = {
 	.bitmap		= NULL
 };
 
-/* TCP network traffic (errors) activity */
+/* TCP network traffic (errors) activity. Switch: -n ETCP */
 struct activity net_etcp_act = {
 	.id		= A_NET_ETCP,
 	.options	= AO_NULL,
@@ -1155,7 +1155,7 @@ struct activity net_etcp_act = {
 	.f_print_avg	= print_net_etcp_stats,
 #endif
 #if defined(SOURCE_SAR) || defined(SOURCE_SADF)
-	.hdr_line	= "atmptf/s;estres/s;retrans/s;isegerr/s;orsts/s",
+	.hdr_line	= "atmptf/s;estres/s;retrseg/s;isegerr/s;orsts/s",
 #endif
 	.gtypes_nr	= {STATS_NET_ETCP_ULL, STATS_NET_ETCP_UL, STATS_NET_ETCP_U},
 	.ftypes_nr	= {0, 0, 0},
@@ -1190,7 +1190,7 @@ struct activity net_etcp_act = {
 	.bitmap		= NULL
 };
 
-/* UDP network traffic activity */
+/* UDP network traffic activity. Switch: -n UDP */
 struct activity net_udp_act = {
 	.id		= A_NET_UDP,
 	.options	= AO_NULL,
@@ -1241,7 +1241,7 @@ struct activity net_udp_act = {
 	.bitmap		= NULL
 };
 
-/* IPv6 sockets activity */
+/* IPv6 sockets activity. Switch: -n SOCK6 */
 struct activity net_sock6_act = {
 	.id		= A_NET_SOCK6,
 	.options	= AO_NULL,
@@ -1292,7 +1292,7 @@ struct activity net_sock6_act = {
 	.bitmap		= NULL
 };
 
-/* IPv6 network traffic activity */
+/* IPv6 network traffic activity. Switch: -n IP6 */
 struct activity net_ip6_act = {
 	.id		= A_NET_IP6,
 	.options	= AO_NULL,
@@ -1344,7 +1344,7 @@ struct activity net_ip6_act = {
 	.bitmap		= NULL
 };
 
-/* IPv6 network traffic (errors) activity */
+/* IPv6 network traffic (errors) activity. Switch: -n EIP6 */
 struct activity net_eip6_act = {
 	.id		= A_NET_EIP6,
 	.options	= AO_NULL,
@@ -1396,7 +1396,7 @@ struct activity net_eip6_act = {
 	.bitmap		= NULL
 };
 
-/* ICMPv6 network traffic activity */
+/* ICMPv6 network traffic activity. Switch: -n ICMP6 */
 struct activity net_icmp6_act = {
 	.id		= A_NET_ICMP6,
 	.options	= AO_NULL,
@@ -1449,7 +1449,7 @@ struct activity net_icmp6_act = {
 	.bitmap		= NULL
 };
 
-/* ICMPv6 network traffic (errors) activity */
+/* ICMPv6 network traffic (errors) activity. Switch: -n EICMP6 */
 struct activity net_eicmp6_act = {
 	.id		= A_NET_EICMP6,
 	.options	= AO_NULL,
@@ -1501,7 +1501,7 @@ struct activity net_eicmp6_act = {
 	.bitmap		= NULL
 };
 
-/* UDPv6 network traffic activity */
+/* UDPv6 network traffic activity. Switch: -n UDP6 */
 struct activity net_udp6_act = {
 	.id		= A_NET_UDP6,
 	.options	= AO_NULL,
@@ -1552,7 +1552,7 @@ struct activity net_udp6_act = {
 	.bitmap		= NULL
 };
 
-/* CPU frequency */
+/* CPU frequency. Switch: -m CPU */
 struct activity pwr_cpufreq_act = {
 	.id		= A_PWR_CPU,
 	.options	= AO_COUNTED + AO_GRAPH_PER_ITEM,
@@ -1603,7 +1603,7 @@ struct activity pwr_cpufreq_act = {
 	.bitmap		= &cpu_bitmap
 };
 
-/* Fan */
+/* Fan. Switch: -m FAN */
 struct activity pwr_fan_act = {
 	.id		= A_PWR_FAN,
 	.options	= AO_COUNTED + AO_GRAPH_PER_ITEM,
@@ -1654,7 +1654,7 @@ struct activity pwr_fan_act = {
 	.bitmap		= NULL
 };
 
-/* Temperature */
+/* Temperature. Switch: -m TEMP */
 struct activity pwr_temp_act = {
 	.id		= A_PWR_TEMP,
 	.options	= AO_COUNTED + AO_GRAPH_PER_ITEM,
@@ -1705,7 +1705,7 @@ struct activity pwr_temp_act = {
 	.bitmap		= NULL
 };
 
-/* Voltage inputs */
+/* Voltage inputs. Switch: -m IN */
 struct activity pwr_in_act = {
 	.id		= A_PWR_IN,
 	.options	= AO_COUNTED + AO_GRAPH_PER_ITEM,
@@ -1756,7 +1756,7 @@ struct activity pwr_in_act = {
 	.bitmap		= NULL
 };
 
-/* Hugepages activity */
+/* Hugepages activity. Switch: -H */
 struct activity huge_act = {
 	.id		= A_HUGE,
 	.options	= AO_COLLECTED,
@@ -1807,7 +1807,7 @@ struct activity huge_act = {
 	.bitmap		= NULL
 };
 
-/* CPU weighted frequency */
+/* CPU weighted frequency. Switch: -m FREQ */
 struct activity pwr_wghfreq_act = {
 	.id		= A_PWR_FREQ,
 	.options	= AO_COUNTED + AO_MATRIX,
@@ -1840,8 +1840,8 @@ struct activity pwr_wghfreq_act = {
 	.item_list	= NULL,
 	.item_list_sz	= 0,
 	.g_nr		= 0,
-	.nr_ini		= -1,
-	.nr2		= -1,
+	.nr_ini		= -1,	/* Nr of CPU */
+	.nr2		= -1,	/* Nr of frequencies */
 	.nr_max		= NR_CPUS + 1,
 	.nr		= {-1, -1, -1},
 	.nr_allocated	= 0,
@@ -1857,7 +1857,7 @@ struct activity pwr_wghfreq_act = {
 	.bitmap		= &cpu_bitmap
 };
 
-/* USB devices plugged into the system */
+/* USB devices plugged into the system. Switch: -m USB */
 struct activity pwr_usb_act = {
 	.id		= A_PWR_USB,
 	.options	= AO_COUNTED + AO_CLOSE_MARKUP,
@@ -1908,7 +1908,7 @@ struct activity pwr_usb_act = {
 	.bitmap		= NULL
 };
 
-/* Filesystem usage activity */
+/* Filesystem usage activity. Switch: -F */
 struct activity filesystem_act = {
 	.id		= A_FS,
 	.options	= AO_COUNTED + AO_GRAPH_PER_ITEM + AO_MULTIPLE_OUTPUTS,
@@ -1960,7 +1960,7 @@ struct activity filesystem_act = {
 	.bitmap		= NULL
 };
 
-/* Fibre Channel HBA usage activity */
+/* Fibre Channel HBA usage activity. Switch: -n FC */
 struct activity fchost_act = {
 	.id		= A_NET_FC,
 	.options	= AO_COUNTED + AO_GRAPH_PER_ITEM,
@@ -2011,7 +2011,7 @@ struct activity fchost_act = {
 	.bitmap		= NULL
 };
 
-/* Softnet activity */
+/* Softnet activity. Switch: -n SOFT */
 struct activity softnet_act = {
 	.id		= A_NET_SOFT,
 	.options	= AO_COLLECTED + AO_COUNTED + AO_CLOSE_MARKUP +
@@ -2063,7 +2063,7 @@ struct activity softnet_act = {
 	.bitmap		= &cpu_bitmap
 };
 
-/* Pressure-stall CPU activity */
+/* Pressure-stall CPU activity. Switch: -q CPU */
 struct activity psi_cpu_act = {
 	.id		= A_PSI_CPU,
 	.options	= AO_COLLECTED + AO_DETECTED,
@@ -2114,7 +2114,7 @@ struct activity psi_cpu_act = {
 	.bitmap		= NULL
 };
 
-/* Pressure-stall I/O activity */
+/* Pressure-stall I/O activity. Switch: -q IO */
 struct activity psi_io_act = {
 	.id		= A_PSI_IO,
 	.options	= AO_COLLECTED + AO_DETECTED,
@@ -2165,7 +2165,7 @@ struct activity psi_io_act = {
 	.bitmap		= NULL
 };
 
-/* Pressure-stall memory activity */
+/* Pressure-stall memory activity. Switch: -q MEM */
 struct activity psi_mem_act = {
 	.id		= A_PSI_MEM,
 	.options	= AO_COLLECTED + AO_DETECTED + AO_CLOSE_MARKUP,
@@ -2216,7 +2216,7 @@ struct activity psi_mem_act = {
 	.bitmap		= NULL
 };
 
-/* Battery capacity */
+/* Battery capacity. Switch: -m BAT */
 struct activity pwr_bat_act = {
 	.id		= A_PWR_BAT,
 	.options	= AO_COUNTED + AO_GRAPH_PER_ITEM,
diff -pruN 12.7.5-2/cifsiostat.c 12.7.7-0ubuntu2/cifsiostat.c
--- 12.7.5-2/cifsiostat.c	2023-11-02 16:36:27.000000000 +0000
+++ 12.7.7-0ubuntu2/cifsiostat.c	2025-02-02 07:33:58.000000000 +0000
@@ -2,6 +2,7 @@
  * cifsiostat: Report I/O statistics for CIFS filesystems.
  * Copyright (C) 2010 Red Hat, Inc. All Rights Reserved
  * Written by Ivana Varekova <varekova@redhat.com>
+ * Maintained / multiple enhancements by Sebastien GODARD (sysstat <at> orange.fr)
  *
  ***************************************************************************
  * This program is free software; you can redistribute it and/or modify it *
@@ -33,8 +34,8 @@
 #include "rd_stats.h"
 #include "count.h"
 
+#include <locale.h>	/* For setlocale() */
 #ifdef USE_NLS
-#include <locale.h>
 #include <libintl.h>
 #define _(string) gettext(string)
 #else
@@ -47,7 +48,6 @@ char *sccsid(void) { return (SCCSID); }
 #endif
 
 #ifdef TEST
-void int_handler(int n) { return; }
 extern int __env;
 #endif
 
@@ -55,13 +55,15 @@ unsigned long long uptime_cs[2] = {0, 0}
 struct io_cifs *cifs_list = NULL;
 
 int cpu_nr = 0;		/* Nb of processors on the machine */
-int flags = 0;		/* Flag for common options and system state */
+uint64_t flags = 0;	/* Flag for common options and system state */
+uint64_t xflags = 0;	/* Extended flag for options used by multiple commands */
 int dplaces_nr = -1;	/* Number of decimal places */
 
 long interval = 0;
 char timestamp[TIMESTAMP_LEN];
 
-struct sigaction alrm_act;
+struct sigaction alrm_act, int_act;
+int sigint_caught = 0;
 
 /*
  ***************************************************************************
@@ -78,12 +80,12 @@ void usage(char *progname)
 
 #ifdef DEBUG
 	fprintf(stderr, _("Options are:\n"
-			  "[ --dec={ 0 | 1 | 2 } ] [ --human ] [ --pretty ]\n"
-			  "[ -h ] [ -k | -m ] [ -t ] [ -V ] [ --debuginfo ]\n"));
+			  "[ --dec={ 0 | 1 | 2 } ] [ --human ] [ --pretty ] [ -o JSON ]\n"
+			  "[ -h ] [ -k | -m ] [ -t ] [ -V ] [ -y ] [ --debuginfo ]\n"));
 #else
 	fprintf(stderr, _("Options are:\n"
-			  "[ --dec={ 0 | 1 | 2 } ] [ --human ] [ --pretty ]\n"
-			  "[ -h ] [ -k | -m ] [ -t ] [ -V ]\n"));
+			  "[ --dec={ 0 | 1 | 2 } ] [ --human ] [ --pretty ] [ -o JSON ]\n"
+			  "[ -h ] [ -k | -m ] [ -t ] [ -V ] [ -y ]\n"));
 #endif
 	exit(1);
 }
@@ -102,6 +104,19 @@ void alarm_handler(int sig)
 }
 
 /*
+ * **************************************************************************
+ * SIGINT signal handler.
+ *
+ * IN:
+ * @sig	Signal number.
+ **************************************************************************
+ */
+void int_handler(int sig)
+{
+	sigint_caught = 1;
+}
+
+/*
  ***************************************************************************
  * Set every cifs entry to nonexistent status.
  *
@@ -193,9 +208,12 @@ struct io_cifs *add_list_cifs(struct io_
  *
  * IN:
  * @curr	Index in array for current sample statistics.
+ *
+ * RETURNS:
+ * 1 if no CIFS filesystems found, and 0 otherwise.
  ***************************************************************************
  */
-void read_cifs_stat(int curr)
+int read_cifs_stat(int curr)
 {
 	FILE *fp;
 	char line[256];
@@ -209,7 +227,7 @@ void read_cifs_stat(int curr)
 	struct io_cifs *ci;
 
 	if ((fp = fopen(CIFSSTATS, "r")) == NULL)
-		return;
+		return 1;
 
 	sprintf(aux, "%%*d) %%%ds",
 		MAX_NAME_LEN < 200 ? MAX_NAME_LEN - 1 : 200);
@@ -285,6 +303,7 @@ void read_cifs_stat(int curr)
 	}
 
 	fclose(fp);
+	return 0;
 }
 
 /*
@@ -293,26 +312,42 @@ void read_cifs_stat(int curr)
  *
  * OUT:
  * @fctr	Conversion factor.
+ * @tab		Number of tabs to print (JSON format only).
  ***************************************************************************
  */
-void write_cifs_stat_header(int *fctr)
+void write_cifs_stat_header(int *fctr, int *tab)
 {
-	if (!DISPLAY_PRETTY(flags)) {
-		printf("Filesystem            ");
-	}
+	char *units, *spc;
+
 	if (DISPLAY_KILOBYTES(flags)) {
-		printf("        rkB/s        wkB/s");
 		*fctr = 1024;
+		units = "kB";
+		spc = "";
 	}
 	else if (DISPLAY_MEGABYTES(flags)) {
-		printf("        rMB/s        wMB/s");
 		*fctr = 1024 * 1024;
+		units = "MB";
+		spc = "";
 	}
 	else {
-		printf("         rB/s         wB/s");
 		*fctr = 1;
+		units = "B";
+		spc = " ";
 	}
-	printf("    rops/s    wops/s         fo/s         fc/s         fd/s");
+
+	if (DISPLAY_JSON_OUTPUT(xflags)) {
+		xprintf((*tab)++, "\"filesystem\": [");
+		return;
+	}
+
+	if (!DISPLAY_PRETTY(flags)) {
+		printf("Filesystem            ");
+	}
+
+	printf("        %sr%s/s        %sw%s/s"
+	       "    rops/s    wops/s         fo/s         fc/s         fd/s",
+	       spc, units, spc, units);
+
 	if (DISPLAY_PRETTY(flags)) {
 		printf(" Filesystem");
 	}
@@ -320,8 +355,8 @@ void write_cifs_stat_header(int *fctr)
 }
 
 /*
- ***************************************************************************
- * Write CIFS stats read from /proc/fs/cifs/Stats.
+ * **************************************************************************
+ * Write CIFS stats read from /proc/fs/cifs/Stats in plain format.
  *
  * IN:
  * @curr	Index in array for current sample statistics.
@@ -332,9 +367,9 @@ void write_cifs_stat_header(int *fctr)
  * @ioj		Previous sample statistics.
  ***************************************************************************
  */
-void write_cifs_stat(int curr, unsigned long long itv, int fctr,
-		     struct io_cifs *clist, struct cifs_st *ioni,
-		     struct cifs_st *ionj)
+void write_plain_cifs_stat(int curr, unsigned long long itv, int fctr,
+			   struct io_cifs *clist, struct cifs_st *ioni,
+			   struct cifs_st *ionj)
 {
 	double rbytes, wbytes;
 
@@ -365,6 +400,91 @@ void write_cifs_stat(int curr, unsigned
 }
 
 /*
+ * **************************************************************************
+ * Write CIFS stats read from /proc/fs/cifs/Stats in JSON format.
+ *
+ * IN:
+ * @tab		Number of tabs to print.
+ * @curr	Index in array for current sample statistics.
+ * @itv		Interval of time (in 1/100th of a second).
+ * @fctr	Conversion factor.
+ * @clist	Pointer on the linked list where the cifs is saved.
+ * @ioi		Current sample statistics.
+ * @ioj		Previous sample statistics.
+ ***************************************************************************
+ */
+void write_json_cifs_stat(int tab, int curr, unsigned long long itv, int fctr,
+			  struct io_cifs *clist, struct cifs_st *ioni,
+			  struct cifs_st *ionj)
+{
+	char line[256];
+
+	xprintf0(tab,
+		 "{\"fs_name\": \"%s\", ", escape_bs_char(clist->name));
+
+	if (DISPLAY_KILOBYTES(flags)) {
+		sprintf(line, "\"rkB/s\": %%.2f, \"wkB/s\": %%.2f, ");
+	}
+	else if (DISPLAY_MEGABYTES(flags)) {
+		sprintf(line, "\"rMB/s\": %%.2f, \"wMB/s\": %%.2f, ");
+	}
+	else {
+		sprintf(line, "\"rB/s\": %%.2f, \"wB/s\": %%.2f, ");
+	}
+	printf(line,
+	       S_VALUE(ionj->rd_bytes, ioni->rd_bytes, itv) / fctr,
+	       S_VALUE(ionj->wr_bytes, ioni->wr_bytes, itv) / fctr);
+
+	printf("\"rops/s\": %.2f, \"wops/s\": %.2f, "
+	       "\"fo/s\": %.2f, \"fc/s\": %.2f, \"fd/s\": %.2f}",
+	       S_VALUE(ionj->rd_ops, ioni->rd_ops, itv),
+	       S_VALUE(ionj->wr_ops, ioni->wr_ops, itv),
+	       S_VALUE(ionj->fopens, ioni->fopens, itv),
+	       S_VALUE(ionj->fcloses, ioni->fcloses, itv),
+	       S_VALUE(ionj->fdeletes, ioni->fdeletes, itv));
+}
+
+/*
+ ***************************************************************************
+ * Write CIFS stats read from /proc/fs/cifs/Stats in plain or JSON format.
+ *
+ * IN:
+ * @curr	Index in array for current sample statistics.
+ * @itv		Interval of time (in 1/100th of a second).
+ * @fctr	Conversion factor.
+ * @clist	Pointer on the linked list where the cifs is saved.
+ * @ioi		Current sample statistics.
+ * @ioj		Previous sample statistics.
+ * @tab		Number of tabs to print (JSON format only).
+ ***************************************************************************
+ */
+void write_cifs_stat(int curr, unsigned long long itv, int fctr,
+		     struct io_cifs *clist, struct cifs_st *ioni,
+		     struct cifs_st *ionj, int tab)
+{
+#ifdef DEBUG
+	if (DISPLAY_DEBUG(xflags)) {
+		/* Debug output */
+		fprintf(stderr, "name=%s itv=%llu fctr=%d ioni{ rd_bytes=%llu "
+		"wr_bytes=%llu rd_ops=%llu wr_ops=%llu fopens=%llu "
+		"fcloses=%llu fdeletes=%llu}\n",
+	  clist->name, itv, fctr,
+	  ioni->rd_bytes, ioni->wr_bytes,
+	  ioni->rd_ops,   ioni->wr_ops,
+	  ioni->fopens,   ioni->fcloses,
+	  ioni->fdeletes);
+	}
+#endif
+
+	if (DISPLAY_JSON_OUTPUT(xflags)) {
+		write_json_cifs_stat(tab, curr, itv, fctr, clist, ioni, ionj);
+	}
+	else {
+		write_plain_cifs_stat(curr, itv, fctr, clist, ioni, ionj);
+	}
+}
+
+/*
  ***************************************************************************
  * Print everything now (stats and uptime).
  *
@@ -375,7 +495,7 @@ void write_cifs_stat(int curr, unsigned
  */
 void write_stats(int curr, struct tm *rectime)
 {
-	int fctr = 1;
+	int fctr = 1, tab = 4, next = FALSE;
 	unsigned long long itv;
 	struct io_cifs *clist;
 	struct cifs_st *ioni, *ionj;
@@ -383,27 +503,20 @@ void write_stats(int curr, struct tm *re
 	/* Test stdout */
 	TEST_STDOUT(STDOUT_FILENO);
 
+	if (DISPLAY_JSON_OUTPUT(xflags)) {
+		xprintf(tab++, "{");
+	}
+
 	/* Print time stamp */
 	if (DISPLAY_TIMESTAMP(flags)) {
-		if (DISPLAY_ISO(flags)) {
-			strftime(timestamp, sizeof(timestamp), "%FT%T%z", rectime);
-		}
-		else {
-			strftime(timestamp, sizeof(timestamp), "%x %X", rectime);
-		}
-		printf("%s\n", timestamp);
-#ifdef DEBUG
-		if (DISPLAY_DEBUG(flags)) {
-			fprintf(stderr, "%s\n", timestamp);
-		}
-#endif
+		write_sample_timestamp(tab, rectime, xflags);
 	}
 
 	/* Interval of time, reduced to one processor */
 	itv = get_interval(uptime_cs[!curr], uptime_cs[curr]);
 
 	/* Display CIFS stats header */
-	write_cifs_stat_header(&fctr);
+	write_cifs_stat_header(&fctr, &tab);
 
 	for (clist = cifs_list; clist != NULL; clist = clist->next) {
 
@@ -414,22 +527,19 @@ void write_stats(int curr, struct tm *re
 		ioni = clist->cifs_stats[curr];
 		ionj = clist->cifs_stats[!curr];
 
-#ifdef DEBUG
-		if (DISPLAY_DEBUG(flags)) {
-			/* Debug output */
-			fprintf(stderr, "name=%s itv=%llu fctr=%d ioni{ rd_bytes=%llu "
-					"wr_bytes=%llu rd_ops=%llu wr_ops=%llu fopens=%llu "
-					"fcloses=%llu fdeletes=%llu}\n",
-				clist->name, itv, fctr,
-				ioni->rd_bytes, ioni->wr_bytes,
-				ioni->rd_ops,   ioni->wr_ops,
-				ioni->fopens,   ioni->fcloses,
-				ioni->fdeletes);
+		if (DISPLAY_JSON_OUTPUT(xflags) && next) {
+			printf(",\n");
 		}
-#endif
-		write_cifs_stat(curr, itv, fctr, clist, ioni, ionj);
+		next = TRUE;
+
+		write_cifs_stat(curr, itv, fctr, clist, ioni, ionj, tab);
+	}
+
+	if (DISPLAY_JSON_OUTPUT(xflags)) {
+		printf("\n");
+		xprintf(--tab, "]");
+		xprintf0(--tab, "}");
 	}
-	printf("\n");
 }
 
 /*
@@ -444,6 +554,12 @@ void write_stats(int curr, struct tm *re
 void rw_io_stat_loop(long int count, struct tm *rectime)
 {
 	int curr = 1;
+	int skip = 0;
+
+	/* Should we skip first report? */
+	if (DISPLAY_OMIT_SINCE_BOOT(flags) && interval > 0) {
+		skip = 1;
+	}
 
 	/* Set a handler for SIGALRM */
 	memset(&alrm_act, 0, sizeof(alrm_act));
@@ -451,6 +567,11 @@ void rw_io_stat_loop(long int count, str
 	sigaction(SIGALRM, &alrm_act, NULL);
 	alarm(interval);
 
+	/* Set a handler for SIGINT */
+	memset(&int_act, 0, sizeof(int_act));
+	int_act.sa_handler = int_handler;
+	sigaction(SIGINT, &int_act, NULL);
+
 	do {
 		/* Every device is potentially nonexistent */
 		set_cifs_nonexistent(cifs_list);
@@ -459,24 +580,52 @@ void rw_io_stat_loop(long int count, str
 		read_uptime(&(uptime_cs[curr]));
 
 		/* Read CIFS stats */
-		read_cifs_stat(curr);
+		if (read_cifs_stat(curr)) {
+			/* No CIFS fs found */
+			if (!DISPLAY_JSON_OUTPUT(xflags)) {
+				fprintf(stderr, _("No CIFS filesystems with statistics found\n"));
+				exit(1);
+			}
+			/*
+			 * Don't exit now if displaying stats in JSON format so that
+			 * JSON file can be properly terminated.
+			 */
+			count = 0;
+		}
 
 		/* Get time */
 		get_xtime(rectime, 0, LOCAL_TIME);
 
-		/* Print results */
-		write_stats(curr, rectime);
+		/* Check whether we should skip first report */
+		if (!skip) {
+			/* Print results */
+			write_stats(curr, rectime);
 
-		if (count > 0) {
-			count--;
+			if (count > 0) {
+				count--;
+			}
 		}
 
 		if (count) {
 			curr ^= 1;
 			__pause();
+
+			if (sigint_caught) {
+				/* SIGINT signal caught => Terminate JSON output properly */
+				count = 0;
+			}
+			else if (DISPLAY_JSON_OUTPUT(xflags) && !skip) {	/* count != 0 */
+				printf(",");
+			}
 		}
+		skip = 0;
+		printf("\n");
 	}
 	while (count);
+
+	if (DISPLAY_JSON_OUTPUT(xflags)) {
+		printf("\t\t\t]\n\t\t}\n\t]\n}}\n");
+	}
 }
 
 /*
@@ -506,7 +655,7 @@ int main(int argc, char **argv)
 
 #ifdef DEBUG
 		if (!strcmp(argv[opt], "--debuginfo")) {
-			flags |= I_D_DEBUG;
+			xflags |= X_D_DEBUG;
 			opt++;
 		} else
 #endif
@@ -523,6 +672,17 @@ int main(int argc, char **argv)
 		}
 #endif
 
+		else if (!strcmp(argv[opt], "-o")) {
+			/* Select output format */
+			if (argv[++opt] && !strcmp(argv[opt], K_JSON)) {
+				xflags |= X_D_JSON_OUTPUT;
+				opt++;
+			}
+			else {
+				usage(argv[0]);
+			}
+		}
+
 		else if (!strcmp(argv[opt], "--pretty")) {
 			/* Display an easy-to-read CIFS report */
 			flags |= I_D_PRETTY;
@@ -574,6 +734,11 @@ int main(int argc, char **argv)
 					flags |= I_D_TIMESTAMP;
 					break;
 
+				case 'y':
+					/* Don't display stats since system restart */
+					flags |= I_D_OMIT_SINCE_BOOT;
+					break;
+
 				case 'V':
 					{
 						char *cifsiostat_env[] = {ENV_COLORS,
@@ -629,14 +794,23 @@ int main(int argc, char **argv)
 	 */
 	setbuf(stdout, NULL);
 
+	if (DISPLAY_JSON_OUTPUT(xflags)) {
+		/* Use a decimal point to make JSON code compliant with RFC7159 */
+		setlocale(LC_NUMERIC, "C");
+	}
+
 	/* Get system name, release number and hostname */
 	__uname(&header);
 	if (print_gal_header(&rectime, header.sysname, header.release,
 			     header.nodename, header.machine, cpu_nr,
-			     PLAIN_OUTPUT)) {
-		flags |= I_D_ISO;
+			     DISPLAY_JSON_OUTPUT(xflags))) {
+		xflags |= X_D_ISO;
 	}
-	printf("\n");
+
+	if (!DISPLAY_JSON_OUTPUT(xflags) &&
+		(!DISPLAY_OMIT_SINCE_BOOT(flags) || (interval == 0))) {
+		printf("\n");
+		}
 
 	/* Main loop */
 	rw_io_stat_loop(count, &rectime);
diff -pruN 12.7.5-2/cifsiostat.h 12.7.7-0ubuntu2/cifsiostat.h
--- 12.7.5-2/cifsiostat.h	2023-01-29 09:17:55.000000000 +0000
+++ 12.7.7-0ubuntu2/cifsiostat.h	2025-02-02 07:33:59.000000000 +0000
@@ -15,18 +15,18 @@
 #define I_D_TIMESTAMP		0x001
 #define I_D_KILOBYTES		0x002
 #define I_D_MEGABYTES		0x004
-#define I_D_ISO			0x008
+#define I_D_OMIT_SINCE_BOOT	0x008
 #define I_D_PRETTY		0x010
-#define I_D_DEBUG		0x020
+/* Unused			0x020 */
 #define I_D_UNIT		0x040
+/* Unused			0x080 */
 
-#define DISPLAY_TIMESTAMP(m)	(((m) & I_D_TIMESTAMP) == I_D_TIMESTAMP)
-#define DISPLAY_KILOBYTES(m)	(((m) & I_D_KILOBYTES) == I_D_KILOBYTES)
-#define DISPLAY_MEGABYTES(m)	(((m) & I_D_MEGABYTES) == I_D_MEGABYTES)
-#define DISPLAY_ISO(m)		(((m) & I_D_ISO)       == I_D_ISO)
-#define DISPLAY_PRETTY(m)	(((m) & I_D_PRETTY)    == I_D_PRETTY)
-#define DISPLAY_DEBUG(m)	(((m) & I_D_DEBUG)     == I_D_DEBUG)
-#define DISPLAY_UNIT(m)		(((m) & I_D_UNIT)      == I_D_UNIT)
+#define DISPLAY_TIMESTAMP(m)	   (((m) & I_D_TIMESTAMP)        == I_D_TIMESTAMP)
+#define DISPLAY_KILOBYTES(m)	   (((m) & I_D_KILOBYTES)        == I_D_KILOBYTES)
+#define DISPLAY_MEGABYTES(m)	   (((m) & I_D_MEGABYTES)        == I_D_MEGABYTES)
+#define DISPLAY_OMIT_SINCE_BOOT(m) (((m) & I_D_OMIT_SINCE_BOOT)  == I_D_OMIT_SINCE_BOOT)
+#define DISPLAY_PRETTY(m)	   (((m) & I_D_PRETTY)           == I_D_PRETTY)
+#define DISPLAY_UNIT(m)		   (((m) & I_D_UNIT)             == I_D_UNIT)
 
 struct cifs_st {
 	unsigned long long rd_bytes     __attribute__ ((aligned (8)));
diff -pruN 12.7.5-2/common.c 12.7.7-0ubuntu2/common.c
--- 12.7.5-2/common.c	2023-11-01 10:01:21.000000000 +0000
+++ 12.7.7-0ubuntu2/common.c	2025-02-02 07:33:58.000000000 +0000
@@ -1,6 +1,6 @@
 /*
  * sar, sadc, sadf, mpstat and iostat common routines.
- * (C) 1999-2023 by Sebastien GODARD (sysstat <at> orange.fr)
+ * (C) 1999-2025 by Sebastien GODARD (sysstat <at> orange.fr)
  *
  ***************************************************************************
  * This program is free software; you can redistribute it and/or modify it *
@@ -442,22 +442,56 @@ int check_dir(char *dirname)
  * @val1	First value.
  * @val2	Second value.
  * @val3	Third value.
+ *
+ * RETURNS:
+ * Multiplication of the 3 values.
  ***************************************************************************
  */
-void check_overflow(unsigned int val1, unsigned int val2,
-		    unsigned int val3)
+size_t mul_check_overflow3(size_t val1, size_t val2, size_t val3)
 {
 	if ((val1 != 0) && (val2 != 0) && (val3 != 0) &&
-	    (((unsigned long long) UINT_MAX / (unsigned long long) val1 <
-	      (unsigned long long) val2) ||
-	     ((unsigned long long) UINT_MAX / ((unsigned long long) val1 * (unsigned long long) val2) <
-	      (unsigned long long) val3))) {
+	    ((UINT_MAX < val1) ||
+	     (UINT_MAX / val1 < val2) ||
+	     (UINT_MAX / (val1 * val2) < val3))) {
 #ifdef DEBUG
-		fprintf(stderr, "%s: Overflow detected (%u,%u,%u). Aborting...\n",
+		fprintf(stderr, "%s: Overflow detected (%zu,%zu,%zu). Aborting...\n",
 			__FUNCTION__, val1, val2, val3);
 #endif
 		exit(4);
 	}
+
+	return (val1 * val2 * val3);
+}
+
+/*
+ * **************************************************************************
+ * Check if the multiplication of the 4 values may be greater than UINT_MAX.
+ *
+ * IN:
+ * @val1	First value.
+ * @val2	Second value.
+ * @val3	Third value.
+ * @val4	Fourth value.
+ *
+ * RETURNS:
+ * Multiplication of the 4 values.
+ ***************************************************************************
+ */
+size_t mul_check_overflow4(size_t val1, size_t val2, size_t val3, size_t val4)
+{
+	if ((val1 != 0) && (val2 != 0) && (val3 != 0) && (val4 != 0) &&
+	    ((UINT_MAX < val1) ||
+	     (UINT_MAX / val1 < val2) ||
+	     (UINT_MAX / (val1 * val2) < val3) ||
+	     (UINT_MAX / (val1 * val2 * val3) < val4))) {
+#ifdef DEBUG
+		fprintf(stderr, "%s: Overflow detected (%zu,%zu,%zu,%zu). Aborting...\n",
+			__FUNCTION__, val1, val2, val3, val4);
+#endif
+		exit(4);
+	}
+
+	return (val1 * val2 * val3 * val4);
 }
 
 #ifndef SOURCE_SADC
@@ -748,6 +782,41 @@ char *device_name(char *name)
 
 /*
  ***************************************************************************
+ * Escape a '\' character in a JSON string (replace '\' with "\\").
+ *
+ * IN:
+ * @str		String which may contain '\' characters.
+ *
+ * RETURNS:
+ * String where '\' characters have been escaped.
+ ***************************************************************************
+ */
+char *escape_bs_char(char *str)
+{
+	static char buffer[MAX_NAME_LEN];
+	int i = 0, j = 0;
+
+	while (str[i] != '\0' && j < MAX_NAME_LEN - 1) {
+		if (str[i] == '\\') {
+			if (j < MAX_NAME_LEN - 2) {
+				buffer[j++] = '\\';
+				buffer[j++] = '\\';
+			} else {
+				break;
+			}
+		} else {
+			buffer[j++] = str[i];
+		}
+		i++;
+	}
+
+	buffer[j] = '\0';
+
+	return buffer;
+}
+
+/*
+ ***************************************************************************
  * Workaround for CPU counters read from /proc/stat: Dyn-tick kernels
  * have a race issue that can make those counters go backward.
  ***************************************************************************
@@ -1755,7 +1824,7 @@ int parse_values(char *strargv, unsigned
 				return 1;
 
 			for (i = val_low; i <= val; i++) {
-				bitmap[(i + 1) >> 3] |= 1 << ((i + 1) & 0x07);
+				SET_CPU_BITMAP(bitmap, i + 1);
 			}
 		}
 	}
@@ -1763,4 +1832,38 @@ int parse_values(char *strargv, unsigned
 	return 0;
 }
 
+/*
+ * **************************************************************************
+ * Write current sample's timestamp, either in plain or JSON format.
+ *
+ * IN:
+ * @tab		Number of tabs to print.
+ * @rectime	Current date and time.
+ * @xflags	Flag for common options and system state.
+ ***************************************************************************
+ */
+void write_sample_timestamp(int tab, struct tm *rectime, uint64_t xflags)
+{
+	char timestamp[TIMESTAMP_LEN];
+
+	if (DISPLAY_ISO(xflags)) {
+		strftime(timestamp, sizeof(timestamp), "%FT%T%z", rectime);
+	}
+	else {
+		strftime(timestamp, sizeof(timestamp), "%x %X", rectime);
+	}
+	if (DISPLAY_JSON_OUTPUT(xflags)) {
+		xprintf(tab, "\"timestamp\": \"%s\",", timestamp);
+	}
+	else {
+		printf("%s\n", timestamp);
+	}
+
+#ifdef DEBUG
+	if (DISPLAY_DEBUG(xflags)) {
+		fprintf(stderr, "%s\n", timestamp);
+	}
+#endif
+}
+
 #endif /* SOURCE_SADC undefined */
diff -pruN 12.7.5-2/common.h 12.7.7-0ubuntu2/common.h
--- 12.7.5-2/common.h	2023-11-01 10:06:35.000000000 +0000
+++ 12.7.7-0ubuntu2/common.h	2025-02-02 07:33:59.000000000 +0000
@@ -1,6 +1,6 @@
 /*
  * sysstat: System performance tools for Linux
- * (C) 1999-2023 by Sebastien Godard (sysstat <at> orange.fr)
+ * (C) 1999-2025 by Sebastien Godard (sysstat <at> orange.fr)
  */
 
 #ifndef _COMMON_H
@@ -9,10 +9,12 @@
 /* Maximum length of sensors device name */
 #define MAX_SENSORS_DEV_LEN	20
 
+#include <stdio.h>
 #include <time.h>
 #include <sched.h>	/* For __CPU_SETSIZE */
 #include <limits.h>
 #include <stdlib.h>
+#include <stdint.h>
 #include "systest.h"
 
 #ifdef HAVE_SYS_SYSMACROS_H
@@ -71,6 +73,15 @@ enum {
 #define K_UTC		"UTC"
 #define K_JSON		"JSON"
 
+/* Flags used with multiple commands (iostat, cifsiostat...) */
+#define X_D_DEBUG		0x01
+#define X_D_ISO			0x02
+#define X_D_JSON_OUTPUT		0x04
+
+#define DISPLAY_DEBUG(m)	(((m) & X_D_DEBUG)       == X_D_DEBUG)
+#define DISPLAY_ISO(m)		(((m) & X_D_ISO)         == X_D_ISO)
+#define DISPLAY_JSON_OUTPUT(m)	(((m) & X_D_JSON_OUTPUT) == X_D_JSON_OUTPUT)
+
 /* Files */
 #define __DISKSTATS		"diskstats"
 #define __BLOCK			"block"
@@ -138,9 +149,30 @@ enum {
 #define BITMAP_SIZE(m)	((((m) + 1) >> 3) + 1)
 
 /* Allocate and init structure */
+#ifdef DEBUG
 #define SREALLOC(S, TYPE, SIZE)	do {								   \
-					TYPE *_p_;						   \
-					if ((SIZE) != 0) {					   \
+					size_t _sz_ = (SIZE);					   \
+					if ((_sz_) == 0) {					   \
+						 /* SIZE may be zero when an overflow happens */   \
+						 /* when two non-zero values are multiplied   */   \
+						 /* together.				      */   \
+						 fprintf(stderr, "%s: SREALLOC: SIZE is zero!\n", __FUNCTION__); \
+						 exit(4); 					   \
+					}							   \
+					__SREALLOC(S, TYPE, _sz_);				   \
+				} while (0)
+#else
+#define SREALLOC(S, TYPE, SIZE)	do {								   \
+					size_t _sz_ = (SIZE);					   \
+					if ((_sz_) == 0) {					   \
+						exit(4); 					   \
+					}							   \
+					__SREALLOC(S, TYPE, _sz_);				   \
+				} while (0)
+#endif
+
+#define __SREALLOC(S, TYPE, SIZE)	do {							   \
+						TYPE *_p_;					   \
 						if ((_p_ = (TYPE *) realloc(S, (SIZE))) == NULL) { \
 							perror("realloc");			   \
 							if (S) {				   \
@@ -153,8 +185,18 @@ enum {
 							memset(_p_, 0, (SIZE));			   \
 						}						   \
 						S = _p_;					   \
-					}							   \
-				} while (0)
+					} while (0)
+
+/* Set CPU in given bitmap   */
+#define SET_CPU_BITMAP(bitmap, cpu)	bitmap[(cpu) >> 3] |= 1 << ((cpu) & 0x07)
+/* Check if CPU is set in bitmap */
+#define IS_CPU_SET(bitmap, cpu)		(bitmap[(cpu) >> 3] & (1 << ((cpu) & 0x07)))
+/* Mark CPU as offline in dedicated CPU bitmap */
+#define MARK_CPU_OFFLINE(bitmap, cpu) 	SET_CPU_BITMAP(bitmap, cpu)
+/* Check if given CPU is offline */
+#define IS_CPU_OFFLINE(bitmap, cpu)	IS_CPU_SET(bitmap, cpu)
+/* Check if given CPU has been selected */
+#define IS_CPU_SELECTED(bitmap, cpu)	IS_CPU_SET(bitmap, cpu)
 
 /*
  * Macros used to display statistics values.
@@ -275,8 +317,10 @@ int get_wwnid_from_pretty
 	(char *, unsigned long long *, unsigned int *);
 int check_dir
 	(char *);
-void check_overflow
-	(unsigned int, unsigned int, unsigned int);
+size_t mul_check_overflow3
+	(size_t, size_t, size_t);
+size_t mul_check_overflow4
+	(size_t, size_t, size_t, size_t);
 
 #ifndef SOURCE_SADC
 int count_bits
@@ -299,6 +343,8 @@ void cprintf_tr
 	(int, char *, char *);
 char *device_name
 	(char *);
+char *escape_bs_char
+	(char *);
 char *get_device_name
 	(unsigned int, unsigned int, unsigned long long [],
 	 unsigned int, unsigned int, unsigned int, unsigned int, char *);
@@ -332,6 +378,8 @@ int set_report_date
 	(struct tm *, char[], int);
 char *strtolower
 	(char *);
+void write_sample_timestamp
+	(int, struct tm *, uint64_t);
 void xprintf
 	(int, const char *, ...);
 void xprintf0
diff -pruN 12.7.5-2/configure 12.7.7-0ubuntu2/configure
--- 12.7.5-2/configure	2023-07-09 09:01:28.000000000 +0000
+++ 12.7.7-0ubuntu2/configure	2024-07-03 08:01:41.000000000 +0000
@@ -1,6 +1,6 @@
 #! /bin/sh
 # Guess values for system-dependent variables and create Makefiles.
-# Generated by GNU Autoconf 2.71 for sysstat 12.7.5.
+# Generated by GNU Autoconf 2.71 for sysstat 12.7.7.
 #
 #
 # Copyright (C) 1992-1996, 1998-2017, 2020-2021 Free Software Foundation,
@@ -607,8 +607,8 @@ MAKEFLAGS=
 # Identity of this package.
 PACKAGE_NAME='sysstat'
 PACKAGE_TARNAME='sysstat'
-PACKAGE_VERSION='12.7.5'
-PACKAGE_STRING='sysstat 12.7.5'
+PACKAGE_VERSION='12.7.7'
+PACKAGE_STRING='sysstat 12.7.7'
 PACKAGE_BUGREPORT=''
 PACKAGE_URL=''
 
@@ -1364,7 +1364,7 @@ if test "$ac_init_help" = "long"; then
   # Omit some internal or obsolete options to make the list less imposing.
   # This message is too long to be a string in the A/UX 3.1 sh.
   cat <<_ACEOF
-\`configure' configures sysstat 12.7.5 to adapt to many kinds of systems.
+\`configure' configures sysstat 12.7.7 to adapt to many kinds of systems.
 
 Usage: $0 [OPTION]... [VAR=VALUE]...
 
@@ -1426,7 +1426,7 @@ fi
 
 if test -n "$ac_init_help"; then
   case $ac_init_help in
-     short | recursive ) echo "Configuration of sysstat 12.7.5:";;
+     short | recursive ) echo "Configuration of sysstat 12.7.7:";;
    esac
   cat <<\_ACEOF
 
@@ -1553,7 +1553,7 @@ fi
 test -n "$ac_init_help" && exit $ac_status
 if $ac_init_version; then
   cat <<\_ACEOF
-sysstat configure 12.7.5
+sysstat configure 12.7.7
 generated by GNU Autoconf 2.71
 
 Copyright (C) 2021 Free Software Foundation, Inc.
@@ -1828,7 +1828,7 @@ cat >config.log <<_ACEOF
 This file contains any messages produced by compilers while
 running configure, to aid debugging if configure makes a mistake.
 
-It was created by sysstat $as_me 12.7.5, which was
+It was created by sysstat $as_me 12.7.7, which was
 generated by GNU Autoconf 2.71.  Invocation command line was
 
   $ $0$ac_configure_args_raw
@@ -4820,9 +4820,10 @@ DFSENSORS32=""
 HAVE_SENSORS32="n"
 if test $SENSORS_SUPPORT = "y"; then
 	CFLAGS_SAVE=$CFLAGS
-	CFLAGS+=" -m32"
+        # Was: CFLAGS+=" -m32" which is specific to bash and not sh
+	CFLAGS="$CFLAGS -m32"
 	LDFLAGS_SAVE=$LDFLAGS
-	LDFLAGS+=" -lsensors"
+	LDFLAGS="$LDFLAGS -lsensors"
 	SENSORS=no
 #	Check for another function to avoid using cached result
 	{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for sensors_cleanup in -lsensors" >&5
@@ -4901,7 +4902,7 @@ fi
 # Check for 32-bit system libraries
 TGLIB32=no
 CFLAGS_SAVE=$CFLAGS
-CFLAGS+=" -m32"
+CFLAGS="$CFLAGS -m32"
 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for 32-bit system libraries" >&5
 printf %s "checking for 32-bit system libraries... " >&6; }
 cat confdefs.h - <<_ACEOF >conftest.$ac_ext
@@ -6446,7 +6447,7 @@ cat >>$CONFIG_STATUS <<\_ACEOF || ac_wri
 # report actual input values of CONFIG_FILES etc. instead of their
 # values after options handling.
 ac_log="
-This file was extended by sysstat $as_me 12.7.5, which was
+This file was extended by sysstat $as_me 12.7.7, which was
 generated by GNU Autoconf 2.71.  Invocation command line was
 
   CONFIG_FILES    = $CONFIG_FILES
@@ -6501,7 +6502,7 @@ ac_cs_config_escaped=`printf "%s\n" "$ac
 cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
 ac_cs_config='$ac_cs_config_escaped'
 ac_cs_version="\\
-sysstat config.status 12.7.5
+sysstat config.status 12.7.7
 configured by $0, generated by GNU Autoconf 2.71,
   with options \\"\$ac_cs_config\\"
 
diff -pruN 12.7.5-2/configure.ac 12.7.7-0ubuntu2/configure.ac
--- 12.7.5-2/configure.ac	2023-07-09 09:01:21.000000000 +0000
+++ 12.7.7-0ubuntu2/configure.ac	2024-07-03 08:01:38.000000000 +0000
@@ -1,10 +1,10 @@
-# configure.in
+# configure.ac
 #
 # (C) 2007 - Ivana Varekova <varekova@redhat.com>
 # Modified by Sebastien Godard (sysstat <at> orange.fr)
 
 # Initialization of $PACKAGE_VERSION and $PACKAGE_NAME variables
-AC_INIT([sysstat],[12.7.5])
+AC_INIT([sysstat],[12.7.7])
 
 # Ensure that a recent enough version of Autoconf is being used
 AC_PREREQ([2.71])
@@ -191,9 +191,10 @@ DFSENSORS32=""
 HAVE_SENSORS32="n"
 if test $SENSORS_SUPPORT = "y"; then
 	CFLAGS_SAVE=$CFLAGS
-	CFLAGS+=" -m32"
+        # Was: CFLAGS+=" -m32" which is specific to bash and not sh
+	CFLAGS="$CFLAGS -m32"
 	LDFLAGS_SAVE=$LDFLAGS
-	LDFLAGS+=" -lsensors"
+	LDFLAGS="$LDFLAGS -lsensors"
 	SENSORS=no
 #	Check for another function to avoid using cached result
 	AC_CHECK_LIB(sensors, sensors_cleanup, LFSENSORS32="-lsensors", HAVE_SENSORS32="n")
@@ -212,7 +213,7 @@ AC_SUBST(DFSENSORS32)
 # Check for 32-bit system libraries
 TGLIB32=no
 CFLAGS_SAVE=$CFLAGS
-CFLAGS+=" -m32"
+CFLAGS="$CFLAGS -m32"
 AC_MSG_CHECKING(for 32-bit system libraries)
 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <stdio.h>]],
 				   [[printf("%d\n", sizeof(long));]])],TGLIB32=yes, TGLIB32=no)
diff -pruN 12.7.5-2/count.c 12.7.7-0ubuntu2/count.c
--- 12.7.5-2/count.c	2023-05-06 16:26:53.000000000 +0000
+++ 12.7.7-0ubuntu2/count.c	2025-02-02 07:33:58.000000000 +0000
@@ -1,6 +1,6 @@
 /*
  * count.c: Count items for which statistics will be collected.
- * (C) 1999-2023 by Sebastien GODARD (sysstat <at> orange.fr)
+ * (C) 1999-2025 by Sebastien GODARD (sysstat <at> orange.fr)
  *
  ***************************************************************************
  * This program is free software; you can redistribute it and/or modify it *
diff -pruN 12.7.5-2/count.h 12.7.7-0ubuntu2/count.h
--- 12.7.5-2/count.h	2023-05-06 16:26:53.000000000 +0000
+++ 12.7.7-0ubuntu2/count.h	2025-02-02 07:33:59.000000000 +0000
@@ -1,7 +1,7 @@
 /*
  * count.h: Include file used to count items for which
  * statistics will be collected.
- * (C) 1999-2023 by Sebastien Godard (sysstat <at> orange.fr)
+ * (C) 1999-2025 by Sebastien Godard (sysstat <at> orange.fr)
  */
 
 #ifndef _COUNT_H
diff -pruN 12.7.5-2/debian/changelog 12.7.7-0ubuntu2/debian/changelog
--- 12.7.5-2/debian/changelog	2024-01-15 22:49:31.000000000 +0000
+++ 12.7.7-0ubuntu2/debian/changelog	2026-01-11 22:40:46.000000000 +0000
@@ -1,3 +1,34 @@
+sysstat (12.7.7-0ubuntu2) resolute; urgency=medium
+
+  * Remove crontab and sysvinit files in favor of systemd units (LP: #2131794):
+    - debian/: remove crontab and sysvinit files
+    - d/{debian-sa1,sysstat.install}: remove file used by crontab
+    - d/control: no longer recommend cron and cron-daemon
+
+ -- Ural Tunaboyu <ural.tunaboyu@canonical.com>  Sun, 11 Jan 2026 14:40:46 -0800
+
+sysstat (12.7.7-0ubuntu1) questing; urgency=medium
+
+  * Merge bugfix release 12.7.7 from upstream (LP: #2085298)
+  * update patches to 12.7.7
+    - d/p/00-Makefile.patch: context changed by upstream fixing a bashism
+    - d/p/14-simtest-run-all.patch: context changed by copyright update
+    - d/p/15-sa2-bash.patch: context changed by copyright update
+
+ -- Christian Ehrhardt <christian.ehrhardt@canonical.com>  Wed, 25 Jun 2025 10:29:37 +0200
+
+sysstat (12.7.5-2ubuntu1) oracular; urgency=medium
+
+  * d/sysstat.templates: enable services by default (LP: #2073285).
+  * d/p/service-conditional-on-setting, d/sysstat.postinst: replace
+    maintainer script management of systemd service enablement state
+    with ExecCondition= systemd directives instead to avoid state
+    conflict with systemd presets (LP: #2073284).
+  * d/t/control, d/t/enablement: add dep8 tests to cover expected
+    behaviour following the above changes.
+
+ -- Robie Basak <robie.basak@ubuntu.com>  Thu, 15 Aug 2024 11:32:23 +0000
+
 sysstat (12.7.5-2) unstable; urgency=low
 
   * Fix running upstream-provided tests from autopkgtest:
diff -pruN 12.7.5-2/debian/control 12.7.7-0ubuntu2/debian/control
--- 12.7.5-2/debian/control	2024-01-15 22:49:31.000000000 +0000
+++ 12.7.7-0ubuntu2/debian/control	2026-01-11 22:40:46.000000000 +0000
@@ -1,7 +1,8 @@
 Source: sysstat
 Section: admin
 Priority: optional
-Maintainer: Robert Luberda <robert@debian.org>
+Maintainer: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com>
+XSBC-Original-Maintainer: Robert Luberda <robert@debian.org>
 Build-Depends: debhelper-compat (= 13),
                gettext,
                libsensors-dev,
@@ -20,7 +21,7 @@ Depends: ucf (>= 2.003),
          ${misc:Depends},
          ${shlibs:Depends}
 Pre-Depends: ${misc:Pre-Depends}
-Recommends: systemd | cron | cron-daemon
+Recommends: systemd
 Suggests: isag
 Description: system performance tools for Linux
  The sysstat package contains the following system performance tools:
diff -pruN 12.7.5-2/debian/debian-sa1 12.7.7-0ubuntu2/debian/debian-sa1
--- 12.7.5-2/debian/debian-sa1	2024-01-15 22:49:31.000000000 +0000
+++ 12.7.7-0ubuntu2/debian/debian-sa1	1970-01-01 00:00:00.000000000 +0000
@@ -1,21 +0,0 @@
-#!/bin/sh
-# vim:ts=2:et
-# Debian sa1 helper which is run from cron.d job, not to needlessly
-# fill logs (see Bug#499461).
-
-set -e
-
-# Skip in favour of systemd timer
-[ ! -d /run/systemd/system ] || exit 0
-
-# Our configuration file
-DEFAULT=/etc/default/sysstat
-# Default setting, overridden in the above file
-ENABLED=false
-
-# Read defaults file
-[ ! -r "$DEFAULT" ] || . "$DEFAULT"
-
-[ "$ENABLED" = "true" ] || exit 0
-
-exec /usr/libexec/sysstat/sa1 "$@"
diff -pruN 12.7.5-2/debian/patches/00-Makefile.patch 12.7.7-0ubuntu2/debian/patches/00-Makefile.patch
--- 12.7.5-2/debian/patches/00-Makefile.patch	2024-01-15 22:49:31.000000000 +0000
+++ 12.7.7-0ubuntu2/debian/patches/00-Makefile.patch	2026-01-08 19:21:47.000000000 +0000
@@ -13,11 +13,9 @@ Forwarded: not-needed
  configure.ac | 1 +
  2 files changed, 6 insertions(+), 3 deletions(-)
 
-diff --git a/Makefile.in b/Makefile.in
-index 092791d..be09a99 100644
 --- a/Makefile.in
 +++ b/Makefile.in
-@@ -102,6 +102,7 @@ CFLAGS += -Wall -Wstrict-prototypes -pipe -O2 -fno-tree-slp-vectorize
+@@ -102,6 +102,7 @@ CFLAGS += -Wall -Wstrict-prototypes -pip
  ifndef DFLAGS
  DFLAGS = @DFLAGS@
  endif
@@ -53,8 +51,6 @@ index 092791d..be09a99 100644
  	$(INSTALL_DATA) CREDITS $(DESTDIR)$(DOC_DIR)
  	$(INSTALL_DATA) README.md $(DESTDIR)$(DOC_DIR)
  	$(INSTALL_DATA) FAQ.md $(DESTDIR)$(DOC_DIR)
-diff --git a/configure.ac b/configure.ac
-index d162051..2659fa7 100644
 --- a/configure.ac
 +++ b/configure.ac
 @@ -191,6 +191,7 @@ DFSENSORS32=""
@@ -62,6 +58,6 @@ index d162051..2659fa7 100644
  if test $SENSORS_SUPPORT = "y"; then
  	CFLAGS_SAVE=$CFLAGS
 +	LDFLAGS_SAVE=$LDFLAGS
- 	CFLAGS+=" -m32"
+         # Was: CFLAGS+=" -m32" which is specific to bash and not sh
+ 	CFLAGS="$CFLAGS -m32"
  	LDFLAGS_SAVE=$LDFLAGS
- 	LDFLAGS+=" -lsensors"
diff -pruN 12.7.5-2/debian/patches/14-simtest-run-all.patch 12.7.7-0ubuntu2/debian/patches/14-simtest-run-all.patch
--- 12.7.5-2/debian/patches/14-simtest-run-all.patch	2024-01-15 22:49:31.000000000 +0000
+++ 12.7.7-0ubuntu2/debian/patches/14-simtest-run-all.patch	2026-01-08 19:21:47.000000000 +0000
@@ -20,8 +20,6 @@ the *.tmp files are possibly left intact
  do_test     | 18 ++++++++++++++----
  2 files changed, 31 insertions(+), 7 deletions(-)
 
-diff --git a/Makefile.in b/Makefile.in
-index be09a99..bdb67d3 100644
 --- a/Makefile.in
 +++ b/Makefile.in
 @@ -827,6 +827,8 @@ unit:
@@ -71,15 +69,13 @@ index be09a99..bdb67d3 100644
  	rm -f nfsiostat* man/nfsiostat*
  	rm -f tests/sa[0123]*
  	rm -f tests/root
-diff --git a/do_test b/do_test
-index 6fa76d9..ef99055 100755
 --- a/do_test
 +++ b/do_test
 @@ -1,7 +1,8 @@
 -#!/bin/sh
 +#!/bin/bash
  # Script for sysstat simulation test environment
- # (C) 2020-2023 Sebastien GODARD (sysstat <at> orange.fr)
+ # (C) 2020-2025 Sebastien GODARD (sysstat <at> orange.fr)
  
 +FAILURES=""
  if [ "$1" = "conf" ]
diff -pruN 12.7.5-2/debian/patches/15-sa2-bash.patch 12.7.7-0ubuntu2/debian/patches/15-sa2-bash.patch
--- 12.7.5-2/debian/patches/15-sa2-bash.patch	2024-01-15 22:49:31.000000000 +0000
+++ 12.7.7-0ubuntu2/debian/patches/15-sa2-bash.patch	2026-01-08 19:21:47.000000000 +0000
@@ -8,13 +8,11 @@ I: sysstat: bash-term-in-posix-shell '${
  sa2.in | 2 +-
  1 file changed, 1 insertion(+), 1 deletion(-)
 
-diff --git a/sa2.in b/sa2.in
-index 535be72..69b59b2 100644
 --- a/sa2.in
 +++ b/sa2.in
 @@ -1,4 +1,4 @@
 -#!/bin/sh
 +#!/bin/bash
  # @SA_LIB_DIR@/sa2
- # (C) 1999-2023 Sebastien Godard (sysstat <at> orange.fr)
+ # (C) 1999-2025 Sebastien Godard (sysstat <at> orange.fr)
  #
diff -pruN 12.7.5-2/debian/patches/series 12.7.7-0ubuntu2/debian/patches/series
--- 12.7.5-2/debian/patches/series	2024-01-15 22:49:31.000000000 +0000
+++ 12.7.7-0ubuntu2/debian/patches/series	2026-01-08 19:21:47.000000000 +0000
@@ -11,3 +11,4 @@
 14-simtest-run-all.patch
 15-sa2-bash.patch
 16-empty-dirs.patch
+service-conditional-on-setting
diff -pruN 12.7.5-2/debian/patches/service-conditional-on-setting 12.7.7-0ubuntu2/debian/patches/service-conditional-on-setting
--- 12.7.5-2/debian/patches/service-conditional-on-setting	1970-01-01 00:00:00.000000000 +0000
+++ 12.7.7-0ubuntu2/debian/patches/service-conditional-on-setting	2026-01-08 19:21:47.000000000 +0000
@@ -0,0 +1,35 @@
+--- a/cron/sysstat-collect.service.in
++++ b/cron/sysstat-collect.service.in
+@@ -13,5 +13,6 @@
+ [Service]
+ Type=oneshot
+ User=@CRON_OWNER@
++ExecCondition=sh -c 'ENABLED=false; [ -r /etc/default/sysstat ] && . /etc/default/sysstat; test "$${ENABLED}" = "true"'
+ ExecStart=@SA_LIB_DIR@/sa1 1 1
+ 
+--- a/cron/sysstat-summary.service.in
++++ b/cron/sysstat-summary.service.in
+@@ -12,4 +12,5 @@
+ [Service]
+ Type=oneshot
+ User=@CRON_OWNER@
++ExecCondition=sh -c 'ENABLED=false; [ -r /etc/default/sysstat ] && . /etc/default/sysstat; test "$${ENABLED}" = "true"'
+ ExecStart=@SA_LIB_DIR@/sa2 -A
+--- a/sysstat.service.in
++++ b/sysstat.service.in
+@@ -13,6 +13,7 @@
+ Type=oneshot
+ RemainAfterExit=yes
+ User=@CRON_OWNER@
++ExecCondition=sh -c 'ENABLED=false; [ -r /etc/default/sysstat ] && . /etc/default/sysstat; test "$${ENABLED}" = "true"'
+ ExecStart=@SA_LIB_DIR@/sa1 --boot
+ 
+ [Install]
+--- a/cron/sysstat-rotate.service.in
++++ b/cron/sysstat-rotate.service.in
+@@ -13,4 +13,5 @@
+ [Service]
+ Type=oneshot
+ User=@CRON_OWNER@
++ExecCondition=sh -c 'ENABLED=false; [ -r /etc/default/sysstat ] && . /etc/default/sysstat; test "$${ENABLED}" = "true"'
+ ExecStart=@SA_LIB_DIR@/sa1 --rotate
diff -pruN 12.7.5-2/debian/sysstat.cron.d 12.7.7-0ubuntu2/debian/sysstat.cron.d
--- 12.7.5-2/debian/sysstat.cron.d	2024-01-15 22:49:31.000000000 +0000
+++ 12.7.7-0ubuntu2/debian/sysstat.cron.d	1970-01-01 00:00:00.000000000 +0000
@@ -1,9 +0,0 @@
-# The first element of the path is a directory where the debian-sa1
-# script is located
-PATH=/usr/libexec/sysstat:/usr/sbin:/usr/sbin:/usr/bin:/sbin:/bin
-
-# Activity reports every 10 minutes everyday
-5-55/10 * * * * root command -v debian-sa1 > /dev/null && debian-sa1 1 1
-
-# Additional run at 23:59 to rotate the statistics file
-59 23 * * * root command -v debian-sa1 > /dev/null && debian-sa1 60 2
diff -pruN 12.7.5-2/debian/sysstat.cron.daily 12.7.7-0ubuntu2/debian/sysstat.cron.daily
--- 12.7.5-2/debian/sysstat.cron.daily	2024-01-15 22:49:31.000000000 +0000
+++ 12.7.7-0ubuntu2/debian/sysstat.cron.daily	1970-01-01 00:00:00.000000000 +0000
@@ -1,22 +0,0 @@
-#!/bin/sh
-# Generate a daily summary of process accounting.  Since this will probably
-# get kicked off in the morning, it is run against the previous day data.
-
-set -e
-
-# Our configuration file
-DEFAULT=/etc/default/sysstat
-# Default settings, overridden in the above file
-ENABLED=false
-
-# Skip in favour of systemd timer
-[ ! -d /run/systemd/system ] || exit 0
-
-[ -x /usr/libexec/sysstat/sa2 ] || exit 0
-
-# Read our config
-[ -r "$DEFAULT" ] && . "$DEFAULT"
-
-[ "$ENABLED" = "true" ]  || exit 0
-
-exec /usr/libexec/sysstat/sa2 -A
diff -pruN 12.7.5-2/debian/sysstat.init.d 12.7.7-0ubuntu2/debian/sysstat.init.d
--- 12.7.5-2/debian/sysstat.init.d	2024-01-15 22:49:31.000000000 +0000
+++ 12.7.7-0ubuntu2/debian/sysstat.init.d	1970-01-01 00:00:00.000000000 +0000
@@ -1,62 +0,0 @@
-#! /bin/sh
-# vim:ft=sh:et
-### BEGIN INIT INFO
-# Provides:          sysstat
-# Required-Start:    $remote_fs $local_fs $syslog
-# Required-Stop:
-# Default-Start:     2 3 4 5
-# Default-Stop:
-# Short-Description: Start/stop sysstat's sadc
-# Description:       Sysstat contains system performance tools for Linux
-#                    The init file runs the sadc command in order to write
-#                    the "LINUX RESTART" mark to the daily data file
-### END INIT INFO
-
-PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
-DAEMON=/usr/libexec/sysstat/debian-sa1
-NAME=sadc
-DESC="the system activity data collector"
-
-test -f "$DAEMON" || exit 0
-umask 022
-
-# our configuration file
-DEFAULT=/etc/default/sysstat
-
-# default setting...
-ENABLED="false"
-
-# ...overridden in the configuration file
-test -r "$DEFAULT" && . "$DEFAULT"
-
-set -e
-status=0
-
-. /lib/lsb/init-functions
-
-case "$1" in
-  start|restart|reload|force-reload)
-        if [ "$ENABLED" = "true" ] ; then
-                log_daemon_msg "Starting $DESC" "$NAME"
-                start-stop-daemon --start --quiet --exec $DAEMON -- --boot || status=$?
-                log_end_msg $status
-        fi
-        ;;
-  stop)
-        ;;
-  status)
-        if [ "$ENABLED" = "true" ] ; then
-                log_success_msg "sadc cron jobs are enabled"
-                exit 0
-        else
-                log_failure_msg "sadc cron jobs are disabled"
-                exit 3
-        fi
-        ;;
-  *)
-        log_failure_msg "Usage: $0 {start|stop|restart|reload|force-reload|status}"
-        exit 1
-        ;;
-esac
-
-exit $status
diff -pruN 12.7.5-2/debian/sysstat.install 12.7.7-0ubuntu2/debian/sysstat.install
--- 12.7.5-2/debian/sysstat.install	2024-01-15 22:49:31.000000000 +0000
+++ 12.7.7-0ubuntu2/debian/sysstat.install	2026-01-11 22:40:46.000000000 +0000
@@ -1,4 +1,3 @@
-debian/debian-sa1 usr/libexec/sysstat
 debian/tmp/etc/
 debian/tmp/${env:deb_systemdsystemunitdir}
 debian/tmp/usr/
diff -pruN 12.7.5-2/debian/sysstat.maintscript 12.7.7-0ubuntu2/debian/sysstat.maintscript
--- 12.7.5-2/debian/sysstat.maintscript	2024-01-15 22:49:31.000000000 +0000
+++ 12.7.7-0ubuntu2/debian/sysstat.maintscript	2026-01-11 22:40:46.000000000 +0000
@@ -1 +1,4 @@
 rm_conffile /etc/profile.d/sysstat.sh 11.7.3~ sysstat
+rm_conffile /etc/cron.d/sysstat 12.7.7-0ubuntu2~ sysstat
+rm_conffile /etc/cron.daily/sysstat 12.7.7-0ubuntu2~ sysstat
+rm_conffile /etc/init.d/sysstat 12.7.7-0ubuntu2~ sysstat
diff -pruN 12.7.5-2/debian/sysstat.postinst 12.7.7-0ubuntu2/debian/sysstat.postinst
--- 12.7.5-2/debian/sysstat.postinst	2024-01-15 22:49:31.000000000 +0000
+++ 12.7.7-0ubuntu2/debian/sysstat.postinst	2026-01-08 19:21:47.000000000 +0000
@@ -105,22 +105,31 @@ if [ "$1" = "configure" ] ; then
 
     manage_default_file "$ENABLED"
 
-    # must be called *after* manage_default_file, which uses ucf --debconf-ok
-    db_stop || true
-
 
     if ! update-alternatives --display sar 2>/dev/null | grep -q '^/usr/bin/sar\.sysstat'; then
         update-alternatives --install /usr/bin/sar sar /usr/bin/sar.sysstat 0 \
                             --slave /usr/share/man/man1/sar.1.gz sar.1.gz \
                             /usr/share/man/man1/sar.sysstat.1.gz
     fi
+
+    # Upgrade path for LP: #2073285
+    if dpkg --compare-versions "$2" lt-nl 12.7.5-2ubuntu1~; then
+        # If upgrading from before, and the service was marked as disabled,
+        # then change our own configuration to enabled, and also ensure that
+        # the relevant systemd services are now enabled.
+        if [ "$ENABLED" = false ]; then
+            manage_default_file true
+            manage_systemd_services true
+        fi
+    fi
+
+    # must be called *after* manage_default_file, which uses ucf --debconf-ok
+    db_stop || true
 fi
 
 #DEBHELPER#
 
 if [ "$1" = "configure" ] && [ -n "$ENABLED" ]; then
-    manage_systemd_services "$ENABLED"
-
     # execute sa1 in a subshell not to clobber the postinst script with potentially
     # unsafe values from "$DEFAULT"
     if [ "$ENABLED" = "true" ] && [ -x /usr/libexec/sysstat/sa1 ] ; then
diff -pruN 12.7.5-2/debian/sysstat.templates 12.7.7-0ubuntu2/debian/sysstat.templates
--- 12.7.5-2/debian/sysstat.templates	2024-01-15 22:49:31.000000000 +0000
+++ 12.7.7-0ubuntu2/debian/sysstat.templates	2026-01-08 19:21:47.000000000 +0000
@@ -22,7 +22,7 @@ _Description: Remove old format statisti
 
 Template: sysstat/enable
 Type: boolean
-Default: false
+Default: true
 _Description: Activate sysstat's cron job?
  If this option is enabled the sysstat package will monitor system
  activities and store the data in log files within /var/log/sysstat/.
diff -pruN 12.7.5-2/debian/tests/control 12.7.7-0ubuntu2/debian/tests/control
--- 12.7.5-2/debian/tests/control	2024-01-15 22:49:31.000000000 +0000
+++ 12.7.7-0ubuntu2/debian/tests/control	2026-01-08 19:21:47.000000000 +0000
@@ -10,3 +10,7 @@ Test-Command: ./debian/tests/upstream-te
 Depends: @builddeps@
 Features: test-name=upstream-tests-with-debian-patches
 Restrictions: allow-stderr, skippable
+
+Tests: enablement
+Depends: sysstat
+Restrictions: needs-root, isolation-container, breaks-testbed, allow-stderr, skippable, superficial
diff -pruN 12.7.5-2/debian/tests/enablement 12.7.7-0ubuntu2/debian/tests/enablement
--- 12.7.5-2/debian/tests/enablement	1970-01-01 00:00:00.000000000 +0000
+++ 12.7.7-0ubuntu2/debian/tests/enablement	2026-01-08 19:21:47.000000000 +0000
@@ -0,0 +1,107 @@
+#!/bin/sh
+set -ex
+
+# Test various cases around LP: #2073284 and LP: #2073285
+
+# One might expect this test to actually be a series of unit tests that resets
+# the test environment every time, but that is expensive and I don't think it's
+# worth it for what we're trying to achieve by testing, so these are
+# deliberately squashed together into a single test run.
+
+# Skip if systemd is not available
+command -v systemctl >/dev/null || return 77
+[ -d /run/systemd/system ] || return 77
+
+units=$(dpkg -L sysstat|grep -E '/lib/systemd/system/sysstat.*\.(service|timer)$'|while read file; do echo $(basename "$file");done)
+
+assert_all_units_enabled() {
+    local acceptable=1
+    for unit in $units; do
+        status=$(systemctl is-enabled "$unit")
+        case "$status" in
+            enabled|static) ;;
+            *)
+                echo "Error: $unit is-enabled reports $status"
+                acceptable=0
+                ;;
+        esac
+    done
+    [ "$acceptable" = "1" ] || exit 1
+}
+
+assert_all_units_conditions_met() {
+    local acceptable=1
+    for unit in $units; do
+        # To test ConditionResult we must try to restart the unit, which is
+        # generally harmless for testing sysstat units
+        systemctl restart "$unit"
+        status=$(systemctl show --property=ConditionResult "$unit")
+        case "$status" in
+            ConditionResult=yes)
+                echo "Correct: $unit ConditionResult is $status"
+		;;
+            *)
+                echo "Error: $unit ConditionResult is $status"
+                acceptable=0
+                ;;
+        esac
+    done
+    [ "$acceptable" = "1" ] || exit 1
+}
+
+assert_all_services_conditions_unmet() {
+    # Note: exceptionally this tests *services*, not *units* (so excluding
+    # timers) since we only impose conditions on the units (otherwise a change
+    # to the condition wouldn't apply immediately).
+    local acceptable=1
+    for unit in $units; do
+        # Skip if not a service unit
+        case "$unit" in
+            *.service) ;;
+            *) continue ;;
+        esac
+        # To test ConditionResult we must try to restart the unit, which is
+        # generally harmless for testing sysstat units
+        systemctl restart "$unit"
+        status=$(systemctl show --property=ConditionResult "$unit")
+        case "$status" in
+            ConditionResult=no)
+                echo "Correct: $unit ConditionResult is $status"
+		;;
+            *)
+                echo "Error: $unit ConditionResult is $status"
+                acceptable=0
+                ;;
+        esac
+    done
+    [ "$acceptable" = "1" ] || exit 1
+}
+
+# LP: #2073285: in Ubuntu, sysstat should be enabled by default
+. /etc/default/sysstat
+if [ "$ENABLED" = "true" ]; then
+    echo "Correct: /etc/default/sysstat sets ENABLED=true"
+else
+    echo "Error: /etc/default/sysstat does not set ENABLED=true"
+    exit 1
+fi
+
+# LP: #2073284: units' enablement state should match ENABLED=true status
+assert_all_units_enabled
+
+# LP: #2073284: all units should have conditions met
+assert_all_units_conditions_met
+
+# LP: #2073284: even after preset-all, units should remain enabled
+echo "Disabling sysstat via /etc/default/sysstat"
+sed -i s/true/false/ /etc/default/sysstat
+echo "Running preset-all"
+systemctl preset-all
+assert_all_units_enabled
+
+# ...however services should no longer have conditions met
+
+# Note: exceptionally this tests *services*, not *units* (so excluding
+# timers) since we only impose conditions on the units (otherwise a change
+# to the condition wouldn't apply immediately).
+assert_all_services_conditions_unmet
diff -pruN 12.7.5-2/do_test 12.7.7-0ubuntu2/do_test
--- 12.7.5-2/do_test	2023-05-06 16:26:53.000000000 +0000
+++ 12.7.7-0ubuntu2/do_test	2025-02-02 07:33:59.000000000 +0000
@@ -1,6 +1,6 @@
 #!/bin/sh
 # Script for sysstat simulation test environment
-# (C) 2020-2023 Sebastien GODARD (sysstat <at> orange.fr)
+# (C) 2020-2025 Sebastien GODARD (sysstat <at> orange.fr)
 
 if [ "$1" = "conf" ]
 then
diff -pruN 12.7.5-2/format.c 12.7.7-0ubuntu2/format.c
--- 12.7.5-2/format.c	2023-05-06 16:26:53.000000000 +0000
+++ 12.7.7-0ubuntu2/format.c	2025-02-02 07:33:58.000000000 +0000
@@ -1,6 +1,6 @@
 /*
  * format.c: Output format definitions for sadf and sar
- * (C) 2011-2023 by Sebastien GODARD (sysstat <at> orange.fr)
+ * (C) 2011-2025 by Sebastien GODARD (sysstat <at> orange.fr)
  *
  ***************************************************************************
  * This program is free software; you can redistribute it and/or modify it *
diff -pruN 12.7.5-2/iconfig 12.7.7-0ubuntu2/iconfig
--- 12.7.5-2/iconfig	2023-05-06 16:26:53.000000000 +0000
+++ 12.7.7-0ubuntu2/iconfig	2025-02-02 07:33:59.000000000 +0000
@@ -1,6 +1,6 @@
 #!/bin/sh
 #@(#) Configuration script for sysstat
-# (C) 2000-2023 Sebastien GODARD (sysstat <at> orange.fr)
+# (C) 2000-2025 Sebastien GODARD (sysstat <at> orange.fr)
 
 if [ "$1" = "xlocal" ]
 then
diff -pruN 12.7.5-2/iostat.c 12.7.7-0ubuntu2/iostat.c
--- 12.7.5-2/iostat.c	2023-11-02 16:37:11.000000000 +0000
+++ 12.7.7-0ubuntu2/iostat.c	2025-02-02 07:33:58.000000000 +0000
@@ -1,6 +1,6 @@
 /*
  * iostat: report CPU and I/O statistics
- * (C) 1998-2023 by Sebastien GODARD (sysstat <at> orange.fr)
+ * (C) 1998-2025 by Sebastien GODARD (sysstat <at> orange.fr)
  *
  ***************************************************************************
  * This program is free software; you can redistribute it and/or modify it *
@@ -36,7 +36,6 @@
 
 #include "version.h"
 #include "iostat.h"
-#include "ioconf.h"
 #include "rd_stats.h"
 #include "count.h"
 
@@ -67,10 +66,10 @@ int dplaces_nr = -1;
 
 int group_nr = 0;	/* Nb of device groups */
 int cpu_nr = 0;		/* Nb of processors on the machine */
-int flags = 0;		/* Flag for common options and system state */
+uint64_t flags = 0;	/* Flag for common options and system state */
+uint64_t xflags = 0;	/* Extended flag for options used by multiple commands */
 
 long interval = 0;
-char timestamp[TIMESTAMP_LEN];
 char alt_dir[MAX_FILE_LEN];
 
 struct sigaction alrm_act, int_act;
@@ -943,31 +942,6 @@ void compute_device_groups_stats(int cur
 
 /*
  ***************************************************************************
- * Write current sample's timestamp, either in plain or JSON format.
- *
- * IN:
- * @tab		Number of tabs to print.
- * @rectime	Current date and time.
- ***************************************************************************
- */
-void write_sample_timestamp(int tab, struct tm *rectime)
-{
-	if (DISPLAY_ISO(flags)) {
-		strftime(timestamp, sizeof(timestamp), "%FT%T%z", rectime);
-	}
-	else {
-		strftime(timestamp, sizeof(timestamp), "%x %X", rectime);
-	}
-	if (DISPLAY_JSON_OUTPUT(flags)) {
-		xprintf(tab, "\"timestamp\": \"%s\",", timestamp);
-	}
-	else {
-		printf("%s\n", timestamp);
-	}
-}
-
-/*
- ***************************************************************************
  * Display CPU utilization in plain format.
  *
  * IN:
@@ -1051,7 +1025,7 @@ void write_cpu_stat(int curr, int tab)
 	deltot_jiffies = get_interval(tot_jiffies[!curr], tot_jiffies[curr]);
 
 #ifdef DEBUG
-		if (DISPLAY_DEBUG(flags)) {
+		if (DISPLAY_DEBUG(xflags)) {
 			/* Debug output */
 			fprintf(stderr, "deltot_jiffies=%llu st_cpu[curr]{ cpu_user=%llu cpu_nice=%llu "
 					"cpu_sys=%llu cpu_idle=%llu cpu_iowait=%llu cpu_steal=%llu "
@@ -1071,7 +1045,7 @@ void write_cpu_stat(int curr, int tab)
 		}
 #endif
 
-	if (DISPLAY_JSON_OUTPUT(flags)) {
+	if (DISPLAY_JSON_OUTPUT(xflags)) {
 		write_json_cpu_stat(tab, curr, deltot_jiffies);
 	}
 	else {
@@ -1114,7 +1088,7 @@ void write_disk_stat_header(int *fctr, i
 		spc = "";
 	}
 
-	if (DISPLAY_JSON_OUTPUT(flags)) {
+	if (DISPLAY_JSON_OUTPUT(xflags)) {
 		xprintf((*tab)++, "\"disk\": [");
 		return;
 	}
@@ -1602,7 +1576,7 @@ void write_ext_stat(unsigned long long i
 		}
 	}
 
-	if (DISPLAY_JSON_OUTPUT(flags)) {
+	if (DISPLAY_JSON_OUTPUT(xflags)) {
 		write_json_ext_stat(tab, itv, fctr, d, ioi, ioj, dname, &xds, &xios);
 	}
 	else {
@@ -1768,7 +1742,7 @@ void write_basic_stat(unsigned long long
 		dc_sec &= 0xffffffff;
 	}
 
-	if (DISPLAY_JSON_OUTPUT(flags)) {
+	if (DISPLAY_JSON_OUTPUT(xflags)) {
 		write_json_basic_stat(tab, itv, fctr, ioi, ioj, dname,
 				      rd_sec, wr_sec, dc_sec);
 	}
@@ -1799,25 +1773,20 @@ void write_stats(int curr, struct tm *re
 	/* Test stdout */
 	TEST_STDOUT(STDOUT_FILENO);
 
-	if (DISPLAY_JSON_OUTPUT(flags) && !skip) {
+	if (DISPLAY_JSON_OUTPUT(xflags) && !skip) {
 		xprintf(tab++, "{");
 	}
 
 	/* Print time stamp */
 	if (DISPLAY_TIMESTAMP(flags) && !skip) {
-		write_sample_timestamp(tab, rectime);
-#ifdef DEBUG
-		if (DISPLAY_DEBUG(flags)) {
-			fprintf(stderr, "%s\n", timestamp);
-		}
-#endif
+		write_sample_timestamp(tab, rectime, xflags);
 	}
 
 	if (DISPLAY_CPU(flags) && !skip) {
 		/* Display CPU utilization */
 		write_cpu_stat(curr, tab);
 
-		if (DISPLAY_JSON_OUTPUT(flags)) {
+		if (DISPLAY_JSON_OUTPUT(xflags)) {
 			if (DISPLAY_DISK(flags)) {
 				printf(",");
 			}
@@ -1836,7 +1805,7 @@ void write_stats(int curr, struct tm *re
 		if (DISPLAY_PRETTY(flags) &&
 		    DISPLAY_EXTENDED(flags) &&
 		    !DISPLAY_SHORT_OUTPUT(flags) &&
-		    !DISPLAY_JSON_OUTPUT(flags) &&
+		    !DISPLAY_JSON_OUTPUT(xflags) &&
 		    !DISPLAY_COMPACT(flags)) {
 			hl = 1; hh = 4;
 		}
@@ -1926,7 +1895,7 @@ void write_stats(int curr, struct tm *re
 							   DISPLAY_PERSIST_NAME_I(flags),
 							   FALSE, d->name);
 #ifdef DEBUG
-				if (DISPLAY_DEBUG(flags)) {
+				if (DISPLAY_DEBUG(xflags)) {
 					/* Debug output */
 					fprintf(stderr,
 						"name=%s itv=%llu fctr=%d ioi{ rd_sectors=%lu "
@@ -1961,7 +1930,7 @@ void write_stats(int curr, struct tm *re
 #endif
 
 				if (!skip) {
-					if (DISPLAY_JSON_OUTPUT(flags) && next) {
+					if (DISPLAY_JSON_OUTPUT(xflags) && next) {
 						printf(",\n");
 					}
 					next = TRUE;
@@ -1979,14 +1948,14 @@ void write_stats(int curr, struct tm *re
 				printf("\n");
 			}
 		}
-		if (DISPLAY_JSON_OUTPUT(flags) && !skip) {
+		if (DISPLAY_JSON_OUTPUT(xflags) && !skip) {
 			printf("\n");
 			xprintf(--tab, "]");
 		}
 	}
 
 	if (!skip) {
-		if (DISPLAY_JSON_OUTPUT(flags)) {
+		if (DISPLAY_JSON_OUTPUT(xflags)) {
 			xprintf0(--tab, "}");
 		}
 		else {
@@ -2072,7 +2041,7 @@ void rw_io_stat_loop(long int count, str
 				/* SIGINT signal caught => Terminate JSON output properly */
 				count = 0;
 			}
-			else if (DISPLAY_JSON_OUTPUT(flags) && !skip) {	/* count != 0 */
+			else if (DISPLAY_JSON_OUTPUT(xflags) && !skip) {	/* count != 0 */
 				printf(",");
 			}
 			skip = 0;
@@ -2081,7 +2050,7 @@ void rw_io_stat_loop(long int count, str
 	}
 	while (count);
 
-	if (DISPLAY_JSON_OUTPUT(flags)) {
+	if (DISPLAY_JSON_OUTPUT(xflags)) {
 		printf("\t\t\t]\n\t\t}\n\t]\n}}\n");
 	}
 }
@@ -2231,7 +2200,7 @@ int main(int argc, char **argv)
 		else if (!strcmp(argv[opt], "-o")) {
 			/* Select output format */
 			if (argv[++opt] && !strcmp(argv[opt], K_JSON)) {
-				flags |= I_D_JSON_OUTPUT;
+				xflags |= X_D_JSON_OUTPUT;
 				opt++;
 			}
 			else {
@@ -2241,7 +2210,7 @@ int main(int argc, char **argv)
 
 #ifdef DEBUG
 		else if (!strcmp(argv[opt], "--debuginfo")) {
-			flags |= I_D_DEBUG;
+			xflags |= X_D_DEBUG;
 			opt++;
 		}
 #endif
@@ -2420,7 +2389,7 @@ int main(int argc, char **argv)
 	/* Select disk output unit (kB/s or blocks/s) */
 	set_disk_output_unit();
 
-	if (DISPLAY_JSON_OUTPUT(flags)) {
+	if (DISPLAY_JSON_OUTPUT(xflags)) {
 		/* Use a decimal point to make JSON code compliant with RFC7159 */
 		setlocale(LC_NUMERIC, "C");
 	}
@@ -2444,10 +2413,11 @@ int main(int argc, char **argv)
 	__uname(&header);
 	if (print_gal_header(&rectime, header.sysname, header.release,
 			     header.nodename, header.machine, cpu_nr,
-			     DISPLAY_JSON_OUTPUT(flags))) {
-		flags |= I_D_ISO;
+			     DISPLAY_JSON_OUTPUT(xflags))) {
+		xflags |= X_D_ISO;
 	}
-	if (!DISPLAY_JSON_OUTPUT(flags)) {
+	if (!DISPLAY_JSON_OUTPUT(xflags) &&
+	    (!DISPLAY_OMIT_SINCE_BOOT(flags) || (interval == 0))) {
 		printf("\n");
 	}
 
diff -pruN 12.7.5-2/iostat.h 12.7.7-0ubuntu2/iostat.h
--- 12.7.5-2/iostat.h	2023-05-06 16:26:53.000000000 +0000
+++ 12.7.7-0ubuntu2/iostat.h	2025-02-02 07:33:59.000000000 +0000
@@ -1,6 +1,6 @@
 /*
  * iostat: report CPU and I/O statistics
- * (C) 1999-2023 by Sebastien Godard (sysstat <at> orange.fr)
+ * (C) 1999-2025 by Sebastien Godard (sysstat <at> orange.fr)
  */
 
 #ifndef _IOSTAT_H
@@ -16,7 +16,7 @@
 #define I_D_EVERYTHING		0x000010
 #define I_D_KILOBYTES		0x000020
 #define I_D_ALL_DIR		0x000040
-#define I_D_DEBUG		0x000080
+/* Unused			0x000080 */
 #define I_D_UNFILTERED		0x000100
 #define I_D_MEGABYTES		0x000200
 #define I_D_ALL_DEVICES		0x000400
@@ -24,9 +24,9 @@
 #define I_D_PRETTY		0x001000
 #define I_D_PERSIST_NAME	0x002000
 #define I_D_OMIT_SINCE_BOOT	0x004000
-#define I_D_JSON_OUTPUT		0x008000
+/* Unused			0x008000 */
 #define I_D_DEVMAP_NAME		0x010000
-#define I_D_ISO			0x020000
+/* Unused			0x020000 */
 #define I_D_GROUP_TOTAL_ONLY	0x040000
 #define I_D_ZERO_OMIT		0x080000
 #define I_D_UNIT		0x100000
@@ -40,7 +40,6 @@
 #define DISPLAY_EVERYTHING(m)		(((m) & I_D_EVERYTHING)       == I_D_EVERYTHING)
 #define DISPLAY_KILOBYTES(m)		(((m) & I_D_KILOBYTES)        == I_D_KILOBYTES)
 #define DISPLAY_MEGABYTES(m)		(((m) & I_D_MEGABYTES)        == I_D_MEGABYTES)
-#define DISPLAY_DEBUG(m)		(((m) & I_D_DEBUG)            == I_D_DEBUG)
 #define DISPLAY_UNFILTERED(m)		(((m) & I_D_UNFILTERED)       == I_D_UNFILTERED)
 #define DISPLAY_ALL_DEVICES(m)		(((m) & I_D_ALL_DEVICES)      == I_D_ALL_DEVICES)
 #define GROUP_DEFINED(m)		(((m) & I_F_GROUP_DEFINED)    == I_F_GROUP_DEFINED)
@@ -48,10 +47,8 @@
 #define DISPLAY_PERSIST_NAME_I(m)	(((m) & I_D_PERSIST_NAME)     == I_D_PERSIST_NAME)
 #define DISPLAY_OMIT_SINCE_BOOT(m)	(((m) & I_D_OMIT_SINCE_BOOT)  == I_D_OMIT_SINCE_BOOT)
 #define DISPLAY_DEVMAP_NAME(m)		(((m) & I_D_DEVMAP_NAME)      == I_D_DEVMAP_NAME)
-#define DISPLAY_ISO(m)			(((m) & I_D_ISO)              == I_D_ISO)
 #define DISPLAY_GROUP_TOTAL_ONLY(m)	(((m) & I_D_GROUP_TOTAL_ONLY) == I_D_GROUP_TOTAL_ONLY)
 #define DISPLAY_ZERO_OMIT(m)		(((m) & I_D_ZERO_OMIT)        == I_D_ZERO_OMIT)
-#define DISPLAY_JSON_OUTPUT(m)		(((m) & I_D_JSON_OUTPUT)      == I_D_JSON_OUTPUT)
 #define DISPLAY_UNIT(m)			(((m) & I_D_UNIT)	      == I_D_UNIT)
 #define DISPLAY_SHORT_OUTPUT(m)		(((m) & I_D_SHORT_OUTPUT)     == I_D_SHORT_OUTPUT)
 #define USE_ALL_DIR(m)			(((m) & I_D_ALL_DIR)          == I_D_ALL_DIR)
diff -pruN 12.7.5-2/json_stats.c 12.7.7-0ubuntu2/json_stats.c
--- 12.7.5-2/json_stats.c	2023-11-12 07:39:54.000000000 +0000
+++ 12.7.7-0ubuntu2/json_stats.c	2025-02-02 07:33:58.000000000 +0000
@@ -1,6 +1,6 @@
 /*
  * json_stats.c: Functions used by sadf to display statistics in JSON format.
- * (C) 1999-2023 by Sebastien GODARD (sysstat <at> orange.fr)
+ * (C) 1999-2025 by Sebastien GODARD (sysstat <at> orange.fr)
  *
  ***************************************************************************
  * This program is free software; you can redistribute it and/or modify it *
@@ -24,7 +24,6 @@
 #include <stdarg.h>
 
 #include "sa.h"
-#include "ioconf.h"
 
 #ifdef USE_NLS
 #include <locale.h>
@@ -162,8 +161,8 @@ __print_funct_t json_print_cpu_stats(str
 	for (i = 0; (i < a->nr_ini) && (i < a->bitmap->b_size + 1); i++) {
 
 		/* Should current CPU (including CPU "all") be displayed? */
-		if (!(a->bitmap->b_array[i >> 3] & (1 << (i & 0x07))) ||
-		    offline_cpu_bitmap[i >> 3] & (1 << (i & 0x07)))
+		if (!IS_CPU_SELECTED(a->bitmap->b_array, i) ||
+		    IS_CPU_OFFLINE(offline_cpu_bitmap, i))
 			/* Don't display CPU */
 			continue;
 
@@ -368,7 +367,7 @@ __print_funct_t json_print_irq_stats(str
 										  + i * a->msize);
 
 			/* Should current CPU (including CPU "all") be displayed? */
-			if (masked_cpu_bitmap[c >> 3] & (1 << (c & 0x07)))
+			if (IS_CPU_SET(masked_cpu_bitmap, c))
 				/* No */
 				continue;
 
@@ -1465,7 +1464,7 @@ __print_funct_t json_print_net_etcp_stat
 	xprintf0(tab, "\"net-etcp\": {"
 		 "\"atmptf\": %.2f, "
 		 "\"estres\": %.2f, "
-		 "\"retrans\": %.2f, "
+		 "\"retrseg\": %.2f, "
 		 "\"isegerr\": %.2f, "
 		 "\"orsts\": %.2f}",
 		 S_VALUE(snetp->AttemptFails, snetc->AttemptFails,  itv),
@@ -1865,7 +1864,7 @@ __print_funct_t json_print_pwr_cpufreq_s
 		spc = (struct stats_pwr_cpufreq *) ((char *) a->buf[curr] + i * a->msize);
 
 		/* Should current CPU (including CPU "all") be displayed? */
-		if (!(a->bitmap->b_array[i >> 3] & (1 << (i & 0x07))))
+		if (!IS_CPU_SELECTED(a->bitmap->b_array, i))
 			/* No */
 			continue;
 
@@ -2129,7 +2128,7 @@ __print_funct_t json_print_pwr_wghfreq_s
 		spp = (struct stats_pwr_wghfreq *) ((char *) a->buf[!curr] + i * a->msize * a->nr2);
 
 		/* Should current CPU (including CPU "all") be displayed? */
-		if (!(a->bitmap->b_array[i >> 3] & (1 << (i & 0x07))))
+		if (!IS_CPU_SELECTED(a->bitmap->b_array, i))
 			/* No */
 			continue;
 
@@ -2435,8 +2434,8 @@ __print_funct_t json_print_softnet_stats
 		 * used by sadc to create a file, and the version of sysstat
 		 * used by sar to read it...
 		 */
-		if (!(a->bitmap->b_array[i >> 3] & (1 << (i & 0x07))) ||
-		    offline_cpu_bitmap[i >> 3] & (1 << (i & 0x07)))
+		if (!IS_CPU_SELECTED(a->bitmap->b_array, i) ||
+		    IS_CPU_OFFLINE(offline_cpu_bitmap, i))
 			/* No */
 			continue;
 
diff -pruN 12.7.5-2/json_stats.h 12.7.7-0ubuntu2/json_stats.h
--- 12.7.5-2/json_stats.h	2023-05-06 16:26:53.000000000 +0000
+++ 12.7.7-0ubuntu2/json_stats.h	2025-02-02 07:33:59.000000000 +0000
@@ -1,6 +1,6 @@
 /*
  * json_stats.h: Include file used to display system statistics in JSON format.
- * (C) 1999-2023 by Sebastien Godard (sysstat <at> orange.fr)
+ * (C) 1999-2025 by Sebastien Godard (sysstat <at> orange.fr)
  */
 
 #ifndef _JSON_STATS_H
diff -pruN 12.7.5-2/man/cifsiostat.in 12.7.7-0ubuntu2/man/cifsiostat.in
--- 12.7.5-2/man/cifsiostat.in	2023-12-02 17:06:37.000000000 +0000
+++ 12.7.7-0ubuntu2/man/cifsiostat.in	2025-01-05 10:47:15.000000000 +0000
@@ -1,15 +1,15 @@
-.\" cifsiostat manual page - (C) 2020 Sebastien Godard (sysstat <at> orange.fr)
-.TH CIFSIOSTAT 1 "AUGUST 2023" Linux "Linux User's Manual" -*- nroff -*-
+.\" cifsiostat manual page - (C) 2020-2025 Sebastien Godard (sysstat <at> orange.fr)
+.TH CIFSIOSTAT 1 "JANUARY 2025" Linux "Linux User's Manual" -*- nroff -*-
 .SH NAME
 cifsiostat \- Report CIFS statistics.
 
 .SH SYNOPSIS
 .ie 'yes'@WITH_DEBUG@' \{
-.B cifsiostat [ \-h ] [ \-k | \-m ] [ \-t ] [ \-V ] [ \-\-debuginfo ] [ \-\-dec={ 0 | 1 | 2 } ] [ \-\-human ] [ \-\-pretty ] [
+.B cifsiostat [ \-h ] [ \-k | \-m ] [ \-t ] [ \-V ] [ -y ] [ \-\-debuginfo ] [ \-\-dec={ 0 | 1 | 2 } ] [ \-\-human ] [ \-o JSON ] [ \-\-pretty ] [
 .IB "interval " "[ " "count " "] ]"
 .\}
 .el \{
-.B cifsiostat [ \-h ] [ \-k | \-m ] [ \-t ] [ \-V ] [ \-\-dec={ 0 | 1 | 2 } ] [ \-\-human ] [ \-\-pretty ] [
+.B cifsiostat [ \-h ] [ \-k | \-m ] [ \-t ] [ \-V ] [ -y ] [ \-\-dec={ 0 | 1 | 2 } ] [ \-\-human ] [ \-o JSON ] [ \-\-pretty ] [
 .IB "interval " "[ " "count " "] ]"
 .\}
 
@@ -22,7 +22,10 @@ on CIFS filesystems.
 .RI "The " "interval"
 parameter specifies the amount of time in seconds between
 each report. The first report contains statistics for the time since
-system startup (boot). Each subsequent report contains statistics
+system startup (boot), unless the
+.B \-y
+option is used (in this case, the first report is omitted).
+Each subsequent report contains statistics
 collected during the interval since the previous report.
 A report consists of a CIFS header row followed by
 a line of statistics for each CIFS filesystem that is mounted.
@@ -39,9 +42,9 @@ The report shows the following fields:
 .IP Filesystem:
 This columns shows the mount point of the CIFS filesystem.
 .IP "rB/s (rkB/s, rMB/s)"
-Indicate the average number of bytes (kilobytes, megabytes) read per second.
+Indicate the average number of bytes (kibibytes, mebibytes) read per second.
 .IP "wB/s (wkB/s, wMB/s)"
-Indicate the average number of bytes (kilobytes, megabytes) written per second.
+Indicate the average number of bytes (kibibytes, mebibytes) written per second.
 .IP rop/s
 Indicate the number of 'read' operations that were issued to the filesystem
 per second.
@@ -72,13 +75,18 @@ This option is equivalent to specifying
 .B \-\-human
 Print sizes in human readable format (e.g. 1.0k, 1.2M, etc.)
 The units displayed with this option supersede any other default units (e.g.
-kilobytes, sectors...) associated with the metrics.
+kibibytes, sectors...) associated with the metrics.
 .TP
 .B \-k
-Display statistics in kilobytes per second.
+Display statistics in kibibytes per second.
 .TP
 .B \-m
-Display statistics in megabytes per second.
+Display statistics in mebibytes per second.
+.TP
+.B \-o JSON
+Display the statistics in JSON (JavaScript Object Notation) format.
+JSON output field order is undefined, and new fields may be added
+in the future.
 .TP
 .B \-\-pretty
 Make the CIFS report easier to read by a human.
@@ -90,6 +98,10 @@ on the value of the
 .TP
 .B \-V
 Print version number then exit.
+.TP
+.B \-y
+Omit first report with statistics since system boot, if displaying
+multiple records at given interval.
 
 .SH ENVIRONMENT
 .RB "The " "cifsiostat " "command takes into account the following environment variables: "
@@ -134,7 +146,7 @@ command will use the ISO 8601 format (YY
 .BR "cifsiostat " "to work."
 .PP
 .RB "Although " "cifsiostat"
-speaks of kilobytes (kB), megabytes (MB)..., it actually uses kibibytes (kiB), mebibytes (MiB)...
+displays units corresponding to kilobytes (kB), megabytes (MB)..., it actually uses kibibytes (kiB), mebibytes (MiB)...
 A kibibyte is equal to 1024 bytes, and a mebibyte is equal to 1024 kibibytes.
 
 .SH FILE
diff -pruN 12.7.5-2/man/iostat.in 12.7.7-0ubuntu2/man/iostat.in
--- 12.7.5-2/man/iostat.in	2023-12-02 17:06:37.000000000 +0000
+++ 12.7.7-0ubuntu2/man/iostat.in	2024-12-18 10:21:02.000000000 +0000
@@ -1,5 +1,5 @@
-.\" iostat manual page - (C) 1998-2020 Sebastien Godard (sysstat <at> orange.fr)
-.TH IOSTAT 1 "AUGUST 2023" Linux "Linux User's Manual" -*- nroff -*-
+.\" iostat manual page - (C) 1998-2024 Sebastien Godard (sysstat <at> orange.fr)
+.TH IOSTAT 1 "DECEMBER 2024" Linux "Linux User's Manual" -*- nroff -*-
 .SH NAME
 iostat \- Report Central Processing Unit (CPU) statistics and input/output
 statistics for devices and partitions.
@@ -104,7 +104,7 @@ If the
 keyword is given on the command line, then statistics are
 displayed for every device defined by the system, including those
 that have never been used.
-Transfer rates are shown in 1K blocks by default, unless the environment
+Transfer rates are shown in 1024-byte blocks by default, unless the environment
 variable
 .B POSIXLY_CORRECT
 is set, in which case 512-byte blocks are used.
@@ -121,25 +121,25 @@ device. Multiple logical requests can be
 request to the device. A transfer is of indeterminate size.
 .IP "Blk_read/s (kB_read/s, MB_read/s)"
 Indicate the amount of data read from the device expressed in a number of
-blocks (kilobytes, megabytes) per second. Blocks are equivalent to sectors
+blocks (kibibytes, mebibytes) per second. Blocks are equivalent to sectors
 and therefore have a size of 512 bytes.
 .IP "Blk_wrtn/s (kB_wrtn/s, MB_wrtn/s)"
 Indicate the amount of data written to the device expressed in a number of
-blocks (kilobytes, megabytes) per second.
+blocks (kibibytes, mebibytes) per second.
 .IP "Blk_dscd/s (kB_dscd/s, MB_dscd/s)"
 Indicate the amount of data discarded for the device expressed in a number of
-blocks (kilobytes, megabytes) per second.
+blocks (kibibytes, mebibytes) per second.
 .IP "Blk_w+d/s (kB_w+d/s, MB_w+d/s)"
 Indicate the amount of data written to or discarded for the device expressed
-in a number of blocks (kilobytes, megabytes) per second.
+in a number of blocks (kibibytes, mebibytes) per second.
 .IP "Blk_read (kB_read, MB_read)"
-The total number of blocks (kilobytes, megabytes) read.
+The total number of blocks (kibibytes, mebibytes) read.
 .IP "Blk_wrtn (kB_wrtn, MB_wrtn)"
-The total number of blocks (kilobytes, megabytes) written.
+The total number of blocks (kibibytes, mebibytes) written.
 .IP "Blk_dscd (kB_dscd, MB_dscd)"
-The total number of blocks (kilobytes, megabytes) discarded.
+The total number of blocks (kibibytes, mebibytes) discarded.
 .IP "Blk_w+d (kB_w+d, MB_w+d)"
-The total number of blocks (kilobytes, megabytes) written or discarded.
+The total number of blocks (kibibytes, mebibytes) written or discarded.
 .IP r/s
 The number (after merges) of read requests completed per second for the device.
 .IP w/s
@@ -151,14 +151,14 @@ The number (after merges) of flush reque
 This counts flush requests executed by disks. Flush requests are not tracked for partitions.
 Before being merged, flush operations are counted as writes.
 .IP "sec/s (kB/s, MB/s)"
-The number of sectors (kilobytes, megabytes) read from, written to or
+The number of sectors (kibibytes, mebibytes) read from, written to or
 discarded for the device per second.
 .IP "rsec/s (rkB/s, rMB/s)"
-The number of sectors (kilobytes, megabytes) read from the device per second.
+The number of sectors (kibibytes, mebibytes) read from the device per second.
 .IP "wsec/s (wkB/s, wMB/s)"
-The number of sectors (kilobytes, megabytes) written to the device per second.
+The number of sectors (kibibytes, mebibytes) written to the device per second.
 .IP "dsec/s (dkB/s, dMB/s)"
-The number of sectors (kilobytes, megabytes) discarded for the device per second.
+The number of sectors (kibibytes, mebibytes) discarded for the device per second.
 .IP rqm/s
 The number of I/O requests merged per second that were queued to the device.
 .IP rrqm/s
@@ -174,15 +174,15 @@ The percentage of write requests merged
 .IP %drqm
 The percentage of discard requests merged together before being sent to the device.
 .IP areq\-sz
-The average size (in kilobytes) of the I/O requests that were issued to the device.
+The average size (in kibibytes) of the I/O requests that were issued to the device.
 .br
 Note: In previous versions, this field was known as avgrq\-sz and was expressed in sectors.
 .IP rareq\-sz
-The average size (in kilobytes) of the read requests that were issued to the device.
+The average size (in kibibytes) of the read requests that were issued to the device.
 .IP wareq\-sz
-The average size (in kilobytes) of the write requests that were issued to the device.
+The average size (in kibibytes) of the write requests that were issued to the device.
 .IP dareq\-sz
-The average size (in kilobytes) of the discard requests that were issued to the device.
+The average size (in kibibytes) of the discard requests that were issued to the device.
 .IP await
 The average time (in milliseconds) for I/O requests issued to the device
 to be served. This includes the time spent by the requests in queue and
@@ -297,7 +297,7 @@ This option is equivalent to specifying
 .B \-\-human
 Print sizes in human readable format (e.g. 1.0k, 1.2M, etc.)
 The units displayed with this option supersede any other default units (e.g.
-kilobytes, sectors...) associated with the metrics.
+kibibytes, sectors...) associated with the metrics.
 .TP
 .BI "\-j { ID | LABEL | PATH | UUID | ... } [ " "device " "[...] | ALL ]"
 Display persistent device names. Keywords
@@ -311,10 +311,10 @@ Because persistent device names are usua
 is implicitly set with this option.
 .TP
 .B \-k
-Display statistics in kilobytes per second.
+Display statistics in kibibytes per second.
 .TP
 .B \-m
-Display statistics in megabytes per second.
+Display statistics in mebibytes per second.
 .TP
 .B \-N
 Display the registered device mapper names for any device mapper devices.
@@ -377,7 +377,7 @@ command takes into account the following
 .TP
 .B POSIXLY_CORRECT
 When this variable is set, transfer rates are shown in 512-byte blocks instead
-of the default 1K blocks.
+of the default 1024-byte blocks.
 .TP
 .B S_COLORS
 By default statistics are displayed in color when the output is connected to a terminal.
@@ -451,7 +451,7 @@ partitions (sda1, etc.)
 Kernels older than 2.6.x are no longer supported.
 .PP
 .RB "Although " "iostat"
-speaks of kilobytes (kB), megabytes (MB)..., it actually uses kibibytes (kiB), mebibytes (MiB)...
+displays units corresponding to kilobytes (kB), megabytes (MB)..., it actually uses kibibytes (kiB), mebibytes (MiB)...
 A kibibyte is equal to 1024 bytes, and a mebibyte is equal to 1024 kibibytes.
 
 .SH FILES
diff -pruN 12.7.5-2/man/pidstat.1 12.7.7-0ubuntu2/man/pidstat.1
--- 12.7.5-2/man/pidstat.1	2023-12-02 17:06:37.000000000 +0000
+++ 12.7.7-0ubuntu2/man/pidstat.1	2025-01-05 09:09:26.000000000 +0000
@@ -1,12 +1,12 @@
-.\" pidstat manual page - (C) 2007-2020 Sebastien Godard (sysstat <at> orange.fr)
-.TH PIDSTAT 1 "AUGUST 2023" Linux "Linux User's Manual" -*- nroff -*-
+.\" pidstat manual page - (C) 2007-2025 Sebastien Godard (sysstat <at> orange.fr)
+.TH PIDSTAT 1 "JANUARY 2025" Linux "Linux User's Manual" -*- nroff -*-
 .SH NAME
 pidstat \- Report statistics for Linux tasks.
 
 .SH SYNOPSIS
 .B pidstat [ \-d ] [ \-H ] [ \-h ] [ \-I ] [ \-l ] [ \-R ] [ \-r ] [ \-s ] [ \-t ] [ \-U [
 .IB "username " "] ] [ \-u ] [ \-V ] [ \-v ] [ \-w ] [ \-C " "comm " "] [ \-G " "process_name"
-.BI "] [ \-\-dec={ 0 | 1 | 2 } ] [ \-\-human ] [ \-p { " "pid" "[,...]"
+.BI "] [ \-\-dec={ 0 | 1 | 2 } ] [ \-\-human ] [ \-o JSON ] [ \-p { " "pid" "[,...]"
 .B | SELF | ALL } ] [ \-T { TASK | CHILD | ALL } ] [
 .IB "interval " "[ " "count " "] ] [ \-e " "program"
 .IB "args " "]"
@@ -61,12 +61,12 @@ The name of the real user owning the tas
 .IP PID
 The identification number of the task being monitored.
 .IP kB_rd/s
-Number of kilobytes the task has caused to be read from disk per second.
+Number of kibibytes the task has caused to be read from disk per second.
 .IP kB_wr/s
-Number of kilobytes the task has caused, or shall cause to be
+Number of kibibytes the task has caused, or shall cause to be
 written to disk per second.
 .IP kB_ccwr/s
-Number of kilobytes whose writing to disk has been cancelled by
+Number of kibibytes whose writing to disk has been cancelled by
 the task. This may occur when the task truncates some
 dirty pagecache. In this case, some IO which another task has
 been accounted for will not be happening.
@@ -91,6 +91,8 @@ and monitor it with
 .BR "pidstat" "."
 .BR "pidstat " "stops when"
 .IR "program " "terminates."
+A non-zero value must be specified for the
+.IR "interval " "parameter."
 .TP
 .BI "\-G " "process_name"
 Display only processes whose command name includes the string
@@ -112,7 +114,7 @@ intended to make it easier to be parsed
 .B \-\-human
 Print sizes in human readable format (e.g. 1.0k, 1.2M, etc.)
 The units displayed with this option supersede any other default units (e.g.
-kilobytes, sectors...) associated with the metrics.
+kibibytes, sectors...) associated with the metrics.
 .TP
 .B \-I
 In an SMP environment, indicate that tasks CPU usage
@@ -122,6 +124,11 @@ should be divided by the total number of
 .B \-l
 Display the process command name and all its arguments.
 .TP
+.B \-o JSON
+Display the statistics in JSON (JavaScript Object Notation) format.
+JSON output field order is undefined, and new fields may be added
+in the future.
+.TP
 .BI "\-p { " "pid" "[,...] | SELF | ALL }"
 Select tasks (processes) for which statistics are to be reported.
 .I pid
@@ -169,10 +176,10 @@ which have not required loading a memory
 Total number of major faults the task has made per second, those
 which have required loading a memory page from disk.
 .IP VSZ
-Virtual Size: The virtual memory usage of entire task in kilobytes.
+Virtual Size: The virtual memory usage of entire task in kibibytes.
 .IP RSS
 Resident Set Size: The non-swapped physical memory
-used by the task in kilobytes.
+used by the task in kibibytes.
 .IP %MEM
 The tasks's currently used share of available physical memory.
 .IP Command
@@ -213,10 +220,10 @@ The name of the real user owning the tas
 .IP PID
 The identification number of the task being monitored.
 .IP StkSize
-The amount of memory in kilobytes reserved for the task as stack,
+The amount of memory in kibibytes reserved for the task as stack,
 but not necessarily used.
 .IP StkRef
-The amount of memory in kilobytes used as stack, referenced by the task.
+The amount of memory in kibibytes used as stack, referenced by the task.
 .IP Command
 The command name of the task.
 .RE
@@ -435,7 +442,7 @@ with non-zero statistics values are disp
 .BR "pidstat " "command to work."
 .PP
 .RB "Although " "pidstat"
-speaks of kilobytes (kB), megabytes (MB)..., it actually uses kibibytes (kiB), mebibytes (MiB)...
+displays units corresponding to kilobytes (kB), megabytes (MB)..., it actually uses kibibytes (kiB), mebibytes (MiB)...
 A kibibyte is equal to 1024 bytes, and a mebibyte is equal to 1024 kibibytes.
 
 .SH FILES
diff -pruN 12.7.5-2/man/sar.in 12.7.7-0ubuntu2/man/sar.in
--- 12.7.5-2/man/sar.in	2023-12-02 17:06:37.000000000 +0000
+++ 12.7.7-0ubuntu2/man/sar.in	2024-12-18 10:30:25.000000000 +0000
@@ -1,5 +1,5 @@
-.\" sar manual page - (C) 1999-2023 Sebastien Godard (sysstat <at> orange.fr)
-.TH SAR 1 "NOVEMBER 2023" Linux "Linux User's Manual" -*- nroff -*-
+.\" sar manual page - (C) 1999-2024 Sebastien Godard (sysstat <at> orange.fr)
+.TH SAR 1 "DECEMBER 2024" Linux "Linux User's Manual" -*- nroff -*-
 .SH NAME
 sar \- Collect, report, or save system activity information.
 
@@ -135,9 +135,9 @@ Report paging statistics.
 The following values are displayed:
 .RS
 .IP pgpgin/s
-Total number of kilobytes the system paged in from disk per second.
+Total number of kibibytes the system paged in from disk per second.
 .IP pgpgout/s
-Total number of kilobytes the system paged out to disk per second.
+Total number of kibibytes the system paged out to disk per second.
 .IP fault/s
 Number of page faults (major + minor) made by the system per second.
 This is not a count of page faults that generate I/O, because some page
@@ -220,13 +220,13 @@ A transfer is an I/O request to a physic
 requests can be combined into a single I/O request to the device.
 A transfer is of indeterminate size.
 .IP rkB/s
-Number of kilobytes read from the device per second.
+Number of kibibytes read from the device per second.
 .IP wkB/s
-Number of kilobytes written to the device per second.
+Number of kibibytes written to the device per second.
 .IP dkB/s
-Number of kilobytes discarded for the device per second.
+Number of kibibytes discarded for the device per second.
 .IP areq\-sz
-The average size (in kilobytes) of the I/O requests that were issued to the device.
+The average size (in kibibytes) of the I/O requests that were issued to the device.
 .br
 Note: In previous versions, this field was known as avgrq\-sz and was expressed in sectors.
 .IP aqu\-sz
@@ -284,9 +284,9 @@ to be collected.
 The following values are displayed:
 .RS
 .IP MBfsfree
-Total amount of free space in megabytes (including space available only to privileged user).
+Total amount of free space in mebibytes (including space available only to privileged user).
 .IP MBfsused
-Total amount of space used in megabytes.
+Total amount of space used in mebibytes.
 .IP %fsused
 Percentage of filesystem space used, as seen by a privileged user.
 .IP %ufsused
@@ -322,15 +322,15 @@ Report hugepages utilization statistics.
 The following values are displayed:
 .RS
 .IP kbhugfree
-Amount of hugepages memory in kilobytes that is not yet allocated.
+Amount of hugepages memory in kibibytes that is not yet allocated.
 .IP kbhugused
-Amount of hugepages memory in kilobytes that has been allocated.
+Amount of hugepages memory in kibibytes that has been allocated.
 .IP %hugused
 Percentage of total hugepages memory that has been allocated.
 .IP kbhugrsvd
-Amount of reserved hugepages memory in kilobytes.
+Amount of reserved hugepages memory in kibibytes.
 .IP kbhugsurp
-Amount of surplus hugepages memory in kilobytes.
+Amount of surplus hugepages memory in kibibytes.
 .RE
 .TP
 .B \-h
@@ -343,7 +343,7 @@ Display a short help message then exit.
 .B \-\-human
 Print sizes in human readable format (e.g. 1.0k, 1.2M, etc.)
 The units displayed with this option supersede any other default units (e.g.
-kilobytes, sectors...) associated with the metrics.
+kibibytes, sectors...) associated with the metrics.
 .TP
 .BI "\-I [ SUM | ALL ]"
 Report statistics for interrupts. The values displayed are the number of interrupts
@@ -523,9 +523,9 @@ Total number of packets received per sec
 .IP txpck/s
 Total number of packets transmitted per second.
 .IP rxkB/s
-Total number of kilobytes received per second.
+Total number of kibibytes received per second.
 .IP txkB/s
-Total number of kilobytes transmitted per second.
+Total number of kibibytes transmitted per second.
 .IP rxcmp/s
 Number of compressed packets received per second (for cslip etc.).
 .IP txcmp/s
@@ -1184,7 +1184,7 @@ state from the SYN\-RCVD state [tcpAttem
 The number of times per second TCP connections have made a direct
 transition to the CLOSED state from either the ESTABLISHED
 state or the CLOSE\-WAIT state [tcpEstabResets].
-.IP retrans/s
+.IP retrseg/s
 The total number of segments retransmitted per second - that is, the
 number of TCP segments transmitted containing one or more
 previously transmitted octets [tcpRetransSegs].
@@ -1401,25 +1401,25 @@ keyword indicates that all the memory fi
 The following values may be displayed:
 .RS
 .IP kbmemfree
-Amount of free memory available in kilobytes.
+Amount of free memory available in kibibytes.
 .IP kbavail
-Estimate of how much memory in kilobytes is available for starting new
+Estimate of how much memory in kibibytes is available for starting new
 applications, without swapping.
 The estimate takes into account that the system needs some page cache to
 function well, and that not all reclaimable slab will be reclaimable,
 due to items being in use. The impact of those factors will vary from
 system to system.
 .IP kbmemused
-Amount of used memory in kilobytes (calculated as total installed memory \-
+Amount of used memory in kibibytes (calculated as total installed memory \-
 kbmemfree \- kbbuffers \- kbcached \- kbslab).
 .IP %memused
 Percentage of used memory.
 .IP kbbuffers
-Amount of memory used as buffers by the kernel in kilobytes.
+Amount of memory used as buffers by the kernel in kibibytes.
 .IP kbcached
-Amount of memory used to cache data by the kernel in kilobytes.
+Amount of memory used to cache data by the kernel in kibibytes.
 .IP kbcommit
-Amount of memory in kilobytes needed for current workload.
+Amount of memory in kibibytes needed for current workload.
 This is an estimate of how much
 RAM/swap is needed to guarantee that there never is out of memory.
 .IP %commit
@@ -1427,24 +1427,24 @@ Percentage of memory needed for current
 total amount of memory (RAM+swap). This number may be greater
 than 100% because the kernel usually overcommits memory.
 .IP kbactive
-Amount of active memory in kilobytes (memory that has been used more recently
+Amount of active memory in kibibytes (memory that has been used more recently
 and usually not reclaimed unless absolutely necessary).
 .IP kbinact
-Amount of inactive memory in kilobytes (memory which has been less recently
+Amount of inactive memory in kibibytes (memory which has been less recently
 used. It is more eligible to be reclaimed for other purposes).
 .IP kbdirty
-Amount of memory in kilobytes waiting to get written back to the disk.
+Amount of memory in kibibytes waiting to get written back to the disk.
 .IP kbanonpg
-Amount of non-file backed pages in kilobytes mapped into userspace page tables.
+Amount of non-file backed pages in kibibytes mapped into userspace page tables.
 .IP kbslab
-Amount of memory in kilobytes used by the kernel to cache data structures
+Amount of memory in kibibytes used by the kernel to cache data structures
 for its own use.
 .IP kbkstack
-Amount of memory in kilobytes used for kernel stack space.
+Amount of memory in kibibytes used for kernel stack space.
 .IP kbpgtbl
-Amount of memory in kilobytes dedicated to the lowest level of page tables.
+Amount of memory in kibibytes dedicated to the lowest level of page tables.
 .IP kbvmused
-Amount of memory in kilobytes of used virtual address space.
+Amount of memory in kibibytes of used virtual address space.
 .RE
 .TP
 .B \-S
@@ -1452,13 +1452,13 @@ Report swap space utilization statistics
 The following values are displayed:
 .RS
 .IP kbswpfree
-Amount of free swap space in kilobytes.
+Amount of free swap space in kibibytes.
 .IP kbswpused
-Amount of used swap space in kilobytes.
+Amount of used swap space in kibibytes.
 .IP %swpused
 Percentage of used swap space.
 .IP kbswpcad
-Amount of cached swap memory in kilobytes.
+Amount of cached swap memory in kibibytes.
 This is memory that once was swapped out, is swapped back in but still also
 is in the swap area (if memory is needed it doesn't need to be swapped out
 again because it is already in the swap area. This saves I/O).
@@ -1701,7 +1701,7 @@ All the statistics are not necessarily a
 assumes that you are using at least a 2.6 kernel.
 .PP
 .RB "Although " "sar"
-speaks of kilobytes (kB), megabytes (MB)..., it actually uses kibibytes (kiB), mebibytes (MiB)...
+displays units correspondind to kilobytes (kB), megabytes (MB)..., it actually uses kibibytes (kiB), mebibytes (MiB)...
 A kibibyte is equal to 1024 bytes, and a mebibyte is equal to 1024 kibibytes.
 
 .SH FILES
diff -pruN 12.7.5-2/man/tapestat.1 12.7.7-0ubuntu2/man/tapestat.1
--- 12.7.5-2/man/tapestat.1	2023-12-02 17:06:37.000000000 +0000
+++ 12.7.7-0ubuntu2/man/tapestat.1	2024-12-18 10:33:10.000000000 +0000
@@ -1,11 +1,11 @@
 .\" tapestat manual page - (C) 2015 Hewlett-Packard Development Company, L.P.
 .\" Maintained by Sebastien Godard (sysstat <at> orange.fr)
-.TH TAPESTAT 1 "AUGUST 2023" Linux "Linux User's Manual" -*- nroff -*-
+.TH TAPESTAT 1 "DECEMBER 2024" Linux "Linux User's Manual" -*- nroff -*-
 .SH NAME
 tapestat \- Report tape statistics.
 
 .SH SYNOPSIS
-.B tapestat [ \-k | \-m ] [ \-t ] [ \-V ] [ \-y ] [ \-z ] [ \-\-human ] [
+.B tapestat [ \-k | \-m ] [ \-t ] [ \-V ] [ \-y ] [ \-z ] [ \-\-human ] [ \-o JSON ] [
 .IB "interval " "[ " "count " "] ]"
 
 .SH DESCRIPTION
@@ -39,12 +39,12 @@ The number of reads issued expressed as
 .IP w/s
 The number of writes issued expressed as the number per second averaged over the interval.
 .IP "kB_read/s | MB_read/s"
-The amount of data read expressed in kilobytes (by default or if option
-.BR "\-k " "used) or megabytes (if option " "\-m"
+The amount of data read expressed in kibibytes (by default or if option
+.BR "\-k " "used) or mebibytes (if option " "\-m"
 used) per second averaged over the interval.
 .IP "kB_wrtn/s | MB_wrtn/s"
-The amount of data written expressed in kilobytes (by default or if option
-.BR "\-k " "used) or megabytes (if option " "\-m"
+The amount of data written expressed in kibibytes (by default or if option
+.BR "\-k " "used) or mebibytes (if option " "\-m"
 used) per second averaged over the interval.
 .IP %Rd
 Read percentage wait - The percentage of time over the interval spent waiting for read requests
@@ -73,18 +73,23 @@ using methods outside of the tape driver
 .B \-\-human
 Print sizes in human readable format (e.g. 1.0k, 1.2M, etc.)
 The units displayed with this option supersede any other default units (e.g.
-kilobytes, sectors...) associated with the metrics.
+kibibytes, sectors...) associated with the metrics.
 .TP
 .B \-k
-Show the amount of data written or read in kilobytes per second instead of megabytes.
+Show the amount of data written or read in kibibytes per second instead of mebibytes.
 This option is mutually exclusive with
 .BR "\-m" "."
 .TP
 .B \-m
-Show the amount of data written or read in megabytes per second instead of kilobytes.
+Show the amount of data written or read in mebibytes per second instead of kibibytes.
 This option is mutually exclusive with
 .BR "\-k" "."
 .TP
+.B \-o JSON
+Display the statistics in JSON (JavaScript Object Notation) format.
+JSON output field order is undefined, and new fields may be added
+in the future.
+.TP
 .B \-t
 Display time stamps. The time stamp format may depend
 on the value of the
@@ -146,7 +151,7 @@ between the current and previous time is
 We can look at how this can impact the statistics reported if we use an example of a tar
 archive being copied between two tape drives using
 .BR "dd" "."
-If both devices reported 28900 kilobytes
+If both devices reported 28900 kibibytes
 transferred and the reading tape drive had an interval of 5001 milliseconds and the writing
 tape drive 5000 milliseconds that would calculate out as 5778 kB_read/s and 5780 kB_wrtn/s.
 
@@ -211,7 +216,7 @@ This command requires kernel version 4.2
 (or tape statistics support backported for an earlier kernel version).
 .PP
 .RB "Although " "tapestat"
-speaks of kilobytes (kB), megabytes (MB)..., it actually uses kibibytes (kiB), mebibytes (MiB)...
+displays units corresponding to kilobytes (kB), megabytes (MB)..., it actually uses kibibytes (kiB), mebibytes (MiB)...
 A kibibyte is equal to 1024 bytes, and a mebibyte is equal to 1024 kibibytes.
 
 .SH FILES
diff -pruN 12.7.5-2/mpstat.c 12.7.7-0ubuntu2/mpstat.c
--- 12.7.5-2/mpstat.c	2023-11-02 16:37:58.000000000 +0000
+++ 12.7.7-0ubuntu2/mpstat.c	2025-02-02 07:33:58.000000000 +0000
@@ -1,6 +1,6 @@
 /*
  * mpstat: per-processor statistics
- * (C) 2000-2023 by Sebastien GODARD (sysstat <at> orange.fr)
+ * (C) 2000-2025 by Sebastien GODARD (sysstat <at> orange.fr)
  * Copyright (C) 2022 Oracle and/or its affiliates.
  *
  ***************************************************************************
@@ -25,7 +25,6 @@
 #include <stdlib.h>
 #include <unistd.h>
 #include <signal.h>
-#include <errno.h>
 #include <dirent.h>
 #include <ctype.h>
 #include <sys/utsname.h>
@@ -94,9 +93,10 @@ struct cpu_topology *st_cpu_topology = N
 struct tm mp_tstamp[3];
 
 /* Activity flag */
-unsigned int actflags = 0;
+uint64_t actflags = 0;
 
-unsigned int flags = 0;
+uint64_t flags = 0;
+uint64_t xflags = 0;	/* Extended flag for options used by multiple commands */
 
 /* Interval and count parameters */
 long interval = -1, count = 0;
@@ -571,7 +571,7 @@ unsigned long long get_global_cpu_mpstat
 			 * Mark CPU as offline to not display it
 			 * (and thus it will not be confused with a tickless CPU).
 			 */
-			offline_cpu_bitmap[i >> 3] |= 1 << (i & 0x07);
+			MARK_CPU_OFFLINE(offline_cpu_bitmap, i);
 		}
 
 		if ((tot_jiffies_p == 0) && (interval != 0)) {
@@ -585,7 +585,7 @@ unsigned long long get_global_cpu_mpstat
 			 * NB: Test for interval != 0 to make sure we don't want stats
 			 * since boot time.
 			 */
-			offline_cpu_bitmap[i >> 3] |= 1 << (i & 0x07);
+			MARK_CPU_OFFLINE(offline_cpu_bitmap, i);
 			continue;
 		}
 
@@ -649,7 +649,7 @@ void write_plain_cpu_stats(int dis, unsi
 
 		/* Check if we want stats about this proc */
 		if (!(*(cpu_bitmap + (i >> 3)) & (1 << (i & 0x07))) ||
-		    offline_cpu_bitmap[i >> 3] & (1 << (i & 0x07)))
+		    IS_CPU_OFFLINE(offline_cpu_bitmap, i))
 			continue;
 
 		scc = st_cpu[curr] + i;
@@ -757,7 +757,7 @@ void write_json_cpu_stats(int tab, unsig
 
 		/* Check if we want stats about this proc */
 		if (!(*(cpu_bitmap + (i >> 3)) & (1 << (i & 0x07))) ||
-		    offline_cpu_bitmap[i >> 3] & (1 << (i & 0x07)))
+		    IS_CPU_OFFLINE(offline_cpu_bitmap, i))
 			continue;
 
 		scc = st_cpu[curr] + i;
@@ -877,7 +877,7 @@ void write_cpu_stats(int dis, unsigned l
 		deltot_jiffies = 1;
 	}
 
-	if (DISPLAY_JSON_OUTPUT(flags)) {
+	if (DISPLAY_JSON_OUTPUT(xflags)) {
 		if (*next) {
 			printf(",\n");
 		}
@@ -1142,7 +1142,7 @@ void write_node_stats(int dis, unsigned
 		deltot_jiffies = 1;
 	}
 
-	if (DISPLAY_JSON_OUTPUT(flags)) {
+	if (DISPLAY_JSON_OUTPUT(xflags)) {
 		if (*next) {
 			printf(",\n");
 		}
@@ -1208,7 +1208,7 @@ void write_plain_isumcpu_stats(int dis,
 
 		/* Check if we want stats about this CPU */
 		if (!(*(cpu_bitmap + (cpu >> 3)) & (1 << (cpu & 0x07))) ||
-		    offline_cpu_bitmap[cpu >> 3] & (1 << (cpu & 0x07)))
+		    IS_CPU_OFFLINE(offline_cpu_bitmap, cpu))
 			continue;
 
 		printf("%-11s", curr_string);
@@ -1274,7 +1274,7 @@ void write_json_isumcpu_stats(int tab, u
 
 		/* Check if we want stats about this CPU */
 		if (!(*(cpu_bitmap + (cpu >> 3)) & (1 << (cpu & 0x07))) ||
-		    offline_cpu_bitmap[cpu >> 3] & (1 << (cpu & 0x07)))
+		    IS_CPU_OFFLINE(offline_cpu_bitmap, cpu))
 			continue;
 
 		if (next) {
@@ -1329,7 +1329,7 @@ void write_isumcpu_stats(int dis, unsign
 			 char *prev_string, char *curr_string, int tab, int *next,
 			 unsigned char offline_cpu_bitmap[])
 {
-	if (DISPLAY_JSON_OUTPUT(flags)) {
+	if (DISPLAY_JSON_OUTPUT(xflags)) {
 		if (*next) {
 			printf(",\n");
 		}
@@ -1433,7 +1433,7 @@ void write_plain_irqcpu_stats(struct sta
 		 * else we display every CPU (unless it's offline).
 		 */
 		if ((!(*(cpu_bitmap + (cpu >> 3)) & (1 << (cpu & 0x07))) && USE_OPTION_P(flags)) ||
-		    offline_cpu_bitmap[cpu >> 3] & (1 << (cpu & 0x07)))
+		    IS_CPU_OFFLINE(offline_cpu_bitmap, cpu))
 			continue;
 
 		printf("%-11s", curr_string);
@@ -1528,7 +1528,7 @@ void write_json_irqcpu_stats(int tab, st
 		 * else we display every CPU (unless it's offline).
 		 */
 		if ((!(*(cpu_bitmap + (cpu >> 3)) & (1 << (cpu & 0x07))) && USE_OPTION_P(flags)) ||
-		    offline_cpu_bitmap[cpu >> 3] & (1 << (cpu & 0x07)))
+		    IS_CPU_OFFLINE(offline_cpu_bitmap, cpu))
 			continue;
 
 		if (nextcpu) {
@@ -1629,7 +1629,7 @@ void write_irqcpu_stats(struct stats_irq
 			char *prev_string, char *curr_string, int tab,
 			int *next, int type, unsigned char offline_cpu_bitmap[])
 {
-	if (DISPLAY_JSON_OUTPUT(flags)) {
+	if (DISPLAY_JSON_OUTPUT(xflags)) {
 		if (*next) {
 			printf(",\n");
 		}
@@ -1677,7 +1677,7 @@ void write_stats_core(int prev, int curr
 	 */
 	deltot_jiffies = get_global_cpu_mpstats(prev, curr, offline_cpu_bitmap);
 
-	if (DISPLAY_JSON_OUTPUT(flags)) {
+	if (DISPLAY_JSON_OUTPUT(xflags)) {
 		xprintf(tab++, "{");
 		xprintf(tab, "\"timestamp\": \"%s\",", curr_string);
 	}
@@ -1716,7 +1716,7 @@ void write_stats_core(int prev, int curr
 				   offline_cpu_bitmap);
 	}
 
-	if (DISPLAY_JSON_OUTPUT(flags)) {
+	if (DISPLAY_JSON_OUTPUT(xflags)) {
 		printf("\n");
 		xprintf0(--tab, "}");
 	}
@@ -2006,7 +2006,7 @@ void rw_mpstat_loop(int dis_hdr, int row
 			memset(st_softirqcpu[1], 0, STATS_IRQCPU_SIZE * (cpu_nr + 1) * softirqcpu_nr);
 		}
 		write_stats(0, DISP_HDR);
-		if (DISPLAY_JSON_OUTPUT(flags)) {
+		if (DISPLAY_JSON_OUTPUT(xflags)) {
 			printf("\n\t\t\t]\n\t\t}\n\t]\n}}\n");
 		}
 		exit(0);
@@ -2039,7 +2039,7 @@ void rw_mpstat_loop(int dis_hdr, int row
 
 	if (sigint_caught)
 		/* SIGINT signal caught during first interval: Exit immediately */
-		return;
+		goto terminate;
 
 	do {
 		/*
@@ -2101,7 +2101,7 @@ void rw_mpstat_loop(int dis_hdr, int row
 				count = 0;
 			}
 			else {
-				if (DISPLAY_JSON_OUTPUT(flags)) {
+				if (DISPLAY_JSON_OUTPUT(xflags)) {
 					printf(",\n");
 				}
 				curr ^= 1;
@@ -2134,12 +2134,14 @@ void rw_mpstat_loop(int dis_hdr, int row
 	while (count);
 
 	/* Write stats average */
-	if (DISPLAY_JSON_OUTPUT(flags)) {
-		printf("\n\t\t\t]\n\t\t}\n\t]\n}}\n");
-	}
-	else {
+	if (!DISPLAY_JSON_OUTPUT(xflags)) {
 		write_stats_avg(curr, dis_hdr);
 	}
+
+terminate:
+	if (DISPLAY_JSON_OUTPUT(xflags)) {
+		printf("\n\t\t\t]\n\t\t}\n\t]\n}}\n");
+	}
 }
 
 /*
@@ -2231,7 +2233,7 @@ int main(int argc, char **argv)
 		else if (!strcmp(argv[opt], "-o")) {
 			/* Select output format */
 			if (argv[++opt] && !strcmp(argv[opt], K_JSON)) {
-				flags |= F_JSON_OUTPUT;
+				xflags |= X_D_JSON_OUTPUT;
 			}
 			else {
 				usage(argv[0]);
@@ -2361,7 +2363,7 @@ int main(int argc, char **argv)
 		actflags |= M_D_CPU;
 	}
 
-	if (count_bits(&actflags, sizeof(unsigned int)) > 1) {
+	if (count_bits(&actflags, sizeof(actflags)) > 1) {
 		dis_hdr = 9;
 	}
 
@@ -2400,7 +2402,7 @@ int main(int argc, char **argv)
 		interval = 0;
 	}
 
-	if (DISPLAY_JSON_OUTPUT(flags)) {
+	if (DISPLAY_JSON_OUTPUT(xflags)) {
 		/* Use a decimal point to make JSON code compliant with RFC7159 */
 		setlocale(LC_NUMERIC, "C");
 	}
@@ -2419,7 +2421,7 @@ int main(int argc, char **argv)
 	__uname(&header);
 	print_gal_header(&(mp_tstamp[0]), header.sysname, header.release,
 			 header.nodename, header.machine, get_cpu_nr(~0, FALSE),
-			 DISPLAY_JSON_OUTPUT(flags));
+			 DISPLAY_JSON_OUTPUT(xflags));
 
 	/* Main loop */
 	rw_mpstat_loop(dis_hdr, rows);
diff -pruN 12.7.5-2/mpstat.h 12.7.7-0ubuntu2/mpstat.h
--- 12.7.5-2/mpstat.h	2023-05-06 16:26:53.000000000 +0000
+++ 12.7.7-0ubuntu2/mpstat.h	2025-02-02 07:33:59.000000000 +0000
@@ -1,6 +1,6 @@
 /*
  * mpstat: per-processor statistics
- * (C) 2000-2023 by Sebastien Godard (sysstat <at> orange.fr)
+ * (C) 2000-2025 by Sebastien Godard (sysstat <at> orange.fr)
  */
 
 #ifndef _MPSTAT_H
@@ -47,8 +47,7 @@
 #define F_OPTION_P	0x01
 /* Indicate that option -A has been used */
 #define F_OPTION_A	0x02
-/* JSON output */
-#define F_JSON_OUTPUT	0x04
+/* Unused		0x04 */
 /* Indicate that option -N has been used */
 #define F_OPTION_N	0x08
 /* Display topology */
@@ -58,7 +57,6 @@
 
 #define USE_OPTION_P(m)		(((m) & F_OPTION_P) == F_OPTION_P)
 #define USE_OPTION_A(m)		(((m) & F_OPTION_A) == F_OPTION_A)
-#define DISPLAY_JSON_OUTPUT(m)	(((m) & F_JSON_OUTPUT) == F_JSON_OUTPUT)
 #define USE_OPTION_N(m)		(((m) & F_OPTION_N) == F_OPTION_N)
 #define DISPLAY_TOPOLOGY(m)	(((m) & F_TOPOLOGY) == F_TOPOLOGY)
 #define USE_OPTION_H(m)		(((m) & F_OPTION_H) == F_OPTION_H)
diff -pruN 12.7.5-2/nls/be.po 12.7.7-0ubuntu2/nls/be.po
--- 12.7.5-2/nls/be.po	2023-12-06 13:42:01.000000000 +0000
+++ 12.7.7-0ubuntu2/nls/be.po	2024-09-06 01:02:02.000000000 +0000
@@ -1,15 +1,15 @@
 # Belarusian messages for sysstat.
-# Copyright Â© 2022, 2023 Free Software Foundation, Inc.
+# Copyright Â© 2022, 2023, 2024 Free Software Foundation, Inc.
 # This file is distributed under the same license as the sysstat package.
 #
-# Viachaslau Khalikin <viachaslau.vinegret@outlook.com>, 2022, 2023.
+# Viachaslau Khalikin <viachaslau.vinegret@outlook.com>, 2022, 2023, 2024.
 #
 msgid ""
 msgstr ""
 "Project-Id-Version: sysstat 12.7.2\n"
 "Report-Msgid-Bugs-To: sysstat <at> orange.fr\n"
 "POT-Creation-Date: 2023-01-13 17:54+0100\n"
-"PO-Revision-Date: 2023-12-06 16:35+0300\n"
+"PO-Revision-Date: 2024-09-06 02:17+0300\n"
 "Last-Translator: Viachaslau Khalikin <viachaslau.vinegret@outlook.com>\n"
 "Language-Team: Belarusian <debian-l10n-belarusian@lists.debian.org>\n"
 "Language: be\n"
@@ -17,7 +17,7 @@ msgstr ""
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "X-Bugs: Report translation errors to the Language-Team address.\n"
-"X-Generator: Emacs 29.1, po mode 2.28\n"
+"X-Generator: Emacs 29.4, po mode 2.28\n"
 
 #: cifsiostat.c:75 iostat.c:89 mpstat.c:134 sar.c:108 tapestat.c:104
 #, c-format
@@ -60,7 +60,7 @@ msgstr "ÐÐµÐ¼Ð°Ð³Ñ‡Ñ‹Ð¼Ð° Ð°Ð´ÐºÑ€Ñ‹Ñ†Ñ
 #: count.c:172
 #, c-format
 msgid "Cannot handle so many processors!\n"
-msgstr "ÐÐµÐ¼Ð°Ð³Ñ‡Ñ‹Ð¼Ð° Ð°Ð¿Ñ€Ð°Ñ†Ð°Ð²Ð°Ñ†ÑŒ ÑÑ‚Ð¾Ð»ÑŒÐºÑ– Ð¿Ñ€Ð°Ñ†ÑÑÐ°Ñ€Ð°Ñž!\n"
+msgstr "ÐÐµÐ¼Ð°Ð³Ñ‡Ñ‹Ð¼Ð° Ð°Ð¿Ñ€Ð°Ñ†Ð°Ð²Ð°Ñ†ÑŒ Ð·Ð°ÑˆÐ¼Ð°Ñ‚ Ð¿Ñ€Ð°Ñ†ÑÑÐ°Ñ€Ð°Ñž!\n"
 
 #: iostat.c:92
 #, c-format
@@ -99,7 +99,7 @@ msgstr ""
 #: iostat.c:2179 sa_common.c:2404
 #, c-format
 msgid "Invalid type of persistent device name\n"
-msgstr "ÐÑÐ¿Ñ€Ð°Ð²Ñ–Ð»ÑŒÐ½Ñ‹ Ñ‚Ñ‹Ð¿ ÑÑ‚Ð°Ð»Ð°Ð¹ Ð½Ð°Ð·Ð²Ñ‹ Ð¿Ñ€Ñ‹Ð»Ð°Ð´Ñ‹\n"
+msgstr "ÐÑÐ¿Ñ€Ð°Ð²Ñ–Ð»ÑŒÐ½Ñ‹ Ñ‚Ñ‹Ð¿ ÑÑ‚Ð°Ð»Ð°Ðµ Ð½Ð°Ð·Ð²Ñ‹ Ð¿Ñ€Ñ‹Ð»Ð°Ð´Ñ‹\n"
 
 #: mpstat.c:137
 #, c-format
@@ -141,11 +141,11 @@ msgstr ""
 #: pidstat.c:225 sa_common.c:368
 #, c-format
 msgid "Requested activities not available\n"
-msgstr "Ð—Ð°Ð¿Ñ‹Ñ‚Ð°Ð½Ñ‹Ñ Ð¿Ð°ÐºÐ°Ð·Ñ‡Ñ‹ÐºÑ– Ð´Ð·ÐµÐ¹Ð½Ð°ÑÑŒÑ†Ñ– Ð½ÐµÐ´Ð°ÑÑ‚ÑƒÐ¿Ð½Ñ‹Ñ\n"
+msgstr "Ð—Ð°Ð¿Ñ‹Ñ‚Ð°Ð½Ñ‹Ñ Ð¿Ð°ÐºÐ°Ð·Ñ‡Ñ‹ÐºÑ– Ð°ÐºÑ‚Ñ‹ÑžÐ½Ð°ÑÑŒÑ†Ñ– Ð½ÐµÐ´Ð°ÑÑ‚ÑƒÐ¿Ð½Ñ‹Ñ\n"
 
 #: pr_stats.c:2682 pr_stats.c:2689 pr_stats.c:2795 pr_stats.c:2842
 msgid "Summary:"
-msgstr "ÐŸÐ°Ð´Ñ€Ð°Ñ…ÑƒÐ½Ð°Ðº:"
+msgstr "Ð—Ð²Ð¾Ð´ÐºÐ°:"
 
 #: rd_stats.c:427
 #, c-format
@@ -155,12 +155,12 @@ msgstr "ÐÐµÐ¼Ð°Ð³Ñ‡Ñ‹Ð¼Ð° Ð¿Ñ€Ð°Ñ‡Ñ‹Ñ‚Ð
 #: sa_common.c:301
 #, c-format
 msgid "File created by sar/sadc from sysstat version %d.%d.%d"
-msgstr "Ð¤Ð°Ð¹Ð», ÑÑ‚Ð²Ð¾Ñ€Ð°Ð½Ñ‹ Ð· Ð´Ð°Ð¿Ð°Ð¼Ð¾Ð³Ð°Ð¹ sar/sadc Ð· Ð²ÑÑ€ÑÑ–Ñ– sysstat %d.%d.%d"
+msgstr "Ð¤Ð°Ð¹Ð» ÑÑ‚Ð²Ð¾Ñ€Ð°Ð½Ñ‹ Ð¿Ñ€Ñ‹ Ð´Ð°Ð¿Ð°Ð¼Ð¾Ð·Ðµ sar/sadc Ð°Ð´ Ð²ÑÑ€ÑÑ–Ñ– sysstat %d.%d.%d"
 
 #: sa_common.c:334
 #, c-format
 msgid "Invalid system activity file: %s\n"
-msgstr "ÐÑÐ¿Ñ€Ð°Ð²Ñ–Ð»ÑŒÐ½Ñ‹ Ñ„Ð°Ð¹Ð» Ð´Ð·ÐµÐ¹Ð½Ð°ÑÑŒÑ†Ñ– ÑÑ‹ÑÑ‚ÑÐ¼Ñ‹: %s\n"
+msgstr "ÐÑÐ¿Ñ€Ð°Ð²Ñ–Ð»ÑŒÐ½Ñ‹ Ñ„Ð°Ð¹Ð» Ð°ÐºÑ‚Ñ‹ÑžÐ½Ð°ÑÑŒÑ†Ñ– ÑÑ‹ÑÑ‚ÑÐ¼Ñ‹: %s\n"
 
 #: sa_common.c:344
 #, c-format
@@ -184,22 +184,22 @@ msgstr "Ð—Ð°Ñ‚Ñ‹Ð¼ Ð²Ñ‹ Ð·Ð¼Ð¾Ð¶Ð°Ñ†Ðµ Ð
 #: sa_common.c:1435
 #, c-format
 msgid "Error while reading system activity file: %s\n"
-msgstr "ÐŸÐ°Ð¼Ñ‹Ð»ÐºÐ° Ð¿Ð°Ð´ Ñ‡Ð°Ñ Ñ‡Ñ‹Ñ‚Ð°Ð½ÑŒÐ½Ñ Ñ„Ð°Ð¹Ð»Ð° Ð´Ð·ÐµÐ¹Ð½Ð°ÑÑŒÑ†Ñ– ÑÑ‹ÑÑ‚ÑÐ¼Ñ‹: %s\n"
+msgstr "ÐŸÐ°Ð¼Ñ‹Ð»ÐºÐ° Ð¿Ð°Ð´Ñ‡Ð°Ñ Ñ‡Ñ‹Ñ‚Ð°Ð½ÑŒÐ½Ñ Ñ„Ð°Ð¹Ð»Ð° Ð°ÐºÑ‚Ñ‹ÑžÐ½Ð°ÑÑŒÑ†Ñ– ÑÑ‹ÑÑ‚ÑÐ¼Ñ‹: %s\n"
 
 #: sa_common.c:1445
 #, c-format
 msgid "End of system activity file unexpected\n"
-msgstr "ÐÐµÑ‡Ð°ÐºÐ°Ð½Ñ‹ ÐºÐ°Ð½ÐµÑ† Ñ„Ð°Ð¹Ð»Ð° Ð´Ð·ÐµÐ¹Ð½Ð°ÑÑŒÑ†Ñ– ÑÑ‹ÑÑ‚ÑÐ¼Ñ‹\n"
+msgstr "ÐÐµÑ‡Ð°ÐºÐ°Ð½Ñ‹ ÐºÐ°Ð½ÐµÑ† Ñ„Ð°Ð¹Ð»Ð° Ð°ÐºÑ‚Ñ‹ÑžÐ½Ð°ÑÑŒÑ†Ñ– ÑÑ‹ÑÑ‚ÑÐ¼Ñ‹\n"
 
 #: sa_common.c:1859
 #, c-format
 msgid "Please check if data collecting is enabled\n"
-msgstr "ÐšÐ°Ð»Ñ– Ð»Ð°ÑÐºÐ°, Ð¿Ñ€Ð°Ð²ÐµÑ€Ñ†Ðµ, Ñ†Ñ– ÑžÐºÐ»ÑŽÑ‡Ð°Ð½Ñ‹ Ð·Ð±Ð¾Ñ€ Ð´Ð°Ð½Ñ‹Ñ…\n"
+msgstr "ÐšÐ°Ð»Ñ– Ð»Ð°ÑÐºÐ°, Ð¿Ñ€Ð°Ð²ÐµÑ€Ñ†Ðµ, Ñ†Ñ– ÑžÐºÐ»ÑŽÑ‡Ð°Ð½Ñ‹ Ð·Ð±Ð¾Ñ€ Ð·ÑŒÐ²ÐµÑÑ‚Ð°Ðº\n"
 
 #: sa_common.c:2194
 #, c-format
 msgid "Requested activities not available in file %s\n"
-msgstr "Ð—Ð°Ð¿Ñ‹Ñ‚Ð°Ð½Ñ‹Ñ Ð¿Ð°ÐºÐ°Ð·Ñ‡Ñ‹ÐºÑ– Ð´Ð·ÐµÐ¹Ð½Ð°ÑÑŒÑ†Ñ– Ð°Ð´ÑÑƒÑ‚Ð½Ñ–Ñ‡Ð°ÑŽÑ†ÑŒ Ñž Ñ„Ð°Ð¹Ð»Ðµ %s\n"
+msgstr "Ð—Ð°Ð¿Ñ‹Ñ‚Ð°Ð½Ñ‹Ñ Ð¿Ð°ÐºÐ°Ð·Ñ‡Ñ‹ÐºÑ– Ð°ÐºÑ‚Ñ‹ÑžÐ½Ð°ÑÑŒÑ†Ñ– Ð°Ð´ÑÑƒÑ‚Ð½Ñ–Ñ‡Ð°ÑŽÑ†ÑŒ Ñž Ñ„Ð°Ð¹Ð»Ðµ %s\n"
 
 #: sa_conv.c:99
 #, c-format
@@ -213,7 +213,7 @@ msgid ""
 "CPU activity not found in file. Aborting...\n"
 msgstr ""
 "\n"
-"Ð£ Ñ„Ð°Ð¹Ð»Ðµ Ð½Ñ Ð·Ð½Ð¾Ð¹Ð´Ð·ÐµÐ½Ð° Ð·ÑŒÐ²ÐµÑÑ‚Ð°Ðº Ð¿Ñ€Ð° Ð´Ð·ÐµÐ¹Ð½Ð°ÑÑŒÑ†ÑŒ Ð¦ÐŸ. ÐŸÐµÑ€Ð°Ð¿Ñ‹Ð½ÐµÐ½ÑŒÐ½Ðµ...\n"
+"Ð£ Ñ„Ð°Ð¹Ð»Ðµ Ð½Ñ Ð·Ð½Ð¾Ð¹Ð´Ð·ÐµÐ½Ð° Ð·ÑŒÐ²ÐµÑÑ‚Ð°Ðº Ð¿Ñ€Ð° Ð°ÐºÑ‚Ñ‹ÑžÐ½Ð°ÑÑŒÑ†ÑŒ Ð¦ÐŸ. ÐŸÐµÑ€Ð°Ð¿Ñ‹Ð½ÐµÐ½ÑŒÐ½Ðµ...\n"
 
 #: sa_conv.c:408
 #, c-format
@@ -222,7 +222,7 @@ msgid ""
 "Invalid data found. Aborting...\n"
 msgstr ""
 "\n"
-"Ð—Ð½Ð¾Ð¹Ð´Ð·ÐµÐ½Ñ‹ Ð½ÐµÑÐ°Ð¿Ñ€Ð°ÑžÐ´Ð½Ñ‹Ñ Ð´Ð°Ð½Ñ‹Ñ. ÐŸÐµÑ€Ð°Ð¿Ñ‹Ð½ÐµÐ½ÑŒÐ½Ðµ...\n"
+"Ð—Ð½Ð¾Ð¹Ð´Ð·ÐµÐ½Ñ‹Ñ Ð½ÐµÑÐ°Ð¿Ñ€Ð°ÑžÐ´Ð½Ñ‹Ñ Ð·ÑŒÐ²ÐµÑÑ‚ÐºÑ–. ÐŸÐµÑ€Ð°Ð¿Ñ‹Ð½ÐµÐ½ÑŒÐ½Ðµ...\n"
 
 #: sa_conv.c:1931
 #, c-format
@@ -241,7 +241,7 @@ msgstr ""
 #: sa_conv.c:2044
 #, c-format
 msgid "HZ: Using current value: %lu\n"
-msgstr "HZ: Ð’Ñ‹ÐºÐ°Ñ€Ñ‹ÑÑ‚Ð°Ð½ÑŒÐ½Ðµ Ð±ÑÐ³ÑƒÑ‡Ð°Ð³Ð° Ð·Ð½Ð°Ñ‡ÑÐ½ÑŒÐ½Ñ: %lu\n"
+msgstr "HZ: Ð’Ñ‹ÐºÐ°Ñ€Ñ‹ÑÑ‚Ð¾ÑžÐ²Ð°ÐµÑ†Ñ†Ð° Ñ†ÑÐ¿ÐµÑ€Ð°ÑˆÐ½ÑÐµ Ð·Ð½Ð°Ñ‡ÑÐ½ÑŒÐ½Ðµ: %lu\n"
 
 #: sa_conv.c:2075
 #, c-format
@@ -267,12 +267,12 @@ msgstr ""
 #: sadc.c:272
 #, c-format
 msgid "Cannot write data to system activity file: %s\n"
-msgstr "ÐÐµÐ¼Ð°Ð³Ñ‡Ñ‹Ð¼Ð° Ð·Ð°Ð¿Ñ–ÑÐ°Ñ†ÑŒ Ð´Ð°Ð½Ñ‹Ñ Ñž Ñ„Ð°Ð¹Ð» Ð´Ð·ÐµÐ¹Ð½Ð°ÑÑŒÑ†Ñ– ÑÑ‹ÑÑ‚ÑÐ¼Ñ‹: %s\n"
+msgstr "ÐÐµÐ¼Ð°Ð³Ñ‡Ñ‹Ð¼Ð° Ð·Ð°Ð¿Ñ–ÑÐ°Ñ†ÑŒ Ð·ÑŒÐ²ÐµÑÑ‚ÐºÑ– Ñž Ñ„Ð°Ð¹Ð» Ð°ÐºÑ‚Ñ‹ÑžÐ½Ð°ÑÑŒÑ†Ñ– ÑÑ‹ÑÑ‚ÑÐ¼Ñ‹: %s\n"
 
 #: sadc.c:1040
 #, c-format
 msgid "Cannot append data to that file (%s)\n"
-msgstr "ÐÐµÐ¼Ð°Ð³Ñ‡Ñ‹Ð¼Ð° Ð´Ð°Ð´Ð°Ñ†ÑŒ Ð´Ð°Ð½Ñ‹Ñ Ñž Ð³ÑÑ‚Ñ‹ Ñ„Ð°Ð¹Ð» (%s)\n"
+msgstr "ÐÐµÐ¼Ð°Ð³Ñ‡Ñ‹Ð¼Ð° Ð´Ð°Ð´Ð°Ñ†ÑŒ Ð·ÑŒÐ²ÐµÑÑ‚ÐºÑ– Ñž Ð³ÑÑ‚Ñ‹ Ñ„Ð°Ð¹Ð» (%s)\n"
 
 #: sadf.c:119
 #, c-format
@@ -304,12 +304,12 @@ msgstr "Ð¡ÐºÐ°Ð¼Ð¿Ñ–Ð»ÑÐ²Ð°Ð½Ñ‹ Ð±ÐµÐ·
 #: sadf_misc.c:1252
 #, c-format
 msgid "System activity data file: %s (%#x)\n"
-msgstr "Ð¤Ð°Ð¹Ð» Ð´Ð°Ð½Ñ‹Ñ… Ð´Ð·ÐµÐ¹Ð½Ð°ÑÑŒÑ†Ñ– ÑÑ‹ÑÑ‚ÑÐ¼Ñ‹: %s (%#x)\n"
+msgstr "Ð¤Ð°Ð¹Ð» Ð·ÑŒÐ²ÐµÑÑ‚Ð°Ðº Ð°ÐºÑ‚Ñ‹ÑžÐ½Ð°ÑÑŒÑ†Ñ– ÑÑ‹ÑÑ‚ÑÐ¼Ñ‹: %s (%#x)\n"
 
 #: sadf_misc.c:1261
 #, c-format
 msgid "Genuine sa datafile: %s (%x)\n"
-msgstr "Ð¡Ð°Ð¿Ñ€Ð°ÑžÐ´Ð½Ñ‹ Ñ„Ð°Ð¹Ð» Ð´Ð°Ð½Ñ‹Ñ… sa: %s (%x)\n"
+msgstr "Ð¡Ð°Ð¿Ñ€Ð°ÑžÐ´Ð½Ñ‹ Ñ„Ð°Ð¹Ð» Ð·ÑŒÐ²ÐµÑÑ‚Ð°Ðº sa: %s (%x)\n"
 
 #: sadf_misc.c:1262
 msgid "no"
@@ -352,7 +352,7 @@ msgstr "ÐŸÐ°Ð¼ÐµÑ€ long int: %d\n"
 #: sadf_misc.c:1293
 #, c-format
 msgid "Number of activities in file: %u\n"
-msgstr "ÐšÐ¾Ð»ÑŒÐºÐ°ÑÑŒÑ†ÑŒ Ð¿Ð°ÐºÐ°Ð·Ñ‡Ñ‹ÐºÐ°Ñž Ð´Ð·ÐµÐ¹Ð½Ð°ÑÑŒÑ†Ñ– Ñž Ñ„Ð°Ð¹Ð»Ðµ: %u\n"
+msgstr "ÐšÐ¾Ð»ÑŒÐºÐ°ÑÑŒÑ†ÑŒ Ð¿Ð°ÐºÐ°Ð·Ñ‡Ñ‹ÐºÐ°Ñž Ð°ÐºÑ‚Ñ‹ÑžÐ½Ð°ÑÑŒÑ†Ñ– Ñž Ñ„Ð°Ð¹Ð»Ðµ: %u\n"
 
 #: sadf_misc.c:1295
 #, c-format
@@ -362,11 +362,11 @@ msgstr "Ð”Ð°ÑÑ‚ÑƒÐ¿Ð½Ñ‹Ñ Ð´Ð°Ð´Ð°Ñ‚ÐºÐ
 #: sadf_misc.c:1298
 #, c-format
 msgid "List of activities:\n"
-msgstr "Ð¡ÑŒÐ¿Ñ–Ñ Ð¿Ð°ÐºÐ°Ð·Ñ‡Ñ‹ÐºÐ°Ñž Ð´Ð·ÐµÐ¹Ð½Ð°ÑÑŒÑ†Ñ–:\n"
+msgstr "Ð¡ÑŒÐ¿Ñ–Ñ Ð¿Ð°ÐºÐ°Ð·Ñ‡Ñ‹ÐºÐ°Ñž Ð°ÐºÑ‚Ñ‹ÑžÐ½Ð°ÑÑŒÑ†Ñ–:\n"
 
 #: sadf_misc.c:1309
 msgid "Unknown activity"
-msgstr "ÐÐµÐ²ÑÐ´Ð¾Ð¼Ñ‹ Ð¿Ð°ÐºÐ°Ð·Ñ‡Ñ‹Ðº Ð´Ð·ÐµÐ¹Ð½Ð°ÑÑŒÑ†Ñ–"
+msgstr "ÐÐµÐ²ÑÐ´Ð¾Ð¼Ñ‹ Ð¿Ð°ÐºÐ°Ð·Ñ‡Ñ‹Ðº Ð°ÐºÑ‚Ñ‹ÑžÐ½Ð°ÑÑŒÑ†Ñ–"
 
 #: sadf_misc.c:1317
 #, c-format
@@ -406,7 +406,7 @@ msgstr ""
 #: sar.c:150
 #, c-format
 msgid "Main options and reports (report name between square brackets):\n"
-msgstr "ÐÑÐ½Ð¾ÑžÐ½Ñ‹Ñ Ð¾Ð¿Ñ†Ñ‹Ñ– Ð´Ñ‹ ÑÐ¿Ñ€Ð°Ð²Ð°Ð·Ð´Ð°Ñ‡Ñ‹ (Ð½Ð°Ð·Ð²Ð° ÑÐ¿Ñ€Ð°Ð²Ð°Ð·Ð´Ð°Ñ‡Ñ‹ Ñž ÐºÐ²Ð°Ð´Ñ€Ð°Ñ‚Ð½Ñ‹Ñ… Ð´ÑƒÐ¶ÐºÐ°Ñ…):\n"
+msgstr "Ð“Ð°Ð»Ð¾ÑžÐ½Ñ‹Ñ Ð¾Ð¿Ñ†Ñ‹Ñ– Ð´Ñ‹ ÑÐ¿Ñ€Ð°Ð²Ð°Ð·Ð´Ð°Ñ‡Ñ‹ (Ð½Ð°Ð·Ð²Ð° ÑÐ¿Ñ€Ð°Ð²Ð°Ð·Ð´Ð°Ñ‡Ñ‹ Ñž ÐºÐ²Ð°Ð´Ñ€Ð°Ñ‚Ð½Ñ‹Ñ… Ð´ÑƒÐ¶ÐºÐ°Ñ…):\n"
 
 #: sar.c:151
 #, c-format
@@ -465,9 +465,9 @@ msgstr ""
 "\t\tÐ¡Ñ‚Ð°Ñ‚Ñ‹ÑÑ‚Ñ‹ÐºÐ° ÐºÑ–Ñ€Ð°Ð²Ð°Ð½ÑŒÐ½Ñ ÑÑ–Ð»ÐºÐ°Ð²Ð°Ð½ÑŒÐ½ÐµÐ¼ [A_PWR_...]\n"
 "\t\tÐšÐ»ÑŽÑ‡Ð°Ð²Ñ‹Ñ ÑÐ»Ð¾Ð²Ñ‹:\n"
 "\t\tBAT\tÐÐ¼Ñ–ÑÑ‚Ð°ÑÑŒÑ†ÑŒ Ð°ÐºÑƒÐ¼ÑƒÐ»ÑÑ‚Ð°Ñ€Ð°Ñž\n"
-"\t\tCPU\tÐ‘ÑÐ³ÑƒÑ‡Ð°Ñ Ñ‚Ð°ÐºÑ‚Ð°Ð²Ð°Ñ Ñ‡Ð°ÑÑ‚Ð°Ñ‚Ð° CPU\n"
+"\t\tCPU\tÐ‘ÑÐ³ÑƒÑ‡Ð°Ñ Ñ‚Ð°ÐºÑ‚Ð°Ð²Ð°Ñ Ñ‡Ð°ÑˆÑ‡Ñ‹Ð½Ñ CPU\n"
 "\t\tFAN\tÐ¥ÑƒÑ‚ÐºÐ°ÑÑŒÑ†ÑŒ Ð²ÑÐ½Ñ‚Ñ‹Ð»ÑÑ‚Ð°Ñ€Ð°Ñž\n"
-"\t\tFREQ\tÐ¡ÑÑ€ÑÐ´Ð½ÑÑ Ñ‚Ð°ÐºÑ‚Ð°Ð²Ð°Ñ Ñ‡Ð°ÑÑ‚Ð°Ñ‚Ð° CPU\n"
+"\t\tFREQ\tÐ¡ÑÑ€ÑÐ´Ð½ÑÑ Ñ‚Ð°ÐºÑ‚Ð°Ð²Ð°Ñ Ñ‡Ð°ÑˆÑ‡Ñ‹Ð½Ñ CPU\n"
 "\t\tIN\tÐ£Ð²Ð°Ñ…Ð¾Ð´Ð½Ñ‹Ñ Ð½Ð°Ð¿Ñ€ÑƒÐ¶Ð°Ð½ÑŒÐ½Ñ–\n"
 "\t\tTEMP\tÐ¢ÑÐ¼Ð¿ÑÑ€Ð°Ñ‚ÑƒÑ€Ð° Ð¿Ñ€Ñ‹Ð»Ð°Ð´\n"
 "\t\tUSB\tÐŸÑ€Ñ‹Ð»Ð°Ð´Ñ‹ USB, Ð¿Ð°Ð´ÐºÐ»ÑŽÑ‡Ð°Ð½Ñ‹Ñ Ð´Ð° ÑÑ‹ÑÑ‚ÑÐ¼Ñ‹\n"
@@ -535,12 +535,12 @@ msgid ""
 "\t\tMEM\tPressure-stall memory statistics [A_PSI_MEM]\n"
 msgstr ""
 "\t-q [ <ÐºÐ»ÑŽÑ‡Ð°Ð²Ð¾Ðµ_ÑÐ»Ð¾Ð²Ð°> [,...] | PSI | ALL ]\n"
-"\t\tÐ¡Ñ‚Ð°Ñ‚Ñ‹ÑÑ‚Ñ‹ÐºÐ° Ð·Ð°Ð³Ñ€ÑƒÐ·ÐºÑ– ÑÑ‹ÑÑ‚ÑÐ¼Ñ‹ Ð´Ñ‹ Ð¿Ñ€Ð°ÑÑÐ´Ð°Ð½ÑŒÐ½Ñ Ð½Ð°Ð³Ñ€ÑƒÐ·ÐºÑ– (pressure-stall)\n"
+"\t\tÐ¡Ñ‚Ð°Ñ‚Ñ‹ÑÑ‚Ñ‹ÐºÐ° Ð·Ð°Ð³Ñ€ÑƒÐ·ÐºÑ– ÑÑ‹ÑÑ‚ÑÐ¼Ñ‹ Ð´Ñ‹ Ð·Ð°Ñ‚Ñ€Ñ‹Ð¼ÐºÑ– Ð´Ð¾ÑÑ‚ÑƒÐ¿Ñƒ\n"
 "\t\tÐšÐ»ÑŽÑ‡Ð°Ð²Ñ‹Ñ ÑÐ»Ð¾Ð²Ñ‹:\n"
 "\t\tLOAD\tÐ¡Ñ‚Ð°Ñ‚Ñ‹ÑÑ‚Ñ‹ÐºÐ° Ð´Ð°ÑžÐ¶Ñ‹Ð½Ñ– Ñ‡Ð°Ñ€Ð³Ñ– Ð´Ñ‹ ÑÑÑ€ÑÐ´Ð½ÑÐ¹ Ð·Ð°Ð³Ñ€ÑƒÐ·ÐºÑ– [A_QUEUE]\n"
-"\t\tCPU\tÐ¡Ñ‚Ð°Ñ‚Ñ‹ÑÑ‚Ñ‹ÐºÐ° Ð¿Ñ€Ð°ÑÑÐ´Ð°Ð½ÑŒÐ½Ñ Ð½Ð°Ð³Ñ€ÑƒÐ·ÐºÑ– CPU [A_PSI_CPU]\n"
-"\t\tIO\tÐ¡Ñ‚Ð°Ñ‚Ñ‹ÑÑ‚Ñ‹ÐºÐ° Ð¿Ñ€Ð°ÑÑÐ´Ð°Ð½ÑŒÐ½Ñ Ð°Ð¿ÑÑ€Ð°Ñ†Ñ‹Ð¹ ÑƒÐ²Ð¾Ð´Ñƒ-Ð²Ñ‹Ð²Ð°Ð´Ñƒ [A_PSI_IO]\n"
-"\t\tMEM\tÐ¡Ñ‚Ð°Ñ‚Ñ‹ÑÑ‚Ñ‹ÐºÐ° Ð¿Ñ€Ð°ÑÑÐ´Ð°Ð½ÑŒÐ½Ñ Ð¿Ð°Ð¼ÑÑ†Ñ– [A_PSI_MEM]\n"
+"\t\tCPU\tÐ¡Ñ‚Ð°Ñ‚Ñ‹ÑÑ‚Ñ‹ÐºÐ° Ð·Ð°Ñ‚Ñ€Ñ‹Ð¼ÐºÑ– Ð´Ð¾ÑÑ‚ÑƒÐ¿Ñƒ Ð¦ÐŸ [A_PSI_CPU]\n"
+"\t\tIO\tÐ¡Ñ‚Ð°Ñ‚Ñ‹ÑÑ‚Ñ‹ÐºÐ° Ð·Ð°Ñ‚Ñ€Ñ‹Ð¼ÐºÑ– Ð´Ð¾ÑÑ‚ÑƒÐ¿Ñƒ ÑƒÐ²Ð¾Ð´Ñƒ-Ð²Ñ‹Ð²Ð°Ð´Ñƒ [A_PSI_IO]\n"
+"\t\tMEM\tÐ¡Ñ‚Ð°Ñ‚Ñ‹ÑÑ‚Ñ‹ÐºÐ° Ð·Ð°Ñ‚Ñ€Ñ‹Ð¼ÐºÑ– Ð´Ð¾ÑÑ‚ÑƒÐ¿Ñƒ Ð¿Ð°Ð¼ÑÑ†Ñ– [A_PSI_MEM]\n"
 
 #: sar.c:199
 #, c-format
@@ -554,7 +554,7 @@ msgstr ""
 #: sar.c:201
 #, c-format
 msgid "\t-S\tSwap space utilization statistics [A_MEMORY]\n"
-msgstr "\t-S\tÐ¡Ñ‚Ð°Ñ‚Ñ‹ÑÑ‚Ñ‹ÐºÐ° Ð²Ñ‹ÐºÐ°Ñ€Ñ‹ÑÑ‚Ð°Ð½ÑŒÐ½Ñ Ð¿Ñ€Ð°ÑÑ‚Ð¾Ñ€Ñ‹ Ð¿Ð°Ð´Ð¼ÐµÐ½Ñ‹ [A_MEMORY]\n"
+msgstr "\t-S\tÐ¡Ñ‚Ð°Ñ‚Ñ‹ÑÑ‚Ñ‹ÐºÐ° ÑžÐ¶Ñ‹Ð²Ð°Ð½ÑŒÐ½Ñ Ð¿Ñ€Ð°ÑÑ‚Ð¾Ñ€Ñ‹ Ð¿Ð°Ð´Ð¼ÐµÐ½Ñ‹ [A_MEMORY]\n"
 
 #: sar.c:202
 #, c-format
@@ -563,7 +563,7 @@ msgid ""
 "\t\tCPU utilization statistics [A_CPU]\n"
 msgstr ""
 "\t-u [ ALL ]\n"
-"\t\tÐ¡Ñ‚Ð°Ñ‚Ñ‹ÑÑ‚Ñ‹ÐºÐ° Ð²Ñ‹ÐºÐ°Ñ€Ñ‹ÑÑ‚Ð°Ð½ÑŒÐ½Ñ Ñ†ÑÐ½Ñ‚Ñ€Ð°Ð»ÑŒÐ½Ð°Ð³Ð° Ð¿Ñ€Ð°Ñ†ÑÑÐ°Ñ€Ñƒ [A_CPU]\n"
+"\t\tÐ¡Ñ‚Ð°Ñ‚Ñ‹ÑÑ‚Ñ‹ÐºÐ° Ð²Ñ‹ÐºÐ°Ñ€Ñ‹ÑÑ‚Ð°Ð½ÑŒÐ½Ñ Ñ†ÑÐ½Ñ‚Ñ€Ð°Ð»ÑŒÐ½Ð°Ð³Ð° Ð¿Ñ€Ð°Ñ†ÑÑÐ°Ñ€Ð° [A_CPU]\n"
 
 #: sar.c:204
 #, c-format
@@ -588,27 +588,27 @@ msgstr "\t-y\tÐ¡Ñ‚Ð°Ñ‚Ñ‹ÑÑ‚Ñ‹ÐºÐ° Ð¿Ñ€Ñ
 #: sar.c:221
 #, c-format
 msgid "Data collector will be sought in PATH\n"
-msgstr "ÐŸÐ¾ÑˆÑƒÐº Ð·ÑŒÐ±Ñ–Ñ€Ð°Ð»ÑŒÐ½Ñ–ÐºÐ° Ð´Ð°Ð½Ñ‹Ñ… Ð±ÑƒÐ´Ð·Ðµ Ð²Ñ‹ÐºÐ¾Ð½Ð²Ð°Ñ†Ñ†Ð° Ñž PATH\n"
+msgstr "ÐŸÐ¾ÑˆÑƒÐº Ð·ÑŒÐ±Ñ–Ñ€Ð°Ð»ÑŒÐ½Ñ–ÐºÐ° Ð·ÑŒÐ²ÐµÑÑ‚Ð°Ðº Ð±ÑƒÐ´Ð·Ðµ Ð²Ñ‹ÐºÐ¾Ð½Ð²Ð°Ñ†Ñ†Ð° Ñž PATH\n"
 
 #: sar.c:224
 #, c-format
 msgid "Data collector found: %s\n"
-msgstr "Ð—Ð½Ð¾Ð¹Ð´Ð·ÐµÐ½Ñ‹ Ð·ÑŒÐ±Ñ–Ñ€Ð°Ð»ÑŒÐ½Ñ–Ðº Ð´Ð°Ð½Ñ‹Ñ…: %s\n"
+msgstr "Ð—Ð½Ð¾Ð¹Ð´Ð·ÐµÐ½Ñ‹ Ð·ÑŒÐ±Ñ–Ñ€Ð°Ð»ÑŒÐ½Ñ–Ðº Ð·ÑŒÐ²ÐµÑÑ‚Ð°Ðº: %s\n"
 
 #: sar.c:289
 #, c-format
 msgid "End of data collecting unexpected\n"
-msgstr "ÐÐµÑ‡Ð°ÐºÐ°Ð½Ñ‹ ÐºÐ°Ð½ÐµÑ† Ð·Ð±Ð¾Ñ€Ñƒ Ð´Ð°Ð½Ñ‹Ñ…\n"
+msgstr "ÐÐµÑ‡Ð°ÐºÐ°Ð½Ñ‹ ÐºÐ°Ð½ÐµÑ† Ð·Ð±Ð¾Ñ€Ñƒ Ð·ÑŒÐ²ÐµÑÑ‚Ð°Ðº\n"
 
 #: sar.c:294
 #, c-format
 msgid "Inconsistent input data\n"
-msgstr "ÐÑÑžÐ·Ð³Ð¾Ð´Ð½ÐµÐ½Ñ‹Ñ ÑžÐ²Ð°Ñ…Ð¾Ð´Ð½Ñ‹Ñ Ð´Ð°Ð½Ñ‹Ñ\n"
+msgstr "ÐÑÑžÐ·Ð³Ð¾Ð´Ð½ÐµÐ½Ñ‹Ñ ÑžÐ²Ð°Ñ…Ð¾Ð´Ð½Ñ‹Ñ Ð·ÑŒÐ²ÐµÑÑ‚ÐºÑ–\n"
 
 #: sar.c:895
 #, c-format
 msgid "Using a wrong data collector from a different sysstat version\n"
-msgstr "Ð’Ñ‹ÐºÐ°Ñ€Ñ‹ÑÑ‚Ð¾ÑžÐ²Ð°ÐµÑ†Ñ†Ð° Ð½ÑÐ¿Ñ€Ð°Ð²Ñ–Ð»ÑŒÐ½Ñ‹ Ð·ÑŒÐ±Ñ–Ñ€Ð°Ð»ÑŒÐ½Ñ–Ðº Ð´Ð°Ð½Ñ‹Ñ… Ð· Ñ–Ð½ÑˆÐ°Ð¹ Ð²ÑÑ€ÑÑ–Ñ– sysstat\n"
+msgstr "Ð’Ñ‹ÐºÐ°Ñ€Ñ‹ÑÑ‚Ð¾ÑžÐ²Ð°ÐµÑ†Ñ†Ð° Ð½ÑÑÐ¿Ñ€Ð°ÑžÐ½Ñ‹ Ð·ÑŒÐ±Ñ–Ñ€Ð°Ð»ÑŒÐ½Ñ–Ðº Ð·ÑŒÐ²ÐµÑÑ‚Ð°Ðº Ð·ÑŒ Ñ–Ð½ÑˆÐ°Ð¹ Ð²ÑÑ€ÑÑ–Ñ– sysstat\n"
 
 #: sar.c:1553
 #, c-format
@@ -618,12 +618,12 @@ msgstr "ÐžÐ¿Ñ†Ñ‹Ñ– -f Ð´Ñ‹ -o ÑƒÐ·Ð°ÐµÐ¼
 #: sar.c:1563
 #, c-format
 msgid "Not reading from a system activity file (use -f option)\n"
-msgstr "ÐÐµ Ð²Ñ‹ÐºÐ¾Ð½Ð²Ð°ÐµÑ†Ñ†Ð° Ñ‡Ñ‹Ñ‚Ð°Ð½ÑŒÐ½Ðµ Ð· Ñ„Ð°Ð¹Ð»Ð° Ð´Ð·ÐµÐ¹Ð½Ð°ÑÑŒÑ†Ñ– ÑÑ‹ÑÑ‚ÑÐ¼Ñ‹ (Ð²Ñ‹ÐºÐ°Ñ€Ñ‹ÑÑ‚Ð¾ÑžÐ²Ð°Ð¹Ñ†Ðµ Ð¾Ð¿Ñ†Ñ‹ÑŽ -f)\n"
+msgstr "ÐÐµ Ð²Ñ‹ÐºÐ¾Ð½Ð²Ð°ÐµÑ†Ñ†Ð° Ñ‡Ñ‹Ñ‚Ð°Ð½ÑŒÐ½Ðµ Ð· Ñ„Ð°Ð¹Ð»Ð° Ð°ÐºÑ‚Ñ‹ÑžÐ½Ð°ÑÑŒÑ†Ñ– ÑÑ‹ÑÑ‚ÑÐ¼Ñ‹ (Ð²Ñ‹ÐºÐ°Ñ€Ñ‹ÑÑ‚Ð¾ÑžÐ²Ð°Ð¹Ñ†Ðµ Ð¾Ð¿Ñ†Ñ‹ÑŽ -f)\n"
 
 #: sar.c:1712
 #, c-format
 msgid "Cannot find the data collector (%s)\n"
-msgstr "ÐÐµÐ¼Ð°Ð³Ñ‡Ñ‹Ð¼Ð° Ð·Ð½Ð°Ð¹ÑÑŒÑ†Ñ– Ð·ÑŒÐ±Ñ–Ñ€Ð°Ð»ÑŒÐ½Ñ–Ðº Ð´Ð°Ð½Ñ‹Ñ… (%s)\n"
+msgstr "ÐÐµÐ¼Ð°Ð³Ñ‡Ñ‹Ð¼Ð° Ð·Ð½Ð°Ð¹ÑÑŒÑ†Ñ– Ð·ÑŒÐ±Ñ–Ñ€Ð°Ð»ÑŒÐ½Ñ–Ðº Ð·ÑŒÐ²ÐµÑÑ‚Ð°Ðº (%s)\n"
 
 #: tapestat.c:106
 #, c-format
@@ -637,4 +637,4 @@ msgstr ""
 #: tapestat.c:273
 #, c-format
 msgid "No tape drives with statistics found\n"
-msgstr "Ð¡Ñ‚ÑƒÐ¶ÐºÐ°Ð²Ñ‹Ñ Ð¿Ñ€Ñ‹Ð»Ð°Ð´Ñ‹ ÑÐ° ÑÑ‚Ð°Ñ‚Ñ‹ÑÑ‚Ñ‹ÐºÐ°Ð¹ Ð½Ñ Ð·Ð½Ð¾Ð¹Ð´Ð·ÐµÐ½Ñ‹\n"
+msgstr "Ð¡Ñ‚ÑƒÐ¶ÐºÐ°Ð²Ñ‹Ñ Ð¿Ñ€Ñ‹Ð»Ð°Ð´Ñ‹ ÑÐ° ÑÑ‚Ð°Ñ‚Ñ‹ÑÑ‚Ñ‹ÐºÐ°Ð¹ Ð½Ñ Ð·Ð½Ð¾Ð¹Ð´Ð·ÐµÐ½Ñ‹Ñ\n"
diff -pruN 12.7.5-2/nls/id.po 12.7.7-0ubuntu2/nls/id.po
--- 12.7.5-2/nls/id.po	2022-03-21 14:47:01.000000000 +0000
+++ 12.7.7-0ubuntu2/nls/id.po	2024-06-21 10:32:02.000000000 +0000
@@ -2,14 +2,15 @@
 # Copyright (C) 2008 THE sysstat'S COPYRIGHT HOLDER
 # This file is distributed under the same license as the sysstat package.
 # Andhika Padmawan <andhika.padmawan@gmail.com>, 2011-2014.
+# Andika Triwidada <andika@gmail.com>, 2024.
 #
 msgid ""
 msgstr ""
-"Project-Id-Version: sysstat 12.5.6\n"
+"Project-Id-Version: sysstat 12.7.2\n"
 "Report-Msgid-Bugs-To: sysstat <at> orange.fr\n"
-"POT-Creation-Date: 2022-02-27 08:05+0100\n"
-"PO-Revision-Date: 2022-03-21 21:41+0700\n"
-"Last-Translator: Andhika Padmawan <andhika.padmawan@gmail.com>\n"
+"POT-Creation-Date: 2023-01-13 17:54+0100\n"
+"PO-Revision-Date: 2024-06-17 14:54+0700\n"
+"Last-Translator: Andika Triwidada <andika@gmail.com>\n"
 "Language-Team: Indonesian <translation-team-id@lists.sourceforge.net>\n"
 "Language: id\n"
 "MIME-Version: 1.0\n"
@@ -17,9 +18,9 @@ msgstr ""
 "Content-Transfer-Encoding: 8bit\n"
 "Plural-Forms: nplurals=1; plural=0;\n"
 "X-Bugs: Report translation errors to the Language-Team address.\n"
-"X-Generator: Poedit 3.0.1\n"
+"X-Generator: Poedit 3.4.3\n"
 
-#: cifsiostat.c:75 iostat.c:89 mpstat.c:133 sar.c:107 tapestat.c:104
+#: cifsiostat.c:75 iostat.c:89 mpstat.c:134 sar.c:108 tapestat.c:104
 #, c-format
 msgid "Usage: %s [ options ] [ <interval> [ <count> ] ]\n"
 msgstr "Penggunaan: %s [ opsi ] [ <interval> [ <cacah> ] ]\n"
@@ -46,13 +47,13 @@ msgstr ""
 "[ --dec={ 0 | 1 | 2 } ] [ --human ] [ --pretty ]\n"
 "[ -h ] [ -k | -m ] [ -t ] [ -V ]\n"
 
-#: common.c:83
+#: common.c:85
 #, c-format
 msgid "sysstat version %s\n"
 msgstr "sysstat versi %s\n"
 
-#: count.c:118 ioconf.c:479 rd_stats.c:86 sa_common.c:1786 sadc.c:741
-#: sadc.c:804
+#: count.c:118 ioconf.c:480 rd_stats.c:86 sa_common.c:1856 sadc.c:747
+#: sadc.c:810
 #, c-format
 msgid "Cannot open %s: %s\n"
 msgstr "Tak dapat membuka %s: %s\n"
@@ -96,34 +97,34 @@ msgstr ""
 "[ [ -H ] -g <nama_grup> ] [ -p [ <divais> [,...] | ALL ] ]\n"
 "[ <divais> [...] | ALL ]\n"
 
-#: iostat.c:2177 sa_common.c:2334
+#: iostat.c:2179 sa_common.c:2404
 #, c-format
 msgid "Invalid type of persistent device name\n"
 msgstr "Tipe tidak valid pada nama divais kukuh\n"
 
-#: mpstat.c:136
+#: mpstat.c:137
 #, c-format
 msgid ""
 "Options are:\n"
-"[ -A ] [ -n ] [ -T ] [ -u ] [ -V ]\n"
+"[ -A ] [ -H ] [ -n ] [ -T ] [ -u ] [ -V ]\n"
 "[ -I { SUM | CPU | SCPU | ALL } ] [ -N { <node_list> | ALL } ]\n"
 "[ --dec={ 0 | 1 | 2 } ] [ -o JSON ] [ -P { <cpu_list> | ALL } ]\n"
 msgstr ""
 "Opsinya adalah:\n"
-"[ -A ] [ -n ] [ -T ] [ -u ] [ -V ]\n"
+"[ -A ] [ -H ] [ -n ] [ -T ] [ -u ] [ -V ]\n"
 "[ -I { SUM | CPU | SCPU | ALL } ] [ -N { <node_list> | ALL } ]\n"
 "[ --dec={ 0 | 1 | 2 } ] [ -o JSON ] [ -P { <cpu_list> | ALL } ]\n"
 
-#: mpstat.c:1757 pidstat.c:2292 sar.c:383
+#: mpstat.c:1773 pidstat.c:2312 sar.c:385
 msgid "Average:"
 msgstr "Rata-rata:"
 
-#: pidstat.c:89
+#: pidstat.c:91
 #, c-format
 msgid "Usage: %s [ options ] [ <interval> [ <count> ] ] [ -e <program> <args> ]\n"
 msgstr "Penggunaan: %s [ opsi ] [ <interval> [ <cacah> ] ] [ -e <program> <arg> ]\n"
 
-#: pidstat.c:92
+#: pidstat.c:94
 #, c-format
 msgid ""
 "Options are:\n"
@@ -138,7 +139,7 @@ msgstr ""
 "[ -p { <pid> [,...] | SELF | ALL } ] [ -T { TASK | CHILD | ALL } ]\n"
 "[ --dec={ 0 | 1 | 2 } ] [ --human ]\n"
 
-#: pidstat.c:211 sa_common.c:369
+#: pidstat.c:225 sa_common.c:368
 #, c-format
 msgid "Requested activities not available\n"
 msgstr "Aktivitas yang diminta tak tersedia\n"
@@ -147,27 +148,27 @@ msgstr "Aktivitas yang diminta tak terse
 msgid "Summary:"
 msgstr "Ringkasan:"
 
-#: rd_stats.c:425
+#: rd_stats.c:427
 #, c-format
 msgid "Cannot read %s\n"
 msgstr "Tak dapat membaca %s\n"
 
-#: sa_common.c:302
+#: sa_common.c:301
 #, c-format
 msgid "File created by sar/sadc from sysstat version %d.%d.%d"
 msgstr "Berkas dibuat menggunakan sar/sadc dari sysstat versi %d.%d.%d"
 
-#: sa_common.c:335
+#: sa_common.c:334
 #, c-format
 msgid "Invalid system activity file: %s\n"
 msgstr "Berkas aktivitas sistem tak sah: %s\n"
 
-#: sa_common.c:345
+#: sa_common.c:344
 #, c-format
 msgid "Current sysstat version cannot read the format of this file (%#x)\n"
 msgstr "Versi sysstat saat ini tak dapat lagi membaca format berkas ini (%#x)\n"
 
-#: sa_common.c:349
+#: sa_common.c:348
 #, c-format
 msgid ""
 "Try to convert it to current format. Enter:\n"
@@ -176,27 +177,27 @@ msgstr ""
 "Cobalah mengubahnya ke format saat ini. Masukkan:\n"
 "\n"
 
-#: sa_common.c:352
+#: sa_common.c:351
 #, c-format
 msgid "You should then be able to read the new file created (%s.new)\n"
 msgstr "Anda mestinya lalu bisa membaca berkas baru yang dibuat (%s.new)\n"
 
-#: sa_common.c:1368
+#: sa_common.c:1435
 #, c-format
 msgid "Error while reading system activity file: %s\n"
 msgstr "Galat ketika membaca berkas aktivitas sistem: %s\n"
 
-#: sa_common.c:1378
+#: sa_common.c:1445
 #, c-format
 msgid "End of system activity file unexpected\n"
 msgstr "Akhir berkas aktivitas sistem tak diharapkan\n"
 
-#: sa_common.c:1789
+#: sa_common.c:1859
 #, c-format
 msgid "Please check if data collecting is enabled\n"
 msgstr "Silakan cek jika pengambilan data diaktifkan\n"
 
-#: sa_common.c:2124
+#: sa_common.c:2194
 #, c-format
 msgid "Requested activities not available in file %s\n"
 msgstr "Aktivitas yang diminta tak tersedia di berkas %s\n"
@@ -206,7 +207,7 @@ msgstr "Aktivitas yang diminta tak terse
 msgid "Cannot convert the format of this file\n"
 msgstr "Tak dapat lagi mengonversikan format berkas ini\n"
 
-#: sa_conv.c:383
+#: sa_conv.c:385
 #, c-format
 msgid ""
 "\n"
@@ -215,7 +216,7 @@ msgstr ""
 "\n"
 "Aktivitas CPU tidak ditemukan di berkas. Membatalkanâ€¦\n"
 
-#: sa_conv.c:406
+#: sa_conv.c:408
 #, c-format
 msgid ""
 "\n"
@@ -224,12 +225,12 @@ msgstr ""
 "\n"
 "Data tak sah ditemukan. Membatalkanâ€¦\n"
 
-#: sa_conv.c:1927
+#: sa_conv.c:1931
 #, c-format
 msgid "Statistics:\n"
 msgstr "Statistik:\n"
 
-#: sa_conv.c:2028
+#: sa_conv.c:2032
 #, c-format
 msgid ""
 "\n"
@@ -238,12 +239,12 @@ msgstr ""
 "\n"
 "Format berkas sudah mutakhir\n"
 
-#: sa_conv.c:2040
+#: sa_conv.c:2044
 #, c-format
 msgid "HZ: Using current value: %lu\n"
 msgstr "HZ: Memakai nilai kini: %lu\n"
 
-#: sa_conv.c:2071
+#: sa_conv.c:2075
 #, c-format
 msgid "File successfully converted to sysstat format version %s\n"
 msgstr "Berkas berhasil dikonversi ke format sysstat versi %s\n"
@@ -269,189 +270,191 @@ msgstr ""
 msgid "Cannot write data to system activity file: %s\n"
 msgstr "Tak dapat menulis data ke berkas aktivitas sistem: %s\n"
 
-#: sadc.c:1028
+#: sadc.c:1040
 #, c-format
 msgid "Cannot append data to that file (%s)\n"
 msgstr "Tak dapat menambah data ke berkas tersebut (%s)\n"
 
-#: sadf.c:105
+#: sadf.c:119
 #, c-format
 msgid "Usage: %s [ options ] [ <interval> [ <count> ] ] [ <datafile> | -[0-9]+ ]\n"
 msgstr "Penggunaan: %s [ opsi ] [ <interval> [ <hitungan> ] ] [ <berkas data> | [0-9]+ ]\n"
 
-#: sadf.c:108
+#: sadf.c:122
 #, c-format
 msgid ""
 "Options are:\n"
 "[ -C ] [ -c | -d | -g | -j | -l | -p | -r | -x ] [ -H ] [ -h ] [ -T | -t | -U ] [ -V ]\n"
 "[ -O <opts> [,...] ] [ -P { <cpu> [,...] | ALL } ]\n"
 "[ --dev=<dev_list> ] [ --fs=<fs_list> ] [ --iface=<iface_list> ] [ --int=<int_list> ]\n"
-"[ -s [ <hh:mm[:ss]> ] ] [ -e [ <hh:mm[:ss]> ] ]\n"
+"[ -s [ <time_start> ] ] [ -e [ <time_end> ] ]\n"
 "[ -- <sar_options> ]\n"
 msgstr ""
-"Options are:\n"
+"Opsinya adalah:\n"
 "[ -C ] [ -c | -d | -g | -j | -l | -p | -r | -x ] [ -H ] [ -h ] [ -T | -t | -U ] [ -V ]\n"
 "[ -O <opts> [,...] ] [ -P { <cpu> [,...] | ALL } ]\n"
-"[ --dev=<dev_list> ] [ --fs=<fs_list> ] [ --iface=<iface_list> ] [ --int=<int_list> ]\n"
-"[ -s [ <jj:mm[:dd]> ] ] [ -e [ <jj:mm[:dd]> ] ]\n"
+"[ --dev=<daftar_dev> ] [ --fs=<fs_list> ] [ --iface=<daftar_iface> ] [ --int=<daftar_int> ]\n"
+"[ -s [ <waktu_awal> ] ] [ -e [ <waktu_akhir> ] ]\n"
 "[ -- <opsi_sar> ]\n"
 
-#: sadf.c:1865
+#: sadf.c:1896
 #, c-format
 msgid "PCP support not compiled in\n"
 msgstr "Dukungan PCP tidak dikompail\n"
 
-#: sadf_misc.c:1216
+#: sadf_misc.c:1252
 #, c-format
 msgid "System activity data file: %s (%#x)\n"
 msgstr "Berkas data aktivitas sistem: %s (%#x)\n"
 
-#: sadf_misc.c:1225
+#: sadf_misc.c:1261
 #, c-format
 msgid "Genuine sa datafile: %s (%x)\n"
 msgstr "Berkas data sa asli: %s (%x)\n"
 
-#: sadf_misc.c:1226
+#: sadf_misc.c:1262
 msgid "no"
 msgstr "tidak"
 
-#: sadf_misc.c:1226
+#: sadf_misc.c:1262
 msgid "yes"
 msgstr "ya"
 
-#: sadf_misc.c:1229
+#: sadf_misc.c:1265
 #, c-format
 msgid "Host: "
 msgstr "Host: "
 
-#: sadf_misc.c:1239
+#: sadf_misc.c:1275
 #, c-format
 msgid "File date: %s\n"
 msgstr "Tanggal berkas: %s\n"
 
-#: sadf_misc.c:1242
+#: sadf_misc.c:1278
 #, c-format
 msgid "File time: "
 msgstr "Waktu berkas: "
 
-#: sadf_misc.c:1247
+#: sadf_misc.c:1283
 #, c-format
 msgid "Timezone: %s\n"
 msgstr "Zona waktu: %s\n"
 
-#: sadf_misc.c:1250
+#: sadf_misc.c:1286
 #, c-format
 msgid "File composition: (%d,%d,%d),(%d,%d,%d),(%d,%d,%d)\n"
 msgstr "Komposisi berkas: (%d,%d,%d),(%d,%d,%d),(%d,%d,%d)\n"
 
-#: sadf_misc.c:1255
+#: sadf_misc.c:1291
 #, c-format
 msgid "Size of a long int: %d\n"
 msgstr "Ukuran interval panjang: %d\n"
 
-#: sadf_misc.c:1257
+#: sadf_misc.c:1293
 #, c-format
 msgid "Number of activities in file: %u\n"
 msgstr "Cacah aktivitas di berkas: %u\n"
 
-#: sadf_misc.c:1259
+#: sadf_misc.c:1295
 #, c-format
 msgid "Extra structures available: %c\n"
 msgstr "Tersedia struktur ekstra: %c\n"
 
-#: sadf_misc.c:1262
+#: sadf_misc.c:1298
 #, c-format
 msgid "List of activities:\n"
 msgstr "Senarai aktivitas:\n"
 
-#: sadf_misc.c:1273
+#: sadf_misc.c:1309
 msgid "Unknown activity"
 msgstr "Aktivitas tak diketahui"
 
-#: sadf_misc.c:1281
+#: sadf_misc.c:1317
 #, c-format
 msgid " \t[Unknown format]"
 msgstr "\t[Format tak diketahui]"
 
-#: sar.c:122
+#: sar.c:123
 #, c-format
 msgid ""
 "Options are:\n"
 "[ -A ] [ -B ] [ -b ] [ -C ] [ -D ] [ -d ] [ -F [ MOUNT ] ] [ -H ] [ -h ]\n"
 "[ -p ] [ -r [ ALL ] ] [ -S ] [ -t ] [ -u [ ALL ] ] [ -V ]\n"
 "[ -v ] [ -W ] [ -w ] [ -y ] [ -z ]\n"
-"[ -I { <int_list> | SUM | ALL } ] [ -P { <cpu_list> | ALL } ]\n"
+"[ -I [ SUM | ALL ] ] [ -P { <cpu_list> | ALL } ]\n"
 "[ -m { <keyword> [,...] | ALL } ] [ -n { <keyword> [,...] | ALL } ]\n"
 "[ -q [ <keyword> [,...] | ALL ] ]\n"
 "[ --dev=<dev_list> ] [ --fs=<fs_list> ] [ --iface=<iface_list> ] [ --int=<int_list> ]\n"
 "[ --dec={ 0 | 1 | 2 } ] [ --help ] [ --human ] [ --pretty ] [ --sadc ]\n"
 "[ -j { SID | ID | LABEL | PATH | UUID | ... } ]\n"
 "[ -f [ <filename> ] | -o [ <filename> ] | -[0-9]+ ]\n"
-"[ -i <interval> ] [ -s [ <hh:mm[:ss]> ] ] [ -e [ <hh:mm[:ss]> ] ]\n"
+"[ -i <interval> ] [ -s [ <start_time> ] ] [ -e [ <end_time> ] ]\n"
 msgstr ""
 "Opsinya adalah:\n"
 "[ -A ] [ -B ] [ -b ] [ -C ] [ -D ] [ -d ] [ -F [ MOUNT ] ] [ -H ] [ -h ]\n"
 "[ -p ] [ -r [ ALL ] ] [ -S ] [ -t ] [ -u [ ALL ] ] [ -V ]\n"
 "[ -v ] [ -W ] [ -w ] [ -y ] [ -z ]\n"
-"[ -I { <int_list> | SUM | ALL } ] [ -P { <cpu_list> | ALL } ]\n"
+"[ -I [ SUM | ALL ] ] [ -P { <daftar_cpu> | ALL } ]\n"
 "[ -m { <kata_kunci> [,...] | ALL } ] [ -n { <kata_kunci> [,...] | ALL } ]\n"
 "[ -q [ <kata_kunci> [,...] | ALL ] ]\n"
-"[ --dev=<dev_list> ] [ --fs=<fs_list> ] [ --iface=<iface_list> ] [ --int=<int_list> ]\n"
+"[ --dev=<daftar_dev> ] [ --fs=<daftar_fs> ] [ --iface=<daftar_iface> ] [ --int=<daftar_int> ]\n"
 "[ --dec={ 0 | 1 | 2 } ] [ --help ] [ --human ] [ --pretty ] [ --sadc ]\n"
 "[ -j { SID | ID | LABEL | PATH | UUID | ... } ]\n"
 "[ -f [ <nama_berkas> ] | -o [ <nama_berkas> ] | -[0-9]+ ]\n"
-"[ -i <interval> ] [ -s [ <jj:mm[:dd]> ] ] [ -e [ <jj:mm[:dd]> ] ]\n"
+"[ -i <interval> ] [ -s [ <waktu_awal> ] ] [ -e [ <waktu_akhir> ] ]\n"
 
-#: sar.c:149
+#: sar.c:150
 #, c-format
 msgid "Main options and reports (report name between square brackets):\n"
 msgstr "Opsi utama dan laporan (nama laporan di antara kurung siku):\n"
 
-#: sar.c:150
+#: sar.c:151
 #, c-format
 msgid "\t-B\tPaging statistics [A_PAGE]\n"
 msgstr "\t-B\tStatistik paging [A_PAGE]\n"
 
-#: sar.c:151
+#: sar.c:152
 #, c-format
 msgid "\t-b\tI/O and transfer rate statistics [A_IO]\n"
 msgstr "\t-b\tStatistik I/O dan laju transfer [A_IO]\n"
 
-#: sar.c:152
+#: sar.c:153
 #, c-format
 msgid "\t-d\tBlock devices statistics [A_DISK]\n"
 msgstr "\t-d\tStatistik divais blok [A_DISK]\n"
 
-#: sar.c:153
+#: sar.c:154
 #, c-format
 msgid "\t-F [ MOUNT ]\n"
 msgstr "\t-F [ MOUNT ]\n"
 
-#: sar.c:154
+#: sar.c:155
 #, c-format
 msgid "\t\tFilesystems statistics [A_FS]\n"
 msgstr "\t\tStatistik sistem berkas [A_FS]\n"
 
-#: sar.c:155
+#: sar.c:156
 #, c-format
 msgid "\t-H\tHugepages utilization statistics [A_HUGE]\n"
 msgstr "\t-S\tStatistik utilisasi hugepages [A_HUGE]\n"
 
-#: sar.c:156
+#: sar.c:157
 #, c-format
 msgid ""
-"\t-I { <int_list> | SUM | ALL }\n"
+"\t-I [ SUM | ALL ]\n"
 "\t\tInterrupts statistics [A_IRQ]\n"
 msgstr ""
-"\t-I { <int> | SUM | ALL | XALL }\n"
+"\t-I [ SUM | ALL ]\n"
 "\t\tStatistik interupsi [A_IRQ]\n"
+"\n"
 
-#: sar.c:158
+#: sar.c:159
 #, c-format
 msgid ""
 "\t-m { <keyword> [,...] | ALL }\n"
 "\t\tPower management statistics [A_PWR_...]\n"
 "\t\tKeywords are:\n"
+"\t\tBAT\tBatteries capacity\n"
 "\t\tCPU\tCPU instantaneous clock frequency\n"
 "\t\tFAN\tFans speed\n"
 "\t\tFREQ\tCPU average clock frequency\n"
@@ -462,6 +465,7 @@ msgstr ""
 "\t-m { <kata kunci> [,...] | ALL }\n"
 "\t\tStatistik manajemen daya [A_PWR_...]\n"
 "\t\tKata kunci adalah:\n"
+"\t\tBAT\tKapasitas baterai\n"
 "\t\tCPU\tFrekuensi instan CPU\n"
 "\t\tFAN\tKecepatan kipas\n"
 "\t\tFREQ\tFrekuensi rata-rata CPU\n"
@@ -469,7 +473,7 @@ msgstr ""
 "\t\tTEMP\tTemperatur divais\n"
 "\t\tUSB\tDivais USB yang ditancapkan ke dalam sistem\n"
 
-#: sar.c:167
+#: sar.c:169
 #, c-format
 msgid ""
 "\t-n { <keyword> [,...] | ALL }\n"
@@ -520,7 +524,7 @@ msgstr ""
 "\t\tFC\tFibre channel HBA\n"
 "\t\tSOFT\tPemroses jaringan berbasis peranti lunak\n"
 
-#: sar.c:190
+#: sar.c:192
 #, c-format
 msgid ""
 "\t-q [ <keyword> [,...] | PSI | ALL ]\n"
@@ -539,7 +543,7 @@ msgstr ""
 "\t\tIO\tStatistik I/O pressure-stall [A_PSI_IO]\n"
 "\t\tMEM\tStatistik memori pressure-stall [A_PSI_MEM]\n"
 
-#: sar.c:197
+#: sar.c:199
 #, c-format
 msgid ""
 "\t-r [ ALL ]\n"
@@ -548,12 +552,12 @@ msgstr ""
 "\t-r [ ALL ]\n"
 "\t\tStatistik utilisasi memori [A_MEMORY]\n"
 
-#: sar.c:199
+#: sar.c:201
 #, c-format
 msgid "\t-S\tSwap space utilization statistics [A_MEMORY]\n"
 msgstr "\t-S\tStatistik utilisasi ruang swap [A_MEMORY]\n"
 
-#: sar.c:200
+#: sar.c:202
 #, c-format
 msgid ""
 "\t-u [ ALL ]\n"
@@ -562,42 +566,42 @@ msgstr ""
 "\t-u [ ALL ]\n"
 "\t\tStatistik utilisasi CPU [A_CPU]\n"
 
-#: sar.c:202
+#: sar.c:204
 #, c-format
 msgid "\t-v\tKernel tables statistics [A_KTABLES]\n"
 msgstr "\t-v\tStatistik tabel kernel [A_KTABLES]\n"
 
-#: sar.c:203
+#: sar.c:205
 #, c-format
 msgid "\t-W\tSwapping statistics [A_SWAP]\n"
 msgstr "\t-W\tStatistik swap [A_SWAP]\n"
 
-#: sar.c:204
+#: sar.c:206
 #, c-format
 msgid "\t-w\tTask creation and system switching statistics [A_PCSW]\n"
 msgstr "\t-w\tStatistik penukar sistem dan pembuatan tugas [A_PCSW]\n"
 
-#: sar.c:205
+#: sar.c:207
 #, c-format
 msgid "\t-y\tTTY devices statistics [A_SERIAL]\n"
 msgstr "\t-y\tStatistik divais TTY [A_SERIAL]\n"
 
-#: sar.c:219
+#: sar.c:221
 #, c-format
 msgid "Data collector will be sought in PATH\n"
 msgstr "Pengumpul data akan dicari di PATH\n"
 
-#: sar.c:222
+#: sar.c:224
 #, c-format
 msgid "Data collector found: %s\n"
 msgstr "Pengumpul data ditemukan: %s\n"
 
-#: sar.c:287
+#: sar.c:289
 #, c-format
 msgid "End of data collecting unexpected\n"
 msgstr "Akhir pengumpulan data tak diharapkan\n"
 
-#: sar.c:292
+#: sar.c:294
 #, c-format
 msgid "Inconsistent input data\n"
 msgstr "Data masukan tidak konsisten\n"
@@ -631,7 +635,7 @@ msgstr ""
 "Opsinya adalah:\n"
 "[ --human ] [ -k | -m ] [ -t ] [ -V ] [ -y ] [ -z ]\n"
 
-#: tapestat.c:272
+#: tapestat.c:273
 #, c-format
 msgid "No tape drives with statistics found\n"
 msgstr "Tak ada penggerak tape dengan statistik yang ditemukan\n"
diff -pruN 12.7.5-2/nls/lv.po 12.7.7-0ubuntu2/nls/lv.po
--- 12.7.5-2/nls/lv.po	2014-04-23 17:22:06.000000000 +0000
+++ 12.7.7-0ubuntu2/nls/lv.po	2023-12-24 18:22:01.000000000 +0000
@@ -3,229 +3,458 @@
 # This file is distributed under the same license as the sysstat package.
 #
 #
-# Rihards Prieditis <rprieditis@gmail.com>, 2009, 2010,2011.
+# Rihards Prieditis <rprieditis@gmail.com>, 2009, 2010,2011, 2023.
 # RÅ«dolfs Mazurs <rudolfs.mazurs@gmail.com>, 2012, 2014.
 msgid ""
 msgstr ""
-"Project-Id-Version: sysstat-10.3.1\n"
+"Project-Id-Version: sysstat-12.7.2\n"
 "Report-Msgid-Bugs-To: sysstat <at> orange.fr\n"
-"POT-Creation-Date: 2014-03-16 06:40+0100\n"
-"PO-Revision-Date: 2014-04-20 18:29+0300\n"
-"Last-Translator: Rihards Prieditis <rprieditis@gmail.com>\n"
+"POT-Creation-Date: 2023-01-13 17:54+0100\n"
+"PO-Revision-Date: 2023-12-24 18:20+0000\n"
+"Last-Translator: Rihards PriedÄ«tis <rprieditis@gmail.com>\n"
 "Language-Team: Latvian <translation-team-lv@lists.sourceforge.net>\n"
 "Language: lv\n"
-"X-Bugs: Report translation errors to the Language-Team address.\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
-"X-Generator: Lokalize 1.5\n"
-"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n != 0 ? 1 : 2);\n"
+"Plural-Forms: nplurals=3; plural=(n%10==0 || (n%100>=11 && n%100<=19) ? 0 : n%10==1 && n%100!=11 ? 1 : 2);\n"
+"X-Bugs: Report translation errors to the Language-Team address.\n"
+"X-Generator: Poedit 3.4.2\n"
 
-#: sadf_misc.c:621
+#: cifsiostat.c:75 iostat.c:89 mpstat.c:134 sar.c:108 tapestat.c:104
 #, c-format
-msgid "System activity data file: %s (%#x)\n"
-msgstr "SistÄ“mas aktivitÄtes datu datne: %s (%#x)\n"
+msgid "Usage: %s [ options ] [ <interval> [ <count> ] ]\n"
+msgstr "LietoÅ¡ana: %s [ opcijas ] [ <intervÄls> [ <skaits> ] ] ]\n"
 
-#: sadf_misc.c:630
+#: cifsiostat.c:79
 #, c-format
-msgid "Host: "
-msgstr "Resursdators:"
+msgid ""
+"Options are:\n"
+"[ --dec={ 0 | 1 | 2 } ] [ --human ] [ --pretty ]\n"
+"[ -h ] [ -k | -m ] [ -t ] [ -V ] [ --debuginfo ]\n"
+msgstr ""
+"Opcijas:\n"
+"[ --dec={ 0 | 1 | 2 } ] [ --human ] [ --pretty ]\n"
+"[ -h ] [ -k | -m ] [ -t ] [ -V ] [ --debuginfo ]\n"
 
-#: sadf_misc.c:636
+#: cifsiostat.c:83
 #, c-format
-msgid "Number of CPU for last samples in file: %u\n"
-msgstr "CPU skaits pÄ“dÄ“jiem paraugiem datnÄ“: %u\n"
+msgid ""
+"Options are:\n"
+"[ --dec={ 0 | 1 | 2 } ] [ --human ] [ --pretty ]\n"
+"[ -h ] [ -k | -m ] [ -t ] [ -V ]\n"
+msgstr ""
+"Opcijas:\n"
+"[ --dec={ 0 | 1 | 2 } ] [ --human ] [ --pretty ]\n"
+"[ -h ] [ -k | -m ] [ -t ] [ -V ]\n"
 
-#: sadf_misc.c:640
+#: common.c:85
 #, c-format
-msgid "File time: "
-msgstr "Datnes laiks:"
+msgid "sysstat version %s\n"
+msgstr "sysstat versija %s\n"
 
-#: sadf_misc.c:645
+#: count.c:118 ioconf.c:480 rd_stats.c:86 sa_common.c:1856 sadc.c:747
+#: sadc.c:810
 #, c-format
-msgid "Size of a long int: %d\n"
-msgstr "IzmÄ“rs lielajam int: %d\n"
+msgid "Cannot open %s: %s\n"
+msgstr "Nevar atvÄ“rt %s: %s\n"
 
-#: sadf_misc.c:651
+#: count.c:172
 #, c-format
-msgid "List of activities:\n"
-msgstr "DarbÄ«bu saraksts:\n"
+msgid "Cannot handle so many processors!\n"
+msgstr "Nevar vadÄ«t tik daudz procesoru!\n"
 
-#: sadf_misc.c:664
+#: iostat.c:92
 #, c-format
-msgid "\t[Unknown activity format]"
-msgstr "\t[NezinÄms aktivitÄtes formÄts]"
+msgid ""
+"Options are:\n"
+"[ -c ] [ -d ] [ -h ] [ -k | -m ] [ -N ] [ -s ] [ -t ] [ -V ] [ -x ] [ -y ] [ -z ]\n"
+"[ { -f | +f } <directory> ] [ -j { ID | LABEL | PATH | UUID | ... } ]\n"
+"[ --compact ] [ --dec={ 0 | 1 | 2 } ] [ --human ] [ --pretty ] [ -o JSON ]\n"
+"[ [ -H ] -g <group_name> ] [ -p [ <device> [,...] | ALL ] ]\n"
+"[ <device> [...] | ALL ] [ --debuginfo ]\n"
+msgstr ""
+"Opcijas:\n"
+"[ -c ] [ -d ] [ -h ] [ -k | -m ] [ -N ] [ -s ] [ -t ] [ -V ] [ -x ] [ -y ] [ -z ]\n"
+"[ { { -f | +f } <direktorija> ] [ -j { ID | LABEL | PATH | UUID | ... } ] ]\n"
+"[ --compact ] [ --dec={ 0 | 1 | 2 } ] [ --human ] [ --pretty ] [ -o JSON ]\n"
+"[ -H ] -g <grupas_vÄrds> ] [ -p [ <ierÄ«ce> [,...] | ALL ] ]\n"
+"[ <ierÄ«ce> [...] | ALL ] [ --debuginfo ]\n"
 
-#: sadc.c:87
+#: iostat.c:99
 #, c-format
-msgid "Usage: %s [ options ] [ <interval> [ <count> ] ] [ <outfile> ]\n"
-msgstr "LietoÅ¡ana: %s [ opcijas ] [ <intervÄls> [ <skaits> ] ] [ <izejasdatne> ]\n"
+msgid ""
+"Options are:\n"
+"[ -c ] [ -d ] [ -h ] [ -k | -m ] [ -N ] [ -s ] [ -t ] [ -V ] [ -x ] [ -y ] [ -z ]\n"
+"[ { -f | +f } <directory> ] [ -j { ID | LABEL | PATH | UUID | ... } ]\n"
+"[ --compact ] [ --dec={ 0 | 1 | 2 } ] [ --human ] [ --pretty ] [ -o JSON ]\n"
+"[ [ -H ] -g <group_name> ] [ -p [ <device> [,...] | ALL ] ]\n"
+"[ <device> [...] | ALL ]\n"
+msgstr ""
+"Opcijas:\n"
+"[ -c ] [ -d ] [ -h ] [ -k | -m ] [ -N ] [ -s ] [ -t ] [ -V ] [ -x ] [ -y ] [ -z ]\n"
+"[ { { -f | +f } <direktorija> ] [ -j { ID | LABEL | PATH | UUID | ... } ] ]\n"
+"[ --compact ] [ --dec={ 0 | 1 | 2 } ] [ --human ] [ --pretty ] [ -o JSON ]\n"
+"[ -H ] -g <grupas_vÄrds> ] [ -p [ <ierÄ«ce> [,...] | ALL ] ]\n"
+"[ <ierÄ«ce> [...] | ALL ]\n"
+
+#: iostat.c:2179 sa_common.c:2404
+#, c-format
+msgid "Invalid type of persistent device name\n"
+msgstr "NederÄ«gs pastÄvÄ«gÄs ierÄ«ces nosaukuma tips\n"
 
-#: sadc.c:90
+#: mpstat.c:137
 #, c-format
 msgid ""
 "Options are:\n"
-"[ -C <comment> ] [ -F ] [ -L ] [ -V ]\n"
-"[ -S { INT | DISK | IPV6 | POWER | SNMP | XDISK | ALL | XALL } ]\n"
+"[ -A ] [ -H ] [ -n ] [ -T ] [ -u ] [ -V ]\n"
+"[ -I { SUM | CPU | SCPU | ALL } ] [ -N { <node_list> | ALL } ]\n"
+"[ --dec={ 0 | 1 | 2 } ] [ -o JSON ] [ -P { <cpu_list> | ALL } ]\n"
+msgstr ""
+"Opcijas:\n"
+"[ -A ] [ -H ] [ -n ] [ -T ] [ -u ] [ -V ]\n"
+"[ -I { SUM | CPU | SCPU | SCPU | ALL } ] [ -N { <mezglu_saraksts> | ALL } ] ]\n"
+"[ --dec={ 0 | 1 | 2 } ] [ -o JSON ] [ -P { <cpu_saraksts> | ALL } ]\n"
+
+#: mpstat.c:1773 pidstat.c:2312 sar.c:385
+msgid "Average:"
+msgstr "VidÄ“ji:"
+
+#: pidstat.c:91
+#, c-format
+msgid "Usage: %s [ options ] [ <interval> [ <count> ] ] [ -e <program> <args> ]\n"
+msgstr "LietoÅ¡ana: %s [ opcijas ] [ <intervÄls> [ <skaits> ] ] ] [ -e <programma> <argumenti> ]\n"
+
+#: pidstat.c:94
+#, c-format
+msgid ""
+"Options are:\n"
+"[ -d ] [ -H ] [ -h ] [ -I ] [ -l ] [ -R ] [ -r ] [ -s ] [ -t ] [ -U [ <username> ] ]\n"
+"[ -u ] [ -V ] [ -v ] [ -w ] [ -C <command> ] [ -G <process_name> ]\n"
+"[ -p { <pid> [,...] | SELF | ALL } ] [ -T { TASK | CHILD | ALL } ]\n"
+"[ --dec={ 0 | 1 | 2 } ] [ --human ]\n"
+msgstr ""
+"Opcijas:\n"
+"[ -d ] [ -H ] [ -h ] [ -I ] [ -l ] [ -R ] [ -r ] [ -s ] [ -t ] [ -U [ <lietotÄja_vÄrds> ] ] ]\n"
+"[ -u ] [ -V ] [ -v ] [ -w ] [ -C <kommanda> ] [ -G <procesa_vÄrds> ]\n"
+"[ -p { <pid> [,...] | SELF | ALL } ] [ T { TASK | CHILD | ALL } ]\n"
+"[ --dec={ 0 | 1 | 2 } ] [ --human ]\n"
+
+#: pidstat.c:225 sa_common.c:368
+#, c-format
+msgid "Requested activities not available\n"
+msgstr "PieprasÄ«tÄs darbÄ«bas nav pieejamas\n"
+
+#: pr_stats.c:2682 pr_stats.c:2689 pr_stats.c:2795 pr_stats.c:2842
+msgid "Summary:"
+msgstr "Kopsavilkums:"
+
+#: rd_stats.c:427
+#, c-format
+msgid "Cannot read %s\n"
+msgstr "Nevar nolasÄ«t %s\n"
+
+#: sa_common.c:301
+#, c-format
+msgid "File created by sar/sadc from sysstat version %d.%d.%d"
+msgstr "Fails izveidots as sar/sadc no sysstat versijas %d.%d.%d"
+
+#: sa_common.c:334
+#, c-format
+msgid "Invalid system activity file: %s\n"
+msgstr "NederÄ«gs sistÄ“mas darbÄ«bas fails: %s\n"
+
+#: sa_common.c:344
+#, c-format
+msgid "Current sysstat version cannot read the format of this file (%#x)\n"
+msgstr "PaÅ¡reizÄ“jÄ sysstat versija nevar nolasÄ«t Å¡Ä« faila formÄtu (%#x)\n"
+
+#: sa_common.c:348
+#, c-format
+msgid ""
+"Try to convert it to current format. Enter:\n"
+"\n"
 msgstr ""
-"Opcijas ir:\n"
-"[ -C <komentÄrs> ] [ -F ] [ -L ] [ -V ]\n"
-"[ -S { INT | DISK | IPV6 | POWER | SNMP | XDISK | ALL | XALL } ]\n"
+"MÄ“Ä£iniet to konvertÄ“t uz paÅ¡reizÄ“jo formÄtu. Ievadiet:\n"
+"\n"
 
-#: sadc.c:261
+#: sa_common.c:351
 #, c-format
-msgid "Cannot write data to system activity file: %s\n"
-msgstr "Nevar ierakstÄ«t datus sistÄ“mas aktivitÄtes datnÄ“: %s\n"
+msgid "You should then be able to read the new file created (%s.new)\n"
+msgstr "PÄ“c tam jums vajadzÄ“tu bÅ«t iespÄ“jai nolasÄ«t izveidoto jauno failu (%s.new)\n"
 
-#: sadc.c:565
+#: sa_common.c:1435
 #, c-format
-msgid "Cannot write system activity file header: %s\n"
-msgstr "Nevar ierakstÄ«t sistÄ“mas aktivitÄtes galveni datnÄ“: %s\n"
+msgid "Error while reading system activity file: %s\n"
+msgstr "KÄ¼Å«da, lasot sistÄ“mas darbÄ«bas failu: %s\n"
 
-#: sadc.c:766 sadc.c:775 sadc.c:843 ioconf.c:489 rd_stats.c:69
-#: sa_common.c:1114 count.c:118
+#: sa_common.c:1445
 #, c-format
-msgid "Cannot open %s: %s\n"
-msgstr "Nevar atvÄ“rt %s: %s\n"
+msgid "End of system activity file unexpected\n"
+msgstr "SistÄ“mas darbÄ«bas faila beigas negaidÄ«tas\n"
 
-#: sadc.c:1015
+#: sa_common.c:1859
 #, c-format
-msgid "Cannot append data to that file (%s)\n"
-msgstr "Nevar pievienot datus sistÄ“mas aktivitÄtes datnÄ“: %s\n"
+msgid "Please check if data collecting is enabled\n"
+msgstr "LÅ«dzu, pÄrbaudiet, vai ir iespÄ“jota datu vÄkÅ¡ana\n"
 
-#: common.c:62
+#: sa_common.c:2194
 #, c-format
-msgid "sysstat version %s\n"
-msgstr "sysstat versija %s\n"
+msgid "Requested activities not available in file %s\n"
+msgstr "PieprasÄ«tÄs darbÄ«bas nav pieejamas failÄ %s\n"
 
-#: cifsiostat.c:71 mpstat.c:90 sar.c:94 nfsiostat-sysstat.c:70 pidstat.c:83
-#: iostat.c:86
+#: sa_conv.c:99
 #, c-format
-msgid "Usage: %s [ options ] [ <interval> [ <count> ] ]\n"
-msgstr "LietoÅ¡ana: %s [ opcijas ] [ <intervÄls> [ <skaits> ]]\n"
+msgid "Cannot convert the format of this file\n"
+msgstr "Nevar konvertÄ“t Å¡Ä« faila formÄtu\n"
 
-#: cifsiostat.c:75 nfsiostat-sysstat.c:74
+#: sa_conv.c:385
 #, c-format
 msgid ""
-"Options are:\n"
-"[ -h ] [ -k | -m ] [ -t ] [ -V ] [ --debuginfo ]\n"
+"\n"
+"CPU activity not found in file. Aborting...\n"
 msgstr ""
-"Opcijas ir:\n"
-"[ -h ] [ -k | -m ] [ -t ] [ -V ] [ --debuginfo ]\n"
+"\n"
+"Procesora darbÄ«ba nav atrodama failÄ. PÄrtrauc...\n"
 
-#: cifsiostat.c:78 nfsiostat-sysstat.c:77
+#: sa_conv.c:408
 #, c-format
 msgid ""
-"Options are:\n"
-"[ -h ] [ -k | -m ] [ -t ] [ -V ]\n"
+"\n"
+"Invalid data found. Aborting...\n"
 msgstr ""
-"Opcijas ir:\n"
-"[ -h ] [ -k | -m ] [ -t ] [ -V ]\n"
+"\n"
+"Atrasti nederÄ«gi dati. PÄrtraucam...\n"
 
-#: sadf.c:86
+#: sa_conv.c:1931
 #, c-format
-msgid "Usage: %s [ options ] [ <interval> [ <count> ] ] [ <datafile> ]\n"
-msgstr "LietoÅ¡ana: %s [ opcijas ] [ <intervÄls> [ <skaits> ] ] [ <datudatne> ]\n"
+msgid "Statistics:\n"
+msgstr "Statistika:\n"
 
-#: sadf.c:89
+#: sa_conv.c:2032
+#, c-format
+msgid ""
+"\n"
+"File format already up-to-date\n"
+msgstr ""
+"\n"
+"Failu formÄts jau ir atjauninÄts\n"
+
+#: sa_conv.c:2044
+#, c-format
+msgid "HZ: Using current value: %lu\n"
+msgstr "HZ: Izmanto paÅ¡reizÄ“jo vÄ“rtÄ«bu: %lu\n"
+
+#: sa_conv.c:2075
+#, c-format
+msgid "File successfully converted to sysstat format version %s\n"
+msgstr "Fails veiksmÄ«gi konvertÄ“ts uz sysstat formÄta versiju %s\n"
+
+#: sadc.c:98
+#, c-format
+msgid "Usage: %s [ options ] [ <interval> [ <count> ] ] [ <outfile> ]\n"
+msgstr "LietoÅ¡ana: %s [ opcijas ] [ <intervÄls> [ <skaits> ] ] ] [ <izvada_fails> ]\n"
+
+#: sadc.c:101
 #, c-format
 msgid ""
 "Options are:\n"
-"[ -C ] [ -d | -j | -p | -x ] [ -H ] [ -h ] [ -T | -t | -U ] [ -V ]\n"
-"[ -P { <cpu> [,...] | ALL } ] [ -s [ <hh:mm:ss> ] ] [ -e [ <hh:mm:ss> ] ]\n"
-"[ -- <sar_options> ]\n"
+"[ -C <comment> ] [ -D ] [ -F ] [ -f ] [ -L ] [ -V ]\n"
+"[ -S { INT | DISK | IPV6 | POWER | SNMP | XDISK | ALL | XALL } ]\n"
 msgstr ""
-"Opcijas ir:\n"
-"[ -C ] [ -d | -j | -p | -x ] [ -H ] [ -h ] [ -T | -t | -U ] [ -V ]\n"
-"[ -P { <cpu> [,...] | ALL } ] [ -s [ <hh:mm:ss> ] ] [ -e [ <hh:mm:ss> ] ]\n"
-"[ -- <sar_optcijas> ]\n"
+"Opcijas:\n"
+"[ -C <komentÄrs> ] [ -D ] [ -F ] [ -f ] [ -L ] [ -V ]\n"
+"[ -S { INT | DISK | IPV6 | POWER | SNMP | XDISK | ALL | XALL } ] ]\n"
+
+#: sadc.c:272
+#, c-format
+msgid "Cannot write data to system activity file: %s\n"
+msgstr "Nav iespÄ“jams ierakstÄ«t datus sistÄ“mas darbÄ«bas failÄ: %s\n"
 
-#: mpstat.c:93
+#: sadc.c:1040
+#, c-format
+msgid "Cannot append data to that file (%s)\n"
+msgstr "Failam nevar pievienot datus (%s)\n"
+
+#: sadf.c:119
+#, c-format
+msgid "Usage: %s [ options ] [ <interval> [ <count> ] ] [ <datafile> | -[0-9]+ ]\n"
+msgstr "LietoÅ¡ana: %s [ opcijas ] [ <intervÄls> [ <skaits> ] ] ] [ <datu_fails> | -[0-9]+ ]\n"
+
+#: sadf.c:122
 #, c-format
 msgid ""
 "Options are:\n"
-"[ -A ] [ -u ] [ -V ] [ -I { SUM | CPU | SCPU | ALL } ]\n"
-"[ -P { <cpu> [,...] | ON | ALL } ]\n"
+"[ -C ] [ -c | -d | -g | -j | -l | -p | -r | -x ] [ -H ] [ -h ] [ -T | -t | -U ] [ -V ]\n"
+"[ -O <opts> [,...] ] [ -P { <cpu> [,...] | ALL } ]\n"
+"[ --dev=<dev_list> ] [ --fs=<fs_list> ] [ --iface=<iface_list> ] [ --int=<int_list> ]\n"
+"[ -s [ <time_start> ] ] [ -e [ <time_end> ] ]\n"
+"[ -- <sar_options> ]\n"
 msgstr ""
-"Opcijas ir:\n"
-"[ -A ] [ -u ] [ -V ] [ -I { SUM | CPU | SCPU | ALL } ]\n"
-"[ -P { <cpu> [,...] | ON | ALL } ]\n"
+"Opcijas:\n"
+"[ -C ] [ -c | -d | -g | -j | -l | -p | -r | -x ] [ -H ] [ -h ] [ -T | -t | -U ] [ -V ]\n"
+"[ -O <opcijas> [,...] ] ] [ -P { <cpu> [,...] | ALL } ]\n"
+"[ --dev=<ierÄ«Äu_saraksts> ] [ --fs=<fs_saraksts> ] [ --iface=<iface_saraksts> ] [ --int=<int_saraksts> ]\n"
+"[ -s [ <laika_sÄkums> ] ] ] [ -e [ <laika_beigas> ] ]\n"
+"[ -- <sar_opcijas> ]\n"
 
-#: mpstat.c:598 sar.c:402 pidstat.c:2130
-msgid "Average:"
-msgstr "VidÄ“ji:"
+#: sadf.c:1896
+#, c-format
+msgid "PCP support not compiled in\n"
+msgstr "PCP atbalsts nav kompilÄ“ts\n"
+
+#: sadf_misc.c:1252
+#, c-format
+msgid "System activity data file: %s (%#x)\n"
+msgstr "SistÄ“mas darbÄ«bas datu fails: %s (%#x)\n"
+
+#: sadf_misc.c:1261
+#, c-format
+msgid "Genuine sa datafile: %s (%x)\n"
+msgstr "Äªsts sa datu fails: %s (%x)\n"
+
+#: sadf_misc.c:1262
+msgid "no"
+msgstr "nÄ“"
+
+#: sadf_misc.c:1262
+msgid "yes"
+msgstr "jÄ"
+
+#: sadf_misc.c:1265
+#, c-format
+msgid "Host: "
+msgstr "Resursdators: "
+
+#: sadf_misc.c:1275
+#, c-format
+msgid "File date: %s\n"
+msgstr "Faila datums: %s\n"
+
+#: sadf_misc.c:1278
+#, c-format
+msgid "File time: "
+msgstr "Faila laiks: "
+
+#: sadf_misc.c:1283
+#, c-format
+msgid "Timezone: %s\n"
+msgstr "Laika josla: %s\n"
 
-#: mpstat.c:967
+#: sadf_misc.c:1286
 #, c-format
-msgid "Not that many processors!\n"
-msgstr "Ne tik daudz procesoru!\n"
+msgid "File composition: (%d,%d,%d),(%d,%d,%d),(%d,%d,%d)\n"
+msgstr "Failu sastÄvs: (%d,%d,%d),(%d,%d,%d),(%d,%d,%d)\n"
 
-#: sar.c:109
+#: sadf_misc.c:1291
+#, c-format
+msgid "Size of a long int: %d\n"
+msgstr "GarÄ int izmÄ“rs: %d\n"
+
+#: sadf_misc.c:1293
+#, c-format
+msgid "Number of activities in file: %u\n"
+msgstr "DarbÄ«bu skaits failÄ: %u\n"
+
+#: sadf_misc.c:1295
+#, c-format
+msgid "Extra structures available: %c\n"
+msgstr "PieejamÄs papildu struktÅ«ras: %c\n"
+
+#: sadf_misc.c:1298
+#, c-format
+msgid "List of activities:\n"
+msgstr "DarbÄ«bu saraksts:\n"
+
+#: sadf_misc.c:1309
+msgid "Unknown activity"
+msgstr "NezinÄma aktivitÄte"
+
+#: sadf_misc.c:1317
+#, c-format
+msgid " \t[Unknown format]"
+msgstr " \t[NezinÄms formÄts]"
+
+#: sar.c:123
 #, c-format
 msgid ""
 "Options are:\n"
-"[ -A ] [ -B ] [ -b ] [ -C ] [ -d ] [ -F ] [ -H ] [ -h ] [ -p ] [ -q ] [ -R ]\n"
-"[ -r ] [ -S ] [ -t ] [ -u [ ALL ] ] [ -V ] [ -v ] [ -W ] [ -w ] [ -y ]\n"
-"[ -I { <int> [,...] | SUM | ALL | XALL } ] [ -P { <cpu> [,...] | ALL } ]\n"
+"[ -A ] [ -B ] [ -b ] [ -C ] [ -D ] [ -d ] [ -F [ MOUNT ] ] [ -H ] [ -h ]\n"
+"[ -p ] [ -r [ ALL ] ] [ -S ] [ -t ] [ -u [ ALL ] ] [ -V ]\n"
+"[ -v ] [ -W ] [ -w ] [ -y ] [ -z ]\n"
+"[ -I [ SUM | ALL ] ] [ -P { <cpu_list> | ALL } ]\n"
 "[ -m { <keyword> [,...] | ALL } ] [ -n { <keyword> [,...] | ALL } ]\n"
-"[ -j { ID | LABEL | PATH | UUID | ... } ]\n"
+"[ -q [ <keyword> [,...] | ALL ] ]\n"
+"[ --dev=<dev_list> ] [ --fs=<fs_list> ] [ --iface=<iface_list> ] [ --int=<int_list> ]\n"
+"[ --dec={ 0 | 1 | 2 } ] [ --help ] [ --human ] [ --pretty ] [ --sadc ]\n"
+"[ -j { SID | ID | LABEL | PATH | UUID | ... } ]\n"
 "[ -f [ <filename> ] | -o [ <filename> ] | -[0-9]+ ]\n"
-"[ -i <interval> ] [ -s [ <hh:mm:ss> ] ] [ -e [ <hh:mm:ss> ] ]\n"
+"[ -i <interval> ] [ -s [ <start_time> ] ] [ -e [ <end_time> ] ]\n"
 msgstr ""
-"Opcijas ir:\n"
-"[ -A ] [ -B ] [ -b ] [ -C ] [ -d ] [ -F ] [ -H ] [ -h ] [ -p ] [ -q ] [ -R ]\n"
-"[ -r ] [ -S ] [ -t ] [ -u [ ALL ] ] [ -V ] [ -v ] [ -W ] [ -w ] [ -y ]\n"
-"[ -I { <int> [,...] | SUM | ALL | XALL } ] [ -P { <cpu> [,...] | ALL } ]\n"
+"Opcijas:\n"
+"[ -A ] [ -B ] [ -b ] [ -C ] [ -D ] [ -d ] [ -F [ MOUNT ] ] ] [ -H ] [ -h ]\n"
+"[ -p ] [ -r [ ALL ] ] ] [ -S ] [ -t ] [ -u [ ALL ] ] [ -V ]\n"
+"[ -v ] [ -W ] [ -w ] [ -y ] [ -z ]\n"
+"[ -I [ SUM | ALL ] ] ] [ -P { <cpu_saraksts> | ALL } ] ]\n"
 "[ -m { <atslÄ“gvÄrds> [,...] | ALL } ] [ -n { <atslÄ“gvÄrds> [,...] | ALL } ]\n"
-"[ -j { ID | LABEL | PATH | UUID | ... } ]\n"
-"[ -f [ <datnes_nosaukums> ] | -o [ <datnes_nosaukums> ] | -[0-9]+ ]\n"
-"[ -i <intervÄls> ] [ -s [ <hh:mm:ss> ] ] [ -e [ <hh:mm:ss> ] ]\n"
+"[ -q [ <atslÄ“gvÄrds> [,...] | ALL ] ]\n"
+"[ --dev=<ierÄ«Äu_saraksts> ] [ --fs=<fs_saraksts> ] [ --iface=<iface_saraksts> ] [ --int=<int_saraksts> ] ]\n"
+"[ --dec={ 0 | 1 | 2 } ] [ --help ] [ --human ] [ --pretty ] [ --sadc ]\n"
+"[ -j { SID | ID | LABEL | PATH | UUID | ... } ] ]\n"
+"[ -f [ <faila_nosaukums> ] | -o [ <faila_nosaukums> ] | -[0-9]+ ]\n"
+"[ -i <intervÄls> ] [ -s [ <sÄkuma_laiks> ] ] ] [ -e [ <beigu_laiks> ] ]\n"
+
+#: sar.c:150
+#, c-format
+msgid "Main options and reports (report name between square brackets):\n"
+msgstr "GalvenÄs opcijas un ziÅ†ojumi (ziÅ†ojuma nosaukums kvadrÄtiekavÄs):\n"
 
-#: sar.c:131
+#: sar.c:151
 #, c-format
-msgid "Main options and reports:\n"
-msgstr "GalvenÄs opcijas un ziÅ†ojumi:\n"
+msgid "\t-B\tPaging statistics [A_PAGE]\n"
+msgstr "\t-B\tLapoÅ¡anas statistika [A_PAGE]\n"
 
-#: sar.c:132
+#: sar.c:152
 #, c-format
-msgid "\t-B\tPaging statistics\n"
-msgstr "\t-B\tLapoÅ¡anas statistika\n"
+msgid "\t-b\tI/O and transfer rate statistics [A_IO]\n"
+msgstr "\t-b\tI/O un pÄrsÅ«tÄ«Å¡anas Ätruma statistika [A_IO]\n"
 
-#: sar.c:133
+#: sar.c:153
 #, c-format
-msgid "\t-b\tI/O and transfer rate statistics\n"
-msgstr "\t-b\tI/O un pÄrraides Ätrums statistika\n"
+msgid "\t-d\tBlock devices statistics [A_DISK]\n"
+msgstr "\t-d\tBloka ierÄ«Äu statistika [A_DISK]\n"
 
-#: sar.c:134
+#: sar.c:154
 #, c-format
-msgid "\t-d\tBlock devices statistics\n"
-msgstr "\t-d\tBloku ierÄ«Äu statistika\n"
+msgid "\t-F [ MOUNT ]\n"
+msgstr "\t-F [ MOUNT ]\n"
 
-#: sar.c:135
+#: sar.c:155
 #, c-format
-msgid "\t-F\tFilesystems statistics\n"
-msgstr "\t-R\tDatÅ†u sistÄ“mas statistika\n"
+msgid "\t\tFilesystems statistics [A_FS]\n"
+msgstr "\t\tFaila sistÄ“mu statistika [A_FS]\n"
 
-#: sar.c:136
+#: sar.c:156
 #, c-format
-msgid "\t-H\tHugepages utilization statistics\n"
-msgstr "\t-H\tHugepages izmantoÅ¡anas statistika\n"
+msgid "\t-H\tHugepages utilization statistics [A_HUGE]\n"
+msgstr "\t-H\tLielo lapu izmantoÅ¡anas statistika [A_HUGE]\n"
 
-#: sar.c:137
+#: sar.c:157
 #, c-format
 msgid ""
-"\t-I { <int> | SUM | ALL | XALL }\n"
-"\t\tInterrupts statistics\n"
+"\t-I [ SUM | ALL ]\n"
+"\t\tInterrupts statistics [A_IRQ]\n"
 msgstr ""
-"\t-I { <int> | SUM | ALL | XALL }\n"
-"\t\tPÄrtraukumu statistika\n"
+"\t-I [ SUMMA | ALL ]\n"
+"\t\tPÄrtraukumu statistika [A_IRQ]\n"
 
-#: sar.c:139
+#: sar.c:159
 #, c-format
 msgid ""
 "\t-m { <keyword> [,...] | ALL }\n"
-"\t\tPower management statistics\n"
+"\t\tPower management statistics [A_PWR_...]\n"
 "\t\tKeywords are:\n"
+"\t\tBAT\tBatteries capacity\n"
 "\t\tCPU\tCPU instantaneous clock frequency\n"
 "\t\tFAN\tFans speed\n"
 "\t\tFREQ\tCPU average clock frequency\n"
@@ -234,20 +463,21 @@ msgid ""
 "\t\tUSB\tUSB devices plugged into the system\n"
 msgstr ""
 "\t-m { <atslÄ“gvÄrds> [,...] | ALL }\n"
-"\t\tEnerÄ£ijas pÄrvaldÄ«bas statistika\n"
-"\t\tAtslÄ“gvÄrdi ir:\n"
-"\t\tCPU\tProcesora takts frekvence uz pieprasÄ«juma brÄ«di\n"
-"\t\tFAN\tVentilatora Ätrums\n"
-"\t\tFREQ\tProcesora vidÄ“jÄ takts frekvence\n"
-"\t\tIN\tSprieguma ievade\n"
-"\t\tTEMP\tIerÄ«ces temperatÅ«ra\n"
-"\t\tUSB\tPievienotÄs USB ierÄ«ces\n"
+"\t\tEnerÄ£ijas pÄrvaldÄ«bas statistika [A_PWR_...]\n"
+"\t\tAtslÄ“gas vÄrdi:\n"
+"\t\tBAT\tBateriju ietilpÄ«ba\n"
+"\t\tCPU\tCPU momentÄnÄ takts frekvence\n"
+"\t\tFAN\tVentilatoru Ätrums\n"
+"\t\tFREQ\tCPU vidÄ“jÄ takts frekvence\n"
+"\t\tIN\tSprieguma ievads\n"
+"\t\tTEMP\tIerÄ«Äu temperatÅ«ra\n"
+"\t\tUSB\tSistÄ“mai pievienotÄs USB ierÄ«ces\n"
 
-#: sar.c:148
+#: sar.c:169
 #, c-format
 msgid ""
 "\t-n { <keyword> [,...] | ALL }\n"
-"\t\tNetwork statistics\n"
+"\t\tNetwork statistics [A_NET_...]\n"
 "\t\tKeywords are:\n"
 "\t\tDEV\tNetwork interfaces\n"
 "\t\tEDEV\tNetwork interfaces (errors)\n"
@@ -267,225 +497,145 @@ msgid ""
 "\t\tICMP6\tICMP traffic\t(v6)\n"
 "\t\tEICMP6\tICMP traffic\t(v6) (errors)\n"
 "\t\tUDP6\tUDP traffic\t(v6)\n"
+"\t\tFC\tFibre channel HBAs\n"
+"\t\tSOFT\tSoftware-based network processing\n"
 msgstr ""
-"\t-n { <atslÄ“gvÄrds> [,...] | ALL }\n"
-"\t\tTÄ«kla statistika\n"
-"\t\tAtslÄ“gvÄrdi ir:\n"
+"\t-n { <atslÄ“gasvÄrds> [,...] | ALL }\n"
+"\t\tTÄ«kla statistika [A_NET_...]\n"
+"\t\tAtslÄ“gas vÄrdi:\n"
 "\t\tDEV\tTÄ«kla saskarnes\n"
 "\t\tEDEV\tTÄ«kla saskarnes (kÄ¼Å«das)\n"
-"\t\tNFS\tNFS klienti\n"
-"\t\tNFSD\tNFS serveri\n"
-"\t\tSOCK\tSoketi\t(v4)\n"
-"\t\tIP\tIP plÅ«sma\t(v4)\n"
-"\t\tEIP\tIP plÅ«sma\t(v4) (kÄ¼Å«das)\n"
-"\t\tICMP\tICMP plÅ«sma\t(v4)\n"
-"\t\tEICMP\tICMP plÅ«sma\t(v4) (kÄ¼Å«das)\n"
-"\t\tTCP\tTCP plÅ«sma\t(v4)\n"
-"\t\tETCP\tTCP plÅ«sma\t(v4) (kÄ¼Å«das)\n"
-"\t\tUDP\tUDP plÅ«sma\t(v4)\n"
-"\t\tSOCK6\tSoketi\t(v6)\n"
-"\t\tIP6\tIP plÅ«sma\t(v6)\n"
-"\t\tEIP6\tIP plÅ«sma\t(v6) (kÄ¼Å«das)\n"
-"\t\tICMP6\tICMP plÅ«sma\t(v6)\n"
-"\t\tEICMP6\tICMP plÅ«sam\t(v6) (kÄ¼Å«das)\n"
-"\t\tUDP6\tUDP plÅ«smas\t(v6)\n"
-
-#: sar.c:169
-#, c-format
-msgid "\t-q\tQueue length and load average statistics\n"
-msgstr "\t-q\tRindas garums un vidÄ“jÄs noslodzes statistika\n"
+"\t\tNFS\tNFS klients\n"
+"\t\tNFSD\tNFS serveris\n"
+"\t\tSOCK\tLigzdas (v4)\n"
+"\t\tIP\tIP datplÅ«sma (v4)\n"
+"\t\tEIP\tIP datu plÅ«sma (v4) (kÄ¼Å«das)\n"
+"\t\tICMP\tICMP datplÅ«sma (v4)\n"
+"\t\tEICMP\tICMP datplÅ«sma (v4) (kÄ¼Å«das)\n"
+"\t\tTCP\tTCP datplÅ«sma (v4)\n"
+"\t\tETCP\tTCP datplÅ«sma (v4) (kÄ¼Å«das)\n"
+"\t\tUDP\tUDP datplÅ«sma (v4)\n"
+"\t\tSOCK6\tLigzdas (v6)\n"
+"\t\tIP6\tIP datplÅ«sma (v6)\n"
+"\t\tEIP6\tIP datplÅ«sma (v6) (kÄ¼Å«das)\n"
+"\t\tICMP6\tICMP datplÅ«sma (v6)\n"
+"\t\tEICMP6\tICMP datplÅ«sma (v6) (kÄ¼Å«das)\n"
+"\t\tUDP6\tUDP datplÅ«sma (v6)\n"
+"\t\tFC\tÅ Ä·iedru kanÄlu HBA\n"
+"\t\tSOFT\tUz programmatÅ«ru balstÄ«ta tÄ«kla apstrÄde\n"
 
-#: sar.c:170
+#: sar.c:192
 #, c-format
-msgid "\t-R\tMemory statistics\n"
-msgstr "\t-R\tAtmiÅ†as statistika\n"
+msgid ""
+"\t-q [ <keyword> [,...] | PSI | ALL ]\n"
+"\t\tSystem load and pressure-stall statistics\n"
+"\t\tKeywords are:\n"
+"\t\tLOAD\tQueue length and load average statistics [A_QUEUE]\n"
+"\t\tCPU\tPressure-stall CPU statistics [A_PSI_CPU]\n"
+"\t\tIO\tPressure-stall I/O statistics [A_PSI_IO]\n"
+"\t\tMEM\tPressure-stall memory statistics [A_PSI_MEM]\n"
+msgstr ""
+"\t-q [ <atslÄ“gasvÄrds> [,...] | PSI | ALL ]\n"
+"\t\tSistÄ“mas slodzes un spiediena krituma statistika\n"
+"\t\tAtslÄ“gas vÄrdi:\n"
+"\t\tLOAD\tRindas garuma un vidÄ“jÄs slodzes statistika [A_QUEUE]\n"
+"\t\tCPU\tSpiediena krituma procesora statistika [A_PSI_CPU]\n"
+"\t\tIO\tSpiediena krituma I/O statistika [A_PSI_IO]\n"
+"\t\tMEM\tSpiediena krituma atmiÅ†as statistika [A_PSI_MEM]\n"
 
-#: sar.c:171
+#: sar.c:199
 #, c-format
-msgid "\t-r\tMemory utilization statistics\n"
-msgstr "\t-r\tAtmiÅ†as izmantoÅ¡anas statistika\n"
+msgid ""
+"\t-r [ ALL ]\n"
+"\t\tMemory utilization statistics [A_MEMORY]\n"
+msgstr ""
+"\t-r [ ALL ]\n"
+"\t\tAtmiÅ†as izmantoÅ¡anas statistika [A_MEMORY]\n"
 
-#: sar.c:172
+#: sar.c:201
 #, c-format
-msgid "\t-S\tSwap space utilization statistics\n"
-msgstr "\t-S\tMaiÅ†vietas izmantoÅ¡anas statistika\n"
+msgid "\t-S\tSwap space utilization statistics [A_MEMORY]\n"
+msgstr "\t-S\tApmaiÅ†as vietas izmantoÅ¡anas statistika [A_MEMORY]\n"
 
-#: sar.c:173
+#: sar.c:202
 #, c-format
 msgid ""
 "\t-u [ ALL ]\n"
-"\t\tCPU utilization statistics\n"
+"\t\tCPU utilization statistics [A_CPU]\n"
 msgstr ""
 "\t-u [ ALL ]\n"
-"\t\tCPU izmantoÅ¡anas statistika\n"
+"\t\tProcesora izmantoÅ¡anas statistika [A_CPU]\n"
 
-#: sar.c:175
+#: sar.c:204
 #, c-format
-msgid "\t-v\tKernel tables statistics\n"
-msgstr "\t-v\tKodola tabulu statistika\n"
+msgid "\t-v\tKernel tables statistics [A_KTABLES]\n"
+msgstr "\t-v\tKodola tabulu statistika [A_KTABLES]\n"
 
-#: sar.c:176
+#: sar.c:205
 #, c-format
-msgid "\t-W\tSwapping statistics\n"
-msgstr "\t-W\tMaiÅ†vietas statistika\n"
+msgid "\t-W\tSwapping statistics [A_SWAP]\n"
+msgstr "\t-W\tApmaiÅ†as statistika [A_SWAP]\n"
 
-#: sar.c:177
+#: sar.c:206
 #, c-format
-msgid "\t-w\tTask creation and system switching statistics\n"
-msgstr "\t-w\tUzdevumu izveidoÅ¡anas un sistÄ“mas pÄrslÄ“gÅ¡anas statistika\n"
+msgid "\t-w\tTask creation and system switching statistics [A_PCSW]\n"
+msgstr "\t-w\tUzdevumu izveides un sistÄ“mas pÄrslÄ“gÅ¡anas statistika [A_PCSW]\n"
 
-#: sar.c:178
+#: sar.c:207
 #, c-format
-msgid "\t-y\tTTY devices statistics\n"
-msgstr "\t-y\tTTY ierÄ«Äu statistika\n"
+msgid "\t-y\tTTY devices statistics [A_SERIAL]\n"
+msgstr "\t-y\tTTY ierÄ«Äu statistika [A_SERIAL]\n"
 
-#: sar.c:236
+#: sar.c:221
 #, c-format
-msgid "End of data collecting unexpected\n"
-msgstr "NegaidÄ«tas datu vÄkÅ¡anas beigas\n"
+msgid "Data collector will be sought in PATH\n"
+msgstr "IekÅ¡ PATH tiks meklÄ“ts datu vÄcÄ“js\n"
 
-#: sar.c:836
+#: sar.c:224
 #, c-format
-msgid "Invalid data format\n"
-msgstr "NederÄ«gs datu formÄts\n"
+msgid "Data collector found: %s\n"
+msgstr "Atrasts datu vÄcÄ“js: %s\n"
 
-#: sar.c:840
+#: sar.c:289
 #, c-format
-msgid "Using a wrong data collector from a different sysstat version\n"
-msgstr "Tiek izmantots nepareizs datu vÄcÄ“js, no iepriekÅ¡Ä“jÄs sysstat versijas\n"
+msgid "End of data collecting unexpected\n"
+msgstr "NegaidÄ«tas datu vÄkÅ¡anas beigas\n"
 
-#: sar.c:869
+#: sar.c:294
 #, c-format
 msgid "Inconsistent input data\n"
-msgstr "NesaderÄ«ga datu ievade\n"
+msgstr "NesakritÄ«ga datu ievade\n"
 
-#: sar.c:1055 pidstat.c:214
+#: sar.c:895
 #, c-format
-msgid "Requested activities not available\n"
-msgstr "PieprasÄ«tÄs darbÄ«bas nav pieejamas\n"
+msgid "Using a wrong data collector from a different sysstat version\n"
+msgstr "Nepareiza datu savÄcÄ“ja izmantoÅ¡ana no citas sysstat versijas\n"
 
-#: sar.c:1325
+#: sar.c:1553
 #, c-format
 msgid "-f and -o options are mutually exclusive\n"
 msgstr "-f un -o opcijas ir savstarpÄ“ji izslÄ“dzoÅ¡as\n"
 
-#: sar.c:1331
+#: sar.c:1563
 #, c-format
 msgid "Not reading from a system activity file (use -f option)\n"
-msgstr "Netiek lasÄ«ts no sistÄ“mas aktivitÄtes datnes (izmantojiet -f opciju)\n"
+msgstr "Nav nolasÄ«ts no sistÄ“mas darbÄ«bas faila (izmantojiet opciju -f)\n"
 
-#: sar.c:1463
+#: sar.c:1712
 #, c-format
 msgid "Cannot find the data collector (%s)\n"
-msgstr "Nevar atrast datu vÄcÄ“ju (%s)\n"
-
-#: sa_common.c:919
-#, c-format
-msgid "Error while reading system activity file: %s\n"
-msgstr "KÄ¼Å«da, lasot sistÄ“mas aktivitÄtes datni: %s\n"
-
-#: sa_common.c:929
-#, c-format
-msgid "End of system activity file unexpected\n"
-msgstr "NegaidÄ«tas beigas sistÄ“mas aktivitÄtes datnei\n"
-
-#: sa_common.c:948
-#, c-format
-msgid "File created by sar/sadc from sysstat version %d.%d.%d"
-msgstr "Datne izveidota, izmantojot sar/sadc no sysstat versijas %d.%d.%d"
-
-#: sa_common.c:979
-#, c-format
-msgid "Invalid system activity file: %s\n"
-msgstr "NederÄ«ga sistÄ“mas aktivitÄtes datne: %s\n"
-
-#: sa_common.c:986
-#, c-format
-msgid "Current sysstat version can no longer read the format of this file (%#x)\n"
-msgstr "PaÅ¡reizÄ“jÄ sysstat versija vairs nevar lasÄ«t formÄtu Å¡ai datnei (%#x)\n"
-
-#: sa_common.c:1117
-#, c-format
-msgid "Please check if data collecting is enabled\n"
-msgstr "LÅ«dzu, pÄrbaudiet, vai ir ieslÄ“gta datu ievÄkÅ¡ana\n"
+msgstr "Nevar atrast datu savÄcÄ“ju (%s)\n"
 
-#: sa_common.c:1239
-#, c-format
-msgid "Requested activities not available in file %s\n"
-msgstr "PieprasÄ«tÄs darbÄ«bas nav pieejamas datnÄ“ %s\n"
-
-#: sa_common.c:1409 iostat.c:1385
-#, c-format
-msgid "Invalid type of persistent device name\n"
-msgstr "NederÄ«gs pastÄvÄ«gas ierÄ«ces nosaukuma tips\n"
-
-#: pidstat.c:86
+#: tapestat.c:106
 #, c-format
 msgid ""
 "Options are:\n"
-"[ -d ] [ -h ] [ -I ] [ -l ] [ -r ] [ -s ] [ -t ] [ -U [ <username> ] ] [ -u ]\n"
-"[ -V ] [ -v ] [ -w ] [ -C <command> ] [ -p { <pid> [,...] | SELF | ALL } ]\n"
-"[ -T { TASK | CHILD | ALL } ]\n"
-msgstr ""
-"Opcijas ir:\n"
-"[ -d ] [ -h ] [ -I ] [ -l ] [ -r ] [ -s ] [ -t ] [ -U [ <lietotÄjvÄrds> ] ] [ -u ]\n"
-"[ -V ] [ -v ] [ -w ] [ -C <komanda> ] [ -p { <pid> [,...] | SELF | ALL } ]\n"
-"[ -T { TASK | CHILD | ALL } ]\n"
-
-#: iostat.c:89
-#, c-format
-msgid ""
-"Options are:\n"
-"[ -c ] [ -d ] [ -h ] [ -k | -m ] [ -N ] [ -t ] [ -V ] [ -x ] [ -y ] [ -z ]\n"
-"[ -j { ID | LABEL | PATH | UUID | ... } ]\n"
-"[ [ -T ] -g <group_name> ] [ -p [ <device> [,...] | ALL ] ]\n"
-"[ <device> [...] | ALL ] [ --debuginfo ]\n"
+"[ --human ] [ -k | -m ] [ -t ] [ -V ] [ -y ] [ -z ]\n"
 msgstr ""
-"Opcijas are:\n"
-"[ -c ] [ -d ] [ -h ] [ -k | -m ] [ -N ] [ -t ] [ -V ] [ -x ] [ -y ] [ -z ]\n"
-"[ -j { ID | LABEL | PATH | UUID | ... } ]\n"
-"[ [ -T ] -g <grupas_nosaukums> ] [ -p [ <ierÄ«ce> [,...] | ALL ] ]\n"
-"[ <ierÄ«ce> [...] | ALL ] [ --debuginfo ]\n"
+"Opcijas:\n"
+"[ --human ] [ -k | -m ] [ -t ] [ -V ] [ -y ] [ -z ]\n"
 
-#: iostat.c:95
+#: tapestat.c:273
 #, c-format
-msgid ""
-"Options are:\n"
-"[ -c ] [ -d ] [ -h ] [ -k | -m ] [ -N ] [ -t ] [ -V ] [ -x ] [ -y ] [ -z ]\n"
-"[ -j { ID | LABEL | PATH | UUID | ... } ]\n"
-"[ [ -T ] -g <group_name> ] [ -p [ <device> [,...] | ALL ] ]\n"
-"[ <device> [...] | ALL ]\n"
-msgstr ""
-"Opcijas are:\n"
-"[ -c ] [ -d ] [ -h ] [ -k | -m ] [ -N ] [ -t ] [ -V ] [ -x ] [ -y ] [ -z ]\n"
-"[ -j { ID | LABEL | PATH | UUID | ... } ]\n"
-"[ [ -T ] -g <grupas_nosaukums> ] [ -p [ <ierÄ«Äe> [,...] | ALL ] ]\n"
-"[ <ierÄ«ce> [...] | ALL ]\n"
-
-#: iostat.c:328
-#, c-format
-msgid "Cannot find disk data\n"
-msgstr "Nevar atrast diska datus\n"
-
-#: count.c:168
-#, c-format
-msgid "Cannot handle so many processors!\n"
-msgstr "Nevar vadÄ«t tik daudz procesoru!\n"
-
-#: pr_stats.c:2355 pr_stats.c:2368 pr_stats.c:2468 pr_stats.c:2480
-msgid "Summary"
-msgstr "Kopsavilkums"
-
-#: pr_stats.c:2406
-msgid "Other devices not listed here"
-msgstr "Citas ierÄ«ces, kas nav Å¡ai sarakstÄ"
-
-#~ msgid ""
-#~ "Options are:\n"
-#~ "[ --debuginfo ] [ -h ] [ -k | -m ] [ -t ] [ -V ]\n"
-#~ msgstr ""
-#~ "IzvÄ“les ir:\n"
-#~ "[ --debuginfo ] [ -h ] [ -k | -m ] [ -t ] [ -V ]\n"
-
-#~ msgid "\t-m\tPower management statistics\n"
-#~ msgstr "\t-m\tEnerÄ£ijas pÄrvaldÄ«bas statistika\n"
+msgid "No tape drives with statistics found\n"
+msgstr "Nav atrasti lentes diski ar statistiku\n"
diff -pruN 12.7.5-2/nls/pt_BR.po 12.7.7-0ubuntu2/nls/pt_BR.po
--- 12.7.5-2/nls/pt_BR.po	2020-11-23 12:12:01.000000000 +0000
+++ 12.7.7-0ubuntu2/nls/pt_BR.po	2024-09-24 01:42:01.000000000 +0000
@@ -1,15 +1,15 @@
 # Brazilian Portuguese translations for sysstat
-# Copyright (C) 2020 Free Software Foundation
+# Copyright (C) 2024 Free Software Foundation
 # This file is distributed under the same license as the sysstat package.
 # JoÃ£o Victor Duarte Martins <jvdm@sdf.lonestar.org>, 2010.
-# Rafael Fontenelle <rafaelff@gnome.org>, 2014-2020.
+# Rafael Fontenelle <rafaelff@gnome.org>, 2014-2024.
 #
 msgid ""
 msgstr ""
-"Project-Id-Version: sysstat 12.5.1\n"
+"Project-Id-Version: sysstat 12.7.2\n"
 "Report-Msgid-Bugs-To: sysstat <at> orange.fr\n"
-"POT-Creation-Date: 2020-11-14 08:23+0100\n"
-"PO-Revision-Date: 2020-11-23 09:05-0300\n"
+"POT-Creation-Date: 2023-01-13 17:54+0100\n"
+"PO-Revision-Date: 2024-09-23 22:36-0300\n"
 "Last-Translator: Rafael Fontenelle <rafaelff@gnome.org>\n"
 "Language-Team: Brazilian Portuguese <ldpbr-translation@lists.sourceforge.net>\n"
 "Language: pt_BR\n"
@@ -17,10 +17,10 @@ msgstr ""
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Plural-Forms: nplurals=2; plural=(n > 1)\n"
-"X-Generator: Gtranslator 3.38.0\n"
+"X-Generator: Gtranslator 46.1\n"
 "X-Bugs: Report translation errors to the Language-Team address.\n"
 
-#: cifsiostat.c:75 iostat.c:88 mpstat.c:134 sar.c:107 tapestat.c:104
+#: cifsiostat.c:75 iostat.c:89 mpstat.c:134 sar.c:108 tapestat.c:104
 #, c-format
 msgid "Usage: %s [ options ] [ <interval> [ <count> ] ]\n"
 msgstr "Uso: %s [ opÃ§Ãµes ] [ <intervalo> [ <contagem> ] ]\n"
@@ -47,57 +47,57 @@ msgstr ""
 "[ --dec={ 0 | 1 | 2 } ] [ --human ] [ --pretty ]\n"
 "[ -h ] [ -k | -m ] [ -t ] [ -V ]\n"
 
-#: common.c:80
+#: common.c:85
 #, c-format
 msgid "sysstat version %s\n"
 msgstr "sysstat versÃ£o %s\n"
 
-#: count.c:118 ioconf.c:479 rd_stats.c:83 sa_common.c:1767 sadc.c:733
-#: sadc.c:796
+#: count.c:118 ioconf.c:480 rd_stats.c:86 sa_common.c:1856 sadc.c:747
+#: sadc.c:810
 #, c-format
 msgid "Cannot open %s: %s\n"
 msgstr "NÃ£o Ã© possÃ­vel abrir %s: %s\n"
 
-#: count.c:169
+#: count.c:172
 #, c-format
 msgid "Cannot handle so many processors!\n"
 msgstr "NÃ£o Ã© possÃ­vel lidar com tantos processadores!\n"
 
-#: iostat.c:91
+#: iostat.c:92
 #, c-format
 msgid ""
 "Options are:\n"
 "[ -c ] [ -d ] [ -h ] [ -k | -m ] [ -N ] [ -s ] [ -t ] [ -V ] [ -x ] [ -y ] [ -z ]\n"
 "[ { -f | +f } <directory> ] [ -j { ID | LABEL | PATH | UUID | ... } ]\n"
-"[ --dec={ 0 | 1 | 2 } ] [ --human ] [ --pretty ] [ -o JSON ]\n"
+"[ --compact ] [ --dec={ 0 | 1 | 2 } ] [ --human ] [ --pretty ] [ -o JSON ]\n"
 "[ [ -H ] -g <group_name> ] [ -p [ <device> [,...] | ALL ] ]\n"
 "[ <device> [...] | ALL ] [ --debuginfo ]\n"
 msgstr ""
 "As opÃ§Ãµes sÃ£o:\n"
 "[ -c ] [ -d ] [ -h ] [ -k | -m ] [ -N ] [ -s ] [ -t ] [ -V ] [ -x ] [ -y ] [ -z ]\n"
 "[ { -f | +f } <diretÃ³rio> ] [ -j { ID | LABEL | PATH | UUID | ... } ]\n"
-"[ --dec={ 0 | 1 | 2 } ] [ --human ] [ --pretty ] [ -o JSON ]\n"
+"[ --compact ] [ --dec={ 0 | 1 | 2 } ] [ --human ] [ --pretty ] [ -o JSON ]\n"
 "[ [ -H ] -g <nome_grupo> ] [ -p [ <dispositivo> [,...] | ALL ] ]\n"
 "[ <dispositivo> [...] | ALL ] [ --debuginfo ]\n"
 
-#: iostat.c:98
+#: iostat.c:99
 #, c-format
 msgid ""
 "Options are:\n"
 "[ -c ] [ -d ] [ -h ] [ -k | -m ] [ -N ] [ -s ] [ -t ] [ -V ] [ -x ] [ -y ] [ -z ]\n"
 "[ { -f | +f } <directory> ] [ -j { ID | LABEL | PATH | UUID | ... } ]\n"
-"[ --dec={ 0 | 1 | 2 } ] [ --human ] [ --pretty ] [ -o JSON ]\n"
+"[ --compact ] [ --dec={ 0 | 1 | 2 } ] [ --human ] [ --pretty ] [ -o JSON ]\n"
 "[ [ -H ] -g <group_name> ] [ -p [ <device> [,...] | ALL ] ]\n"
 "[ <device> [...] | ALL ]\n"
 msgstr ""
 "As opÃ§Ãµes sÃ£o:\n"
 "[ -c ] [ -d ] [ -h ] [ -k | -m ] [ -N ] [ -s ] [ -t ] [ -V ] [ -x ] [ -y ] [ -z ]\n"
 "[ { -f | +f } <diretÃ³rio> ] [ -j { ID | LABEL | PATH | UUID | ... } ]\n"
-"[ --dec={ 0 | 1 | 2 } ] [ --human ] [ --pretty ] [ -o JSON ]\n"
+"[ --compact ] [ --dec={ 0 | 1 | 2 } ] [ --human ] [ --pretty ] [ -o JSON ]\n"
 "[ [ -H ] -g <nome_grupo> ] [ -p [ <dispositivo> [,...] | ALL ] ]\n"
 "[ <dispositivo> [...] | ALL ]\n"
 
-#: iostat.c:2126 sa_common.c:2250
+#: iostat.c:2179 sa_common.c:2404
 #, c-format
 msgid "Invalid type of persistent device name\n"
 msgstr "Tipo invÃ¡lido de nome do dispositivo persistente\n"
@@ -106,25 +106,25 @@ msgstr "Tipo invÃ¡lido de nome do dispos
 #, c-format
 msgid ""
 "Options are:\n"
-"[ -A ] [ -n ] [ -T ] [ -u ] [ -V ]\n"
+"[ -A ] [ -H ] [ -n ] [ -T ] [ -u ] [ -V ]\n"
 "[ -I { SUM | CPU | SCPU | ALL } ] [ -N { <node_list> | ALL } ]\n"
 "[ --dec={ 0 | 1 | 2 } ] [ -o JSON ] [ -P { <cpu_list> | ALL } ]\n"
 msgstr ""
 "As opÃ§Ãµes sÃ£o:\n"
-"[ -A ] [ -n ] [ -T ] [ -u ] [ -V ]\n"
+"[ -A ] [ -H ] [ -n ] [ -T ] [ -u ] [ -V ]\n"
 "[ -I { SUM | CPU | SCPU | ALL } ] [ -N { <lista_nÃ³> | ALL } ]\n"
 "[ --dec={ 0 | 1 | 2 } ] [ -o JSON ] [ -P { <lista_cpu> | ALL } ]\n"
 
-#: mpstat.c:1736 pidstat.c:2288 sar.c:382
+#: mpstat.c:1773 pidstat.c:2312 sar.c:385
 msgid "Average:"
 msgstr "MÃ©dia:"
 
-#: pidstat.c:89
+#: pidstat.c:91
 #, c-format
 msgid "Usage: %s [ options ] [ <interval> [ <count> ] ] [ -e <program> <args> ]\n"
 msgstr "Uso: %s [ opÃ§Ãµes ] [ <intervalo> [ <contagem> ] ] [ -e <programa> <args> ]\n"
 
-#: pidstat.c:92
+#: pidstat.c:94
 #, c-format
 msgid ""
 "Options are:\n"
@@ -139,51 +139,63 @@ msgstr ""
 "[ -p { <pid> [,...] | SELF | ALL } ] [ -T { TASK | CHILD | ALL } ]\n"
 "[ --dec={ 0 | 1 | 2 } ] [ --human ]\n"
 
-#: pidstat.c:207 sa_common.c:358
+#: pidstat.c:225 sa_common.c:368
 #, c-format
 msgid "Requested activities not available\n"
 msgstr "As atividade requisitadas nÃ£o estÃ£o disponÃ­veis\n"
 
-#: pr_stats.c:2618 pr_stats.c:2625 pr_stats.c:2731 pr_stats.c:2778
+#: pr_stats.c:2682 pr_stats.c:2689 pr_stats.c:2795 pr_stats.c:2842
 msgid "Summary:"
 msgstr "SumÃ¡rio:"
 
-#: rd_stats.c:359
+#: rd_stats.c:427
 #, c-format
 msgid "Cannot read %s\n"
 msgstr "NÃ£o foi possÃ­vel ler %s\n"
 
-#: sa_common.c:302
+#: sa_common.c:301
 #, c-format
 msgid "File created by sar/sadc from sysstat version %d.%d.%d"
 msgstr "Arquivo criado por sar/sadc da versÃ£o %d.%d.%d do sysstat"
 
-#: sa_common.c:333
+#: sa_common.c:334
 #, c-format
 msgid "Invalid system activity file: %s\n"
 msgstr "Arquivo de atividades do sistema invÃ¡lido: %s\n"
 
-#: sa_common.c:341
+#: sa_common.c:344
 #, c-format
 msgid "Current sysstat version cannot read the format of this file (%#x)\n"
 msgstr "A versÃ£o atual do sysstat nÃ£o consegue ler o formato deste arquivo (%#x)\n"
 
-#: sa_common.c:1361
+#: sa_common.c:348
+#, c-format
+msgid ""
+"Try to convert it to current format. Enter:\n"
+"\n"
+msgstr "Tente convertÃª-lo para o formato atual. Digite:\n"
+
+#: sa_common.c:351
+#, c-format
+msgid "You should then be able to read the new file created (%s.new)\n"
+msgstr "VocÃª deve entÃ£o conseguir ler o novo arquivo criado (%s.new)\n"
+
+#: sa_common.c:1435
 #, c-format
 msgid "Error while reading system activity file: %s\n"
 msgstr "Erro ao ler o arquivo de atividades do sistema: %s\n"
 
-#: sa_common.c:1371
+#: sa_common.c:1445
 #, c-format
 msgid "End of system activity file unexpected\n"
 msgstr "Fim inesperado do arquivo de atividades do sistema\n"
 
-#: sa_common.c:1770
+#: sa_common.c:1859
 #, c-format
 msgid "Please check if data collecting is enabled\n"
 msgstr "Por favor, verifique se a coleta de dados estÃ¡ habilitado\n"
 
-#: sa_common.c:2122
+#: sa_common.c:2194
 #, c-format
 msgid "Requested activities not available in file %s\n"
 msgstr "Atividades requisitadas nÃ£o estÃ£o disponÃ­veis no arquivo %s\n"
@@ -193,7 +205,7 @@ msgstr "Atividades requisitadas nÃ£o est
 msgid "Cannot convert the format of this file\n"
 msgstr "NÃ£o foi possÃ­vel converter o formato deste arquivo\n"
 
-#: sa_conv.c:375
+#: sa_conv.c:385
 #, c-format
 msgid ""
 "\n"
@@ -202,7 +214,7 @@ msgstr ""
 "\n"
 "Atividade do CPU nÃ£o foi encontrada no arquivo. Abortando...\n"
 
-#: sa_conv.c:398
+#: sa_conv.c:408
 #, c-format
 msgid ""
 "\n"
@@ -211,12 +223,12 @@ msgstr ""
 "\n"
 "Dados invÃ¡lidos encontrados. Abortando...\n"
 
-#: sa_conv.c:1871
+#: sa_conv.c:1931
 #, c-format
 msgid "Statistics:\n"
 msgstr "EstatÃ­sticas:\n"
 
-#: sa_conv.c:1972
+#: sa_conv.c:2032
 #, c-format
 msgid ""
 "\n"
@@ -225,12 +237,12 @@ msgstr ""
 "\n"
 "Formato de arquivo jÃ¡ atualizado\n"
 
-#: sa_conv.c:1984
+#: sa_conv.c:2044
 #, c-format
 msgid "HZ: Using current value: %lu\n"
 msgstr "HZ: Usando valor atual: %lu\n"
 
-#: sa_conv.c:2015
+#: sa_conv.c:2075
 #, c-format
 msgid "File successfully converted to sysstat format version %s\n"
 msgstr "Arquivo convertido com sucesso para formato do sysstat versÃ£o %s\n"
@@ -256,189 +268,190 @@ msgstr ""
 msgid "Cannot write data to system activity file: %s\n"
 msgstr "NÃ£o Ã© possÃ­vel escrever dados no arquivo de atividades do sistema: %s\n"
 
-#: sadc.c:1020
+#: sadc.c:1040
 #, c-format
 msgid "Cannot append data to that file (%s)\n"
 msgstr "NÃ£o Ã© possÃ­vel inserir dados no final deste arquivo (%s)\n"
 
-#: sadf.c:105
+#: sadf.c:119
 #, c-format
 msgid "Usage: %s [ options ] [ <interval> [ <count> ] ] [ <datafile> | -[0-9]+ ]\n"
 msgstr "Uso: %s [ opÃ§Ãµes ] [ <intervalo> [ <contagem> ] ] [ <arquivo_dados> | -[0-9]+ ]\n"
 
-#: sadf.c:108
+#: sadf.c:122
 #, c-format
 msgid ""
 "Options are:\n"
 "[ -C ] [ -c | -d | -g | -j | -l | -p | -r | -x ] [ -H ] [ -h ] [ -T | -t | -U ] [ -V ]\n"
 "[ -O <opts> [,...] ] [ -P { <cpu> [,...] | ALL } ]\n"
-"[ --dev=<dev_list> ] [ --fs=<fs_list> ] [ --iface=<iface_list> ]\n"
-"[ -s [ <hh:mm[:ss]> ] ] [ -e [ <hh:mm[:ss]> ] ]\n"
+"[ --dev=<dev_list> ] [ --fs=<fs_list> ] [ --iface=<iface_list> ] [ --int=<int_list> ]\n"
+"[ -s [ <time_start> ] ] [ -e [ <time_end> ] ]\n"
 "[ -- <sar_options> ]\n"
 msgstr ""
 "As opÃ§Ãµes sÃ£o:\n"
 "[ -C ] [ -c | -d | -g | -j | -l | -p | -r | -x ] [ -H ] [ -h ] [ -T | -t | -U ] [ -V ]\n"
 "[ -O <opÃ§Ãµes> [,...] ] [ -P { <cpu> [,...] | ALL } ]\n"
-"[ --dev=<lista_disp> ] [ --fs=<lista_fs> ] [ --iface=<lista_iface> ]\n"
-"[ -s [ <hh:mm[:ss]> ] ] [ -e [ <hh:mm[:ss]> ] ]\n"
+"[ --dev=<lista_disp> ] [ --fs=<lista_fs> ] [ --iface=<lista_iface> ] [ --int=<int_list> ]\n"
+"[ -s [ <tempo_inÃ­cio> ] ] [ -e [ <tempo_fim> ] ]\n"
 "[ -- <opÃ§Ãµes_sar> ]\n"
 
-#: sadf.c:1860
+#: sadf.c:1896
 #, c-format
 msgid "PCP support not compiled in\n"
 msgstr "Suporte a PCP nÃ£o compilado\n"
 
-#: sadf_misc.c:1215
+#: sadf_misc.c:1252
 #, c-format
 msgid "System activity data file: %s (%#x)\n"
 msgstr "Arquivo de dados das atividades do sistema: %s (%#x)\n"
 
-#: sadf_misc.c:1224
+#: sadf_misc.c:1261
 #, c-format
 msgid "Genuine sa datafile: %s (%x)\n"
 msgstr "Arquivo de dados sa genuÃ­no: %s (%x)\n"
 
-#: sadf_misc.c:1225
+#: sadf_misc.c:1262
 msgid "no"
 msgstr "nÃ£o"
 
-#: sadf_misc.c:1225
+#: sadf_misc.c:1262
 msgid "yes"
 msgstr "sim"
 
-#: sadf_misc.c:1228
+#: sadf_misc.c:1265
 #, c-format
 msgid "Host: "
 msgstr "Computador: "
 
-#: sadf_misc.c:1238
+#: sadf_misc.c:1275
 #, c-format
 msgid "File date: %s\n"
 msgstr "Data do arquivo: %s\n"
 
-#: sadf_misc.c:1241
+#: sadf_misc.c:1278
 #, c-format
 msgid "File time: "
 msgstr "Tempo do arquivo: "
 
-#: sadf_misc.c:1246
+#: sadf_misc.c:1283
 #, c-format
 msgid "Timezone: %s\n"
 msgstr "Fuso horÃ¡rio: %s\n"
 
-#: sadf_misc.c:1249
+#: sadf_misc.c:1286
 #, c-format
 msgid "File composition: (%d,%d,%d),(%d,%d,%d),(%d,%d,%d)\n"
 msgstr "ComposiÃ§Ã£o de arquivo: (%d,%d,%d),(%d,%d,%d),(%d,%d,%d)\n"
 
-#: sadf_misc.c:1254
+#: sadf_misc.c:1291
 #, c-format
 msgid "Size of a long int: %d\n"
 msgstr "Tamanho de um \"long int\": %d\n"
 
-#: sadf_misc.c:1256
+#: sadf_misc.c:1293
 #, c-format
 msgid "Number of activities in file: %u\n"
 msgstr "NÃºmero de atividades no arquivo: %u\n"
 
-#: sadf_misc.c:1258
+#: sadf_misc.c:1295
 #, c-format
 msgid "Extra structures available: %c\n"
 msgstr "Estruturas extras disponÃ­veis: %c\n"
 
-#: sadf_misc.c:1261
+#: sadf_misc.c:1298
 #, c-format
 msgid "List of activities:\n"
 msgstr "Lista de atividades:\n"
 
-#: sadf_misc.c:1272
+#: sadf_misc.c:1309
 msgid "Unknown activity"
 msgstr "Atividade desconhecida"
 
-#: sadf_misc.c:1280
+#: sadf_misc.c:1317
 #, c-format
 msgid " \t[Unknown format]"
 msgstr " \t[Formato desconhecido]"
 
-#: sar.c:122
+#: sar.c:123
 #, c-format
 msgid ""
 "Options are:\n"
 "[ -A ] [ -B ] [ -b ] [ -C ] [ -D ] [ -d ] [ -F [ MOUNT ] ] [ -H ] [ -h ]\n"
 "[ -p ] [ -r [ ALL ] ] [ -S ] [ -t ] [ -u [ ALL ] ] [ -V ]\n"
 "[ -v ] [ -W ] [ -w ] [ -y ] [ -z ]\n"
-"[ -I { <int_list> | SUM | ALL } ] [ -P { <cpu_list> | ALL } ]\n"
+"[ -I [ SUM | ALL ] ] [ -P { <cpu_list> | ALL } ]\n"
 "[ -m { <keyword> [,...] | ALL } ] [ -n { <keyword> [,...] | ALL } ]\n"
 "[ -q [ <keyword> [,...] | ALL ] ]\n"
-"[ --dev=<dev_list> ] [ --fs=<fs_list> ] [ --iface=<iface_list> ]\n"
+"[ --dev=<dev_list> ] [ --fs=<fs_list> ] [ --iface=<iface_list> ] [ --int=<int_list> ]\n"
 "[ --dec={ 0 | 1 | 2 } ] [ --help ] [ --human ] [ --pretty ] [ --sadc ]\n"
 "[ -j { SID | ID | LABEL | PATH | UUID | ... } ]\n"
 "[ -f [ <filename> ] | -o [ <filename> ] | -[0-9]+ ]\n"
-"[ -i <interval> ] [ -s [ <hh:mm[:ss]> ] ] [ -e [ <hh:mm[:ss]> ] ]\n"
+"[ -i <interval> ] [ -s [ <start_time> ] ] [ -e [ <end_time> ] ]\n"
 msgstr ""
 "As opÃ§Ãµes sÃ£o:\n"
 "[ -A ] [ -B ] [ -b ] [ -C ] [ -D ] [ -d ] [ -F [ MONTAGEM ] ] [ -H ] [ -h ]\n"
 "[ -p ] [ -r [ ALL ] ] [ -S ] [ -t ] [ -u [ ALL ] ] [ -V ]\n"
 "[ -v ] [ -W ] [ -w ] [ -y ] [ -z ]\n"
-"[ -I { <list_int> | SUM | ALL } ] [ -P { <lista_cpu> | ALL } ]\n"
-"[ -m { <palavra> [,...] | ALL } ] [ -n { <palavra> [,...] | ALL } ]\n"
-"[ -q [ <palavra> [,...] | ALL ] ]\n"
-"[ --dev=<lista_dev> ] [ --fs=<lista_fs> ] [ --iface=<lista_iface> ]\n"
+"[ -I [ SUM | ALL ] ] [ -P { <lista_cpu> | ALL } ]\n"
+"[ -m { <palavra_chave> [,...] | ALL } ] [ -n { <palavra_chave> [,...] | ALL } ]\n"
+"[ -q [ <palavra_chave> [,...] | ALL ] ]\n"
+"[ --dev=<lista_dev> ] [ --fs=<lista_fs> ] [ --iface=<lista_iface> ] [ --int=<lista_int> ]\n"
 "[ --dec={ 0 | 1 | 2 } ] [ --help ] [ --human ] [ --pretty ] [ --sadc ]\n"
 "[ -j { SID | ID | LABEL | PATH | UUID | ... } ]\n"
 "[ -f [ <arquivo> ] | -o [ <arquivo> ] | -[0-9]+ ]\n"
-"[ -i <intervalo> ] [ -s [ <hh:mm[:ss]> ] ] [ -e [ <hh:mm[:ss]> ] ]\n"
+"[ -i <intervalo> ] [ -s [ <tempo_inicial> ] ] [ -e [ <tempo_final> ] ]\n"
 
-#: sar.c:148
+#: sar.c:150
 #, c-format
 msgid "Main options and reports (report name between square brackets):\n"
 msgstr "RelatÃ³rios e opÃ§Ãµes principais (nome do relatÃ³rio entre colchetes):\n"
 
-#: sar.c:149
+#: sar.c:151
 #, c-format
 msgid "\t-B\tPaging statistics [A_PAGE]\n"
 msgstr "\t-B\tEstatÃ­sticas de paginaÃ§Ã£o [A_PAGE]\n"
 
-#: sar.c:150
+#: sar.c:152
 #, c-format
 msgid "\t-b\tI/O and transfer rate statistics [A_IO]\n"
 msgstr "\t-b\tEstatÃ­sticas de E/S e de taxa de transferÃªncia [A_IO]\n"
 
-#: sar.c:151
+#: sar.c:153
 #, c-format
 msgid "\t-d\tBlock devices statistics [A_DISK]\n"
 msgstr "\t-d\tEstatÃ­sticas de dispositivos de bloco [A_DISK]\n"
 
-#: sar.c:152
+#: sar.c:154
 #, c-format
 msgid "\t-F [ MOUNT ]\n"
 msgstr "\t-F [ MONTAGEM ]\n"
 
-#: sar.c:153
+#: sar.c:155
 #, c-format
 msgid "\t\tFilesystems statistics [A_FS]\n"
 msgstr "\t\tEstatÃ­sticas de sistema de arquivos [A_FS]\n"
 
-#: sar.c:154
+#: sar.c:156
 #, c-format
 msgid "\t-H\tHugepages utilization statistics [A_HUGE]\n"
 msgstr "\t-S\tEstatÃ­sticas de utilizaÃ§Ã£o de hugepages [A_HUGE]\n"
 
-#: sar.c:155
+#: sar.c:157
 #, c-format
 msgid ""
-"\t-I { <int_list> | SUM | ALL }\n"
+"\t-I [ SUM | ALL ]\n"
 "\t\tInterrupts statistics [A_IRQ]\n"
 msgstr ""
-"\t-I { <lista_int> | SUM | ALL }\n"
-"\t\tEstatÃ­sticas de InterrupÃ§Ã£o [A_IRQ]\n"
+"\t-I [ SUM | ALL ]\n"
+"\t\tEstatÃ­sticas de interrupÃ§Ã£o [A_IRQ]\n"
 
-#: sar.c:157
+#: sar.c:159
 #, c-format
 msgid ""
 "\t-m { <keyword> [,...] | ALL }\n"
 "\t\tPower management statistics [A_PWR_...]\n"
 "\t\tKeywords are:\n"
+"\t\tBAT\tBatteries capacity\n"
 "\t\tCPU\tCPU instantaneous clock frequency\n"
 "\t\tFAN\tFans speed\n"
 "\t\tFREQ\tCPU average clock frequency\n"
@@ -449,14 +462,15 @@ msgstr ""
 "\t-m { <palavra_chave> [,...] | ALL }\n"
 "\t\tEstatÃ­sticas de gerenciamento de energia [A_PWR_...]\n"
 "\t\tPalavras-chave sÃ£o:\n"
-"\t\tCPU\tFrequÃªncia instÃ¢ncia do relÃ³gio do CPU\n"
+"\t\tBAT\tCapacidade das baterias\n"
+"\t\tCPU\tFrequÃªncia instantÃ¢nea do relÃ³gio da CPU\n"
 "\t\tFAN\tVelocidade dos ventiladores\n"
-"\t\tFREQ\tFrequÃªncia mÃ©dia do relÃ³gio do CPU\n"
+"\t\tFREQ\tFrequÃªncia mÃ©dia do relÃ³gio da CPU\n"
 "\t\tIN\tEntradas de voltagem\n"
 "\t\tTEMP\tTemperatura de dispositivos\n"
 "\t\tUSB\tDispositivos USB conectados no sistema\n"
 
-#: sar.c:166
+#: sar.c:169
 #, c-format
 msgid ""
 "\t-n { <keyword> [,...] | ALL }\n"
@@ -507,7 +521,7 @@ msgstr ""
 "\t\tFC\tHBAs de canal de fibra\n"
 "\t\tSOFT\tProcessamento de rede por software\n"
 
-#: sar.c:189
+#: sar.c:192
 #, c-format
 msgid ""
 "\t-q [ <keyword> [,...] | PSI | ALL ]\n"
@@ -526,7 +540,7 @@ msgstr ""
 "\t\tIO\tEstatÃ­sticas de estagnaÃ§Ã£o por pressÃ£o de E/S [A_PSI_IO]\n"
 "\t\tMEM\tEstatÃ­sticas de estagnaÃ§Ã£o por pressÃ£o da memÃ³ria [A_PSI_MEM]\n"
 
-#: sar.c:196
+#: sar.c:199
 #, c-format
 msgid ""
 "\t-r [ ALL ]\n"
@@ -535,12 +549,12 @@ msgstr ""
 "\t-r [ ALL ]\n"
 "\t\tEstatÃ­sticas de utilizaÃ§Ã£o da memÃ³ria [A_MEMORY]\n"
 
-#: sar.c:198
+#: sar.c:201
 #, c-format
 msgid "\t-S\tSwap space utilization statistics [A_MEMORY]\n"
 msgstr "\t-S\tEstatÃ­sticas de utilizaÃ§Ã£o do espaÃ§o swap [A_MEMORY]\n"
 
-#: sar.c:199
+#: sar.c:202
 #, c-format
 msgid ""
 "\t-u [ ALL ]\n"
@@ -549,62 +563,62 @@ msgstr ""
 "\t-u [ ALL ]\n"
 "\t\tEstatÃ­sticas de utilizaÃ§Ã£o da CPU [A_CPU]\n"
 
-#: sar.c:201
+#: sar.c:204
 #, c-format
 msgid "\t-v\tKernel tables statistics [A_KTABLES]\n"
 msgstr "\t-v\tEstatÃ­sticas de tabelas do nÃºcleo (kernel) [A_KTABLES]\n"
 
-#: sar.c:202
+#: sar.c:205
 #, c-format
 msgid "\t-W\tSwapping statistics [A_SWAP]\n"
 msgstr "\t-W\tEstatÃ­sticas de swap [A_SWAP]\n"
 
-#: sar.c:203
+#: sar.c:206
 #, c-format
 msgid "\t-w\tTask creation and system switching statistics [A_PCSW]\n"
 msgstr "\t-w\tEstatÃ­sticas de criaÃ§Ã£o de tarefas e trocas de contexto [A_PCSW]\n"
 
-#: sar.c:204
+#: sar.c:207
 #, c-format
 msgid "\t-y\tTTY devices statistics [A_SERIAL]\n"
 msgstr "\t-y\tEstatÃ­sticas de dispositivos TTY [A_SERIAL]\n"
 
-#: sar.c:218
+#: sar.c:221
 #, c-format
 msgid "Data collector will be sought in PATH\n"
 msgstr "Coletor de dados procurado em PATH\n"
 
-#: sar.c:221
+#: sar.c:224
 #, c-format
 msgid "Data collector found: %s\n"
 msgstr "Coletor de dados encontrou: %s\n"
 
-#: sar.c:286
+#: sar.c:289
 #, c-format
 msgid "End of data collecting unexpected\n"
 msgstr "Fim inesperado da coleta de dados\n"
 
-#: sar.c:291
+#: sar.c:294
 #, c-format
 msgid "Inconsistent input data\n"
 msgstr "Dados de entrada inconsistentes\n"
 
-#: sar.c:897
+#: sar.c:895
 #, c-format
 msgid "Using a wrong data collector from a different sysstat version\n"
 msgstr "Usando um coletador de dados errado de uma versÃ£o diferente do sysstat\n"
 
-#: sar.c:1548
+#: sar.c:1553
 #, c-format
 msgid "-f and -o options are mutually exclusive\n"
 msgstr "As opÃ§Ãµes -f e -o sÃ£o mutuamente exclusivas\n"
 
-#: sar.c:1558
+#: sar.c:1563
 #, c-format
 msgid "Not reading from a system activity file (use -f option)\n"
 msgstr "NÃ£o estÃ¡ sendo lido de um arquivo de atividade do sistema (use a opÃ§Ã£o -f)\n"
 
-#: sar.c:1707
+#: sar.c:1712
 #, c-format
 msgid "Cannot find the data collector (%s)\n"
 msgstr "NÃ£o Ã© possÃ­vel encontrar o coletor de dados (%s)\n"
@@ -618,7 +632,7 @@ msgstr ""
 "As opÃ§Ãµes sÃ£o:\n"
 "[ --human ] [ -k | -m ] [ -t ] [ -V ] [ -y ] [ -z ]\n"
 
-#: tapestat.c:272
+#: tapestat.c:273
 #, c-format
 msgid "No tape drives with statistics found\n"
 msgstr "Nenhuma unidade de fita com estatÃ­sticas encontrada\n"
diff -pruN 12.7.5-2/nls/sysstat.pot 12.7.7-0ubuntu2/nls/sysstat.pot
--- 12.7.5-2/nls/sysstat.pot	2023-12-14 16:45:20.000000000 +0000
+++ 12.7.7-0ubuntu2/nls/sysstat.pot	2025-02-02 08:04:15.000000000 +0000
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: PACKAGE VERSION\n"
 "Report-Msgid-Bugs-To: sysstat <at> orange.fr\n"
-"POT-Creation-Date: 2023-01-29 09:32+0100\n"
+"POT-Creation-Date: 2025-02-02 09:04+0100\n"
 "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
 "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
 "Language-Team: LANGUAGE <LL@li.org>\n"
@@ -17,34 +17,39 @@ msgstr ""
 "Content-Type: text/plain; charset=CHARSET\n"
 "Content-Transfer-Encoding: 8bit\n"
 
-#: cifsiostat.c:75 iostat.c:89 mpstat.c:134 sar.c:108 tapestat.c:104
+#: cifsiostat.c:78 iostat.c:88 mpstat.c:138 sar.c:113 tapestat.c:105
 #, c-format
 msgid "Usage: %s [ options ] [ <interval> [ <count> ] ]\n"
 msgstr ""
 
-#: cifsiostat.c:79
+#: cifsiostat.c:82
 #, c-format
 msgid ""
 "Options are:\n"
-"[ --dec={ 0 | 1 | 2 } ] [ --human ] [ --pretty ]\n"
-"[ -h ] [ -k | -m ] [ -t ] [ -V ] [ --debuginfo ]\n"
+"[ --dec={ 0 | 1 | 2 } ] [ --human ] [ --pretty ] [ -o JSON ]\n"
+"[ -h ] [ -k | -m ] [ -t ] [ -V ] [ -y ] [ --debuginfo ]\n"
 msgstr ""
 
-#: cifsiostat.c:83
+#: cifsiostat.c:86
 #, c-format
 msgid ""
 "Options are:\n"
-"[ --dec={ 0 | 1 | 2 } ] [ --human ] [ --pretty ]\n"
-"[ -h ] [ -k | -m ] [ -t ] [ -V ]\n"
+"[ --dec={ 0 | 1 | 2 } ] [ --human ] [ --pretty ] [ -o JSON ]\n"
+"[ -h ] [ -k | -m ] [ -t ] [ -V ] [ -y ]\n"
 msgstr ""
 
-#: common.c:85
+#: cifsiostat.c:586
+#, c-format
+msgid "No CIFS filesystems with statistics found\n"
+msgstr ""
+
+#: common.c:100
 #, c-format
 msgid "sysstat version %s\n"
 msgstr ""
 
-#: count.c:118 ioconf.c:480 rd_stats.c:86 sa_common.c:1866 sadc.c:747
-#: sadc.c:810
+#: count.c:118 ioconf.c:480 rd_stats.c:86 sa_common.c:2011 sadc.c:741
+#: sadc.c:804
 #, c-format
 msgid "Cannot open %s: %s\n"
 msgstr ""
@@ -54,7 +59,7 @@ msgstr ""
 msgid "Cannot handle so many processors!\n"
 msgstr ""
 
-#: iostat.c:92
+#: iostat.c:91
 #, c-format
 msgid ""
 "Options are:\n"
@@ -66,7 +71,7 @@ msgid ""
 "[ <device> [...] | ALL ] [ --debuginfo ]\n"
 msgstr ""
 
-#: iostat.c:99
+#: iostat.c:98
 #, c-format
 msgid ""
 "Options are:\n"
@@ -78,12 +83,12 @@ msgid ""
 "[ <device> [...] | ALL ]\n"
 msgstr ""
 
-#: iostat.c:2179 sa_common.c:2414
+#: iostat.c:2192 sa_common.c:2593
 #, c-format
 msgid "Invalid type of persistent device name\n"
 msgstr ""
 
-#: mpstat.c:137
+#: mpstat.c:141
 #, c-format
 msgid ""
 "Options are:\n"
@@ -92,17 +97,17 @@ msgid ""
 "[ --dec={ 0 | 1 | 2 } ] [ -o JSON ] [ -P { <cpu_list> | ALL } ]\n"
 msgstr ""
 
-#: mpstat.c:1773 pidstat.c:2312 sar.c:385
+#: mpstat.c:1738 pidstat.c:3530 sar.c:390
 msgid "Average:"
 msgstr ""
 
-#: pidstat.c:91
+#: pidstat.c:96
 #, c-format
 msgid ""
 "Usage: %s [ options ] [ <interval> [ <count> ] ] [ -e <program> <args> ]\n"
 msgstr ""
 
-#: pidstat.c:94
+#: pidstat.c:99
 #, c-format
 msgid ""
 "Options are:\n"
@@ -110,70 +115,88 @@ msgid ""
 "[ <username> ] ]\n"
 "[ -u ] [ -V ] [ -v ] [ -w ] [ -C <command> ] [ -G <process_name> ]\n"
 "[ -p { <pid> [,...] | SELF | ALL } ] [ -T { TASK | CHILD | ALL } ]\n"
-"[ --dec={ 0 | 1 | 2 } ] [ --human ]\n"
+"[ --dec={ 0 | 1 | 2 } ] [ --human ] [ -o JSON ]\n"
 msgstr ""
 
-#: pidstat.c:225 sa_common.c:368
+#: pidstat.c:230 sa_common.c:376
 #, c-format
 msgid "Requested activities not available\n"
 msgstr ""
 
-#: pr_stats.c:2682 pr_stats.c:2689 pr_stats.c:2795 pr_stats.c:2842
+#: pr_stats.c:3734 pr_stats.c:3741 pr_stats.c:3859 pr_stats.c:3945
+#: pr_stats.c:3959 sar.c:393
 msgid "Summary:"
 msgstr ""
 
+#: pr_stats.c:3958
+msgid "Last:"
+msgstr ""
+
 #: rd_stats.c:427
 #, c-format
 msgid "Cannot read %s\n"
 msgstr ""
 
-#: sa_common.c:301
+#: sa_common.c:309
 #, c-format
 msgid "File created by sar/sadc from sysstat version %d.%d.%d"
 msgstr ""
 
-#: sa_common.c:334
+#: sa_common.c:340
 #, c-format
 msgid "Invalid system activity file: %s\n"
 msgstr ""
 
-#: sa_common.c:344
+#: sa_common.c:352
 #, c-format
 msgid "Current sysstat version cannot read the format of this file (%#x)\n"
 msgstr ""
 
-#: sa_common.c:348
+#: sa_common.c:356
 #, c-format
 msgid ""
 "Try to convert it to current format. Enter:\n"
 "\n"
 msgstr ""
 
-#: sa_common.c:351
+#: sa_common.c:359
 #, c-format
 msgid "You should then be able to read the new file created (%s.new)\n"
 msgstr ""
 
-#: sa_common.c:1445
+#: sa_common.c:1585
 #, c-format
 msgid "Error while reading system activity file: %s\n"
 msgstr ""
 
-#: sa_common.c:1455
+#: sa_common.c:1595
 #, c-format
 msgid "End of system activity file unexpected\n"
 msgstr ""
 
-#: sa_common.c:1869
+#: sa_common.c:1751
+#, c-format
+msgid "Invalid data read\n"
+msgstr ""
+
+#: sa_common.c:2014
 #, c-format
 msgid "Please check if data collecting is enabled\n"
 msgstr ""
 
-#: sa_common.c:2204
+#: sa_common.c:2349
 #, c-format
 msgid "Requested activities not available in file %s\n"
 msgstr ""
 
+#: sa_common.c:3830
+msgid "Maximum:"
+msgstr ""
+
+#: sa_common.c:3831
+msgid "Minimum:"
+msgstr ""
+
 #: sa_conv.c:99
 #, c-format
 msgid "Cannot convert the format of this file\n"
@@ -186,41 +209,41 @@ msgid ""
 "CPU activity not found in file. Aborting...\n"
 msgstr ""
 
-#: sa_conv.c:408
+#: sa_conv.c:408 sa_conv.c:1628
 #, c-format
 msgid ""
 "\n"
-"Invalid data found. Aborting...\n"
+"%s: Invalid data found. Aborting...\n"
 msgstr ""
 
-#: sa_conv.c:1931
+#: sa_conv.c:1941
 #, c-format
 msgid "Statistics:\n"
 msgstr ""
 
-#: sa_conv.c:2032
+#: sa_conv.c:2042
 #, c-format
 msgid ""
 "\n"
 "File format already up-to-date\n"
 msgstr ""
 
-#: sa_conv.c:2044
+#: sa_conv.c:2054
 #, c-format
 msgid "HZ: Using current value: %lu\n"
 msgstr ""
 
-#: sa_conv.c:2075
+#: sa_conv.c:2085
 #, c-format
 msgid "File successfully converted to sysstat format version %s\n"
 msgstr ""
 
-#: sadc.c:98
+#: sadc.c:97
 #, c-format
 msgid "Usage: %s [ options ] [ <interval> [ <count> ] ] [ <outfile> ]\n"
 msgstr ""
 
-#: sadc.c:101
+#: sadc.c:100
 #, c-format
 msgid ""
 "Options are:\n"
@@ -228,23 +251,23 @@ msgid ""
 "[ -S { INT | DISK | IPV6 | POWER | SNMP | XDISK | ALL | XALL } ]\n"
 msgstr ""
 
-#: sadc.c:272
+#: sadc.c:271
 #, c-format
 msgid "Cannot write data to system activity file: %s\n"
 msgstr ""
 
-#: sadc.c:1040
+#: sadc.c:1029
 #, c-format
 msgid "Cannot append data to that file (%s)\n"
 msgstr ""
 
-#: sadf.c:119
+#: sadf.c:118
 #, c-format
 msgid ""
 "Usage: %s [ options ] [ <interval> [ <count> ] ] [ <datafile> | -[0-9]+ ]\n"
 msgstr ""
 
-#: sadf.c:122
+#: sadf.c:121
 #, c-format
 msgid ""
 "Options are:\n"
@@ -257,90 +280,90 @@ msgid ""
 "[ -- <sar_options> ]\n"
 msgstr ""
 
-#: sadf.c:1894
+#: sadf.c:2042
 #, c-format
 msgid "PCP support not compiled in\n"
 msgstr ""
 
-#: sadf_misc.c:1252
+#: sadf_misc.c:1249
 #, c-format
 msgid "System activity data file: %s (%#x)\n"
 msgstr ""
 
-#: sadf_misc.c:1261
+#: sadf_misc.c:1258
 #, c-format
 msgid "Genuine sa datafile: %s (%x)\n"
 msgstr ""
 
-#: sadf_misc.c:1262
+#: sadf_misc.c:1259
 msgid "no"
 msgstr ""
 
-#: sadf_misc.c:1262
+#: sadf_misc.c:1259
 msgid "yes"
 msgstr ""
 
-#: sadf_misc.c:1265
+#: sadf_misc.c:1262
 #, c-format
 msgid "Host: "
 msgstr ""
 
-#: sadf_misc.c:1275
+#: sadf_misc.c:1272
 #, c-format
 msgid "File date: %s\n"
 msgstr ""
 
-#: sadf_misc.c:1278
+#: sadf_misc.c:1275
 #, c-format
 msgid "File time: "
 msgstr ""
 
-#: sadf_misc.c:1283
+#: sadf_misc.c:1280
 #, c-format
 msgid "Timezone: %s\n"
 msgstr ""
 
-#: sadf_misc.c:1286
+#: sadf_misc.c:1283
 #, c-format
-msgid "File composition: (%d,%d,%d),(%d,%d,%d),(%d,%d,%d)\n"
+msgid "File composition: (%u,%u,%u),(%u,%u,%u),(%u,%u,%u)\n"
 msgstr ""
 
-#: sadf_misc.c:1291
+#: sadf_misc.c:1288
 #, c-format
 msgid "Size of a long int: %d\n"
 msgstr ""
 
-#: sadf_misc.c:1293
+#: sadf_misc.c:1290
 #, c-format
 msgid "Number of activities in file: %u\n"
 msgstr ""
 
-#: sadf_misc.c:1295
+#: sadf_misc.c:1292
 #, c-format
 msgid "Extra structures available: %c\n"
 msgstr ""
 
-#: sadf_misc.c:1298
+#: sadf_misc.c:1295
 #, c-format
 msgid "List of activities:\n"
 msgstr ""
 
-#: sadf_misc.c:1309
+#: sadf_misc.c:1306
 msgid "Unknown activity"
 msgstr ""
 
-#: sadf_misc.c:1317
+#: sadf_misc.c:1314
 #, c-format
 msgid " \t[Unknown format]"
 msgstr ""
 
-#: sar.c:123
+#: sar.c:128
 #, c-format
 msgid ""
 "Options are:\n"
 "[ -A ] [ -B ] [ -b ] [ -C ] [ -D ] [ -d ] [ -F [ MOUNT ] ] [ -H ] [ -h ]\n"
 "[ -p ] [ -r [ ALL ] ] [ -S ] [ -t ] [ -u [ ALL ] ] [ -V ]\n"
-"[ -v ] [ -W ] [ -w ] [ -y ] [ -z ]\n"
+"[ -v ] [ -W ] [ -w ] [ -x ] [ -y ] [ -z ]\n"
 "[ -I [ SUM | ALL ] ] [ -P { <cpu_list> | ALL } ]\n"
 "[ -m { <keyword> [,...] | ALL } ] [ -n { <keyword> [,...] | ALL } ]\n"
 "[ -q [ <keyword> [,...] | ALL ] ]\n"
@@ -352,49 +375,49 @@ msgid ""
 "[ -i <interval> ] [ -s [ <start_time> ] ] [ -e [ <end_time> ] ]\n"
 msgstr ""
 
-#: sar.c:150
+#: sar.c:155
 #, c-format
 msgid "Main options and reports (report name between square brackets):\n"
 msgstr ""
 
-#: sar.c:151
+#: sar.c:156
 #, c-format
 msgid "\t-B\tPaging statistics [A_PAGE]\n"
 msgstr ""
 
-#: sar.c:152
+#: sar.c:157
 #, c-format
 msgid "\t-b\tI/O and transfer rate statistics [A_IO]\n"
 msgstr ""
 
-#: sar.c:153
+#: sar.c:158
 #, c-format
 msgid "\t-d\tBlock devices statistics [A_DISK]\n"
 msgstr ""
 
-#: sar.c:154
+#: sar.c:159
 #, c-format
 msgid "\t-F [ MOUNT ]\n"
 msgstr ""
 
-#: sar.c:155
+#: sar.c:160
 #, c-format
 msgid "\t\tFilesystems statistics [A_FS]\n"
 msgstr ""
 
-#: sar.c:156
+#: sar.c:161
 #, c-format
 msgid "\t-H\tHugepages utilization statistics [A_HUGE]\n"
 msgstr ""
 
-#: sar.c:157
+#: sar.c:162
 #, c-format
 msgid ""
 "\t-I [ SUM | ALL ]\n"
 "\t\tInterrupts statistics [A_IRQ]\n"
 msgstr ""
 
-#: sar.c:159
+#: sar.c:164
 #, c-format
 msgid ""
 "\t-m { <keyword> [,...] | ALL }\n"
@@ -409,7 +432,7 @@ msgid ""
 "\t\tUSB\tUSB devices plugged into the system\n"
 msgstr ""
 
-#: sar.c:169
+#: sar.c:174
 #, c-format
 msgid ""
 "\t-n { <keyword> [,...] | ALL }\n"
@@ -437,7 +460,7 @@ msgid ""
 "\t\tSOFT\tSoftware-based network processing\n"
 msgstr ""
 
-#: sar.c:192
+#: sar.c:197
 #, c-format
 msgid ""
 "\t-q [ <keyword> [,...] | PSI | ALL ]\n"
@@ -449,93 +472,93 @@ msgid ""
 "\t\tMEM\tPressure-stall memory statistics [A_PSI_MEM]\n"
 msgstr ""
 
-#: sar.c:199
+#: sar.c:204
 #, c-format
 msgid ""
 "\t-r [ ALL ]\n"
 "\t\tMemory utilization statistics [A_MEMORY]\n"
 msgstr ""
 
-#: sar.c:201
+#: sar.c:206
 #, c-format
 msgid "\t-S\tSwap space utilization statistics [A_MEMORY]\n"
 msgstr ""
 
-#: sar.c:202
+#: sar.c:207
 #, c-format
 msgid ""
 "\t-u [ ALL ]\n"
 "\t\tCPU utilization statistics [A_CPU]\n"
 msgstr ""
 
-#: sar.c:204
+#: sar.c:209
 #, c-format
 msgid "\t-v\tKernel tables statistics [A_KTABLES]\n"
 msgstr ""
 
-#: sar.c:205
+#: sar.c:210
 #, c-format
 msgid "\t-W\tSwapping statistics [A_SWAP]\n"
 msgstr ""
 
-#: sar.c:206
+#: sar.c:211
 #, c-format
 msgid "\t-w\tTask creation and system switching statistics [A_PCSW]\n"
 msgstr ""
 
-#: sar.c:207
+#: sar.c:212
 #, c-format
 msgid "\t-y\tTTY devices statistics [A_SERIAL]\n"
 msgstr ""
 
-#: sar.c:221
+#: sar.c:226
 #, c-format
 msgid "Data collector will be sought in PATH\n"
 msgstr ""
 
-#: sar.c:224
+#: sar.c:229
 #, c-format
 msgid "Data collector found: %s\n"
 msgstr ""
 
-#: sar.c:289
+#: sar.c:294
 #, c-format
 msgid "End of data collecting unexpected\n"
 msgstr ""
 
-#: sar.c:294
+#: sar.c:299
 #, c-format
 msgid "Inconsistent input data\n"
 msgstr ""
 
-#: sar.c:895
+#: sar.c:914
 #, c-format
 msgid "Using a wrong data collector from a different sysstat version\n"
 msgstr ""
 
-#: sar.c:1566
+#: sar.c:1603
 #, c-format
 msgid "-f and -o options are mutually exclusive\n"
 msgstr ""
 
-#: sar.c:1576
+#: sar.c:1613
 #, c-format
 msgid "Not reading from a system activity file (use -f option)\n"
 msgstr ""
 
-#: sar.c:1725
+#: sar.c:1762
 #, c-format
 msgid "Cannot find the data collector (%s)\n"
 msgstr ""
 
-#: tapestat.c:106
+#: tapestat.c:107
 #, c-format
 msgid ""
 "Options are:\n"
-"[ --human ] [ -k | -m ] [ -t ] [ -V ] [ -y ] [ -z ]\n"
+"[ --human ] [ -k | -m ] [ -o JSON ] [ -t ] [ -V ] [ -y ] [ -z ]\n"
 msgstr ""
 
-#: tapestat.c:273
+#: tapestat.c:290
 #, c-format
 msgid "No tape drives with statistics found\n"
 msgstr ""
diff -pruN 12.7.5-2/pcp_def_metrics.c 12.7.7-0ubuntu2/pcp_def_metrics.c
--- 12.7.5-2/pcp_def_metrics.c	2023-11-12 10:15:36.000000000 +0000
+++ 12.7.7-0ubuntu2/pcp_def_metrics.c	2025-02-02 07:33:58.000000000 +0000
@@ -1,6 +1,6 @@
 /*
  * pcp_def_metrics.c: Functions used by sadf to define PCP metrics
- * (C) 2019-2023 by Sebastien GODARD (sysstat <at> orange.fr)
+ * (C) 2019-2025 by Sebastien GODARD (sysstat <at> orange.fr)
  *
  ***************************************************************************
  * This program is free software; you can redistribute it and/or modify it *
@@ -19,7 +19,6 @@
  ***************************************************************************
  */
 
-#include "common.h"
 #include "sa.h"
 
 #ifdef HAVE_PCP
@@ -269,7 +268,7 @@ void pcp_def_pwr_cpufreq_metrics(pmInDom
 #endif /* HAVE_PCP */
 
 /*
- ***********************************************global****************************
+ ***************************************************************************
  * Define PCP metrics for CPU related statistics.
  *
  * IN:
@@ -288,9 +287,9 @@ void pcp_def_cpu_metrics(struct activity
 		/*
 		 * Should current CPU (including CPU "all") be displayed?
 		 * NB: Offline not tested (they may be turned off and on within
-		 * the same file.
+		 * the same file).
 		 */
-		if (!(a->bitmap->b_array[i >> 3] & (1 << (i & 0x07))))
+		if (!IS_CPU_SELECTED(a->bitmap->b_array, i))
 			/* CPU not selected */
 			continue;
 
diff -pruN 12.7.5-2/pcp_def_metrics.h 12.7.7-0ubuntu2/pcp_def_metrics.h
--- 12.7.5-2/pcp_def_metrics.h	2023-05-06 16:26:53.000000000 +0000
+++ 12.7.7-0ubuntu2/pcp_def_metrics.h	2025-02-02 07:33:59.000000000 +0000
@@ -1,6 +1,6 @@
 /*
  * pcp_def_metrics.h: Include file used to define PCP metrics.
- * (C) 2019-2023 by Sebastien Godard (sysstat <at> orange.fr)
+ * (C) 2019-2025 by Sebastien Godard (sysstat <at> orange.fr)
  */
 
 #ifndef _PCP_DEF_METRICS_H
diff -pruN 12.7.5-2/pcp_stats.c 12.7.7-0ubuntu2/pcp_stats.c
--- 12.7.5-2/pcp_stats.c	2023-11-12 10:16:25.000000000 +0000
+++ 12.7.7-0ubuntu2/pcp_stats.c	2025-02-02 07:33:58.000000000 +0000
@@ -1,6 +1,6 @@
 /*
  * pcp_stats.c: Functions used by sadf to create PCP archive files.
- * (C) 2019-2023 by Sebastien GODARD (sysstat <at> orange.fr)
+ * (C) 2019-2025 by Sebastien GODARD (sysstat <at> orange.fr)
  *
  ***************************************************************************
  * This program is free software; you can redistribute it and/or modify it *
@@ -78,8 +78,8 @@ __print_funct_t pcp_print_cpu_stats(stru
 	for (i = 0; (i < a->nr_ini) && (i < a->bitmap->b_size + 1); i++) {
 
 		/* Should current CPU (including CPU "all") be displayed? */
-		if (!(a->bitmap->b_array[i >> 3] & (1 << (i & 0x07))) ||
-		    offline_cpu_bitmap[i >> 3] & (1 << (i & 0x07)))
+		if (!IS_CPU_SELECTED(a->bitmap->b_array, i) ||
+		    IS_CPU_OFFLINE(offline_cpu_bitmap, i))
 			/* Don't display CPU */
 			continue;
 
@@ -231,7 +231,7 @@ __print_funct_t pcp_print_irq_stats(stru
 										  + i * a->msize);
 
 			/* Should current CPU (including CPU "all") be processed? */
-			if (masked_cpu_bitmap[c >> 3] & (1 << (c & 0x07)))
+			if (IS_CPU_SET(masked_cpu_bitmap, c))
 				/* No */
 				continue;
 
@@ -1501,7 +1501,7 @@ __print_funct_t pcp_print_pwr_cpufreq_st
 		spc = (struct stats_pwr_cpufreq *) ((char *) a->buf[curr] + i * a->msize);
 
 		/* Should current CPU (including CPU "all") be displayed? */
-		if (!(a->bitmap->b_array[i >> 3] & (1 << (i & 0x07))))
+		if (!IS_CPU_SELECTED(a->bitmap->b_array, i))
 			/* No */
 			continue;
 
@@ -1832,8 +1832,8 @@ __print_funct_t pcp_print_softnet_stats(
 	for (i = 0; (i < a->nr_ini) && (i < a->bitmap->b_size + 1); i++) {
 
 		/* Should current CPU (including CPU "all") be displayed? */
-		if (!(a->bitmap->b_array[i >> 3] & (1 << (i & 0x07))) ||
-		    offline_cpu_bitmap[i >> 3] & (1 << (i & 0x07)))
+		if (!IS_CPU_SELECTED(a->bitmap->b_array, i) ||
+		    IS_CPU_OFFLINE(offline_cpu_bitmap, i))
 			/* No */
 			continue;
 
diff -pruN 12.7.5-2/pcp_stats.h 12.7.7-0ubuntu2/pcp_stats.h
--- 12.7.5-2/pcp_stats.h	2023-05-06 16:26:53.000000000 +0000
+++ 12.7.7-0ubuntu2/pcp_stats.h	2025-02-02 07:33:59.000000000 +0000
@@ -1,6 +1,6 @@
 /*
  * pcp_stats.h: Include file used to display system statistics in PCP format.
- * (C) 2019-2023 by Sebastien Godard (sysstat <at> orange.fr)
+ * (C) 2019-2025 by Sebastien Godard (sysstat <at> orange.fr)
  */
 
 #ifndef _PCP_STATS_H
diff -pruN 12.7.5-2/pidstat.c 12.7.7-0ubuntu2/pidstat.c
--- 12.7.5-2/pidstat.c	2023-11-02 16:38:42.000000000 +0000
+++ 12.7.7-0ubuntu2/pidstat.c	2025-02-02 07:33:58.000000000 +0000
@@ -1,6 +1,6 @@
 /*
  * pidstat: Report statistics for Linux tasks
- * (C) 2007-2023 by Sebastien GODARD (sysstat <at> orange.fr)
+ * (C) 2007-2025 by Sebastien GODARD (sysstat <at> orange.fr)
  *
  ***************************************************************************
  * This program is free software; you can redistribute it and/or modify it *
@@ -42,8 +42,8 @@
 #include "rd_stats.h"
 #include "count.h"
 
+#include <locale.h>	/* For setlocale() */
 #ifdef USE_NLS
-#include <locale.h>
 #include <libintl.h>
 #define _(string) gettext(string)
 #else
@@ -75,6 +75,7 @@ long count = 0;
 unsigned int pidflag = 0;	/* General flags */
 unsigned int tskflag = 0;	/* TASK/CHILD stats */
 unsigned int actflag = 0;	/* Activity flag */
+uint64_t xflags = 0;		/* Extended flag for options used by multiple commands */
 
 struct sigaction alrm_act, int_act, chld_act;
 int signal_caught = 0;
@@ -99,7 +100,7 @@ void usage(char *progname)
 			  "[ -d ] [ -H ] [ -h ] [ -I ] [ -l ] [ -R ] [ -r ] [ -s ] [ -t ] [ -U [ <username> ] ]\n"
 			  "[ -u ] [ -V ] [ -v ] [ -w ] [ -C <command> ] [ -G <process_name> ]\n"
 			  "[ -p { <pid> [,...] | SELF | ALL } ] [ -T { TASK | CHILD | ALL } ]\n"
-			  "[ --dec={ 0 | 1 | 2 } ] [ --human ]\n"));
+			  "[ --dec={ 0 | 1 | 2 } ] [ --human ] [ -o JSON ]\n"));
 	exit(1);
 }
 
@@ -400,6 +401,34 @@ void print_comm(struct st_pid *plist)
 }
 
 /*
+ * **************************************************************************
+ * Display process command name or command line in JSON format.
+ *
+ * IN:
+ * @plist	Pointer address on the start of the linked list.
+ ***************************************************************************
+ */
+void print_json_comm(struct st_pid *plist)
+{
+	char *p;
+
+	/* Get pointer on task's command string */
+	p = get_tcmd(plist);
+
+	if (DISPLAY_TID(pidflag)) {
+		/* This is a TID */
+		printf("\"leader\": \"");
+		if (plist->tgid) {
+			/* Print thead group leader command then task one */
+			printf("%s", plist->tgid->comm);
+		} /* else this is a PID (TGID) */
+
+		printf("\", ");
+	}
+	printf("\"cmd\": \"%s\"}", p);
+}
+
+/*
  ***************************************************************************
  * Read /proc/meminfo.
  ***************************************************************************
@@ -1247,13 +1276,22 @@ void __print_line_id(struct st_pid *plis
 	}
 
 	if (DISPLAY_TID(pidflag)) {
-
 		if (plist->tgid) {
 			/* This is a TID */
 			if (IS_PID_DISPLAYED(plist->tgid->flags)) {
+				/*
+				 * Its TGID has previously been displayed.
+				 * We can just display a dash for the TGID then
+				 * the TID number, i.e. "   -     <TID> "
+				 */
 				sprintf(format, "         %c %%9u", c);
 			}
 			else {
+				/*
+				 * Its TGID didn't meet the conditions to be displayed.
+				 * So we have to specify to which TGID the current TID is
+				 * linked, i.e. " <TGID>   <TID> "
+				 */
 				strcpy(format, " %9u");
 				cprintf_in(IS_INT, format, "", plist->tgid->pid);
 			}
@@ -1286,6 +1324,285 @@ void print_line_id(char *timestamp, stru
 }
 
 /*
+ * **************************************************************************
+ * Display UID/username, PID and TID in JSON format.
+ *
+ * IN:
+ * @tab		Number of tabs to print.
+ * @plist	Pointer on the linked list where PID is saved.
+ ***************************************************************************
+ */
+void print_json_line_id(int tab, struct st_pid *plist)
+{
+	char format[32];
+	struct passwd *pwdent;
+
+	xprintf0(tab, "{\"");
+
+	if (DISPLAY_USERNAME(pidflag)) {
+		printf("USER");
+	}
+	else {
+		printf("UID");
+	}
+	printf("\": \"");
+
+	if (DISPLAY_USERNAME(pidflag) && ((pwdent = __getpwuid(plist->uid)) != NULL)) {
+		printf("%s", pwdent->pw_name);
+	}
+	else {
+		printf("%d", plist->uid);
+	}
+	printf("\", \"");
+
+	if (DISPLAY_TID(pidflag)) {
+		printf("TGID");
+	}
+	else {
+		printf("PID");
+	}
+	printf("\": \"");
+
+	strcpy(format, "%u");
+	if (DISPLAY_TID(pidflag)) {
+		if (plist->tgid) {
+			/* This is a TID */
+			printf("%u\", \"TID\": \"", plist->tgid->pid);
+		}
+		else {
+			/* This is a PID (TGID) */
+			strcpy(format, "%u\", \"TID\": \"");
+		}
+	}
+
+	printf(format, plist->pid);
+	printf("\", ");
+}
+
+/*
+ * **************************************************************************
+ * Display CPU statistics data for current task.
+ *
+ * IN:
+ * @disp_avg	TRUE if average stats are displayed.
+ * @pstc	Pointer on current statistics data sample for current process.
+ * @pstp	Pointer on previous statistics data sampe for current process.
+ * @itv		Interval of time in 1/100th of a second.
+ * @deltot_jiffies
+ *		Number of jiffies spent on the interval by all processors.
+ ***************************************************************************
+ */
+void write_plain_pid_task_cpu_data(int disp_avg,
+				   struct pid_stats *pstc, struct pid_stats *pstp,
+				   unsigned long long itv,
+				   unsigned long long deltot_jiffies)
+{
+	cprintf_xpc(DISPLAY_UNIT(pidflag), XHIGH, 5, 7, 2,
+		    (pstc->utime - pstc->gtime) < (pstp->utime - pstp->gtime) ||
+		    (pstc->utime < pstc->gtime) || (pstp->utime < pstp->gtime) ?
+		    0.0 :
+		    SP_VALUE(pstp->utime - pstp->gtime,
+			     pstc->utime - pstc->gtime, itv * HZ / 100),
+		    SP_VALUE(pstp->stime, pstc->stime, itv * HZ / 100),
+		    SP_VALUE(pstp->gtime, pstc->gtime, itv * HZ / 100),
+		    SP_VALUE(pstp->wtime, pstc->wtime, itv * HZ / 100),
+		    /* User time already includes guest time */
+		    IRIX_MODE_OFF(pidflag) ?
+		    SP_VALUE(pstp->utime + pstp->stime,
+			     pstc->utime + pstc->stime, deltot_jiffies) :
+			     SP_VALUE(pstp->utime + pstp->stime,
+				      pstc->utime + pstc->stime, itv * HZ / 100));
+
+	if (!disp_avg) {
+		cprintf_in(IS_INT, "   %3d", "", pstc->processor);
+	}
+	else {
+		cprintf_in(IS_STR, "%s", "     -", 0);
+	}
+}
+
+/*
+ * **************************************************************************
+ * Display memory statistics data for current task.
+ *
+ * IN:
+ * @disp_avg	TRUE if average stats are displayed.
+ * @plist	Pointer on current process in list.
+ * @pstc	Pointer on current statistics data sample for current process.
+ * @pstp	Pointer on previous statistics data sampe for current process.
+ * @itv		Interval of time in 1/100th of a second.
+ ***************************************************************************
+ */
+void write_plain_pid_task_memory_data(int disp_avg, struct st_pid *plist,
+				      struct pid_stats *pstc, struct pid_stats *pstp,
+				      unsigned long long itv)
+{
+	cprintf_f(NO_UNIT, FALSE, 2, 9, 2,
+		  S_VALUE(pstp->minflt, pstc->minflt, itv),
+		  S_VALUE(pstp->majflt, pstc->majflt, itv));
+
+	if (disp_avg) {
+		cprintf_f(DISPLAY_UNIT(pidflag) ? UNIT_KILOBYTE : NO_UNIT, FALSE, 2, 7, 0,
+			  (double) plist->total_vsz / plist->rt_asum_count,
+			  (double) plist->total_rss / plist->rt_asum_count);
+
+		cprintf_xpc(DISPLAY_UNIT(pidflag), XHIGH, 1, 6, 2,
+			    tlmkb ?
+			    SP_VALUE(0, plist->total_rss / plist->rt_asum_count, tlmkb)
+			    : 0.0);
+	}
+	else {
+		cprintf_u64(DISPLAY_UNIT(pidflag) ? UNIT_KILOBYTE : NO_UNIT, 2, 7,
+			    (unsigned long long) pstc->vsz,
+			    (unsigned long long) pstc->rss);
+
+		cprintf_xpc(DISPLAY_UNIT(pidflag), XHIGH, 1, 6, 2,
+			    tlmkb ? SP_VALUE(0, pstc->rss, tlmkb) : 0.0);
+	}
+}
+
+/*
+ * **************************************************************************
+ * Display stack size statistics data for current task.
+ *
+ * IN:
+ * @disp_avg	TRUE if average stats are displayed.
+ * @plist	Pointer on current process in list.
+ * @pstc	Pointer on current statistics data sample for current process.
+ ***************************************************************************
+ */
+void write_plain_pid_stack_data(int disp_avg, struct st_pid *plist,
+				struct pid_stats *pstc)
+{
+	if (disp_avg) {
+		cprintf_f(DISPLAY_UNIT(pidflag) ? UNIT_KILOBYTE : NO_UNIT, FALSE, 2, 7, 0,
+			  (double) plist->total_stack_size / plist->sk_asum_count,
+			  (double) plist->total_stack_ref  / plist->sk_asum_count);
+	}
+	else {
+		cprintf_u64(DISPLAY_UNIT(pidflag) ? UNIT_KILOBYTE : NO_UNIT, 2, 7,
+			    (unsigned long long) pstc->stack_size,
+			    (unsigned long long) pstc->stack_ref);
+	}
+}
+
+/*
+ * **************************************************************************
+ * Display I/O statistics data for current task.
+ *
+ * IN:
+ * @disp_avg	TRUE if average stats are displayed.
+ * @plist	Pointer on current process in list.
+ * @pstc	Pointer on current statistics data sample for current process.
+ * @pstp	Pointer on previous statistics data sampe for current process.
+ * @itv		Interval of time in 1/100th of a second.
+ ***************************************************************************
+ */
+void write_plain_pid_io_data(int disp_avg, struct st_pid *plist,
+			     struct pid_stats *pstc, struct pid_stats *pstp,
+			     unsigned long long itv)
+{
+	char dstr[32];
+	double rbytes, wbytes, cbytes;
+
+	if (!NO_PID_IO(plist->flags)) {
+		rbytes = S_VALUE(pstp->read_bytes,  pstc->read_bytes, itv);
+		wbytes = S_VALUE(pstp->write_bytes, pstc->write_bytes, itv);
+		cbytes = S_VALUE(pstp->cancelled_write_bytes,
+				 pstc->cancelled_write_bytes, itv);
+		if (!DISPLAY_UNIT(pidflag)) {
+			rbytes /= 1024;
+			wbytes /= 1024;
+			cbytes /= 1024;
+		}
+		cprintf_f(DISPLAY_UNIT(pidflag) ? UNIT_BYTE : NO_UNIT, FALSE, 3, 9, 2,
+			  rbytes, wbytes, cbytes);
+	}
+	else {
+		/* I/O file not readable (permission denied or file non existent) */
+		sprintf(dstr, " %9.2f %9.2f %9.2f", -1.0, -1.0, -1.0);
+		cprintf_s(IS_ZERO, "%s", dstr);
+	}
+	/* I/O delays come from another file (/proc/#/stat) */
+	if (disp_avg) {
+		cprintf_f(NO_UNIT, FALSE, 1, 7, 0,
+			  (double) (pstc->blkio_swapin_delays - pstp->blkio_swapin_delays) /
+			  plist->delay_asum_count);
+	}
+	else {
+		cprintf_u64(NO_UNIT, 1, 7,
+			    (unsigned long long) (pstc->blkio_swapin_delays - pstp->blkio_swapin_delays));
+	}
+}
+
+/*
+ * **************************************************************************
+ * Display context switches statistics data for current task.
+ *
+ * IN:
+ * @pstc	Pointer on current statistics data sample for current process.
+ * @pstp	Pointer on previous statistics data sampe for current process.
+ * @itv		Interval of time in 1/100th of a second.
+ ***************************************************************************
+ */
+void write_plain_pid_ctxswitch_data(struct pid_stats *pstc, struct pid_stats *pstp,
+				    unsigned long long itv)
+{
+	cprintf_f(NO_UNIT, FALSE, 2, 9, 2,
+		  S_VALUE(pstp->nvcsw,  pstc->nvcsw,  itv),
+		  S_VALUE(pstp->nivcsw, pstc->nivcsw, itv));
+}
+
+/*
+ * **************************************************************************
+ * Display some kernel tables values for current task.
+ *
+ * IN:
+ * @disp_avg	TRUE if average stats are displayed.
+ * @plist	Pointer on current process in list.
+ * @pstc	Pointer on current statistics data sample for current process.
+ ***************************************************************************
+ */
+void write_plain_pid_ktab_data(int disp_avg, struct st_pid *plist,
+			       struct pid_stats *pstc)
+{
+	if (disp_avg) {
+		cprintf_f(NO_UNIT, FALSE, 2, 7, 0,
+			  (double) plist->total_threads / plist->tf_asum_count,
+			  NO_PID_FD(plist->flags) ?
+			  -1.0 :
+			  (double) plist->total_fd_nr / plist->tf_asum_count);
+	}
+	else {
+		cprintf_u64(NO_UNIT, 1, 7,
+			    (unsigned long long) pstc->threads);
+		if (NO_PID_FD(plist->flags)) {
+			/* /proc/#/fd directory not readable */
+			cprintf_s(IS_ZERO, " %7s", "-1");
+		}
+		else {
+			cprintf_u64(NO_UNIT, 1, 7,
+				    (unsigned long long) pstc->fd_nr);
+		}
+	}
+}
+
+/*
+ * **************************************************************************
+ * Display scheduling priority and policy information for current task.
+ *
+ * IN:
+ * @pstc	Pointer on current statistics data sample for current process.
+ ***************************************************************************
+ */
+void write_plain_pid_rt_data(struct pid_stats *pstc)
+{
+	cprintf_u64(NO_UNIT, 1, 4,
+		    (unsigned long long) pstc->priority);
+	cprintf_s(IS_STR, " %6s", GET_POLICY(pstc->policy));
+}
+
+/*
  ***************************************************************************
  * Display all statistics for tasks in one line format.
  *
@@ -1313,7 +1630,6 @@ int write_pid_task_all_stats(int prev, i
 {
 	struct pid_stats *pstc, *pstp;
 	struct st_pid *plist;
-	char dstr[32];
 	int again = 0;
 
 	if (dis) {
@@ -1353,94 +1669,33 @@ int write_pid_task_all_stats(int prev, i
 		pstp = plist->pstats[prev];
 
 		if (DISPLAY_CPU(actflag)) {
-			cprintf_xpc(DISPLAY_UNIT(pidflag), XHIGH, 5, 7, 2,
-				   (pstc->utime - pstc->gtime) < (pstp->utime - pstp->gtime) ?
-				   0.0 :
-				   SP_VALUE(pstp->utime - pstp->gtime,
-					    pstc->utime - pstc->gtime, itv * HZ / 100),
-				   SP_VALUE(pstp->stime,  pstc->stime, itv * HZ / 100),
-				   SP_VALUE(pstp->gtime,  pstc->gtime, itv * HZ / 100),
-				   SP_VALUE(pstp->wtime,  pstc->wtime, itv * HZ / 100),
-				   /* User time already includes guest time */
-				   IRIX_MODE_OFF(pidflag) ?
-				   SP_VALUE(pstp->utime + pstp->stime,
-					    pstc->utime + pstc->stime, deltot_jiffies) :
-				   SP_VALUE(pstp->utime + pstp->stime,
-					    pstc->utime + pstc->stime, itv * HZ / 100));
-
-			cprintf_in(IS_INT, "   %3d", "", pstc->processor);
+			write_plain_pid_task_cpu_data(FALSE, pstc, pstp, itv,
+						      deltot_jiffies);
 		}
 
 		if (DISPLAY_MEM(actflag)) {
-			cprintf_f(NO_UNIT, FALSE, 2, 9, 2,
-				  S_VALUE(pstp->minflt, pstc->minflt, itv),
-				  S_VALUE(pstp->majflt, pstc->majflt, itv));
-			cprintf_u64(DISPLAY_UNIT(pidflag) ? UNIT_KILOBYTE : NO_UNIT, 2, 7,
-				    (unsigned long long) pstc->vsz,
-				    (unsigned long long) pstc->rss);
-			cprintf_xpc(DISPLAY_UNIT(pidflag), XHIGH, 1, 6, 2,
-				   tlmkb ? SP_VALUE(0, pstc->rss, tlmkb) : 0.0);
+			write_plain_pid_task_memory_data(FALSE, plist,
+							 pstc, pstp, itv);
 		}
 
 		if (DISPLAY_STACK(actflag)) {
-			cprintf_u64(DISPLAY_UNIT(pidflag) ? UNIT_KILOBYTE : NO_UNIT, 2, 7,
-				    (unsigned long long) pstc->stack_size,
-				    (unsigned long long) pstc->stack_ref);
+			write_plain_pid_stack_data(FALSE, plist, pstc);
 		}
 
 		if (DISPLAY_IO(actflag)) {
-			if (!NO_PID_IO(plist->flags))
-			{
-				double rbytes, wbytes, cbytes;
-
-				rbytes = S_VALUE(pstp->read_bytes,  pstc->read_bytes, itv);
-				wbytes = S_VALUE(pstp->write_bytes, pstc->write_bytes, itv);
-				cbytes = S_VALUE(pstp->cancelled_write_bytes,
-						 pstc->cancelled_write_bytes, itv);
-				if (!DISPLAY_UNIT(pidflag)) {
-					rbytes /= 1024;
-					wbytes /= 1024;
-					cbytes /= 1024;
-				}
-				cprintf_f(DISPLAY_UNIT(pidflag) ? UNIT_BYTE : NO_UNIT, FALSE, 3, 9, 2,
-					  rbytes, wbytes, cbytes);
-			}
-			else {
-				/*
-				 * Keep the layout even though this task has no I/O
-				 * typically threads with no I/O measurements.
-				 */
-				sprintf(dstr, " %9.2f %9.2f %9.2f", -1.0, -1.0, -1.0);
-				cprintf_s(IS_ZERO, "%s", dstr);
-			}
-			/* I/O delays come from another file (/proc/#/stat) */
-			cprintf_u64(NO_UNIT, 1, 7,
-				    (unsigned long long) (pstc->blkio_swapin_delays - pstp->blkio_swapin_delays));
+			write_plain_pid_io_data(FALSE, plist, pstc, pstp, itv);
 		}
 
 		if (DISPLAY_CTXSW(actflag)) {
-			cprintf_f(NO_UNIT, FALSE, 2, 9, 2,
-				  S_VALUE(pstp->nvcsw, pstc->nvcsw, itv),
-				  S_VALUE(pstp->nivcsw, pstc->nivcsw, itv));
+			write_plain_pid_ctxswitch_data(pstc, pstp, itv);
 		}
 
 		if (DISPLAY_KTAB(actflag)) {
-			cprintf_u64(NO_UNIT, 1, 7,
-				    (unsigned long long) pstc->threads);
-			if (NO_PID_FD(plist->flags)) {
-				/* /proc/#/fd directory not readable */
-				cprintf_s(IS_ZERO, " %7s", "-1");
-			}
-			else {
-				cprintf_u64(NO_UNIT, 1, 7, (unsigned long long) pstc->fd_nr);
-			}
+			write_plain_pid_ktab_data(FALSE, plist, pstc);
 		}
 
 		if (DISPLAY_RT(actflag)) {
-			cprintf_u64(NO_UNIT, 1, 4,
-				    (unsigned long long) pstc->priority);
-			cprintf_s(IS_STR, " %6s",
-				  GET_POLICY(pstc->policy));
+			write_plain_pid_rt_data(pstc);
 		}
 
 		print_comm(plist);
@@ -1451,6 +1706,82 @@ int write_pid_task_all_stats(int prev, i
 }
 
 /*
+ * **************************************************************************
+ * Display CPU statistics for the children of current task.
+ *
+ * IN:
+ * @disp_avg	TRUE if average stats are displayed.
+ * @plist	Pointer on current process in list.
+ * @pstc	Pointer on current statistics data sample for current process.
+ * @pstp	Pointer on previous statistics data sampe for current process.
+ ***************************************************************************
+ */
+void write_plain_pid_child_cpu_data(int disp_avg, struct st_pid *plist,
+				    struct pid_stats *pstc, struct pid_stats *pstp)
+{
+	if (disp_avg) {
+		cprintf_f(NO_UNIT, FALSE, 3, 9, 0,
+			  (pstc->utime + pstc->cutime - pstc->gtime - pstc->cgtime) <
+			  (pstp->utime + pstp->cutime - pstp->gtime - pstp->cgtime) ||
+			  (pstc->utime + pstc->cutime < pstc->gtime + pstc->cgtime) ||
+			  (pstp->utime + pstp->cutime < pstp->gtime + pstp->cgtime) ?
+			  0.0 :
+			  (double) ((pstc->utime + pstc->cutime - pstc->gtime - pstc->cgtime) -
+				    (pstp->utime + pstp->cutime - pstp->gtime - pstp->cgtime)) /
+				   (HZ * plist->uc_asum_count) * 1000,
+			  (double) ((pstc->stime + pstc->cstime) -
+				    (pstp->stime + pstp->cstime)) /
+				   (HZ * plist->uc_asum_count) * 1000,
+			  (double) ((pstc->gtime + pstc->cgtime) -
+				    (pstp->gtime + pstp->cgtime)) /
+				   (HZ * plist->uc_asum_count) * 1000);
+	}
+	else {
+		cprintf_f(NO_UNIT, FALSE, 3, 9, 0,
+			  (pstc->utime + pstc->cutime - pstc->gtime - pstc->cgtime) <
+			  (pstp->utime + pstp->cutime - pstp->gtime - pstp->cgtime) ||
+			  (pstc->utime + pstc->cutime < pstc->gtime + pstc->cgtime) ||
+			  (pstp->utime + pstp->cutime < pstp->gtime + pstp->cgtime) ?
+			  0.0 :
+			  (double) ((pstc->utime + pstc->cutime - pstc->gtime - pstc->cgtime) -
+				    (pstp->utime + pstp->cutime - pstp->gtime - pstp->cgtime)) /
+				   HZ * 1000,
+			  (double) ((pstc->stime + pstc->cstime) -
+				    (pstp->stime + pstp->cstime)) / HZ * 1000,
+			  (double) ((pstc->gtime + pstc->cgtime) -
+				    (pstp->gtime + pstp->cgtime)) / HZ * 1000);
+	}
+}
+
+/*
+ * **************************************************************************
+ * Display memory statistics for the children of current task.
+ *
+ * IN:
+ * @disp_avg	TRUE if average stats are displayed.
+ * @plist	Pointer on current process in list.
+ * @pstc	Pointer on current statistics data sample for current process.
+ * @pstp	Pointer on previous statistics data sampe for current process.
+ ***************************************************************************
+ */
+void write_plain_pid_child_memory_data(int disp_avg, struct st_pid *plist,
+				       struct pid_stats *pstc, struct pid_stats *pstp)
+{
+	if (disp_avg) {
+		cprintf_f(NO_UNIT, FALSE, 2, 9, 0,
+			  (double) ((pstc->minflt + pstc->cminflt) -
+				    (pstp->minflt + pstp->cminflt)) / plist->rc_asum_count,
+			  (double) ((pstc->majflt + pstc->cmajflt) -
+				    (pstp->majflt + pstp->cmajflt)) / plist->rc_asum_count);
+	}
+	else {
+		cprintf_u64(NO_UNIT, 2, 9,
+			    (unsigned long long) ((pstc->minflt + pstc->cminflt) - (pstp->minflt + pstp->cminflt)),
+			    (unsigned long long) ((pstc->majflt + pstc->cmajflt) - (pstp->majflt + pstp->cmajflt)));
+	}
+}
+
+/*
  ***************************************************************************
  * Display all statistics for tasks' children in one line format.
  *
@@ -1495,23 +1826,11 @@ int write_pid_child_all_stats(int prev,
 		pstp = plist->pstats[prev];
 
 		if (DISPLAY_CPU(actflag)) {
-			cprintf_f(NO_UNIT, FALSE, 3, 9, 0,
-				  (pstc->utime + pstc->cutime - pstc->gtime - pstc->cgtime) <
-				  (pstp->utime + pstp->cutime - pstp->gtime - pstp->cgtime) ?
-				  0.0 :
-				  (double) ((pstc->utime + pstc->cutime - pstc->gtime - pstc->cgtime) -
-					    (pstp->utime + pstp->cutime - pstp->gtime - pstp->cgtime)) /
-					    HZ * 1000,
-				  (double) ((pstc->stime + pstc->cstime) -
-					    (pstp->stime + pstp->cstime)) / HZ * 1000,
-				  (double) ((pstc->gtime + pstc->cgtime) -
-					    (pstp->gtime + pstp->cgtime)) / HZ * 1000);
+			write_plain_pid_child_cpu_data(FALSE, plist, pstc, pstp);
 		}
 
 		if (DISPLAY_MEM(actflag)) {
-			cprintf_u64(NO_UNIT, 2, 9,
-				    (unsigned long long) ((pstc->minflt + pstc->cminflt) - (pstp->minflt + pstp->cminflt)),
-				    (unsigned long long) ((pstc->majflt + pstc->cmajflt) - (pstp->majflt + pstp->cmajflt)));
+			write_plain_pid_child_memory_data(FALSE, plist, pstc, pstp);
 		}
 
 		print_comm(plist);
@@ -1545,10 +1864,10 @@ int write_pid_child_all_stats(int prev,
  * <> 0 if there are still some processes left to display.
  ***************************************************************************
  */
-int write_pid_task_cpu_stats(int prev, int curr, int dis, int disp_avg,
-			     char *prev_string, char *curr_string,
-			     unsigned long long itv,
-			     unsigned long long deltot_jiffies)
+int write_plain_pid_task_cpu_stats(int prev, int curr, int dis, int disp_avg,
+				   char *prev_string, char *curr_string,
+				   unsigned long long itv,
+				   unsigned long long deltot_jiffies)
 {
 	struct pid_stats *pstc, *pstp;
 	struct st_pid *plist;
@@ -1569,27 +1888,10 @@ int write_pid_task_cpu_stats(int prev, i
 		pstc = plist->pstats[curr];
 		pstp = plist->pstats[prev];
 
-		cprintf_xpc(DISPLAY_UNIT(pidflag), XHIGH, 5, 7, 2,
-			   (pstc->utime - pstc->gtime) < (pstp->utime - pstp->gtime) ?
-			   0.0 :
-			   SP_VALUE(pstp->utime - pstp->gtime,
-				    pstc->utime - pstc->gtime, itv * HZ / 100),
-			   SP_VALUE(pstp->stime, pstc->stime, itv * HZ / 100),
-			   SP_VALUE(pstp->gtime, pstc->gtime, itv * HZ / 100),
-			   SP_VALUE(pstp->wtime, pstc->wtime, itv * HZ / 100),
-			   /* User time already includes guest time */
-			   IRIX_MODE_OFF(pidflag) ?
-			   SP_VALUE(pstp->utime + pstp->stime,
-				    pstc->utime + pstc->stime, deltot_jiffies) :
-			   SP_VALUE(pstp->utime + pstp->stime,
-				    pstc->utime + pstc->stime, itv * HZ / 100));
+		/* Write current process data */
+		write_plain_pid_task_cpu_data(disp_avg, pstc, pstp, itv,
+					      deltot_jiffies);
 
-		if (!disp_avg) {
-			cprintf_in(IS_INT, "   %3d", "", pstc->processor);
-		}
-		else {
-			cprintf_in(IS_STR, "%s", "     -", 0);
-		}
 		print_comm(plist);
 		again = 1;
 	}
@@ -1598,6 +1900,132 @@ int write_pid_task_cpu_stats(int prev, i
 }
 
 /*
+ * **************************************************************************
+ * Display CPU statistics for tasks.
+ *
+ * IN:
+ * @tab		Number of tabs to print.
+ * @prev	Index in array where stats used as reference are.
+ * @curr	Index in array for current sample statistics.
+ * @itv		Interval of time in 1/100th of a second.
+ * @deltot_jiffies
+ *		Number of jiffies spent on the interval by all processors.
+ * @follow	True if a previous set of stats has been displayed and should
+ *		be followed by a coma.
+ *
+ * OUT:
+ * @follow	Set to TRUE to indicate that a coma should be displayed
+ *		before next set of stats (if any).
+ *
+ * RETURNS:
+ * 0 if all the processes to display have terminated.
+ * <> 0 if there are still some processes left to display.
+ ***************************************************************************
+ */
+int write_json_pid_task_cpu_stats(int tab, int prev, int curr, unsigned long long itv,
+				  unsigned long long deltot_jiffies, int *follow)
+{
+	struct pid_stats *pstc, *pstp;
+	struct st_pid *plist;
+	int again = 0, next = FALSE;
+
+	if (*follow) {
+		printf(",\n");
+	}
+	xprintf(tab++, "\"task-cpu-load\": [");
+
+	for (plist = pid_list; plist != NULL; plist = plist->next) {
+
+		if (get_pid_to_display(prev, curr, P_A_CPU, P_TASK, plist) <= 0)
+			continue;
+
+		if (next) {
+			printf(",\n");
+		}
+		next = TRUE;
+
+		print_json_line_id(tab, plist);
+
+		pstc = plist->pstats[curr];
+		pstp = plist->pstats[prev];
+
+		printf("\"usr\": %.2f, \"system\": %.2f, \"guest\": %.2f, \"wait\": %.2f, "
+		       "\"cpu\": %.2f, \"cpu_nr\": %d, ",
+		       (pstc->utime - pstc->gtime) < (pstp->utime - pstp->gtime) ||
+		       (pstc->utime < pstc->gtime) || (pstp->utime < pstp->gtime) ?
+		       0.0 :
+		       SP_VALUE(pstp->utime - pstp->gtime,
+				pstc->utime - pstc->gtime, itv * HZ / 100),
+		       SP_VALUE(pstp->stime, pstc->stime, itv * HZ / 100),
+		       SP_VALUE(pstp->gtime, pstc->gtime, itv * HZ / 100),
+		       SP_VALUE(pstp->wtime, pstc->wtime, itv * HZ / 100),
+		       /* User time already includes guest time */
+		       IRIX_MODE_OFF(pidflag) ?
+		       SP_VALUE(pstp->utime + pstp->stime,
+				pstc->utime + pstc->stime, deltot_jiffies) :
+		       SP_VALUE(pstp->utime + pstp->stime,
+				 pstc->utime + pstc->stime, itv * HZ / 100),
+		       pstc->processor);
+
+		print_json_comm(plist);
+		again = 1;
+	}
+
+	printf("\n");
+	xprintf0(--tab, "]");
+	*follow = TRUE;
+
+	return again;
+}
+
+/*
+ * **************************************************************************
+ * Display CPU statistics for tasks.
+ *
+ * IN:
+ * @prev	Index in array where stats used as reference are.
+ * @curr	Index in array for current sample statistics.
+ * @dis		TRUE if a header line must be printed.
+ * @disp_avg	TRUE if average stats are displayed.
+ * @prev_string	String displayed at the beginning of a header line. This is
+ * 		the timestamp of the previous sample, or "Average" when
+ * 		displaying average stats.
+ * @curr_string	String displayed at the beginning of current sample stats.
+ * 		This is the timestamp of the current sample, or "Average"
+ * 		when displaying average stats.
+ * @itv		Interval of time in 1/100th of a second.
+ * @deltot_jiffies
+ *		Number of jiffies spent on the interval by all processors.
+ * @tab		Number of tabs to print (JSON format only).
+ * @follow	True if a previous set of stats has been displayed and should
+ *		be followed by a coma (JSON format only).
+ *
+ * OUT:
+ * @follow	Set to TRUE to indicate that a coma should be displayed
+ *		before next set of stats (if any). JSON format only.
+ *
+ * RETURNS:
+ * 0 if all the processes to display have terminated.
+ * <> 0 if there are still some processes left to display.
+ ***************************************************************************
+ */
+int write_pid_task_cpu_stats(int prev, int curr, int dis, int disp_avg,
+			     char *prev_string, char *curr_string,
+			     unsigned long long itv,
+			     unsigned long long deltot_jiffies, int tab, int *follow)
+{
+	if (DISPLAY_JSON_OUTPUT(xflags)) {
+		return write_json_pid_task_cpu_stats(tab, prev, curr, itv,
+						     deltot_jiffies, follow);
+	}
+	else {
+		return write_plain_pid_task_cpu_stats(prev, curr, dis, disp_avg,
+						      prev_string, curr_string, itv,
+						      deltot_jiffies);
+	}
+}
+
+/*
  ***************************************************************************
  * Display CPU statistics for tasks' children.
  *
@@ -1618,8 +2046,8 @@ int write_pid_task_cpu_stats(int prev, i
  * <> 0 if there are still some processes left to display.
  ***************************************************************************
  */
-int write_pid_child_cpu_stats(int prev, int curr, int dis, int disp_avg,
-			      char *prev_string, char *curr_string)
+int write_plain_pid_child_cpu_stats(int prev, int curr, int dis, int disp_avg,
+				    char *prev_string, char *curr_string)
 {
 	struct pid_stats *pstc, *pstp;
 	struct st_pid *plist;
@@ -1650,34 +2078,9 @@ int write_pid_child_cpu_stats(int prev,
 		pstc = plist->pstats[curr];
 		pstp = plist->pstats[prev];
 
-		if (disp_avg) {
-			cprintf_f(NO_UNIT, FALSE, 3, 9, 0,
-				  (pstc->utime + pstc->cutime - pstc->gtime - pstc->cgtime) <
-				  (pstp->utime + pstp->cutime - pstp->gtime - pstp->cgtime) ?
-				  0.0 :
-				  (double) ((pstc->utime + pstc->cutime - pstc->gtime - pstc->cgtime) -
-					    (pstp->utime + pstp->cutime - pstp->gtime - pstp->cgtime)) /
-					    (HZ * plist->uc_asum_count) * 1000,
-				  (double) ((pstc->stime + pstc->cstime) -
-					    (pstp->stime + pstp->cstime)) /
-					    (HZ * plist->uc_asum_count) * 1000,
-				  (double) ((pstc->gtime + pstc->cgtime) -
-					    (pstp->gtime + pstp->cgtime)) /
-					    (HZ * plist->uc_asum_count) * 1000);
-		}
-		else {
-			cprintf_f(NO_UNIT, FALSE, 3, 9, 0,
-				  (pstc->utime + pstc->cutime - pstc->gtime - pstc->cgtime) <
-				  (pstp->utime + pstp->cutime - pstp->gtime - pstp->cgtime) ?
-				  0.0 :
-				  (double) ((pstc->utime + pstc->cutime - pstc->gtime - pstc->cgtime) -
-					    (pstp->utime + pstp->cutime - pstp->gtime - pstp->cgtime)) /
-					    HZ * 1000,
-				  (double) ((pstc->stime + pstc->cstime) -
-					    (pstp->stime + pstp->cstime)) / HZ * 1000,
-				  (double) ((pstc->gtime + pstc->cgtime) -
-					    (pstp->gtime + pstp->cgtime)) / HZ * 1000);
-		}
+		/* Write data for children of current task */
+		write_plain_pid_child_cpu_data(disp_avg, plist, pstc, pstp);
+
 		print_comm(plist);
 		again = 1;
 	}
@@ -1686,6 +2089,119 @@ int write_pid_child_cpu_stats(int prev,
 }
 
 /*
+ * **************************************************************************
+ * Display CPU statistics for tasks' children in JSON format.
+ *
+ * IN:
+ * @tab		Number of tabs to print.
+ * @prev	Index in array where stats used as reference are.
+ * @curr	Index in array for current sample statistics.
+ * @follow	True if a previous set of stats has been displayed and should
+ *		be followed by a coma.
+ *
+ * OUT:
+ * @follow	Set to TRUE to indicate that a coma should be displayed
+ *		before next set of stats (if any).
+ *
+ * RETURNS:
+ * 0 if all the processes to display have terminated.
+ * <> 0 if there are still some processes left to display.
+ ***************************************************************************
+ */
+int write_json_pid_child_cpu_stats(int tab, int prev, int curr, int *follow)
+{
+	struct pid_stats *pstc, *pstp;
+	struct st_pid *plist;
+	int rc, again = 0, next = FALSE;
+
+	if (*follow) {
+		printf(",\n");
+	}
+	xprintf(tab++, "\"child-cpu-load\": [");
+
+	for (plist = pid_list; plist != NULL; plist = plist->next) {
+
+		if ((rc = get_pid_to_display(prev, curr, P_A_CPU, P_CHILD, plist)) <= 0)
+			/* PID no longer exists or should not be displayed */
+			continue;
+
+		if (next) {
+			printf(",\n");
+		}
+		next = TRUE;
+
+		print_json_line_id(tab, plist);
+
+		pstc = plist->pstats[curr];
+		pstp = plist->pstats[prev];
+
+		printf("\"usr-ms\": %.0f, \"system-ms\": %.0f, \"guest-ms\": %.0f, ",
+		       (pstc->utime + pstc->cutime - pstc->gtime - pstc->cgtime) <
+		       (pstp->utime + pstp->cutime - pstp->gtime - pstp->cgtime) ||
+		       (pstc->utime + pstc->cutime < pstc->gtime + pstc->cgtime) ||
+		       (pstp->utime + pstp->cutime < pstp->gtime + pstp->cgtime) ?
+		       0.0 :
+		       (double) ((pstc->utime + pstc->cutime - pstc->gtime - pstc->cgtime) -
+		       (pstp->utime + pstp->cutime - pstp->gtime - pstp->cgtime)) /
+		       HZ * 1000,
+		       (double) ((pstc->stime + pstc->cstime) -
+				 (pstp->stime + pstp->cstime)) / HZ * 1000,
+		       (double) ((pstc->gtime + pstc->cgtime) -
+				 (pstp->gtime + pstp->cgtime)) / HZ * 1000);
+
+		print_json_comm(plist);
+		again = 1;
+	}
+
+	printf("\n");
+	xprintf0(--tab, "]");
+	*follow = TRUE;
+
+	return again;
+}
+
+/*
+ * **************************************************************************
+ * Display CPU statistics for tasks' children.
+ *
+ * IN:
+ * @prev	Index in array where stats used as reference are.
+ * @curr	Index in array for current sample statistics.
+ * @dis		TRUE if a header line must be printed.
+ * @disp_avg	TRUE if average stats are displayed.
+ * @prev_string	String displayed at the beginning of a header line. This is
+ * 		the timestamp of the previous sample, or "Average" when
+ * 		displaying average stats.
+ * @curr_string	String displayed at the beginning of current sample stats.
+ * 		This is the timestamp of the current sample, or "Average"
+ * 		when displaying average stats.
+ * @tab		Number of tabs to print (JSON format only).
+ * @follow	True if a previous set of stats has been displayed and should
+ *		be followed by a coma (JSON format only).
+ *
+ * OUT:
+ * @follow	Set to TRUE to indicate that a coma should be displayed
+ *		before next set of stats (if any). JSON format only.
+ *
+ * RETURNS:
+ * 0 if all the processes to display have terminated.
+ * <> 0 if there are still some processes left to display.
+ ***************************************************************************
+ */
+int write_pid_child_cpu_stats(int prev, int curr, int dis, int disp_avg,
+			      char *prev_string, char *curr_string, int tab,
+			      int *follow)
+{
+	if (DISPLAY_JSON_OUTPUT(xflags)) {
+		return write_json_pid_child_cpu_stats(tab, prev, curr, follow);
+	}
+	else {
+		return write_plain_pid_child_cpu_stats(prev, curr, dis, disp_avg,
+						       prev_string, curr_string);
+	}
+}
+
+/*
  ***************************************************************************
  * Display memory statistics for tasks.
  *
@@ -1707,9 +2223,9 @@ int write_pid_child_cpu_stats(int prev,
  * <> 0 if there are still some processes left to display.
  ***************************************************************************
  */
-int write_pid_task_memory_stats(int prev, int curr, int dis, int disp_avg,
-				char *prev_string, char *curr_string,
-				unsigned long long itv)
+int write_plain_pid_task_memory_stats(int prev, int curr, int dis, int disp_avg,
+				      char *prev_string, char *curr_string,
+				      unsigned long long itv)
 {
 	struct pid_stats *pstc, *pstp;
 	struct st_pid *plist;
@@ -1742,37 +2258,137 @@ int write_pid_task_memory_stats(int prev
 
 		print_line_id(curr_string, plist);
 
-		cprintf_f(NO_UNIT, FALSE, 2, 9, 2,
-			  S_VALUE(pstp->minflt, pstc->minflt, itv),
-			  S_VALUE(pstp->majflt, pstc->majflt, itv));
-
-		if (disp_avg) {
-			cprintf_f(DISPLAY_UNIT(pidflag) ? UNIT_KILOBYTE : NO_UNIT, FALSE, 2, 7, 0,
-				  (double) plist->total_vsz / plist->rt_asum_count,
-				  (double) plist->total_rss / plist->rt_asum_count);
-
-			cprintf_xpc(DISPLAY_UNIT(pidflag), XHIGH, 1, 6, 2,
-				   tlmkb ?
-				   SP_VALUE(0, plist->total_rss / plist->rt_asum_count, tlmkb)
-				   : 0.0);
-		}
-		else {
-			cprintf_u64(DISPLAY_UNIT(pidflag) ? UNIT_KILOBYTE : NO_UNIT, 2, 7,
-				    (unsigned long long) pstc->vsz,
-				    (unsigned long long) pstc->rss);
+		/* Write current process data */
+		write_plain_pid_task_memory_data(disp_avg, plist,
+						 pstc, pstp, itv);
 
-			cprintf_xpc(DISPLAY_UNIT(pidflag), XHIGH, 1, 6, 2,
-				   tlmkb ? SP_VALUE(0, pstc->rss, tlmkb) : 0.0);
+		print_comm(plist);
+		again = 1;
+	}
+
+	return again;
+}
+
+/*
+ * **************************************************************************
+ * Display memory statistics for tasks in JSON format.
+ *
+ * IN:
+ * @tab		Number of tabs to print.
+ * @prev	Index in array where stats used as reference are.
+ * @curr	Index in array for current sample statistics.
+ * @dis		TRUE if a header line must be printed.
+ * @disp_avg	TRUE if average stats are displayed.
+ * @prev_string	String displayed at the beginning of a header line. This is
+ * 		the timestamp of the previous sample, or "Average" when
+ * 		displaying average stats.
+ * @curr_string	String displayed at the beginning of current sample stats.
+ * 		This is the timestamp of the current sample, or "Average"
+ * 		when displaying average stats.
+ * @itv		Interval of time in 1/100th of a second.
+ * @follow	True if a previous set of stats has been displayed and should
+ *		be followed by a coma.
+ *
+ * OUT:
+ * @follow	Set to TRUE to indicate that a coma should be displayed
+ *		before next set of stats (if any).
+ *
+ * RETURNS:
+ * 0 if all the processes to display have terminated.
+ * <> 0 if there are still some processes left to display.
+ ***************************************************************************
+ */
+int write_json_pid_task_memory_stats(int tab, int prev, int curr,
+				     unsigned long long itv, int *follow)
+{
+	struct pid_stats *pstc, *pstp;
+	struct st_pid *plist;
+	int rc, again = 0, next = FALSE;
+
+	if (*follow) {
+		printf(",\n");
+	}
+	xprintf(tab++, "\"task-memory\": [");
+
+	for (plist = pid_list; plist != NULL; plist = plist->next) {
+
+		if ((rc = get_pid_to_display(prev, curr, P_A_MEM, P_TASK, plist)) <= 0)
+			/* PID no longer exists or should not be displayed */
+			continue;
+
+		if (next) {
+			printf(",\n");
 		}
+		next = TRUE;
 
-		print_comm(plist);
+		print_json_line_id(tab, plist);
+
+		pstc = plist->pstats[curr];
+		pstp = plist->pstats[prev];
+
+		printf("\"minflt/s\": %.2f, \"majflt/s\": %.2f, "
+		       "\"VSZ\": %llu, \"RSS\": %llu, \"MEM\": %.2f, ",
+		       S_VALUE(pstp->minflt, pstc->minflt, itv),
+		       S_VALUE(pstp->majflt, pstc->majflt, itv),
+		       (unsigned long long) pstc->vsz,
+		       (unsigned long long) pstc->rss,
+		       tlmkb ? SP_VALUE(0, pstc->rss, tlmkb) : 0.0);
+
+		print_json_comm(plist);
 		again = 1;
 	}
 
+	printf("\n");
+	xprintf0(--tab, "]");
+	*follow = TRUE;
+
 	return again;
 }
 
 /*
+ * **************************************************************************
+ * Display memory statistics for tasks.
+ *
+ * IN:
+ * @prev	Index in array where stats used as reference are.
+ * @curr	Index in array for current sample statistics.
+ * @dis		TRUE if a header line must be printed.
+ * @disp_avg	TRUE if average stats are displayed.
+ * @prev_string	String displayed at the beginning of a header line. This is
+ * 		the timestamp of the previous sample, or "Average" when
+ * 		displaying average stats.
+ * @curr_string	String displayed at the beginning of current sample stats.
+ * 		This is the timestamp of the current sample, or "Average"
+ * 		when displaying average stats.
+ * @itv		Interval of time in 1/100th of a second.
+ * @tab		Number of tabs to print (JSON format only).
+ * @follow	True if a previous set of stats has been displayed and should
+ *		be followed by a coma (JSON format only).
+ *
+ * OUT:
+ * @follow	Set to TRUE to indicate that a coma should be displayed
+ *		before next set of stats (if any). JSON format only.
+ *
+ * RETURNS:
+ * 0 if all the processes to display have terminated.
+ * <> 0 if there are still some processes left to display.
+ ***************************************************************************
+ */
+int write_pid_task_memory_stats(int prev, int curr, int dis, int disp_avg,
+				char *prev_string, char *curr_string,
+				unsigned long long itv, int tab, int *follow)
+{
+	if (DISPLAY_JSON_OUTPUT(xflags)) {
+		return write_json_pid_task_memory_stats(tab, prev, curr,
+							itv, follow);
+	}
+	else {
+		return write_plain_pid_task_memory_stats(prev, curr, dis, disp_avg,
+							 prev_string, curr_string, itv);
+	}
+}
+
+/*
  ***************************************************************************
  * Display memory statistics for tasks' children.
  *
@@ -1793,8 +2409,8 @@ int write_pid_task_memory_stats(int prev
  * <> 0 if there are still some processes left to display.
  ***************************************************************************
  */
-int write_pid_child_memory_stats(int prev, int curr, int dis, int disp_avg,
-				 char *prev_string, char *curr_string)
+int write_plain_pid_child_memory_stats(int prev, int curr, int dis, int disp_avg,
+				       char *prev_string, char *curr_string)
 {
 	struct pid_stats *pstc, *pstp;
 	struct st_pid *plist;
@@ -1825,18 +2441,9 @@ int write_pid_child_memory_stats(int pre
 		pstc = plist->pstats[curr];
 		pstp = plist->pstats[prev];
 
-		if (disp_avg) {
-			cprintf_f(NO_UNIT, FALSE, 2, 9, 0,
-				  (double) ((pstc->minflt + pstc->cminflt) -
-					    (pstp->minflt + pstp->cminflt)) / plist->rc_asum_count,
-				  (double) ((pstc->majflt + pstc->cmajflt) -
-					    (pstp->majflt + pstp->cmajflt)) / plist->rc_asum_count);
-		}
-		else {
-			cprintf_u64(NO_UNIT, 2, 9,
-				    (unsigned long long) ((pstc->minflt + pstc->cminflt) - (pstp->minflt + pstp->cminflt)),
-                    (unsigned long long) ((pstc->majflt + pstc->cmajflt) - (pstp->majflt + pstp->cmajflt)));
-		}
+		/* Write data for current task */
+		write_plain_pid_child_memory_data(disp_avg, plist, pstc, pstp);
+
 		print_comm(plist);
 		again = 1;
 	}
@@ -1845,6 +2452,109 @@ int write_pid_child_memory_stats(int pre
 }
 
 /*
+ * **************************************************************************
+ * Display memory statistics for tasks' children in JSON format.
+ *
+ * IN:
+ * @tab		Number of tabs to print.
+ * @prev	Index in array where stats used as reference are.
+ * @curr	Index in array for current sample statistics.
+ * @follow	True if a previous set of stats has been displayed and should
+ *		be followed by a coma.
+ *
+ * OUT:
+ * @follow	Set to TRUE to indicate that a coma should be displayed
+ *		before next set of stats (if any).
+ *
+ * RETURNS:
+ * 0 if all the processes to display have terminated.
+ * <> 0 if there are still some processes left to display.
+ ***************************************************************************
+ */
+int write_json_pid_child_memory_stats(int tab, int prev, int curr, int *follow)
+{
+	struct pid_stats *pstc, *pstp;
+	struct st_pid *plist;
+	int rc, again = 0, next = FALSE;
+
+	if (*follow) {
+		printf(",\n");
+	}
+	xprintf(tab++, "\"child-memory\": [");
+
+	for (plist = pid_list; plist != NULL; plist = plist->next) {
+
+		if ((rc = get_pid_to_display(prev, curr, P_A_MEM, P_CHILD, plist)) <= 0)
+			/* PID no longer exists or should not be displayed */
+			continue;
+
+		if (next) {
+			printf(",\n");
+		}
+		next = TRUE;
+
+		print_json_line_id(tab, plist);
+
+		pstc = plist->pstats[curr];
+		pstp = plist->pstats[prev];
+
+		printf("\"minflt-nr\": %llu, \"majflt-nr\": %llu, ",
+		       (unsigned long long) ((pstc->minflt + pstc->cminflt) - (pstp->minflt + pstp->cminflt)),
+		       (unsigned long long) ((pstc->majflt + pstc->cmajflt) - (pstp->majflt + pstp->cmajflt)));
+
+		print_json_comm(plist);
+		again = 1;
+	}
+
+	printf("\n");
+	xprintf0(--tab, "]");
+	*follow = TRUE;
+
+	return again;
+}
+
+/*
+ * **************************************************************************
+ * Display memory statistics for tasks' children.
+ *
+ * IN:
+ * @prev	Index in array where stats used as reference are.
+ * @curr	Index in array for current sample statistics.
+ * @dis		TRUE if a header line must be printed.
+ * @disp_avg	TRUE if average stats are displayed.
+ * @prev_string	String displayed at the beginning of a header line. This is
+ * 		the timestamp of the previous sample, or "Average" when
+ * 		displaying average stats.
+ * @curr_string	String displayed at the beginning of current sample stats.
+ * 		This is the timestamp of the current sample, or "Average"
+ * 		when displaying average stats.
+ * @tab		Number of tabs to print (JSON format only).
+ * @follow	True if a previous set of stats has been displayed and should
+ *		be followed by a coma (JSON format only).
+ *
+ * OUT:
+ * @follow	Set to TRUE to indicate that a coma should be displayed
+ *		before next set of stats (if any). JSON format only.
+ *
+ * RETURNS:
+ * 0 if all the processes to display have terminated.
+ * <> 0 if there are still some processes left to display.
+ ***************************************************************************
+ */
+int write_pid_child_memory_stats(int prev, int curr, int dis, int disp_avg,
+				 char *prev_string, char *curr_string, int tab,
+				 int *follow)
+{
+	if (DISPLAY_JSON_OUTPUT(xflags)) {
+		return write_json_pid_child_memory_stats(tab, prev, curr, follow);
+	}
+	else {
+		return write_plain_pid_child_memory_stats(prev, curr, dis, disp_avg,
+							  prev_string, curr_string);
+	}
+}
+
+/*
  ***************************************************************************
  * Display stack size statistics for tasks.
  *
@@ -1865,8 +2575,8 @@ int write_pid_child_memory_stats(int pre
  * <> 0 if there are still some processes left to display.
  ***************************************************************************
  */
-int write_pid_stack_stats(int prev, int curr, int dis, int disp_avg,
-			  char *prev_string, char *curr_string)
+int write_plain_pid_stack_stats(int prev, int curr, int dis, int disp_avg,
+				char *prev_string, char *curr_string)
 {
 	struct pid_stats *pstc;
 	struct st_pid *plist;
@@ -1898,16 +2608,8 @@ int write_pid_stack_stats(int prev, int
 
 		print_line_id(curr_string, plist);
 
-		if (disp_avg) {
-			cprintf_f(DISPLAY_UNIT(pidflag) ? UNIT_KILOBYTE : NO_UNIT, FALSE, 2, 7, 0,
-				  (double) plist->total_stack_size / plist->sk_asum_count,
-				  (double) plist->total_stack_ref  / plist->sk_asum_count);
-		}
-		else {
-			cprintf_u64(DISPLAY_UNIT(pidflag) ? UNIT_KILOBYTE : NO_UNIT, 2, 7,
-				    (unsigned long long) pstc->stack_size,
-				    (unsigned long long) pstc->stack_ref);
-		}
+		/* Write current process data */
+		write_plain_pid_stack_data(disp_avg, plist, pstc);
 
 		print_comm(plist);
 		again = 1;
@@ -1917,6 +2619,107 @@ int write_pid_stack_stats(int prev, int
 }
 
 /*
+ * **************************************************************************
+ * Display stack size statistics for tasks in JSON format.
+ *
+ * IN:
+ * @tab		Number of tabs to print.
+ * @prev	Index in array where stats used as reference are.
+ * @curr	Index in array for current sample statistics.
+ * @follow	True if a previous set of stats has been displayed and should
+ *		be followed by a coma.
+ *
+ * OUT:
+ * @follow	Set to TRUE to indicate that a coma should be displayed
+ *		before next set of stats (if any).
+ *
+ * RETURNS:
+ * 0 if all the processes to display have terminated.
+ * <> 0 if there are still some processes left to display.
+ ***************************************************************************
+ */
+int write_json_pid_stack_stats(int tab, int prev, int curr, int *follow)
+{
+	struct pid_stats *pstc;
+	struct st_pid *plist;
+	int rc, again = 0, next = FALSE;
+
+	if (*follow) {
+		printf(",\n");
+	}
+	xprintf(tab++, "\"stack\": [");
+
+	for (plist = pid_list; plist != NULL; plist = plist->next) {
+
+		if ((rc = get_pid_to_display(prev, curr, P_A_STACK, P_NULL, plist)) <= 0)
+			/* PID no longer exists or should not be displayed */
+			continue;
+
+		if (next) {
+			printf(",\n");
+		}
+		next = TRUE;
+
+		print_json_line_id(tab, plist);
+
+		pstc = plist->pstats[curr];
+
+		printf("\"StkSize\": %llu, \"StkRef\": %llu, ",
+		       (unsigned long long) pstc->stack_size,
+		       (unsigned long long) pstc->stack_ref);
+
+		print_json_comm(plist);
+		again = 1;
+	}
+
+	printf("\n");
+	xprintf0(--tab, "]");
+	*follow = TRUE;
+
+	return again;
+}
+
+/*
+ * **************************************************************************
+ * Display stack size statistics for tasks.
+ *
+ * IN:
+ * @prev	Index in array where stats used as reference are.
+ * @curr	Index in array for current sample statistics.
+ * @dis		TRUE if a header line must be printed.
+ * @disp_avg	TRUE if average stats are displayed.
+ * @prev_string	String displayed at the beginning of a header line. This is
+ * 		the timestamp of the previous sample, or "Average" when
+ * 		displaying average stats.
+ * @curr_string	String displayed at the beginning of current sample stats.
+ * 		This is the timestamp of the current sample, or "Average"
+ * 		when displaying average stats.
+ * @tab		Number of tabs to print (JSON format only).
+ * @follow	True if a previous set of stats has been displayed and should
+ *		be followed by a coma (JSON format only).
+ *
+ * OUT:
+ * @follow	Set to TRUE to indicate that a coma should be displayed
+ *		before next set of stats (if any). JSON format only.
+ *
+ * RETURNS:
+ * 0 if all the processes to display have terminated.
+ * <> 0 if there are still some processes left to display.
+ ***************************************************************************
+ */
+int write_pid_stack_stats(int prev, int curr, int dis, int disp_avg,
+			  char *prev_string, char *curr_string, int tab, int *follow)
+{
+	if (DISPLAY_JSON_OUTPUT(xflags)) {
+		return write_json_pid_stack_stats(tab, prev, curr, follow);
+	}
+	else {
+		return write_plain_pid_stack_stats(prev, curr, dis, disp_avg,
+						   prev_string, curr_string);
+	}
+}
+
+/*
  ***************************************************************************
  * Display I/O statistics.
  *
@@ -1938,15 +2741,13 @@ int write_pid_stack_stats(int prev, int
  * <> 0 if there are still some processes left to display.
  ***************************************************************************
  */
-int write_pid_io_stats(int prev, int curr, int dis, int disp_avg,
-		       char *prev_string, char *curr_string,
-		       unsigned long long itv)
+int write_plain_pid_io_stats(int prev, int curr, int dis, int disp_avg,
+			     char *prev_string, char *curr_string,
+			     unsigned long long itv)
 {
 	struct pid_stats *pstc, *pstp;
 	struct st_pid *plist;
-	char dstr[32];
 	int rc, again = 0;
-	double rbytes, wbytes, cbytes;
 
 	if (dis) {
 		PRINT_ID_HDR(prev_string, pidflag);
@@ -1973,43 +2774,138 @@ int write_pid_io_stats(int prev, int cur
 		pstc = plist->pstats[curr];
 		pstp = plist->pstats[prev];
 
+		/* Write statistics for current task */
+		write_plain_pid_io_data(disp_avg, plist, pstc, pstp, itv);
+
+		print_comm(plist);
+		again = 1;
+	}
+
+	return again;
+}
+
+/*
+ * **************************************************************************
+ * Display I/O statistics in JSON format.
+ *
+ * IN:
+ * @tab		Number of tabs to print.
+ * @prev	Index in array where stats used as reference are.
+ * @curr	Index in array for current sample statistics.
+ * @itv		Interval of time in 1/100th of a second.
+ * @follow	True if a previous set of stats has been displayed and should
+ *		be followed by a coma.
+ *
+ * OUT:
+ * @follow	Set to TRUE to indicate that a coma should be displayed
+ *		before next set of stats (if any).
+ *
+ * RETURNS:
+ * 0 if all the processes to display have terminated.
+ * <> 0 if there are still some processes left to display.
+ ***************************************************************************
+ */
+int write_json_pid_io_stats(int tab, int prev, int curr, unsigned long long itv,
+			    int *follow)
+{
+	struct pid_stats *pstc, *pstp;
+	struct st_pid *plist;
+	int rc, again = 0,  next = FALSE;
+	double rbytes, wbytes, cbytes;
+
+	if (*follow) {
+		printf(",\n");
+	}
+	xprintf(tab++, "\"io\": [");
+
+	for (plist = pid_list; plist != NULL; plist = plist->next) {
+
+		if ((rc = get_pid_to_display(prev, curr, P_A_IO, P_NULL, plist)) <= 0)
+			/* PID no longer exists or should not be displayed */
+			continue;
+
+		if (next) {
+			printf(",\n");
+		}
+		next = TRUE;
+
+		print_json_line_id(tab, plist);
+
+		pstc = plist->pstats[curr];
+		pstp = plist->pstats[prev];
+
 		if (!NO_PID_IO(plist->flags)) {
 			rbytes = S_VALUE(pstp->read_bytes,  pstc->read_bytes, itv);
 			wbytes = S_VALUE(pstp->write_bytes, pstc->write_bytes, itv);
 			cbytes = S_VALUE(pstp->cancelled_write_bytes,
 					 pstc->cancelled_write_bytes, itv);
-			if (!DISPLAY_UNIT(pidflag)) {
-				rbytes /= 1024;
-				wbytes /= 1024;
-				cbytes /= 1024;
-			}
-			cprintf_f(DISPLAY_UNIT(pidflag) ? UNIT_BYTE : NO_UNIT, FALSE, 3, 9, 2,
-				  rbytes, wbytes, cbytes);
+			printf("\"kB_rd/s\": %.2f, \"kB_wr/s\": %.2f, \"kB_ccwr/s\": %.2f, ",
+			       rbytes / 1024,
+			       wbytes / 1024,
+			       cbytes / 1024);
 		}
 		else {
 			/* I/O file not readable (permission denied or file non existent) */
-			sprintf(dstr, " %9.2f %9.2f %9.2f", -1.0, -1.0, -1.0);
-			cprintf_s(IS_ZERO, "%s", dstr);
+			printf("\"kB_rd/s\": -1.00, \"kB_wr/s\": -1.00, \"kB_ccwr/s\": -1.00, ");
 		}
 		/* I/O delays come from another file (/proc/#/stat) */
-		if (disp_avg) {
-			cprintf_f(NO_UNIT, FALSE, 1, 7, 0,
-				  (double) (pstc->blkio_swapin_delays - pstp->blkio_swapin_delays) /
-					    plist->delay_asum_count);
-		}
-		else {
-			cprintf_u64(NO_UNIT, 1, 7,
-				    (unsigned long long) (pstc->blkio_swapin_delays - pstp->blkio_swapin_delays));
-		}
+		printf("\"iodelay\": %llu, ",
+		       (unsigned long long) (pstc->blkio_swapin_delays - pstp->blkio_swapin_delays));
 
-		print_comm(plist);
+		print_json_comm(plist);
 		again = 1;
 	}
 
+	printf("\n");
+	xprintf0(--tab, "]");
+	*follow = TRUE;
+
 	return again;
 }
 
 /*
+ * **************************************************************************
+ * Display I/O statistics.
+ *
+ * IN:
+ * @prev	Index in array where stats used as reference are.
+ * @curr	Index in array for current sample statistics.
+ * @dis		TRUE if a header line must be printed.
+ * @disp_avg	TRUE if average stats are displayed.
+ * @prev_string	String displayed at the beginning of a header line. This is
+ * 		the timestamp of the previous sample, or "Average" when
+ * 		displaying average stats.
+ * @curr_string	String displayed at the beginning of current sample stats.
+ * 		This is the timestamp of the current sample, or "Average"
+ * 		when displaying average stats.
+ * @itv		Interval of time in 1/100th of a second.
+ * @tab		Number of tabs to print (JSON format only).
+ * @follow	True if a previous set of stats has been displayed and should
+ *		be followed by a coma (JSON format only).
+ *
+ * OUT:
+ * @follow	Set to TRUE to indicate that a coma should be displayed
+ *		before next set of stats (if any). JSON format only.
+ *
+ * RETURNS:
+ * 0 if all the processes to display have terminated.
+ * <> 0 if there are still some processes left to display.
+ ***************************************************************************
+ */
+int write_pid_io_stats(int prev, int curr, int dis, int disp_avg,
+		       char *prev_string, char *curr_string,
+		       unsigned long long itv, int tab, int *follow)
+{
+	if (DISPLAY_JSON_OUTPUT(xflags)) {
+		return write_json_pid_io_stats(tab, prev, curr, itv, follow);
+	}
+	else {
+		return write_plain_pid_io_stats(prev, curr, dis, disp_avg,
+						prev_string, curr_string, itv);
+	}
+}
+
+/*
  ***************************************************************************
  * Display context switches statistics.
  *
@@ -2030,11 +2926,12 @@ int write_pid_io_stats(int prev, int cur
  * <> 0 if there are still some processes left to display.
  ***************************************************************************
  */
-int write_pid_ctxswitch_stats(int prev, int curr, int dis,
-			      char *prev_string, char *curr_string,
-			      unsigned long long itv)
+int write_plain_pid_ctxswitch_stats(int prev, int curr, int dis,
+				    char *prev_string, char *curr_string,
+				    unsigned long long itv)
 {
 	struct pid_stats *pstc, *pstp;
+
 	struct st_pid *plist;
 	int again = 0;
 
@@ -2053,9 +2950,8 @@ int write_pid_ctxswitch_stats(int prev,
 		pstc = plist->pstats[curr];
 		pstp = plist->pstats[prev];
 
-		cprintf_f(NO_UNIT, FALSE, 2, 9, 2,
-			  S_VALUE(pstp->nvcsw,  pstc->nvcsw,  itv),
-			  S_VALUE(pstp->nivcsw, pstc->nivcsw, itv));
+		/* Write statistics for current task */
+		write_plain_pid_ctxswitch_data(pstc, pstp, itv);
 
 		print_comm(plist);
 		again = 1;
@@ -2065,58 +2961,111 @@ int write_pid_ctxswitch_stats(int prev,
 }
 
 /*
- ***************************************************************************
- * Display scheduling priority and policy information.
+ * **************************************************************************
+ * Display context switches statistics in JSON format.
  *
  * IN:
+ * @tab		Number of tabs to print.
  * @prev	Index in array where stats used as reference are.
  * @curr	Index in array for current sample statistics.
- * @dis		TRUE if a header line must be printed.
- * @prev_string	String displayed at the beginning of a header line. This is
- * 		the timestamp of the previous sample, or "Average" when
- * 		displaying average stats.
- * @curr_string	String displayed at the beginning of current sample stats.
- * 		This is the timestamp of the current sample, or "Average"
- * 		when displaying average stats.
+ * @itv		Interval of time in 1/100th of a second.
+ * @follow	True if a previous set of stats has been displayed and should
+ *		be followed by a coma.
+ *
+ * OUT:
+ * @follow	Set to TRUE to indicate that a coma should be displayed
+ *		before next set of stats (if any).
  *
  * RETURNS:
  * 0 if all the processes to display have terminated.
  * <> 0 if there are still some processes left to display.
  ***************************************************************************
  */
-int write_pid_rt_stats(int prev, int curr, int dis,
-		       char *prev_string, char *curr_string)
+int write_json_pid_ctxswitch_stats(int tab, int prev, int curr,
+				   unsigned long long itv, int *follow)
 {
-	struct pid_stats *pstc;
+	struct pid_stats *pstc, *pstp;
 	struct st_pid *plist;
-	int again = 0;
+	int again = 0, next = FALSE;
 
-	if (dis) {
-		PRINT_ID_HDR(prev_string, pidflag);
-		printf(" prio policy  Command\n");
+	if (*follow) {
+		printf(",\n");
 	}
+	xprintf(tab++, "\"context-switch\": [");
 
 	for (plist = pid_list; plist != NULL; plist = plist->next) {
 
-		if (get_pid_to_display(prev, curr, P_A_RT, P_NULL, plist) <= 0)
+		if (get_pid_to_display(prev, curr, P_A_CTXSW, P_NULL, plist) <= 0)
+			/* PID no longer exists or should not be displayed */
 			continue;
 
-		print_line_id(curr_string, plist);
+		if (next) {
+			printf(",\n");
+		}
+		next = TRUE;
+
+		print_json_line_id(tab, plist);
 
 		pstc = plist->pstats[curr];
+		pstp = plist->pstats[prev];
 
-		cprintf_u64(NO_UNIT, 1, 4,
-			    (unsigned long long) pstc->priority);
-		cprintf_s(IS_STR, " %6s", GET_POLICY(pstc->policy));
+		printf("\"cswch/s\": %.2f, \"nvcswch/s\": %.2f, ",
+		       S_VALUE(pstp->nvcsw,  pstc->nvcsw,  itv),
+		       S_VALUE(pstp->nivcsw, pstc->nivcsw, itv));
 
-		print_comm(plist);
+		print_json_comm(plist);
 		again = 1;
 	}
 
+	printf("\n");
+	xprintf0(--tab, "]");
+	*follow = TRUE;
+
 	return again;
 }
 
 /*
+ * **************************************************************************
+ * Display context switches statistics.
+ *
+ * IN:
+ * @prev	Index in array where stats used as reference are.
+ * @curr	Index in array for current sample statistics.
+ * @dis		TRUE if a header line must be printed.
+ * @prev_string	String displayed at the beginning of a header line. This is
+ * 		the timestamp of the previous sample, or "Average" when
+ * 		displaying average stats.
+ * @curr_string	String displayed at the beginning of current sample stats.
+ * 		This is the timestamp of the current sample, or "Average"
+ * 		when displaying average stats.
+ * @itv		Interval of time in 1/100th of a second.
+ * @tab		Number of tabs to print (JSON format only).
+ * @follow	True if a previous set of stats has been displayed and should
+ *		be followed by a coma (JSON format only).
+ *
+ * OUT:
+ * @follow	Set to TRUE to indicate that a coma should be displayed
+ *		before next set of stats (if any). JSON format only.
+ *
+ * RETURNS:
+ * 0 if all the processes to display have terminated.
+ * <> 0 if there are still some processes left to display.
+ ***************************************************************************
+ */
+int write_pid_ctxswitch_stats(int prev, int curr, int dis,
+			      char *prev_string, char *curr_string,
+			      unsigned long long itv, int tab, int *follow)
+{
+	if (DISPLAY_JSON_OUTPUT(xflags)) {
+		return write_json_pid_ctxswitch_stats(tab, prev, curr, itv, follow);
+	}
+	else {
+		return write_plain_pid_ctxswitch_stats(prev, curr, dis,
+						       prev_string, curr_string, itv);
+	}
+}
+
+/*
  ***************************************************************************
  * Display some kernel tables values for tasks.
  *
@@ -2137,8 +3086,8 @@ int write_pid_rt_stats(int prev, int cur
  * <> 0 if there are still some processes left to display.
  ***************************************************************************
  */
-int write_pid_ktab_stats(int prev, int curr, int dis, int disp_avg,
-			 char *prev_string, char *curr_string)
+int write_plain_pid_ktab_stats(int prev, int curr, int dis, int disp_avg,
+			       char *prev_string, char *curr_string)
 {
 	struct pid_stats *pstc;
 	struct st_pid *plist;
@@ -2171,25 +3120,166 @@ int write_pid_ktab_stats(int prev, int c
 
 		print_line_id(curr_string, plist);
 
-		if (disp_avg) {
-			cprintf_f(NO_UNIT, FALSE, 2, 7, 0,
-				  (double) plist->total_threads / plist->tf_asum_count,
-				  NO_PID_FD(plist->flags) ?
-				  -1.0 :
-				  (double) plist->total_fd_nr / plist->tf_asum_count);
+		/* Write data for current task */
+		write_plain_pid_ktab_data(disp_avg, plist, pstc);
+
+		print_comm(plist);
+		again = 1;
+	}
+
+	return again;
+}
+
+/*
+ * **************************************************************************
+ * Display some kernel tables values for tasks in JSON format.
+ *
+ * IN:
+ * @tab		Number of tabs to print.
+ * @prev	Index in array where stats used as reference are.
+ * @curr	Index in array for current sample statistics.
+ * @follow	True if a previous set of stats has been displayed and should
+ *		be followed by a coma.
+ *
+ * OUT:
+ * @follow	Set to TRUE to indicate that a coma should be displayed
+ *		before next set of stats (if any).
+ *
+ * RETURNS:
+ * 0 if all the processes to display have terminated.
+ * <> 0 if there are still some processes left to display.
+ ***************************************************************************
+ */
+int write_json_pid_ktab_stats(int tab, int prev, int curr, int *follow)
+{
+	struct pid_stats *pstc;
+	struct st_pid *plist;
+	int rc, again = 0, next = FALSE;
+
+	if (*follow) {
+		printf(",\n");
+	}
+	xprintf(tab++, "\"kernel\": [");
+
+	for (plist = pid_list; plist != NULL; plist = plist->next) {
+
+		if ((rc = get_pid_to_display(prev, curr, P_A_KTAB, P_NULL, plist)) <= 0)
+			/* PID no longer exists or should not be displayed */
+			continue;
+
+		if (next) {
+			printf(",\n");
+		}
+		next = TRUE;
+
+		print_json_line_id(tab, plist);
+
+		pstc = plist->pstats[curr];
+
+		printf("\"threads\": %llu, \"fd-nr\": ",
+		       (unsigned long long) pstc->threads);
+		if (NO_PID_FD(plist->flags)) {
+			printf("-1, ");
 		}
 		else {
-			cprintf_u64(NO_UNIT, 1, 7,
-				    (unsigned long long) pstc->threads);
-			if (NO_PID_FD(plist->flags)) {
-				cprintf_s(IS_ZERO, " %7s", "-1");
-			}
-			else {
-				cprintf_u64(NO_UNIT, 1, 7,
-					    (unsigned long long) pstc->fd_nr);
-			}
+			printf("%llu, ", (unsigned long long) pstc->fd_nr);
 		}
 
+		print_json_comm(plist);
+		again = 1;
+	}
+
+	printf("\n");
+	xprintf0(--tab, "]");
+	*follow = TRUE;
+
+	return again;
+}
+
+/*
+ * **************************************************************************
+ * Display some kernel tables values for tasks.
+ *
+ * IN:
+ * @prev	Index in array where stats used as reference are.
+ * @curr	Index in array for current sample statistics.
+ * @dis		TRUE if a header line must be printed.
+ * @disp_avg	TRUE if average stats are displayed.
+ * @prev_string	String displayed at the beginning of a header line. This is
+ * 		the timestamp of the previous sample, or "Average" when
+ * 		displaying average stats.
+ * @curr_string	String displayed at the beginning of current sample stats.
+ * 		This is the timestamp of the current sample, or "Average"
+ * 		when displaying average stats.
+ * @tab		Number of tabs to print (JSON format only).
+ * @follow	True if a previous set of stats has been displayed and should
+ *		be followed by a coma (JSON format only).
+ *
+ * OUT:
+ * @follow	Set to TRUE to indicate that a coma should be displayed
+ *		before next set of stats (if any). JSON format only.
+ *
+ * RETURNS:
+ * 0 if all the processes to display have terminated.
+ * <> 0 if there are still some processes left to display.
+ ***************************************************************************
+ */
+int write_pid_ktab_stats(int prev, int curr, int dis, int disp_avg,
+			 char *prev_string, char *curr_string, int tab, int *follow)
+{
+	if (DISPLAY_JSON_OUTPUT(xflags)) {
+		return write_json_pid_ktab_stats(tab, prev, curr, follow);
+	}
+	else {
+		return write_plain_pid_ktab_stats(prev, curr, dis, disp_avg,
+						  prev_string, curr_string);
+	}
+}
+
+/*
+ * **************************************************************************
+ * Display scheduling priority and policy information.
+ *
+ * IN:
+ * @prev	Index in array where stats used as reference are.
+ * @curr	Index in array for current sample statistics.
+ * @dis		TRUE if a header line must be printed.
+ * @prev_string	String displayed at the beginning of a header line. This is
+ * 		the timestamp of the previous sample, or "Average" when
+ * 		displaying average stats.
+ * @curr_string	String displayed at the beginning of current sample stats.
+ * 		This is the timestamp of the current sample, or "Average"
+ * 		when displaying average stats.
+ *
+ * RETURNS:
+ * 0 if all the processes to display have terminated.
+ * <> 0 if there are still some processes left to display.
+ ***************************************************************************
+ */
+int write_plain_pid_rt_stats(int prev, int curr, int dis,
+			     char *prev_string, char *curr_string)
+{
+	struct pid_stats *pstc;
+	struct st_pid *plist;
+	int again = 0;
+
+	if (dis) {
+		PRINT_ID_HDR(prev_string, pidflag);
+		printf(" prio policy  Command\n");
+	}
+
+	for (plist = pid_list; plist != NULL; plist = plist->next) {
+
+		if (get_pid_to_display(prev, curr, P_A_RT, P_NULL, plist) <= 0)
+			continue;
+
+		print_line_id(curr_string, plist);
+
+		pstc = plist->pstats[curr];
+
+		/* Write data for current task */
+		write_plain_pid_rt_data(pstc);
+
 		print_comm(plist);
 		again = 1;
 	}
@@ -2198,6 +3288,106 @@ int write_pid_ktab_stats(int prev, int c
 }
 
 /*
+ * **************************************************************************
+ * Display scheduling priority and policy information in JSON format.
+ *
+ * IN:
+ * @tab		Number of tabs to print.
+ * @prev	Index in array where stats used as reference are.
+ * @curr	Index in array for current sample statistics.
+ * @follow	True if a previous set of stats has been displayed and should
+ *		be followed by a coma.
+ *
+ * OUT:
+ * @follow	Set to TRUE to indicate that a coma should be displayed
+ *		before next set of stats (if any).
+ *
+ * RETURNS:
+ * 0 if all the processes to display have terminated.
+ * <> 0 if there are still some processes left to display.
+ ***************************************************************************
+ */
+int write_json_pid_rt_stats(int tab, int prev, int curr, int *follow)
+{
+	struct pid_stats *pstc;
+	struct st_pid *plist;
+	int again = 0, next = FALSE;
+
+	if (*follow) {
+		printf(",\n");
+	}
+	xprintf(tab++, "\"realtime\": [");
+
+	for (plist = pid_list; plist != NULL; plist = plist->next) {
+
+		if (get_pid_to_display(prev, curr, P_A_RT, P_NULL, plist) <= 0)
+			/* PID no longer exists or should not be displayed */
+			continue;
+
+		if (next) {
+			printf(",\n");
+		}
+		next = TRUE;
+
+		print_json_line_id(tab, plist);
+
+		pstc = plist->pstats[curr];
+
+		printf("\"prio\": %llu, \"policy\": \"%s\", ",
+		       (unsigned long long) pstc->priority,
+		       GET_POLICY(pstc->policy));
+
+		print_json_comm(plist);
+		again = 1;
+	}
+
+	printf("\n");
+	xprintf0(--tab, "]");
+	*follow = TRUE;
+
+	return again;
+}
+
+/*
+ * **************************************************************************
+ * Display scheduling priority and policy information.
+ *
+ * IN:
+ * @prev	Index in array where stats used as reference are.
+ * @curr	Index in array for current sample statistics.
+ * @dis		TRUE if a header line must be printed.
+ * @prev_string	String displayed at the beginning of a header line. This is
+ * 		the timestamp of the previous sample, or "Average" when
+ * 		displaying average stats.
+ * @curr_string	String displayed at the beginning of current sample stats.
+ * 		This is the timestamp of the current sample, or "Average"
+ * 		when displaying average stats.
+ * @tab		Number of tabs to print (JSON format only).
+ * @follow	True if a previous set of stats has been displayed and should
+ *		be followed by a coma (JSON format only).
+ *
+ * OUT:
+ * @follow	Set to TRUE to indicate that a coma should be displayed
+ *		before next set of stats (if any). JSON format only.
+ *
+ * RETURNS:
+ * 0 if all the processes to display have terminated.
+ * <> 0 if there are still some processes left to display.
+ ***************************************************************************
+ */
+int write_pid_rt_stats(int prev, int curr, int dis,
+		       char *prev_string, char *curr_string, int tab, int *follow)
+{
+	if (DISPLAY_JSON_OUTPUT(xflags)) {
+		return write_json_pid_rt_stats(tab, prev, curr, follow);
+	}
+	else {
+		return write_plain_pid_rt_stats(prev, curr, dis,
+						prev_string, curr_string);
+	}
+}
+
+/*
  ***************************************************************************
  * Display statistics.
  *
@@ -2222,7 +3412,7 @@ int write_stats_core(int prev, int curr,
 		     char *prev_string, char *curr_string)
 {
 	unsigned long long itv, deltot_jiffies;
-	int again = 0;
+	int again = 0, tab = 4, follow = FALSE;
 
 	/* Test stdout */
 	TEST_STDOUT(STDOUT_FILENO);
@@ -2230,75 +3420,93 @@ int write_stats_core(int prev, int curr,
 	/* Total number of jiffies spent on the interval */
 	deltot_jiffies = get_interval(tot_jiffies[prev], tot_jiffies[curr]);
 
+	if (DISPLAY_JSON_OUTPUT(xflags)) {
+		xprintf(tab++, "{");
+		xprintf(tab, "\"timestamp\": \"%s\",", curr_string);
+	}
+
 	itv = get_interval(uptime_cs[prev], uptime_cs[curr]);
 
 	if (DISPLAY_ONELINE(pidflag)) {
 		if (DISPLAY_TASK_STATS(tskflag)) {
-			again += write_pid_task_all_stats(prev, curr, dis, prev_string, curr_string,
+			again += write_pid_task_all_stats(prev, curr, dis,
+							  prev_string, curr_string,
 							  itv, deltot_jiffies);
 		}
 		if (DISPLAY_CHILD_STATS(tskflag)) {
-			again += write_pid_child_all_stats(prev, curr, dis, prev_string, curr_string);
+			again += write_pid_child_all_stats(prev, curr, dis,
+							   prev_string, curr_string);
 		}
 	}
 	else {
 		/* Display CPU stats */
 		if (DISPLAY_CPU(actflag)) {
-
 			if (DISPLAY_TASK_STATS(tskflag)) {
 				again += write_pid_task_cpu_stats(prev, curr, dis, disp_avg,
 								  prev_string, curr_string,
-								  itv, deltot_jiffies);
+								  itv, deltot_jiffies,
+								  tab, &follow);
 			}
 			if (DISPLAY_CHILD_STATS(tskflag)) {
 				again += write_pid_child_cpu_stats(prev, curr, dis, disp_avg,
-								   prev_string, curr_string);
+								   prev_string, curr_string,
+								   tab, &follow);
 			}
 		}
 
 		/* Display memory stats */
 		if (DISPLAY_MEM(actflag)) {
-
 			if (DISPLAY_TASK_STATS(tskflag)) {
 				again += write_pid_task_memory_stats(prev, curr, dis, disp_avg,
-								     prev_string, curr_string, itv);
+								     prev_string, curr_string,
+								     itv, tab, &follow);
 			}
-			if (DISPLAY_CHILD_STATS(tskflag) && DISPLAY_MEM(actflag)) {
+			if (DISPLAY_CHILD_STATS(tskflag)) {
 				again += write_pid_child_memory_stats(prev, curr, dis, disp_avg,
-								      prev_string, curr_string);
+								      prev_string, curr_string,
+								      tab, &follow);
 			}
 		}
 
 		/* Display stack stats */
 		if (DISPLAY_STACK(actflag)) {
 			again += write_pid_stack_stats(prev, curr, dis, disp_avg,
-						       prev_string, curr_string);
+						       prev_string, curr_string,
+						       tab, &follow);
 		}
 
 		/* Display I/O stats */
 		if (DISPLAY_IO(actflag)) {
 			again += write_pid_io_stats(prev, curr, dis, disp_avg, prev_string,
-						    curr_string, itv);
+						    curr_string, itv, tab, &follow);
 		}
 
 		/* Display context switches stats */
 		if (DISPLAY_CTXSW(actflag)) {
 			again += write_pid_ctxswitch_stats(prev, curr, dis, prev_string,
-							   curr_string, itv);
+							   curr_string, itv,
+							   tab, &follow);
 		}
 
 		/* Display kernel table stats */
 		if (DISPLAY_KTAB(actflag)) {
 			again += write_pid_ktab_stats(prev, curr, dis, disp_avg,
-						      prev_string, curr_string);
+						      prev_string, curr_string,
+						      tab, &follow);
 		}
 
 		/* Display scheduling priority and policy information */
 		if (DISPLAY_RT(actflag)) {
-			again += write_pid_rt_stats(prev, curr, dis, prev_string, curr_string);
+			again += write_pid_rt_stats(prev, curr, dis, prev_string,
+						    curr_string, tab, &follow);
 		}
 	}
 
+	if (DISPLAY_JSON_OUTPUT(xflags)) {
+		printf("\n");
+		xprintf0(--tab, "}");
+	}
+
 	if (DISPLAY_ALL_PID(pidflag)) {
 		again = 1;
 	}
@@ -2346,7 +3554,7 @@ int write_stats(int curr, int dis)
 		strcpy(cur_time[!curr], "# Time     ");
 	}
 	else if (PRINT_SEC_EPOCH(pidflag)) {
-		snprintf(cur_time[!curr], sizeof(cur_time[!curr]), "%-11ld", mktime(&ps_tstamp[!curr]));
+		snprintf(cur_time[!curr], sizeof(cur_time[!curr]), "%ld", mktime(&ps_tstamp[!curr]));
 		cur_time[!curr][sizeof(cur_time[!curr]) - 1] = '\0';
 	}
 	else if (is_iso_time_fmt()) {
@@ -2358,7 +3566,7 @@ int write_stats(int curr, int dis)
 
 	/* Get current timestamp */
 	if (PRINT_SEC_EPOCH(pidflag)) {
-		snprintf(cur_time[curr], sizeof(cur_time[curr]), "%-11ld", mktime(&ps_tstamp[curr]));
+		snprintf(cur_time[curr], sizeof(cur_time[curr]), "%ld", mktime(&ps_tstamp[curr]));
 		cur_time[curr][sizeof(cur_time[curr]) - 1] = '\0';
 	}
 	else if (is_iso_time_fmt()) {
@@ -2401,7 +3609,10 @@ void rw_pidstat_loop(int dis_hdr, int ro
 		/* Display since boot time */
 		ps_tstamp[1] = ps_tstamp[0];
 		write_stats(0, DISP_HDR);
-		exit(0);
+		if (DISPLAY_JSON_OUTPUT(xflags)) {
+			printf("\n");
+		}
+		goto terminate;
 	}
 
 	/* Set a handler for SIGALRM */
@@ -2430,7 +3641,7 @@ void rw_pidstat_loop(int dis_hdr, int ro
 
 	if (signal_caught && interval)
 		/* SIGINT/SIGCHLD signals caught during first interval: Exit immediately */
-		return;
+		goto terminate;
 
 	do {
 		/* Every PID is potentially nonexistent */
@@ -2470,12 +3681,17 @@ void rw_pidstat_loop(int dis_hdr, int ro
 			if (signal_caught) {
 				/* SIGINT/SIGCHLD signals caught => Display average stats */
 				count = 0;
-				printf("\n");	/* Skip "^C" displayed on screen */
 			}
 			else {
+				if (DISPLAY_JSON_OUTPUT(xflags)) {
+					printf(",");
+				}
 				curr ^= 1;
 			}
 		}
+		if (signal_caught || DISPLAY_JSON_OUTPUT(xflags)) {
+			printf("\n");
+		}
 	}
 	while (count);
 
@@ -2483,11 +3699,16 @@ void rw_pidstat_loop(int dis_hdr, int ro
 	 * The one line format uses a raw time value rather than time strings
 	 * so the average doesn't really fit.
 	 */
-	if (!DISPLAY_ONELINE(pidflag))
+	if (!DISPLAY_ONELINE(pidflag) && !DISPLAY_JSON_OUTPUT(xflags))
 	{
 		/* Write stats average */
 		write_stats_avg(curr, dis_hdr);
 	}
+
+terminate:
+	if (DISPLAY_JSON_OUTPUT(xflags)) {
+		printf("\t\t\t]\n\t\t}\n\t]\n}}\n");
+	}
 }
 
 /*
@@ -2701,6 +3922,17 @@ int main(int argc, char **argv)
 			}
 		}
 
+		else if (!strcmp(argv[opt], "-o")) {
+			/* Select output format */
+			if (argv[++opt] && !strcmp(argv[opt], K_JSON)) {
+				xflags |= X_D_JSON_OUTPUT;
+				opt++;
+			}
+			else {
+				usage(argv[0]);
+			}
+		}
+
 		else if (!strncmp(argv[opt], "-", 1)) {
 			for (i = 1; *(argv[opt] + i); i++) {
 
@@ -2827,6 +4059,10 @@ int main(int argc, char **argv)
 		interval = 0;
 	}
 
+	/* A non-zero value must be specified for interval when option -e is used */
+	if (!interval && EXEC_PGM(pidflag))
+		usage(argv[0]);
+
 	if (!DISPLAY_PID(pidflag)) {
 		dis_hdr = 1;
 	}
@@ -2852,6 +4088,13 @@ int main(int argc, char **argv)
 	/* Get time */
 	get_xtime(&(ps_tstamp[0]), 0, LOCAL_TIME);
 
+	if (DISPLAY_JSON_OUTPUT(xflags)) {
+		/* Use a decimal point to make JSON code compliant with RFC7159 */
+		setlocale(LC_NUMERIC, "C");
+		/* Option "-h" cannot be used in JSON format */
+		pidflag &= ~P_D_ONELINE;
+	}
+
 	/*
 	 * Don't buffer data if redirected to a pipe.
 	 * Note: With musl-c, the behavior of this function is undefined except
@@ -2863,7 +4106,7 @@ int main(int argc, char **argv)
 	__uname(&header);
 	print_gal_header(&(ps_tstamp[0]), header.sysname, header.release,
 			 header.nodename, header.machine, cpu_nr,
-			 PLAIN_OUTPUT);
+			 DISPLAY_JSON_OUTPUT(xflags));
 
 	/* Main loop */
 	rw_pidstat_loop(dis_hdr, rows);
diff -pruN 12.7.5-2/pidstat.h 12.7.7-0ubuntu2/pidstat.h
--- 12.7.5-2/pidstat.h	2023-05-06 16:26:53.000000000 +0000
+++ 12.7.7-0ubuntu2/pidstat.h	2025-02-02 07:33:59.000000000 +0000
@@ -1,6 +1,6 @@
 /*
  * pidstat: Display per-process statistics.
- * (C) 2007-2023 by Sebastien Godard (sysstat <at> orange.fr)
+ * (C) 2007-2025 by Sebastien Godard (sysstat <at> orange.fr)
  */
 #ifndef _PIDSTAT_H
 #define _PIDSTAT_H
diff -pruN 12.7.5-2/pr_stats.c 12.7.7-0ubuntu2/pr_stats.c
--- 12.7.5-2/pr_stats.c	2023-12-09 15:53:16.000000000 +0000
+++ 12.7.7-0ubuntu2/pr_stats.c	2025-02-02 07:33:58.000000000 +0000
@@ -1,6 +1,6 @@
 /*
  * pr_stats.c: Functions used by sar to display statistics
- * (C) 1999-2023 by Sebastien GODARD (sysstat <at> orange.fr)
+ * (C) 1999-2025 by Sebastien GODARD (sysstat <at> orange.fr)
  *
  ***************************************************************************
  * This program is free software; you can redistribute it and/or modify it *
@@ -23,9 +23,9 @@
 #include <string.h>
 #include <stdarg.h>
 #include <stdlib.h>
+#include <float.h>
 
 #include "sa.h"
-#include "ioconf.h"
 #include "pr_xstats.h"
 
 #ifdef USE_NLS
@@ -98,10 +98,10 @@ void print_hdr_line(char *p_timestamp, s
 				continue;	/* Should not happen */
 			cfld[k] = '\0';
 			for (j = 0; (j < a->nr_ini) && (j < a->bitmap->b_size + 1); j++) {
-				if (!(a->bitmap->b_array[j >> 3] & (1 << (j & 0x07))))
+				if (!IS_CPU_SELECTED(a->bitmap->b_array, j))
 					/* Don't display current item if not selected */
 					continue;
-				if (offline_bitmap && (offline_bitmap[j >> 3] & (1 << (j & 0x07))))
+				if (offline_bitmap && IS_CPU_OFFLINE(offline_bitmap, j))
 					/* Don't display current item if offline */
 					continue;
 				if (j == 0) {
@@ -388,8 +388,8 @@ __print_funct_t print_cpu_stats(struct a
 		 * used by sadc to create a file, and the version of sysstat
 		 * used by sar to read it...
 		 */
-		if (!(a->bitmap->b_array[i >> 3] & (1 << (i & 0x07))) ||
-		    offline_cpu_bitmap[i >> 3] & (1 << (i & 0x07)))
+		if (!IS_CPU_SELECTED(a->bitmap->b_array, i) ||
+		    IS_CPU_OFFLINE(offline_cpu_bitmap, i))
 			/* Don't display CPU */
 			continue;
 
@@ -421,8 +421,13 @@ __print_funct_t print_cpu_stats(struct a
 				/* Save min and max values */
 				save_cpu_xstats(a, i, deltot_jiffies, scc, scp);
 			}
-			else {
-				/* Display min and max values */
+			else if ((*(a->spmin + i * a->xnr) != DBL_MAX) &&
+				 (*(a->spmax + i * a->xnr) != -DBL_MAX)) {
+				/*
+				 * Display min and max values if available.
+				 * Those values may be unavailable if CPU has always been offline
+				 * except for one sample only.
+				 */
 				print_hdr_line(timestamp[!curr], a, FIRST + DISPLAY_CPU_ALL(a->opt_flags), 7, 9,
 					       NULL);
 				print_cpu_xstats(DISPLAY_CPU_DEF(a->opt_flags), i,
@@ -579,7 +584,7 @@ __print_funct_t print_irq_stats(struct a
 										  + i * a->msize);
 
 			/* Should current CPU (including CPU "all") be displayed? */
-			if (masked_cpu_bitmap[c >> 3] & (1 << (c & 0x07)))
+			if (IS_CPU_SET(masked_cpu_bitmap, c))
 				/* No */
 				continue;
 
@@ -2952,7 +2957,7 @@ void stub_print_pwr_cpufreq_stats(struct
 		 */
 
 		/* Should current CPU (including CPU "all") be displayed? */
-		if (!(a->bitmap->b_array[i >> 3] & (1 << (i & 0x07))))
+		if (!IS_CPU_SELECTED(a->bitmap->b_array, i))
 			/* No */
 			continue;
 
@@ -3636,7 +3641,7 @@ void print_pwr_wghfreq_stats(struct acti
 	for (i = 0; (i < a->nr[curr]) && (i < a->bitmap->b_size + 1); i++) {
 
 		/* Should current CPU (including CPU "all") be displayed? */
-		if (!(a->bitmap->b_array[i >> 3] & (1 << (i & 0x07))))
+		if (!IS_CPU_SELECTED(a->bitmap->b_array, i))
 			/* No */
 			continue;
 
@@ -4103,7 +4108,7 @@ __print_funct_t print_fchost_stats(struc
 
 		/* Check if min and max values should be displayed */
 		if (DISPLAY_MINMAX(flags)) {
-			int k, pos;
+			int k = 0, pos;
 
 			/* Look for item in list or add it to the list if non existent */
 			add_list_item(&(a->xdev_list), sfcc->fchost_name, MAX_FCH_LEN, &k);
@@ -4213,8 +4218,8 @@ __print_funct_t stub_print_softnet_stats
 		 * used by sadc to create a file, and the version of sysstat
 		 * used by sar to read it...
 		 */
-		if (!(a->bitmap->b_array[i >> 3] & (1 << (i & 0x07))) ||
-		    offline_cpu_bitmap[i >> 3] & (1 << (i & 0x07)))
+		if (!IS_CPU_SELECTED(a->bitmap->b_array, i) ||
+		    IS_CPU_OFFLINE(offline_cpu_bitmap, i))
 			/* No */
 			continue;
 		/*
@@ -4240,7 +4245,8 @@ __print_funct_t stub_print_softnet_stats
 				/* Save min and max values for blg_len */
 				save_minmax(a, i * a->xnr + 5, (double) ssnc->backlog_len);
 			}
-			else {
+			else if ((*(a->spmin + i * a->xnr) != DBL_MAX) &&
+				(*(a->spmax + i * a->xnr) != -DBL_MAX)) {
 				/* Display min and max values */
 				print_hdr_line(timestamp[!curr], a, FIRST, 7, 9, NULL);
 				print_softnet_xstats(H_MIN, i, a->spmin + i * a->xnr);
diff -pruN 12.7.5-2/pr_stats.h 12.7.7-0ubuntu2/pr_stats.h
--- 12.7.5-2/pr_stats.h	2023-05-06 16:26:53.000000000 +0000
+++ 12.7.7-0ubuntu2/pr_stats.h	2025-02-02 07:33:59.000000000 +0000
@@ -1,6 +1,6 @@
 /*
  * pr_stats.h: Include file used to display system statistics
- * (C) 1999-2023 by Sebastien Godard (sysstat <at> orange.fr)
+ * (C) 1999-2025 by Sebastien Godard (sysstat <at> orange.fr)
  */
 
 #ifndef _PR_STATS_H
diff -pruN 12.7.5-2/pr_xstats.c 12.7.7-0ubuntu2/pr_xstats.c
--- 12.7.5-2/pr_xstats.c	2023-08-19 06:48:50.000000000 +0000
+++ 12.7.7-0ubuntu2/pr_xstats.c	2025-02-02 07:33:58.000000000 +0000
@@ -21,6 +21,7 @@
  */
 
 #include <stdio.h>
+#include <float.h>
 
 #include "sa.h"
 
@@ -147,11 +148,16 @@ void print_irq_xstats(int ismax, struct
 	for (cpu = 0; (cpu < a->nr[curr]) && (cpu < a->bitmap->b_size + 1); cpu++) {
 
 		/* Should current CPU (including CPU "all") be displayed? */
-		if (masked_cpu_bitmap[cpu >> 3] & (1 << (cpu & 0x07)))
+		if (IS_CPU_SET(masked_cpu_bitmap, cpu))
 			/* No */
 			continue;
 
-		cprintf_f(NO_UNIT, FALSE, 1, 9, 2, *(spextr + (cpu * a->nr2 + irq) * a->xnr));
+		/* Print min/max values if available */
+		if ((*(spextr + (cpu * a->nr2 + irq) * a->xnr) != -DBL_MAX) &&
+		    (*(spextr + (cpu * a->nr2 + irq) * a->xnr) !=  DBL_MAX)) {
+			cprintf_f(NO_UNIT, FALSE, 1, 9, 2,
+				  *(spextr + (cpu * a->nr2 + irq) * a->xnr));
+		}
 	}
 
 	if (DISPLAY_PRETTY(flags)) {
diff -pruN 12.7.5-2/raw_stats.c 12.7.7-0ubuntu2/raw_stats.c
--- 12.7.5-2/raw_stats.c	2023-11-12 08:01:41.000000000 +0000
+++ 12.7.7-0ubuntu2/raw_stats.c	2025-02-02 07:33:58.000000000 +0000
@@ -1,6 +1,6 @@
 /*
  * raw_stats.c: Functions used by sar to display statistics in raw format.
- * (C) 1999-2023 by Sebastien GODARD (sysstat <at> orange.fr)
+ * (C) 1999-2025 by Sebastien GODARD (sysstat <at> orange.fr)
  *
  ***************************************************************************
  * This program is free software; you can redistribute it and/or modify it *
@@ -25,7 +25,6 @@
 #include <stdlib.h>
 
 #include "sa.h"
-#include "ioconf.h"
 
 extern uint64_t flags;
 extern char bat_status[][16];
@@ -158,7 +157,7 @@ __print_funct_t raw_print_cpu_stats(stru
 		scp = (struct stats_cpu *) ((char *) a->buf[!curr] + i * a->msize);
 
 		/* Should current CPU (including CPU "all") be displayed? */
-		if (!(a->bitmap->b_array[i >> 3] & (1 << (i & 0x07))))
+		if (!IS_CPU_SELECTED(a->bitmap->b_array, i))
 			/* No */
 			continue;
 
@@ -287,7 +286,7 @@ __print_funct_t raw_print_irq_stats(stru
 										  + i * a->msize);
 
 			/* Should current interrupt (including int "sum") be displayed? */
-			if (!(a->bitmap->b_array[c >> 3] & (1 << (c & 0x07))))
+			if (!IS_CPU_SELECTED(a->bitmap->b_array, c))
 				/* No */
 				continue;
 
@@ -1382,7 +1381,7 @@ __print_funct_t raw_print_pwr_cpufreq_st
 		spc = (struct stats_pwr_cpufreq *) ((char *) a->buf[curr] + i * a->msize);
 
 		/* Should current CPU (including CPU "all") be displayed? */
-		if (a->bitmap->b_array[i >> 3] & (1 << (i & 0x07))) {
+		if (IS_CPU_SELECTED(a->bitmap->b_array, i)) {
 			/* Yes: Display it */
 			printf("%s; %s; %d;", timestr, pfield(a->hdr_line, FIRST), i - 1);
 			printf(" %s; %lu;\n", pfield(NULL, 0), spc->cpufreq);
@@ -1511,7 +1510,7 @@ __print_funct_t raw_print_pwr_wghfreq_st
 		spp = (struct stats_pwr_wghfreq *) ((char *) a->buf[!curr] + i * a->msize * a->nr2);
 
 		/* Should current CPU (including CPU "all") be displayed? */
-		if (!(a->bitmap->b_array[i >> 3] & (1 << (i & 0x07))))
+		if (!IS_CPU_SELECTED(a->bitmap->b_array, i))
 			/* No */
 			continue;
 
@@ -1712,7 +1711,7 @@ __print_funct_t raw_print_softnet_stats(
 		 */
 
 		/* Should current CPU (including CPU "all") be displayed? */
-		if (!(a->bitmap->b_array[i >> 3] & (1 << (i & 0x07))))
+		if (!IS_CPU_SELECTED(a->bitmap->b_array, i))
 			/* No */
 			continue;
 
diff -pruN 12.7.5-2/raw_stats.h 12.7.7-0ubuntu2/raw_stats.h
--- 12.7.5-2/raw_stats.h	2023-05-06 16:26:53.000000000 +0000
+++ 12.7.7-0ubuntu2/raw_stats.h	2025-02-02 07:33:59.000000000 +0000
@@ -1,6 +1,6 @@
 /*
  * raw_stats.h: Include file used to display statistics in raw format.
- * (C) 1999-2023 by Sebastien Godard (sysstat <at> orange.fr)
+ * (C) 1999-2025 by Sebastien Godard (sysstat <at> orange.fr)
  */
 
 #ifndef _RAW_STATS_H
diff -pruN 12.7.5-2/rd_sensors.c 12.7.7-0ubuntu2/rd_sensors.c
--- 12.7.5-2/rd_sensors.c	2023-05-06 16:26:53.000000000 +0000
+++ 12.7.7-0ubuntu2/rd_sensors.c	2025-02-02 07:33:58.000000000 +0000
@@ -1,6 +1,6 @@
 /*
  * rd_sensors.c: Read sensors statistics
- * (C) 1999-2023 by Sebastien GODARD (sysstat <at> orange.fr)
+ * (C) 1999-2025 by Sebastien GODARD (sysstat <at> orange.fr)
  *
  ***************************************************************************
  * This program is free software; you can redistribute it and/or modify it *
@@ -19,10 +19,8 @@
  ***************************************************************************
  */
 
-#include <stdio.h>
 #include <string.h>
 
-#include "common.h"
 #include "rd_stats.h"
 #include "rd_sensors.h"
 
diff -pruN 12.7.5-2/rd_sensors.h 12.7.7-0ubuntu2/rd_sensors.h
--- 12.7.5-2/rd_sensors.h	2023-05-06 16:26:53.000000000 +0000
+++ 12.7.7-0ubuntu2/rd_sensors.h	2025-02-02 07:33:59.000000000 +0000
@@ -1,6 +1,6 @@
 /*
  * rd_sensors.h: Include file used to read sensors statistics
- * (C) 1999-2023 by Sebastien Godard (sysstat <at> orange.fr)
+ * (C) 1999-2025 by Sebastien Godard (sysstat <at> orange.fr)
  */
 
 #ifndef _RD_SENSORS_H
diff -pruN 12.7.5-2/rd_stats.c 12.7.7-0ubuntu2/rd_stats.c
--- 12.7.5-2/rd_stats.c	2023-11-10 17:47:41.000000000 +0000
+++ 12.7.7-0ubuntu2/rd_stats.c	2025-02-02 07:33:58.000000000 +0000
@@ -1,6 +1,6 @@
 /*
  * rd_stats.c: Read system statistics
- * (C) 1999-2023 by Sebastien GODARD (sysstat <at> orange.fr)
+ * (C) 1999-2025 by Sebastien GODARD (sysstat <at> orange.fr)
  *
  ***************************************************************************
  * This program is free software; you can redistribute it and/or modify it *
@@ -2846,7 +2846,7 @@ int read_softnet(struct stats_softnet *s
 		}
 		else {
 			/* cpu_id not present in file */
-			while ((!(online_cpu_bitmap[(cpu - 1) >> 3] & (1 << ((cpu - 1) & 0x07)))) && (cpu < nr_alloc)) {
+			while (!IS_CPU_SET(online_cpu_bitmap, cpu - 1) && (cpu < nr_alloc)) {
 				cpu++;
 			}
 		}
diff -pruN 12.7.5-2/rd_stats.h 12.7.7-0ubuntu2/rd_stats.h
--- 12.7.5-2/rd_stats.h	2023-11-10 17:53:29.000000000 +0000
+++ 12.7.7-0ubuntu2/rd_stats.h	2025-02-02 07:33:59.000000000 +0000
@@ -1,6 +1,6 @@
 /*
  * rd_stats.h: Include file used to read system statistics
- * (C) 1999-2023 by Sebastien Godard (sysstat <at> orange.fr)
+ * (C) 1999-2025 by Sebastien Godard (sysstat <at> orange.fr)
  */
 
 #ifndef _RD_STATS_H
diff -pruN 12.7.5-2/rndr_stats.c 12.7.7-0ubuntu2/rndr_stats.c
--- 12.7.5-2/rndr_stats.c	2023-11-12 08:07:10.000000000 +0000
+++ 12.7.7-0ubuntu2/rndr_stats.c	2025-02-02 07:33:58.000000000 +0000
@@ -1,6 +1,6 @@
 /*
  * rndr_stats.c: Functions used by sadf to display statistics in selected format.
- * (C) 1999-2023 by Sebastien GODARD (sysstat <at> orange.fr)
+ * (C) 1999-2025 by Sebastien GODARD (sysstat <at> orange.fr)
  *
  ***************************************************************************
  * This program is free software; you can redistribute it and/or modify it *
@@ -24,7 +24,6 @@
 #include <stdarg.h>
 
 #include "sa.h"
-#include "ioconf.h"
 #include "rndr_stats.h"
 
 #ifdef USE_NLS
@@ -194,8 +193,8 @@ __print_funct_t render_cpu_stats(struct
 	for (i = 0; (i < a->nr_ini) && (i < a->bitmap->b_size + 1); i++) {
 
 		/* Should current CPU (including CPU "all") be displayed? */
-		if (!(a->bitmap->b_array[i >> 3] & (1 << (i & 0x07))) ||
-		    offline_cpu_bitmap[i >> 3] & (1 << (i & 0x07)))
+		if (!IS_CPU_SELECTED(a->bitmap->b_array, i) ||
+		    IS_CPU_OFFLINE(offline_cpu_bitmap, i))
 			/* Don't display CPU */
 			continue;
 
@@ -552,7 +551,7 @@ __print_funct_t render_irq_stats(struct
 										  + i * a->msize);
 
 			/* Should current CPU (including CPU "all") be displayed? */
-			if (masked_cpu_bitmap[c >> 3] & (1 << (c & 0x07)))
+			if (IS_CPU_SET(masked_cpu_bitmap, c))
 				/* No */
 				continue;
 
@@ -2055,7 +2054,7 @@ __print_funct_t render_net_etcp_stats(st
 	       NULL);
 
 	render(isdb, pre, PT_NOFLAG,
-	       "-\tretrans/s", NULL, NULL,
+	       "-\tretrseg/s", NULL, NULL,
 	       NOVAL,
 	       S_VALUE(snetp->RetransSegs, snetc->RetransSegs, itv),
 	       NULL);
@@ -2613,7 +2612,7 @@ __print_funct_t render_pwr_cpufreq_stats
 			continue;
 
 		/* Should current CPU (including CPU "all") be displayed? */
-		if (!(a->bitmap->b_array[i >> 3] & (1 << (i & 0x07))))
+		if (!IS_CPU_SELECTED(a->bitmap->b_array, i))
 			/* No */
 			continue;
 
@@ -2858,7 +2857,7 @@ __print_funct_t render_pwr_wghfreq_stats
 		spp = (struct stats_pwr_wghfreq *) ((char *) a->buf[!curr] + i * a->msize * a->nr2);
 
 		/* Should current CPU (including CPU "all") be displayed? */
-		if (!(a->bitmap->b_array[i >> 3] & (1 << (i & 0x07))))
+		if (!IS_CPU_SELECTED(a->bitmap->b_array, i))
 			/* No */
 			continue;
 
@@ -3180,8 +3179,8 @@ __print_funct_t render_softnet_stats(str
 		 * used by sadc to create a file, and the version of sysstat
 		 * used by sar to read it...
 		 */
-		if (!(a->bitmap->b_array[i >> 3] & (1 << (i & 0x07))) ||
-		    offline_cpu_bitmap[i >> 3] & (1 << (i & 0x07)))
+		if (!IS_CPU_SELECTED(a->bitmap->b_array, i) ||
+		    IS_CPU_OFFLINE(offline_cpu_bitmap, i))
 			/* No */
 			continue;
 
diff -pruN 12.7.5-2/rndr_stats.h 12.7.7-0ubuntu2/rndr_stats.h
--- 12.7.5-2/rndr_stats.h	2023-05-06 16:26:53.000000000 +0000
+++ 12.7.7-0ubuntu2/rndr_stats.h	2025-02-02 07:33:59.000000000 +0000
@@ -1,6 +1,6 @@
 /*
  * rndr_stats.h: Include file used to display system statistics in selected format.
- * (C) 1999-2023 by Sebastien Godard (sysstat <at> orange.fr)
+ * (C) 1999-2025 by Sebastien Godard (sysstat <at> orange.fr)
  */
 
 #ifndef _RNDR_STATS_H
diff -pruN 12.7.5-2/sa.h 12.7.7-0ubuntu2/sa.h
--- 12.7.5-2/sa.h	2023-06-02 08:27:20.000000000 +0000
+++ 12.7.7-0ubuntu2/sa.h	2025-02-02 07:33:59.000000000 +0000
@@ -1,15 +1,11 @@
 /*
  * sar/sadc: Report system activity
- * (C) 1999-2023 by Sebastien Godard (sysstat <at> orange.fr)
+ * (C) 1999-2025 by Sebastien Godard (sysstat <at> orange.fr)
  */
 
 #ifndef _SA_H
 #define _SA_H
 
-#include <stdio.h>
-#include <stdint.h>
-
-#include "common.h"
 #include "rd_stats.h"
 #include "rd_sensors.h"
 
@@ -416,6 +412,7 @@ struct svg_parm {
 	int graph_no;				/* Total number of views already displayed */
 	int restart;				/* TRUE if we have just met a RESTART record */
 	int nr_act_dispd;			/* Number of activities that will be displayed */
+	int mock;				/* TRUE if no data shall be actually printed */
 	char hour;				/* Hour, minute and second (expressed in the */
 	char minute;				/* locale of the datafile creator) for first */
 	char second;				/* sample */
@@ -1359,9 +1356,15 @@ enum svg_graph_type {
 	SVG_BAR_GRAPH	= 2
 };
 
+#define MOCK_MODE	TRUE
+#define REAL_MODE	FALSE
+
 /* Maximum number of horizontal lines for the background grid */
 #define MAX_HLINES_NR	10
 
+/* Minimum SVG canvas height (in pixels) */
+#define MIN_CANVAS_HEIGHT	100
+
 /* Color palette constants */
 #define SVG_COLORS_IDX_MASK	0x0f
 #define SVG_COL_PALETTE_SIZE	24
@@ -1617,6 +1620,8 @@ void init_custom_color_palette
 	(void);
 void init_extrema_values
 	(struct activity *, int);
+void init_minmax_buf
+	(struct activity *, size_t, size_t);
 int next_slice
 	(unsigned long long, unsigned long long, int, long);
 void parse_sa_devices
diff -pruN 12.7.5-2/sa1.in 12.7.7-0ubuntu2/sa1.in
--- 12.7.5-2/sa1.in	2023-05-06 16:26:53.000000000 +0000
+++ 12.7.7-0ubuntu2/sa1.in	2025-02-02 07:33:59.000000000 +0000
@@ -1,6 +1,6 @@
 #!/bin/sh
 # @SA_LIB_DIR@/sa1
-# (C) 1999-2023 Sebastien Godard (sysstat <at> orange.fr)
+# (C) 1999-2025 Sebastien Godard (sysstat <at> orange.fr)
 #
 #@(#) @PACKAGE_NAME@-@PACKAGE_VERSION@
 #@(#) sa1: Collect and store binary data in system activity data file.
diff -pruN 12.7.5-2/sa2.in 12.7.7-0ubuntu2/sa2.in
--- 12.7.5-2/sa2.in	2023-05-06 16:26:53.000000000 +0000
+++ 12.7.7-0ubuntu2/sa2.in	2025-02-02 07:33:59.000000000 +0000
@@ -1,6 +1,6 @@
 #!/bin/sh
 # @SA_LIB_DIR@/sa2
-# (C) 1999-2023 Sebastien Godard (sysstat <at> orange.fr)
+# (C) 1999-2025 Sebastien Godard (sysstat <at> orange.fr)
 #
 #@(#) @PACKAGE_NAME@-@PACKAGE_VERSION@
 #@(#) sa2: Write a daily report
diff -pruN 12.7.5-2/sa_common.c 12.7.7-0ubuntu2/sa_common.c
--- 12.7.5-2/sa_common.c	2023-11-02 07:38:18.000000000 +0000
+++ 12.7.7-0ubuntu2/sa_common.c	2025-02-02 07:33:58.000000000 +0000
@@ -1,6 +1,6 @@
 /*
  * sar and sadf common routines.
- * (C) 1999-2023 by Sebastien GODARD (sysstat <at> orange.fr)
+ * (C) 1999-2025 by Sebastien GODARD (sysstat <at> orange.fr)
  *
  ***************************************************************************
  * This program is free software; you can redistribute it and/or modify it *
@@ -22,7 +22,6 @@
 #include <stdio.h>
 #include <string.h>
 #include <stdlib.h>
-#include <stdint.h>
 #include <time.h>
 #include <errno.h>
 #include <unistd.h>	/* For STDOUT_FILENO, among others */
@@ -37,7 +36,6 @@
 
 #include "version.h"
 #include "sa.h"
-#include "ioconf.h"
 
 #ifdef USE_NLS
 #include <locale.h>
@@ -162,7 +160,11 @@ void guess_sa_name(char *sa_dir, struct
 		/* Cannot find or access saYYYYMMDD, so use saDD */
 		return;
 	sa_mtime = sb.st_mtime;
+#ifndef __APPLE__
 	nsec = sb.st_mtim.tv_nsec;
+#else
+	nsec = sb.st_mtimespec.tv_nsec;
+#endif
 
 	/* Look for saDD */
 	snprintf(filename, sizeof(filename),
@@ -177,7 +179,12 @@ void guess_sa_name(char *sa_dir, struct
 	}
 
 	if ((sa_mtime > sb.st_mtime) ||
-	    ((sa_mtime == sb.st_mtime) && (nsec > sb.st_mtim.tv_nsec))) {
+#ifndef __APPLE__
+	    ((sa_mtime == sb.st_mtime) && (nsec > sb.st_mtim.tv_nsec))
+#else
+	    ((sa_mtime == sb.st_mtime) && (nsec > sb.st_mtimespec.tv_nsec))
+#endif
+	) {
 		/* saYYYYMMDD is more recent than saDD, so use it */
 		*sa_name = 1;
 	}
@@ -449,19 +456,40 @@ int write_all(int fd, const void *buf, i
 #ifndef SOURCE_SADC
 /*
  * **************************************************************************
+ * Init buffers for min and max values.
+ *
+ * IN:
+ * @a		Activity for which buffers are to be initialized.
+ * @start_slot	First slot to init.
+ * @nr_alloc	Number of slots to init.
+ ***************************************************************************
+ */
+void init_minmax_buf(struct activity *a, size_t start_slot, size_t nr_alloc)
+{
+	int j;
+	double *val;
+
+	for (j = start_slot * a->nr2 * a->xnr;
+	     j < nr_alloc * a->nr2 * a->xnr; j++) {
+		val = (double *) (a->spmin + j);
+		*val = DBL_MAX;
+		val = (double *) (a->spmax + j);
+		*val = -DBL_MAX;
+	     }
+}
+
+/*
+ * **************************************************************************
  * Allocate buffers for min and max values.
  *
  * IN:
- * @act		Activity for which buffers are to be initialized.
+ * @a		Activity for which buffers are to be initialized.
  * @nr_alloc	Number of slots to allocate.
  * @flags	Flags for common options and system state.
  ***************************************************************************
  */
 void allocate_minmax_buf(struct activity *a, size_t nr_alloc, uint64_t flags)
 {
-	int j;
-	double *val;
-
 	/* nr_alloc should be greater than a->nr_spalloc */
 	if (nr_alloc <= a->nr_spalloc) {
 #ifdef DEBUG
@@ -482,25 +510,14 @@ void allocate_minmax_buf(struct activity
 
 	if (DISPLAY_MINMAX(flags) && a->xnr) {
 
-		/* Look for a possible overflow */
-		check_overflow((unsigned int) a->xnr,
-			       (unsigned int) nr_alloc,
-			       (unsigned int) a->nr2);
-
 		/* Allocate arrays for min and max values... */
 		SREALLOC(a->spmin, void,
-			 nr_alloc * (size_t) a->nr2 * (size_t) a->xnr * sizeof(double));
+			 mul_check_overflow4(nr_alloc, (size_t) a->nr2, (size_t) a->xnr, sizeof(double)));
 		SREALLOC(a->spmax, void,
-			 nr_alloc * (size_t) a->nr2 * (size_t) a->xnr * sizeof(double));
+			 mul_check_overflow4(nr_alloc, (size_t) a->nr2, (size_t) a->xnr, sizeof(double)));
 
 		/* ... and init them */
-		for (j = a->nr_spalloc * a->nr2 * a->xnr;
-		     j < nr_alloc * a->nr2 * a->xnr; j++) {
-			val = (double *) (a->spmin + j);
-			*val = DBL_MAX;
-			val = (double *) (a->spmax + j);
-			*val = -DBL_MAX;
-		}
+		init_minmax_buf(a, a->nr_spalloc, nr_alloc);
 		a->nr_spalloc = nr_alloc;
 	}
 }
@@ -510,7 +527,7 @@ void allocate_minmax_buf(struct activity
  * Allocate buffers for one activity.
  *
  * IN:
- * @act		Activity for which buffers are to be initialized.
+ * @a		Activity for which buffers are to be initialized.
  * @nr_alloc	Number of structures to allocate.
  * @flags	Flags for common options and system state.
  ***************************************************************************
@@ -528,14 +545,9 @@ void allocate_buffers(struct activity *a
 		return;
 	}
 
-	/* Look for a possible overflow */
-	check_overflow((unsigned int) a->msize,
-		       (unsigned int) nr_alloc,
-		       (unsigned int) a->nr2);
-
 	for (j = 0; j < 3; j++) {
 		SREALLOC(a->buf[j], void,
-			 (size_t) a->msize * nr_alloc * (size_t) a->nr2);
+			 mul_check_overflow3((size_t) a->msize, nr_alloc, (size_t) a->nr2));
 
 		/* If its a reallocation then init additional space which has been allocated */
 		if (a->nr_allocated) {
@@ -554,7 +566,7 @@ void allocate_buffers(struct activity *a
  * Allocate structures for all activities.
  *
  * IN:
- * @act	Array of activities.
+ * @act		Array of activities.
  * @flags	Flags for common options and system state.
  ***************************************************************************
  */
@@ -3387,7 +3399,7 @@ unsigned long long get_global_cpu_statis
 			 * Mark CPU as offline to not display it
 			 * (and thus it will not be confused with a tickless CPU).
 			 */
-			offline_cpu_bitmap[i >> 3] |= 1 << (i & 0x07);
+			MARK_CPU_OFFLINE(offline_cpu_bitmap, i);
 		}
 
 		if ((tot_jiffies_p == 0) && !WANT_SINCE_BOOT(flags)) {
@@ -3399,7 +3411,7 @@ unsigned long long get_global_cpu_statis
 			 * So don't display that CPU to prevent "jump-from-zero"
 			 * output syndrome, and don't take it into account for CPU "all".
 			 */
-			offline_cpu_bitmap[i >> 3] |= 1 << (i & 0x07);
+			MARK_CPU_OFFLINE(offline_cpu_bitmap, i);
 			continue;
 		}
 
@@ -3500,7 +3512,7 @@ void get_global_soft_statistics(struct a
 			 * (CPU may be online but we don't display it because all
 			 * its counters would appear to jump from zero...)
 			 */
-			offline_cpu_bitmap[i >> 3] |= 1 << (i & 0x07);
+			MARK_CPU_OFFLINE(offline_cpu_bitmap, i);
 			continue;
 		}
 
@@ -3508,7 +3520,7 @@ void get_global_soft_statistics(struct a
 		    ssnc->received_rps + ssnc->flow_limit + ssnc->backlog_len == 0) {
 			/* Assume current CPU is offline */
 			*ssnc = *ssnp;
-			offline_cpu_bitmap[i >> 3] |= 1 << (i & 0x07);
+			MARK_CPU_OFFLINE(offline_cpu_bitmap, i);
 		}
 
 		ssnc_all->processed += ssnc->processed;
@@ -3571,15 +3583,15 @@ void get_global_int_statistics(struct ac
 		 * or if it has not been selected.
 		 */
 		if (((stp_cpu_sum->irq_nr == 0) && !WANT_SINCE_BOOT(flags)) ||
-		    (!(a->bitmap->b_array[i >> 3] & (1 << (i & 0x07))))) {
+		    !IS_CPU_SELECTED(a->bitmap->b_array, i)) {
 			/* CPU should not be displayed */
-			masked_cpu_bitmap[i >> 3] |= 1 << (i & 0x07);
+			SET_CPU_BITMAP(masked_cpu_bitmap, i);
 			continue;
 		}
 
 		if (stc_cpu_sum->irq_nr == 0) {
 			/* Assume current CPU is offline */
-			masked_cpu_bitmap[i >> 3] |= 1 << (i & 0x07);
+			SET_CPU_BITMAP(masked_cpu_bitmap, i);
 			memcpy(stc_cpu_sum, stp_cpu_sum, (size_t) a->msize * a->nr2);
 		}
 
diff -pruN 12.7.5-2/sa_conv.c 12.7.7-0ubuntu2/sa_conv.c
--- 12.7.5-2/sa_conv.c	2023-06-03 06:29:43.000000000 +0000
+++ 12.7.7-0ubuntu2/sa_conv.c	2025-02-02 07:33:59.000000000 +0000
@@ -1,6 +1,6 @@
 /*
  * sa_conv.c: Convert an old format sa file to the up-to-date format.
- * (C) 1999-2023 by Sebastien GODARD (sysstat <at> orange.fr)
+ * (C) 1999-2025 by Sebastien GODARD (sysstat <at> orange.fr)
  *
  ***************************************************************************
  * This program is free software; you can redistribute it and/or modify it *
diff -pruN 12.7.5-2/sa_conv.h 12.7.7-0ubuntu2/sa_conv.h
--- 12.7.5-2/sa_conv.h	2023-05-06 16:26:53.000000000 +0000
+++ 12.7.7-0ubuntu2/sa_conv.h	2025-02-02 07:33:59.000000000 +0000
@@ -1,6 +1,6 @@
 /*
  * sa_conv.h: Include file for "sadf -c" command.
- * (C) 1999-2023 by Sebastien Godard (sysstat <at> orange.fr)
+ * (C) 1999-2025 by Sebastien Godard (sysstat <at> orange.fr)
  */
 
 #ifndef _SA_CONV_H
diff -pruN 12.7.5-2/sa_wrap.c 12.7.7-0ubuntu2/sa_wrap.c
--- 12.7.5-2/sa_wrap.c	2023-05-06 16:26:53.000000000 +0000
+++ 12.7.7-0ubuntu2/sa_wrap.c	2025-02-02 07:33:59.000000000 +0000
@@ -1,6 +1,6 @@
 /*
  * sysstat - sa_wrap.c: Functions used in activity.c
- * (C) 1999-2023 by Sebastien GODARD (sysstat <at> orange.fr)
+ * (C) 1999-2025 by Sebastien GODARD (sysstat <at> orange.fr)
  *
  ***************************************************************************
  * This program is free software; you can redistribute it and/or modify it *
@@ -1130,7 +1130,7 @@ int get_online_cpu_list(unsigned char on
 				/* Return -1 or 0 */
 				return ((proc_nr >= 0) * -1);
 			}
-			online_cpu_bitmap[proc_nr >> 3] |= 1 << (proc_nr & 0x07);
+			SET_CPU_BITMAP(online_cpu_bitmap, proc_nr);
 		}
 	}
 
diff -pruN 12.7.5-2/sadc.c 12.7.7-0ubuntu2/sadc.c
--- 12.7.5-2/sadc.c	2023-11-02 07:41:48.000000000 +0000
+++ 12.7.7-0ubuntu2/sadc.c	2025-02-02 07:33:59.000000000 +0000
@@ -1,6 +1,6 @@
 /*
  * sadc: system activity data collector
- * (C) 1999-2023 by Sebastien GODARD (sysstat <at> orange.fr)
+ * (C) 1999-2025 by Sebastien GODARD (sysstat <at> orange.fr)
  *
  ***************************************************************************
  * This program is free software; you can redistribute it and/or modify it *
@@ -23,7 +23,6 @@
 #include <string.h>
 #include <stdlib.h>
 #include <stdint.h>
-#include <ctype.h>
 #include <unistd.h>
 #include <fcntl.h>
 #include <time.h>
@@ -361,14 +360,9 @@ void sa_sys_init(void)
 
 		if (IS_COLLECTED(act[i]->options) && (act[i]->nr_ini > 0)) {
 
-			/* Look for a possible overflow */
-			check_overflow((unsigned int) act[i]->msize,
-				       (unsigned int) act[i]->nr_ini,
-				       (unsigned int) act[i]->nr2);
-
 			/* Allocate structures for current activity (using nr_ini and nr2 results) */
 			SREALLOC(act[i]->_buf0, void,
-				 (size_t) act[i]->msize * (size_t) act[i]->nr_ini * (size_t) act[i]->nr2);
+				 mul_check_overflow3((size_t) act[i]->msize, (size_t) act[i]->nr_ini, (size_t) act[i]->nr2));
 			act[i]->nr_allocated = act[i]->nr_ini;
 		}
 
@@ -1014,13 +1008,8 @@ void open_ofile(int *ofd, char ofile[],
 			act[p]->nr_allocated = act[p]->nr_ini;
 		}
 
-		/* Look for a possible overflow */
-		check_overflow((unsigned int) act[p]->msize,
-			       (unsigned int) act[p]->nr_allocated,
-			       (unsigned int) act[p]->nr2);
-
 		SREALLOC(act[p]->_buf0, void,
-			 (size_t) act[p]->msize * (size_t) act[p]->nr_allocated * (size_t) act[p]->nr2);
+			 mul_check_overflow3((size_t) act[p]->msize, (size_t) act[p]->nr_allocated, (size_t) act[p]->nr2));
 
 		/* Save activity sequence */
 		id_seq[i] = file_act[i].id;
diff -pruN 12.7.5-2/sadf.c 12.7.7-0ubuntu2/sadf.c
--- 12.7.5-2/sadf.c	2023-11-02 16:40:35.000000000 +0000
+++ 12.7.7-0ubuntu2/sadf.c	2025-02-02 07:33:59.000000000 +0000
@@ -1,6 +1,6 @@
 /*
  * sadf: system activity data formatter
- * (C) 1999-2023 by Sebastien GODARD (sysstat <at> orange.fr)
+ * (C) 1999-2025 by Sebastien GODARD (sysstat <at> orange.fr)
  *
  ***************************************************************************
  * This program is free software; you can redistribute it and/or modify it *
@@ -22,7 +22,6 @@
 #include <stdio.h>
 #include <string.h>
 #include <stdlib.h>
-#include <stdint.h>
 #include <stdarg.h>
 #include <unistd.h>
 #include <time.h>
@@ -526,6 +525,16 @@ int count_file_items(int ifd, char *file
 				else if (act[i]->nr[0] > act[i]->item_list_sz) {
 					act[i]->item_list_sz = act[i]->nr[0];
 				}
+				if (HAS_PERSISTENT_VALUES(act[i]->options) &&
+					(act[i]->item_list_sz < act[i]->nr_ini)) {
+					/*
+					 * For persistent (i.e. CPU related) activities,
+					 * structures must be allocated for every installed CPU,
+					 * even for offline CPU.
+					 * So item_list_sz cannot be smaller than nr_ini.
+					 */
+					act[i]->item_list_sz = act[i]->nr_ini;
+					}
 			}
 		}
 
@@ -891,68 +900,42 @@ void rw_curr_act_stats(int ifd, int *cur
 }
 
 /*
- ***************************************************************************
- * Read stats for current activity from file and display its SVG graphs.
+ * **************************************************************************
+ * Read stats for current activity from file and fill the buffers with SVG
+ * code that will be output later.
  * At most <count> lines of stats are taken into account.
  *
  * IN:
  * @ifd		File descriptor of input file.
  * @curr	Index in array for current sample statistics.
- * @p		Current activity position.
+ * @a		Current activity.
  * @file_actlst	List of (known or unknown) activities in file.
  * @rectime	Structure where timestamp (expressed in local time or in UTC
  *		depending on whether options -T/-t have been used or not) can
  *		be saved for current record.
  * @file	Name of file being read.
  * @file_magic	file_magic structure filled with file magic header data.
- * @g_nr	Number of graphs already displayed (for all activities).
- * @nr_act_dispd
- *		Total number of activities that will be displayed.
+ * @parm	SVG specific parameters.
  *
  * OUT:
  * @cnt		Number of lines of stats remaining to write.
  * @eosaf	Set to TRUE if EOF (end of file) has been reached.
  * @reset	Set to TRUE if last_uptime variable should be
  *		reinitialized (used in next_slice() function).
- * @g_nr	Total number of views displayed (including current activity).
+ * @parm	Some members are updated.
  ***************************************************************************
  */
-void display_curr_act_graphs(int ifd, int *curr, long *cnt, int *eosaf,
-			     int p, int *reset, struct file_activity *file_actlst,
-			     struct tstamp_ext *rectime, char *file,
-			     struct file_magic *file_magic, int *g_nr, int nr_act_dispd)
+void gen_curr_act_svg_code(int ifd, int *curr, long *cnt, int *eosaf, struct activity *a,
+			   int *reset, struct file_activity *file_actlst,
+			   struct tstamp_ext *rectime, char *file,
+			   struct file_magic *file_magic, struct svg_parm *parm)
 {
-	struct svg_parm parm;
 	int rtype;
 	int next, reset_cd;
 
-	/* Rewind file */
-	seek_file_position(ifd, DO_RESTORE);
-
-	/*
-	 * Restore the first stats collected.
-	 * Originally used to compute the rate displayed on the first line.
-	 * Here, this is to plot the first point and start the graph.
-	 */
-	copy_structures(act, id_seq, record_hdr, !*curr, 2);
-
-	parm.graph_no = *g_nr;
-	parm.ust_time_ref = (unsigned long long) get_time_ref();
-	parm.ust_time_first = record_hdr[2].ust_time;
-	parm.restart = TRUE;
-	parm.file_hdr = &file_hdr;
-	parm.nr_act_dispd = nr_act_dispd;
-	parm.hour = record_hdr[2].hour;
-	parm.minute = record_hdr[2].minute;
-	parm.second = record_hdr[2].second;
-	strcpy(parm.my_tzname, my_tzname);
-
 	*cnt  = count;
 	reset_cd = 1;
 
-	/* Allocate graphs arrays */
-	(*act[p]->f_svg_print)(act[p], !*curr, F_BEGIN, &parm, 0, &record_hdr[!*curr]);
-
 	do {
 		*eosaf = read_next_sample(ifd, IGNORE_RESTART | IGNORE_COMMENT | SET_TIMESTAMPS,
 					  *curr, file, &rtype, 0, file_magic,
@@ -961,7 +944,7 @@ void display_curr_act_graphs(int ifd, in
 			break;
 
 		if (rtype == R_RESTART) {
-			parm.restart = TRUE;
+			parm->restart = TRUE;
 			*reset = TRUE;
 			/* Go to next statistics record, if possible */
 			do {
@@ -976,7 +959,7 @@ void display_curr_act_graphs(int ifd, in
 		else if (rtype != R_COMMENT) {
 
 			next = generic_write_stats(*curr, tm_start.use, tm_end.use, *reset, cnt,
-						   &parm, rectime, reset_cd, act[p]->id);
+						   parm, rectime, reset_cd, a->id);
 			reset_cd = 0;
 			if (next) {
 				/*
@@ -984,8 +967,8 @@ void display_curr_act_graphs(int ifd, in
 				 * In this case, the call to generic_write_stats() has actually
 				 * displayed a line of stats.
 				 */
-				parm.restart = FALSE;
-				parm.ust_time_end = record_hdr[*curr].ust_time;
+				parm->restart = FALSE;
+				parm->ust_time_end = record_hdr[*curr].ust_time;
 				*curr ^= 1;
 				if (*cnt > 0) {
 					(*cnt)--;
@@ -997,6 +980,77 @@ void display_curr_act_graphs(int ifd, in
 	while (!*eosaf && *cnt);
 
 	*reset = TRUE;
+}
+
+/*
+ ***************************************************************************
+ * Read stats for current activity from file and output its SVG code.
+ * At most <count> lines of stats are taken into account.
+ *
+ * IN:
+ * @ifd		File descriptor of input file.
+ * @curr	Index in array for current sample statistics.
+ * @a		Current activity.
+ * @file_actlst	List of (known or unknown) activities in file.
+ * @rectime	Structure where timestamp (expressed in local time or in UTC
+ *		depending on whether options -T/-t have been used or not) can
+ *		be saved for current record.
+ * @file	Name of file being read.
+ * @file_magic	file_magic structure filled with file magic header data.
+ * @g_nr	Number of graphs already displayed (for all activities).
+ * @nr_act_dispd
+ *		Total number of activities that will be displayed.
+ * @mock_m	Set to TRUE (MOCK_MODE) to prevent data from being printed
+ *		onto the screen. Used to compute the real SVG canvas height.
+ *		Set to FALSE (REAL_MODE) to indicate that SVG data can be
+ *		printed (canvas height is now known).
+ *
+ * OUT:
+ * @cnt		Number of lines of stats remaining to write.
+ * @eosaf	Set to TRUE if EOF (end of file) has been reached.
+ * @reset	Set to TRUE if last_uptime variable should be
+ *		reinitialized (used in next_slice() function).
+ * @g_nr	Total number of rows displayed (including current activity).
+ *		This is the same as the number of views unless "-O packed"
+ *		option has been used.
+ ***************************************************************************
+ */
+void display_curr_act_graphs(int ifd, int *curr, long *cnt, int *eosaf,
+			     struct activity *a, int *reset, struct file_activity *file_actlst,
+			     struct tstamp_ext *rectime, char *file,
+			     struct file_magic *file_magic, int *g_nr, int nr_act_dispd,
+			     int mock_m)
+{
+	struct svg_parm parm;
+
+	/* Rewind file */
+	seek_file_position(ifd, DO_RESTORE);
+
+	/*
+	 * Restore the first stats collected.
+	 * Originally used to compute the rate displayed on the first line.
+	 * Here, this is to plot the first point and start the graph.
+	 */
+	copy_structures(act, id_seq, record_hdr, !*curr, 2);
+
+	parm.graph_no = *g_nr;
+	parm.ust_time_ref = (unsigned long long) get_time_ref();
+	parm.ust_time_first = record_hdr[2].ust_time;
+	parm.restart = TRUE;
+	parm.file_hdr = &file_hdr;
+	parm.nr_act_dispd = nr_act_dispd;
+	parm.hour = record_hdr[2].hour;
+	parm.minute = record_hdr[2].minute;
+	parm.second = record_hdr[2].second;
+	strcpy(parm.my_tzname, my_tzname);
+	parm.mock = mock_m;
+
+	/* Allocate graphs arrays */
+	(*a->f_svg_print)(a, !*curr, F_BEGIN, &parm, 0, &record_hdr[!*curr]);
+
+	/* Generate SVG code for current activity */
+	gen_curr_act_svg_code(ifd, curr, cnt, eosaf, a, reset, file_actlst,
+			      rectime, file, file_magic, &parm);
 
 	/* Determine X axis end value */
 	if (DISPLAY_ONE_DAY(flags) &&
@@ -1004,14 +1058,96 @@ void display_curr_act_graphs(int ifd, in
 		parm.ust_time_end = parm.ust_time_ref + (3600 * 24);
 	}
 
-	/* Actually display graphs for current activity */
-	(*act[p]->f_svg_print)(act[p], *curr, F_END, &parm, 0, &record_hdr[!*curr]);
+	/*
+	 * Actually display graphs for current activity unless we are in MOCK_MODE,
+	 * in which case no data are printed but canvas height is calculated.
+	 */
+	(*a->f_svg_print)(a, *curr, F_END, &parm, 0, &record_hdr[!*curr]);
 
-	/* Update total number of graphs already displayed */
+	/* Update total number of rows already displayed */
 	*g_nr = parm.graph_no;
 }
 
 /*
+ * **************************************************************************
+ * Generate SVG code for current file contents.
+ *
+ * IN:
+ * @ifd		File descriptor of input file.
+ * @file	Name of file being read.
+ * @curr	Index in array for current sample statistics.
+ * @g_nr	Number of rows already displayed (for all activities).
+ * @nr_act_dispd
+ *		Total number of activities that will be displayed.
+ * @file_actlst	List of (known or unknown) activities in file.
+ * @file_magic	file_magic structure filled with file magic header data.
+ * @rectime	Structure where timestamp (expressed in local time or in UTC
+ *		depending on whether options -T/-t have been used or not) can
+ *		be saved for current record.
+ * @mock_m	Set to TRUE (MOCK_MODE) to prevent data from being printed
+ *		onto the screen. Used to compute the real SVG canvas height.
+ *		Set to FALSE (REAL_MODE) to indicate that SVG data can be
+ *		printed (canvas height is now known).
+ *
+ * OUT:
+ * @cnt		Number of lines of stats remaining to write.
+ * @eosaf	Set to TRUE if EOF (end of file) has been reached.
+ * @reset	Set to TRUE if last_uptime variable should be
+ *		reinitialized (used in next_slice() function).
+ * @g_nr	Total number of rows displayed (including current activity).
+ *		This is the same as the number of views unless "-O packed"
+ *		option has been used.
+ ***************************************************************************
+ */
+void gen_curr_file_svg_code(int ifd, char *file, int *curr, long *cnt, int *eosaf, int *reset,
+			    int *g_nr, int nr_act_dispd, struct file_activity *file_actlst,
+			    struct file_magic *file_magic, struct tstamp_ext *rectime, int mock_m)
+{
+	int i, p;
+
+	/* For each requested activity, generate SVG code */
+	for (i = 0; i < NR_ACT; i++) {
+
+		if (!id_seq[i])
+			continue;
+
+		p = get_activity_position(act, id_seq[i], EXIT_IF_NOT_FOUND);
+		if (!IS_SELECTED(act[p]->options) || !act[p]->g_nr)
+			continue;
+
+		/*
+		 * Reinitialize spmin/spmax buffers in REAL_MODE.
+		 * NB: In MOCK_MODE, this has already been done in allocate_structures().
+		 */
+		if (mock_m == REAL_MODE) {
+			init_minmax_buf(act[p], 0, act[p]->nr_spalloc);
+		}
+
+		if (!HAS_MULTIPLE_OUTPUTS(act[p]->options)) {
+			display_curr_act_graphs(ifd, curr, cnt, eosaf, act[p], reset, file_actlst,
+						rectime, file, file_magic, g_nr, nr_act_dispd,
+						mock_m);
+		}
+		else {
+			unsigned int optf, msk;
+
+			optf = act[p]->opt_flags;
+
+			for (msk = 1; msk < 0x100; msk <<= 1) {
+				if ((act[p]->opt_flags & 0xff) & msk) {
+					act[p]->opt_flags &= (0xffffff00 + msk);
+					display_curr_act_graphs(ifd, curr, cnt, eosaf, act[p],
+								reset, file_actlst, rectime, file,
+								file_magic, g_nr, nr_act_dispd,
+								mock_m);
+					act[p]->opt_flags = optf;
+				}
+			}
+		}
+	}
+}
+
+/*
  ***************************************************************************
  * Display file contents in selected format (logic #1).
  * Logic #1:	Grouped by record type. Sorted by timestamp.
@@ -1362,41 +1498,31 @@ void svg_display_loop(int ifd, char *fil
 		      struct file_magic *file_magic, struct tstamp_ext *rectime, void *dparm)
 {
 	struct svg_hdr_parm parm;
-	int i, p;
-	int curr = 1, rtype, g_nr = 0, views_per_row = 1, nr_act_dispd;
+	int i, curr = 1, rtype, g_nr = 0, views_per_row = 1, nr_act_dispd;
 	int eosaf = TRUE, reset = TRUE;
 	long cnt = 1;
-	int graph_nr = 0;
+	int action = F_END;
+	int save_cpu_nr = file_hdr.sa_cpu_nr;
 
 	/* Init custom colors palette */
 	init_custom_color_palette();
 
+	/* Print SVG header */
+	if (*fmt[f_position]->f_header) {
+		(*fmt[f_position]->f_header)(&parm, F_BEGIN, file, NULL, file_magic,
+					     &file_hdr, act, id_seq, file_actlst);
+	}
+
 	/*
 	 * Calculate the number of rows and the max number of views per row to display.
 	 * Result may be 0. In this case, "No data" will be displayed instead of the graphs.
 	 */
-	graph_nr = get_svg_graph_nr(ifd, file, file_magic,
-				    file_actlst, rectime, &views_per_row, &nr_act_dispd);
-
-	if (SET_CANVAS_HEIGHT(flags)) {
-		/*
-		 * Option "-O height=..." used: @graph_nr is NO LONGER a number
-		 * of graphs but the SVG canvas height set on the command line.
-		 */
-		graph_nr = canvas_height;
-	}
-
+	get_svg_graph_nr(ifd, file, file_magic,
+		         file_actlst, rectime, &views_per_row, &nr_act_dispd);
 
-	parm.graph_nr = graph_nr;
 	parm.views_per_row = PACK_VIEWS(flags) ? views_per_row : 1;
 	parm.nr_act_dispd = nr_act_dispd;
 
-	/* Print SVG header */
-	if (*fmt[f_position]->f_header) {
-		(*fmt[f_position]->f_header)(&parm, F_BEGIN + F_MAIN, file, NULL, file_magic,
-					     &file_hdr, act, id_seq, file_actlst);
-	}
-
 	/*
 	* If this record is a special (RESTART or COMMENT) one, ignore it and
 	* (try to) get another one.
@@ -1408,6 +1534,7 @@ void svg_display_loop(int ifd, char *fil
 		{
 			/* End of sa data file: No views displayed */
 			parm.graph_nr = 0;
+			action += F_MAIN;
 			goto close_svg;
 		}
 	}
@@ -1421,47 +1548,60 @@ void svg_display_loop(int ifd, char *fil
 	/* Save current file position */
 	seek_file_position(ifd, DO_SAVE);
 
-	/* For each requested activity, display graphs */
-	for (i = 0; i < NR_ACT; i++) {
+	/* Generate mock SVG file. Used to determine real canvas height */
+	gen_curr_file_svg_code(ifd, file, &curr, &cnt, &eosaf, &reset, &g_nr, nr_act_dispd,
+			       file_actlst, file_magic, rectime, MOCK_MODE);
 
-		if (!id_seq[i])
-			continue;
+	/*
+	 * If option "-O height=..." has been used then @graph_nr is NO LONGER a number
+	 * of rows but the SVG canvas height set on the command line.
+	 * Else use @g_nr, the real number of rows that have been displayed.
+	 */
+	parm.graph_nr = SET_CANVAS_HEIGHT(flags) ? canvas_height : g_nr;
 
-		p = get_activity_position(act, id_seq[i], EXIT_IF_NOT_FOUND);
-		if (!IS_SELECTED(act[p]->options) || !act[p]->g_nr)
-			continue;
+	/*
+	 * Restore nr of CPU that will be displayed in SVG title.
+	 * Indeed, during the first file reading in MOCK_MODE,
+	 * a RESTART record with a different nr of CPU may exist.
+	 * When we read it, we will overwrite previous value saved in file_hdr.
+	 */
+	file_hdr.sa_cpu_nr = save_cpu_nr;
 
-		if (!HAS_MULTIPLE_OUTPUTS(act[p]->options)) {
-			display_curr_act_graphs(ifd, &curr, &cnt, &eosaf,
-						p, &reset, file_actlst,
-						rectime, file,
-						file_magic, &g_nr, nr_act_dispd);
+	/*
+	 * We don't know if CPU related activities will be displayed or not.
+	 * But if it is the case, @nr_ini will be used in the loop
+	 * to process all CPUs. So reset their value to their original one.
+	 * Buffers should already be allocated.
+	 */
+	for (i = 0; i < NR_ACT; i++) {
+		if (HAS_PERSISTENT_VALUES(act[i]->options) && (act[i]->nr_ini > 0)
+		    && (act[i]->nr_ini > file_hdr.sa_cpu_nr)) {
+			act[i]->nr_ini = file_hdr.sa_cpu_nr;
 		}
-		else {
-			unsigned int optf, msk;
-
-			optf = act[p]->opt_flags;
+	}
 
-			for (msk = 1; msk < 0x100; msk <<= 1) {
-				if ((act[p]->opt_flags & 0xff) & msk) {
-					act[p]->opt_flags &= (0xffffff00 + msk);
-					display_curr_act_graphs(ifd, &curr, &cnt, &eosaf,
-								p, &reset, file_actlst,
-								rectime, file,
-								file_magic, &g_nr, nr_act_dispd);
-					act[p]->opt_flags = optf;
-				}
-			}
-		}
+	/* Complete SVG header with real canvas height */
+	if (*fmt[f_position]->f_header) {
+		(*fmt[f_position]->f_header)(&parm, F_MAIN, file, NULL, file_magic,
+					     &file_hdr, act, id_seq, file_actlst);
 	}
 
-	/* Real number of graphs that have been displayed */
+	/* Reset variables to their original value */
+	curr = 1; g_nr = 0;
+	eosaf = TRUE, reset = TRUE;
+	cnt = 1;
+
+	/* Now really generate SVG code */
+	gen_curr_file_svg_code(ifd, file, &curr, &cnt, &eosaf, &reset, &g_nr, nr_act_dispd,
+			       file_actlst, file_magic, rectime, REAL_MODE);
+
+	/* Real number of rows that have been displayed */
 	parm.graph_nr = g_nr;
 
 close_svg:
 	/* Print SVG trailer */
 	if (*fmt[f_position]->f_header) {
-		(*fmt[f_position]->f_header)(&parm, F_END, file, NULL, file_magic,
+		(*fmt[f_position]->f_header)(&parm, action, file, NULL, file_magic,
 					     &file_hdr, act, id_seq, file_actlst);
 	}
 }
diff -pruN 12.7.5-2/sadf.h 12.7.7-0ubuntu2/sadf.h
--- 12.7.5-2/sadf.h	2023-12-09 15:53:16.000000000 +0000
+++ 12.7.7-0ubuntu2/sadf.h	2025-02-02 07:33:59.000000000 +0000
@@ -1,6 +1,6 @@
 /*
  * sadf: System activity data formatter
- * (C) 1999-2023 by Sebastien Godard (sysstat <at> orange.fr)
+ * (C) 1999-2025 by Sebastien Godard (sysstat <at> orange.fr)
  */
 
 #ifndef _SADF_H
@@ -9,7 +9,7 @@
 #include "sa.h"
 
 /* DTD version for XML output */
-#define XML_DTD_VERSION	"3.16"
+#define XML_DTD_VERSION	"3.17"
 
 /* Various constants */
 enum {
diff -pruN 12.7.5-2/sadf_misc.c 12.7.7-0ubuntu2/sadf_misc.c
--- 12.7.5-2/sadf_misc.c	2023-05-29 12:44:16.000000000 +0000
+++ 12.7.7-0ubuntu2/sadf_misc.c	2025-02-02 07:33:59.000000000 +0000
@@ -1,6 +1,6 @@
 /*
  * sadf_misc.c: Functions used by sadf to display special records
- * (C) 2011-2023 by Sebastien GODARD (sysstat <at> orange.fr)
+ * (C) 2011-2025 by Sebastien GODARD (sysstat <at> orange.fr)
  *
  ***************************************************************************
  * This program is free software; you can redistribute it and/or modify it *
@@ -1374,9 +1374,9 @@ __printf_funct_t print_svg_header(void *
 				 SVG_C_YSIZE * (DISPLAY_TOC(flags) ? hdr_parm->nr_act_dispd : 0) +
 				 SVG_T_YSIZE * hdr_parm->graph_nr;
 		}
-		if (height < 100) {
-			/* Min canvas height is 100 (at least to display "No data") */
-			height = 100;
+		if (height < MIN_CANVAS_HEIGHT) {
+			/* There is a min canvas height (at least to display "No data") */
+			height = MIN_CANVAS_HEIGHT;
 		}
 		printf(" width=\"%d\" height=\"%u\""
 		       " fill=\"black\" stroke=\"#%06x\" stroke-width=\"1\">\n",
@@ -1735,7 +1735,7 @@ __nr_t count_new_bat(struct activity *a,
  * Init custom color palette used to draw graphs (sadf -g).
  ***************************************************************************
  */
-void init_custom_color_palette()
+void init_custom_color_palette(void)
 {
 	char *e, *p;
 	int len;
diff -pruN 12.7.5-2/sar.c 12.7.7-0ubuntu2/sar.c
--- 12.7.5-2/sar.c	2023-11-02 07:43:21.000000000 +0000
+++ 12.7.7-0ubuntu2/sar.c	2025-02-02 07:33:59.000000000 +0000
@@ -1,6 +1,6 @@
 /*
  * sar: report system activity
- * (C) 1999-2023 by Sebastien GODARD (sysstat <at> orange.fr)
+ * (C) 1999-2025 by Sebastien GODARD (sysstat <at> orange.fr)
  *
  ***************************************************************************
  * This program is free software; you can redistribute it and/or modify it *
@@ -22,7 +22,6 @@
 #include <stdio.h>
 #include <string.h>
 #include <stdlib.h>
-#include <stdint.h>
 #include <unistd.h>
 #include <time.h>
 #include <errno.h>
diff -pruN 12.7.5-2/svg_stats.c 12.7.7-0ubuntu2/svg_stats.c
--- 12.7.5-2/svg_stats.c	2023-12-09 15:53:16.000000000 +0000
+++ 12.7.7-0ubuntu2/svg_stats.c	2025-02-02 07:33:59.000000000 +0000
@@ -1,6 +1,6 @@
 /*
  * svg_stats.c: Functions used by sadf to display statistics in SVG format.
- * (C) 2016-2023 by Sebastien GODARD (sysstat <at> orange.fr)
+ * (C) 2016-2025 by Sebastien GODARD (sysstat <at> orange.fr)
  *
  ***************************************************************************
  * This program is free software; you can redistribute it and/or modify it *
@@ -69,7 +69,7 @@ unsigned int svg_colors[SVG_COL_PALETTE_
  *
  * IN:
  * @pos		Position in array for the first graph extrema value.
- * @n		Number of graphs to scan.
+ * @n		Number of graphs to scan (number of metrics in current view).
  * @spmin	Buffer with min values.
  * @spmax	Buffer with max values.
  *
@@ -83,9 +83,14 @@ void get_global_extrema(int pos, int n,
 {
 	int i;
 
+	/*
+	 * Init global min and max values for current view with
+	 * min and max values for first metric in view.
+	 */
 	*gmin = *(spmin + pos);
 	*gmax = *(spmax + pos);
 
+	/* Now check min and max values of other metrics in current view */
 	for (i = 1; i < n; i++) {
 		if (*(spmin + pos + i) < *gmin) {
 			*gmin = *(spmin + pos + i);
@@ -277,6 +282,7 @@ void lniappend(unsigned long long timeta
  * @outsize	Size of array of chars for current graph definition.
  * @dt		Interval of time in seconds between current and previous
  * 		sample.
+ * @hval	TRUE if value may be greater than 100%.
  *
  * OUT:
  * @out		Pointer on array of chars for current graph definition that
@@ -286,7 +292,7 @@ void lniappend(unsigned long long timeta
  ***************************************************************************
  */
 void brappend(unsigned long long timetag, double offset, double value, char **out,
-	      int *outsize, unsigned long long dt)
+	      int *outsize, unsigned long long dt, int hval)
 {
 	char data[128];
 	unsigned long long t = 0;
@@ -296,15 +302,17 @@ void brappend(unsigned long long timetag
 		/* Don't draw a flat rectangle! */
 		return;
 	if (dt < timetag) {
-		t = timetag -dt;
+		t = timetag - dt;
 	}
 
 	snprintf(data, sizeof(data), "<rect x=\"%llu\" y=\"%.2f\" height=\"%.2f\" width=\"%llu\"/>",
-		 t, MINIMUM(offset, 100.0), MINIMUM(value, (100.0 - offset)), dt);
+		 t,
+		 hval ? offset : MINIMUM(offset, 100.0),
+		 hval ? value : MINIMUM(value, (100.0 - offset)),
+		 dt);
 	data[sizeof(data) - 1] = '\0';
 
 	save_svg_data(data, out, outsize);
-
 }
 
 /*
@@ -343,7 +351,7 @@ void cpuappend(unsigned long long timeta
 		*spmax = value;
 	}
 	/* Prepare additional graph definition data */
-	brappend(timetag, *offset, value, out, outsize, dt);
+	brappend(timetag, *offset, value, out, outsize, dt, FALSE);
 
 	*offset += value;
 }
@@ -794,7 +802,7 @@ int draw_activity_graphs(int g_nr, int g
 	time_t t = svg_p->file_hdr->sa_ust_time;
 
 	/* Print activity name in debug mode */
-	if (DISPLAY_DEBUG_MODE(flags)) {
+	if (DISPLAY_DEBUG_MODE(flags) && !svg_p->mock) {
 		printf("<!-- Name: %s -->\n", a->name);
 	}
 
@@ -802,37 +810,55 @@ int draw_activity_graphs(int g_nr, int g
 	for (i = 0; i < g_nr; i++) {
 
 		/* Print view number in debug mode */
-		if (DISPLAY_DEBUG_MODE(flags)) {
+		if (DISPLAY_DEBUG_MODE(flags) && !svg_p->mock) {
 			printf("<!-- View %d -->\n", i + 1);
 		}
 
-		/* Used as index in color palette */
-		palpos = (palette == SVG_BW_COL_PALETTE ? 0 : pos);
-
 		/* Get global min and max value for current view */
 		get_global_extrema(pos, group[i], spmin, spmax, &gmin, &gmax);
 
 		/* Don't display empty views if requested */
 		if (SKIP_EMPTY_VIEWS(flags) && (gmax < 0.005)) {
+			/* Free graph data and update @pos to go to next view */
 			skip_current_view(out, &pos, group[i]);
 			continue;
 		}
-		/* Skip void graphs */
-		if (skip_void && ((*(spmin + pos) == DBL_MAX) || (*(spmax + pos) == -DBL_MIN)))
+		/*
+		 * Skip void graphs.
+		 * At present time, this is only used by A_CPU and A_NET_SOFT activities to not
+		 * display CPU which are offline on the whole period. We assume that the first
+		 * metric in view is enough to determine if the whole view has to be skipped.
+		 */
+		if (skip_void && ((*(spmin + pos) == DBL_MAX) || (*(spmax + pos) == -DBL_MAX))) {
+			pos += group[i];	/* Maybe one day, A_CPU will have several views */
 			continue;
+		}
 
-		if (!displayed) {
+		if (!displayed && !svg_p->mock) {
 			/* Translate to proper position for current activity */
 			printf("<g id=\"g%u-%u\" transform=\"translate(0,%d)\">\n",
 			       a->id, xid,
 			       SVG_H_YSIZE + SVG_C_YSIZE * (DISPLAY_TOC(flags)
 			       ? svg_p->nr_act_dispd : 0) + SVG_T_YSIZE * svg_p->graph_no);
-			displayed = TRUE;
 		}
 
+		/*
+		 * Set @displayed to TRUE even in MOCK mode.
+		 * Means that a view would have actually been displayed.
+		 * @displayed will be set to 0 before leaving current function in
+		 * MOCK mode.
+		 */
+		displayed = TRUE;
+
 		/* Increment number of views actually displayed */
 		views_nr++;
 
+		if (svg_p->mock) {
+			/* Stop now in MOCK mode: Don't print anything onto the screen */
+			pos += group[i];
+			continue;
+		}
+
 		/* Compute top left position of view */
 		if (PACK_VIEWS(flags)) {
 			xv = (views_nr - 1) * SVG_T_XSIZE;
@@ -843,6 +869,9 @@ int draw_activity_graphs(int g_nr, int g
 			yv = (views_nr - 1) * SVG_T_YSIZE;
 		}
 
+		/* Used as index in color palette */
+		palpos = (palette == SVG_BW_COL_PALETTE ? 0 : pos);
+
 		/* Graph background */
 		printf("<rect x=\"%d\" y=\"%d\" height=\"%d\" width=\"%d\" fill=\"#%06x\"/>\n",
 		       xv, yv, SVG_V_YSIZE, SVG_V_XSIZE,
@@ -867,7 +896,7 @@ int draw_activity_graphs(int g_nr, int g
 		 * And a min and max value should have been found.
 		 */
 		if ((record_hdr->ust_time == svg_p->ust_time_first) ||
-			(*(spmin + pos) == DBL_MAX) || (*(spmax + pos) == -DBL_MIN)) {
+			(*(spmin + pos) == DBL_MAX) || (*(spmax + pos) == -DBL_MAX)) {
 			/* No data found */
 			printf("<text x=\"%d\" y=\"%d\" style=\"fill: #%06x; stroke: none\">No data</text>\n",
 			       xv, yv + SVG_M_YSIZE,
@@ -1000,7 +1029,12 @@ int draw_activity_graphs(int g_nr, int g
 		pos += group[i];
 	}
 	if (displayed) {
-		printf("</g>\n");
+		if (!svg_p->mock) {
+			printf("</g>\n");
+		}
+		else {
+			displayed = FALSE;
+		}
 
 		/* For next row of views */
 		(svg_p->graph_no) += PACK_VIEWS(flags) ? 1 : views_nr;
@@ -1070,8 +1104,8 @@ __print_funct_t svg_print_cpu_stats(stru
 		for (i = 0; (i < a->nr_ini) && (i < a->bitmap->b_size + 1); i++) {
 
 			/* Should current CPU (including CPU "all") be displayed? */
-			if (!(a->bitmap->b_array[i >> 3] & (1 << (i & 0x07))) ||
-			    offline_cpu_bitmap[i >> 3] & (1 << (i & 0x07)))
+			if (!IS_CPU_SELECTED(a->bitmap->b_array, i) ||
+			    IS_CPU_OFFLINE(offline_cpu_bitmap, i))
 				/* Don't display CPU */
 				continue;
 
@@ -1240,7 +1274,7 @@ __print_funct_t svg_print_cpu_stats(stru
 		for (i = 0; (i < a->item_list_sz) && (i < a->bitmap->b_size + 1); i++) {
 
 			/* Should current CPU (including CPU "all") be displayed? */
-			if (!(a->bitmap->b_array[i >> 3] & (1 << (i & 0x07))))
+			if (!IS_CPU_SELECTED(a->bitmap->b_array, i))
 				/* No */
 				continue;
 
@@ -1722,11 +1756,11 @@ void svg_print_ram_memory_stats(struct a
 		/* %memused */
 		brappend(record_hdr->ust_time - svg_p->ust_time_ref,
 			 0.0, mupct,
-			 out + 3, outsize + 3, svg_p->dt);
+			 out + 3, outsize + 3, svg_p->dt, FALSE);
 		/* %commit */
 		brappend(record_hdr->ust_time - svg_p->ust_time_ref,
 			 0.0, copct,
-			 out + 7, outsize + 7, svg_p->dt);
+			 out + 7, outsize + 7, svg_p->dt, TRUE);
 	}
 
 	if (action & F_END) {
@@ -1824,11 +1858,11 @@ __print_funct_t svg_print_swap_memory_st
 		/* %swpused */
 		brappend(record_hdr->ust_time - svg_p->ust_time_ref,
 			 0.0, supct,
-			 out + 3, outsize + 3, svg_p->dt);
+			 out + 3, outsize + 3, svg_p->dt, FALSE);
 		/* %swpcad */
 		brappend(record_hdr->ust_time - svg_p->ust_time_ref,
 			 0.0, scpct,
-			 out + 4, outsize + 4, svg_p->dt);
+			 out + 4, outsize + 4, svg_p->dt, FALSE);
 	}
 
 	if (action & F_END) {
@@ -2213,7 +2247,7 @@ __print_funct_t svg_print_disk_stats(str
 			/* %util */
 			brappend(record_hdr->ust_time - svg_p->ust_time_ref,
 				 0.0, xds.util / 10.0,
-				 out + pos + 7, outsize + pos + 7, svg_p->dt);
+				 out + pos + 7, outsize + pos + 7, svg_p->dt, FALSE);
 		}
 
 		/* Mark devices not seen here as now unregistered */
@@ -2420,7 +2454,7 @@ __print_funct_t svg_print_net_dev_stats(
 			/* %ifutil */
 			brappend(record_hdr->ust_time - svg_p->ust_time_ref,
 				 0.0, ifutil,
-				 out + pos + 7, outsize + pos + 7, svg_p->dt);
+				 out + pos + 7, outsize + pos + 7, svg_p->dt, FALSE);
 		}
 
 		/* Mark interfaces not seen here as now unregistered */
@@ -3420,7 +3454,7 @@ __print_funct_t svg_print_net_etcp_stats
 	int g_type[] = {SVG_LINE_GRAPH, SVG_LINE_GRAPH};
 	char *title[] = {"TCPv4 traffic errors statistics (1)", "TCPv4 traffic errors statistics (2)"};
 	char *g_title[] = {"atmptf/s", "estres/s",
-			   "retrans/s", "isegerr/s", "orsts/s"};
+			   "retrseg/s", "isegerr/s", "orsts/s"};
 	int g_fields[] = {0, 1, 2, 3, 4};
 	static char **out;
 	static int *outsize;
@@ -3443,7 +3477,7 @@ __print_funct_t svg_print_net_etcp_stats
 		lnappend(record_hdr->ust_time - svg_p->ust_time_ref,
 			 S_VALUE(snetp->EstabResets, snetc->EstabResets, itv),
 			 out + 1, outsize + 1, svg_p->restart);
-		/* retrans/s */
+		/* retrseg/s */
 		lnappend(record_hdr->ust_time - svg_p->ust_time_ref,
 			 S_VALUE(snetp->RetransSegs, snetc->RetransSegs, itv),
 			 out + 2, outsize + 2, svg_p->restart);
@@ -4142,7 +4176,7 @@ __print_funct_t svg_print_pwr_cpufreq_st
 			spp = (struct stats_pwr_cpufreq *) ((char *) a->buf[!curr] + i * a->msize);
 
 			/* Should current CPU (including CPU "all") be displayed? */
-			if (!(a->bitmap->b_array[i >> 3] & (1 << (i & 0x07))))
+			if (!IS_CPU_SELECTED(a->bitmap->b_array, i))
 				/* No */
 				continue;
 
@@ -4167,7 +4201,7 @@ __print_funct_t svg_print_pwr_cpufreq_st
 		for (i = 0; (i < a->item_list_sz) && (i < a->bitmap->b_size + 1); i++) {
 
 			/* Should current CPU (including CPU "all") be displayed? */
-			if (!(a->bitmap->b_array[i >> 3] & (1 << (i & 0x07))))
+			if (!IS_CPU_SELECTED(a->bitmap->b_array, i))
 				/* No */
 				continue;
 
@@ -4333,7 +4367,7 @@ __print_funct_t svg_print_pwr_temp_stats
 			/* %temp */
 			brappend(record_hdr->ust_time - svg_p->ust_time_ref,
 				 0.0, tval,
-				 out + TEMP_ARRAY_SZ * i + 1, outsize + TEMP_ARRAY_SZ * i + 1, svg_p->dt);
+				 out + TEMP_ARRAY_SZ * i + 1, outsize + TEMP_ARRAY_SZ * i + 1, svg_p->dt, FALSE);
 		}
 	}
 
@@ -4422,7 +4456,7 @@ __print_funct_t svg_print_pwr_in_stats(s
 			/* %in */
 			brappend(record_hdr->ust_time - svg_p->ust_time_ref,
 				 0.0, tval,
-				 out + IN_ARRAY_SZ * i + 1, outsize + IN_ARRAY_SZ * i + 1, svg_p->dt);
+				 out + IN_ARRAY_SZ * i + 1, outsize + IN_ARRAY_SZ * i + 1, svg_p->dt, FALSE);
 		}
 	}
 
@@ -4500,7 +4534,7 @@ __print_funct_t svg_print_pwr_bat_stats(
 				 0.0,
 				 (unsigned int) spbc->capacity,
 				 out + i, outsize + i,
-				 svg_p->dt);
+				 svg_p->dt, FALSE);
 		}
 	}
 
@@ -4598,7 +4632,7 @@ __print_funct_t svg_print_huge_stats(str
 		/* %hugused */
 		brappend(record_hdr->ust_time - svg_p->ust_time_ref,
 			 0.0, tval,
-			 out + 4, outsize + 4, svg_p->dt);
+			 out + 4, outsize + 4, svg_p->dt, FALSE);
 	}
 
 	if (action & F_END) {
@@ -4761,11 +4795,11 @@ __print_funct_t svg_print_filesystem_sta
 			/* %ufsused */
 			brappend(record_hdr->ust_time - svg_p->ust_time_ref,
 				 0.0, uupct,
-				 out + pos + 2, outsize + pos + 2, svg_p->dt);
+				 out + pos + 2, outsize + pos + 2, svg_p->dt, FALSE);
 			/* %fsused */
 			brappend(record_hdr->ust_time - svg_p->ust_time_ref,
 				 0.0, fupct,
-				 out + pos + 3, outsize + pos + 3, svg_p->dt);
+				 out + pos + 3, outsize + pos + 3, svg_p->dt, FALSE);
 			/* Ifree */
 			lnappend(record_hdr->ust_time - svg_p->ust_time_ref,
 				 ((double) sfc->f_ffree) / 1000,
@@ -4777,7 +4811,7 @@ __print_funct_t svg_print_filesystem_sta
 			/* %Iused */
 			brappend(record_hdr->ust_time - svg_p->ust_time_ref,
 				 0.0, iupct,
-				 out + pos + 6, outsize + pos + 6, svg_p->dt);
+				 out + pos + 6, outsize + pos + 6, svg_p->dt, FALSE);
 		}
 	}
 
@@ -5064,15 +5098,18 @@ __print_funct_t svg_print_softnet_stats(
 			restart = svg_p->restart;
 
 			/* Should current CPU (including CPU "all") be displayed? */
-			if (!(a->bitmap->b_array[i >> 3] & (1 << (i & 0x07))))
+			if (!IS_CPU_SELECTED(a->bitmap->b_array, i))
 				/* No */
 				continue;
 
 			ssnc = (struct stats_softnet *) ((char *) a->buf[curr]  + i * a->msize);
 			ssnp = (struct stats_softnet *) ((char *) a->buf[!curr] + i * a->msize);
 
+			pos = i * SOFT_ARRAY_SZ;
+			posp = i * a->xnr;
+
 			/* Is current CPU marked offline? */
-			if (offline_cpu_bitmap[i >> 3] & (1 << (i & 0x07))) {
+			if (IS_CPU_OFFLINE(offline_cpu_bitmap, i)) {
 				/*
 				 * Yes and it doesn't follow a RESTART record.
 				 * To add a discontinuity in graph, we simulate
@@ -5084,17 +5121,20 @@ __print_funct_t svg_print_softnet_stats(
 					 * CPU is offline and it follows a real
 					 * RESTART record. Ignore its current value
 					 * (no previous sample).
+					 * Don't reset ssnc structure (we need the values for
+					 * next iteration). Only make it point at a zero
+					 * structrure: With @restart set to TRUE, it will go
+					 * unnoticed on the graph.
 					 */
 					ssnc = &ssnczero;
 				}
 			}
-			pos = i * SOFT_ARRAY_SZ;
-			posp = i * a->xnr;
-
-			/* Check for min/max values */
-			save_extrema(local_types_nr, (void *) ssnc, (void *) ssnp,
-				     itv, a->spmin + posp, a->spmax + posp, g_fields);
-			save_minmax(a, posp + 5, ssnc->backlog_len);
+			else {
+				/* Check for min/max values for online CPU only */
+				save_extrema(local_types_nr, (void *) ssnc, (void *) ssnp,
+					     itv, a->spmin + posp, a->spmax + posp, g_fields);
+				save_minmax(a, posp + 5, ssnc->backlog_len);
+			}
 
 			/* total/s */
 			lnappend(record_hdr->ust_time - svg_p->ust_time_ref,
@@ -5129,7 +5169,7 @@ __print_funct_t svg_print_softnet_stats(
 		for (i = 0; (i < a->item_list_sz) && (i < a->bitmap->b_size + 1); i++) {
 
 			/* Should current CPU (including CPU "all") be displayed? */
-			if (!(a->bitmap->b_array[i >> 3] & (1 << (i & 0x07))))
+			if (!IS_CPU_SELECTED(a->bitmap->b_array, i))
 				/* No */
 				continue;
 
@@ -5148,7 +5188,7 @@ __print_funct_t svg_print_softnet_stats(
 					     title, g_title, item_name, group,
 					     a->spmin + posp, a->spmax + posp,
 					     out + pos, outsize + pos,
-					     svg_p, record_hdr, FALSE, a, i);
+					     svg_p, record_hdr, i, a, i);
 		}
 
 		/* Free remaining structures */
@@ -5216,7 +5256,7 @@ __print_funct_t svg_print_psicpu_stats(s
 		/* %scpu */
 		brappend(record_hdr->ust_time - svg_p->ust_time_ref,
 			 0.0, tval,
-			 out + 3, outsize + 3, svg_p->dt);
+			 out + 3, outsize + 3, svg_p->dt, FALSE);
 	}
 
 	if (action & F_END) {
@@ -5303,7 +5343,7 @@ __print_funct_t svg_print_psiio_stats(st
 		/* %sio */
 		brappend(record_hdr->ust_time - svg_p->ust_time_ref,
 			 0.0, tvals,
-			 out + 3, outsize + 3, svg_p->dt);
+			 out + 3, outsize + 3, svg_p->dt, FALSE);
 
 		/* %fio-10 */
 		lnappend(record_hdr->ust_time - svg_p->ust_time_ref,
@@ -5320,7 +5360,7 @@ __print_funct_t svg_print_psiio_stats(st
 		/* %fio */
 		brappend(record_hdr->ust_time - svg_p->ust_time_ref,
 			 0.0, tvalf,
-			 out + 7, outsize + 7, svg_p->dt);
+			 out + 7, outsize + 7, svg_p->dt, FALSE);
 	}
 
 	if (action & F_END) {
@@ -5411,7 +5451,7 @@ __print_funct_t svg_print_psimem_stats(s
 		/* %smem */
 		brappend(record_hdr->ust_time - svg_p->ust_time_ref,
 			 0.0, tvals,
-			 out + 3, outsize + 3, svg_p->dt);
+			 out + 3, outsize + 3, svg_p->dt, FALSE);
 
 		/* %fmem-10 */
 		lnappend(record_hdr->ust_time - svg_p->ust_time_ref,
@@ -5428,7 +5468,7 @@ __print_funct_t svg_print_psimem_stats(s
 		/* %fmem */
 		brappend(record_hdr->ust_time - svg_p->ust_time_ref,
 			 0.0, tvalf,
-			 out + 7, outsize + 7, svg_p->dt);
+			 out + 7, outsize + 7, svg_p->dt, FALSE);
 	}
 
 	if (action & F_END) {
diff -pruN 12.7.5-2/svg_stats.h 12.7.7-0ubuntu2/svg_stats.h
--- 12.7.5-2/svg_stats.h	2023-05-06 16:26:53.000000000 +0000
+++ 12.7.7-0ubuntu2/svg_stats.h	2025-02-02 07:33:59.000000000 +0000
@@ -1,6 +1,6 @@
 /*
  * svg_stats.h: Include file used to display system statistics in SVG format.
- * (C) 2016-2023 by Sebastien Godard (sysstat <at> orange.fr)
+ * (C) 2016-2025 by Sebastien Godard (sysstat <at> orange.fr)
  */
 
 #ifndef _SVG_STATS_H
diff -pruN 12.7.5-2/sysconfig.in 12.7.7-0ubuntu2/sysconfig.in
--- 12.7.5-2/sysconfig.in	2023-05-06 16:26:53.000000000 +0000
+++ 12.7.7-0ubuntu2/sysconfig.in	2025-02-02 07:33:59.000000000 +0000
@@ -1,6 +1,6 @@
 /*
  * sysstat: System performance tools for Linux
- * (C) 1999-2023 by Sebastien Godard (sysstat <at> orange.fr)
+ * (C) 1999-2025 by Sebastien Godard (sysstat <at> orange.fr)
  */
 
 #ifndef _SYSCONFIG_H
diff -pruN 12.7.5-2/sysstat-12.7.5.spec 12.7.7-0ubuntu2/sysstat-12.7.5.spec
--- 12.7.5-2/sysstat-12.7.5.spec	2023-12-17 14:35:41.000000000 +0000
+++ 12.7.7-0ubuntu2/sysstat-12.7.5.spec	1970-01-01 00:00:00.000000000 +0000
@@ -1,83 +0,0 @@
-Summary: 	SAR, SADF, MPSTAT, IOSTAT, TAPESTAT, PIDSTAT and CIFSIOSTAT for Linux
-Name: 		sysstat
-Version: 	12.7.5
-Release: 	1
-License: 	GPL
-Group: 		Applications/System
-Source0: 	%{name}-%{version}.tar.gz
-URL:		http://pagesperso-orange.fr/sebastien.godard/
-Packager:	Sebastien Godard <sysstat _at_ orange.fr>
-BuildRoot:	%{_tmppath}/%{name}-%{version}-root-%(id -u -n)
-Requires:	gettext
-
-%description
-The sysstat package contains the sar, sadf, mpstat, iostat, tapestat,
-pidstat, cifsiostat and sa tools for Linux.
-The sar command collects and reports system activity information.
-The information collected by sar can be saved in a file in a binary
-format for future inspection. The statistics reported by sar concern
-I/O transfer rates, paging activity, process-related activities,
-interrupts, network activity, memory and swap space utilization, CPU
-utilization, kernel activities and TTY statistics, among others. Both
-UP and SMP machines are fully supported.
-The sadf command may be used to display data collected by sar in
-various formats (CSV, XML, etc.) and to draw graphs (SVG).
-The iostat command reports CPU utilization and I/O statistics for disks.
-The tapestat command reports statistics for tapes connected to the system.
-The mpstat command reports global and per-processor statistics.
-The pidstat command reports statistics for Linux tasks (processes).
-The cifsiostat command reports I/O statistics for CIFS filesystems.
-
-%define debug_package %{nil}
-
-%prep
-%setup
-
-%build
-# To include cron installation, add options --enable-install-cron and --enable-copy-only
-./configure --prefix=%{_prefix} \
-	--disable-file-attr \
-	sa_lib_dir=%{_libdir}/sa \
-	--mandir=%{_mandir} \
-	DESTDIR=$RPM_BUILD_ROOT
-make
-
-%install
-rm -rf $RPM_BUILD_ROOT
-install -d $RPM_BUILD_ROOT/var/log/sa
-
-make install
-
-mkdir -p $RPM_BUILD_ROOT/etc/rc.d/init.d
-install -m 755  sysstat $RPM_BUILD_ROOT/etc/rc.d/init.d/sysstat
-mkdir -p $RPM_BUILD_ROOT/etc/sysconfig
-install -m 644 sysstat.sysconfig $RPM_BUILD_ROOT/etc/sysconfig/sysstat
-install -m 644 sysstat.ioconf $RPM_BUILD_ROOT/etc/sysconfig/sysstat.ioconf
-mkdir -p $RPM_BUILD_ROOT/etc/cron.d
-install -m 644 cron/sysstat.crond.sample $RPM_BUILD_ROOT/etc/cron.d/sysstat
-mkdir -p $RPM_BUILD_ROOT/etc/rc2.d
-cd $RPM_BUILD_ROOT/etc/rc2.d && ln -sf ../init.d/sysstat S01sysstat
-mkdir -p $RPM_BUILD_ROOT/etc/rc3.d
-cd $RPM_BUILD_ROOT/etc/rc3.d && ln -sf ../init.d/sysstat S01sysstat
-mkdir -p $RPM_BUILD_ROOT/etc/rc5.d
-cd $RPM_BUILD_ROOT/etc/rc5.d && ln -sf ../init.d/sysstat S01sysstat
-
-%clean
-rm -rf $RPM_BUILD_ROOT
-
-%files
-%defattr(644,root,root,755)
-%doc %{_datadir}/doc/sysstat-%{version}/*
-%attr(755,root,root) %{_bindir}/*
-%attr(755,root,root) %{_libdir}/sa/*
-%attr(644,root,root) %{_mandir}/man*/*
-%attr(644,root,root) %{_datadir}/locale/*/LC_MESSAGES/sysstat.mo
-%attr(755,root,root) %dir /var/log/sa
-%attr(755,root,root) /etc/rc.d/init.d/sysstat
-%attr(644,root,root) /etc/sysconfig/sysstat
-%attr(644,root,root) /etc/sysconfig/sysstat.ioconf
-/etc/rc2.d/S01sysstat
-/etc/rc3.d/S01sysstat
-/etc/rc5.d/S01sysstat
-%config(noreplace) %attr(0644,root,root) /etc/cron.d/sysstat
-
diff -pruN 12.7.5-2/sysstat-12.7.7.spec 12.7.7-0ubuntu2/sysstat-12.7.7.spec
--- 12.7.5-2/sysstat-12.7.7.spec	1970-01-01 00:00:00.000000000 +0000
+++ 12.7.7-0ubuntu2/sysstat-12.7.7.spec	2025-02-02 07:38:34.000000000 +0000
@@ -0,0 +1,83 @@
+Summary: 	SAR, SADF, MPSTAT, IOSTAT, TAPESTAT, PIDSTAT and CIFSIOSTAT for Linux
+Name: 		sysstat
+Version: 	12.7.7
+Release: 	1
+License: 	GPL
+Group: 		Applications/System
+Source0: 	%{name}-%{version}.tar.gz
+URL:		http://pagesperso-orange.fr/sebastien.godard/
+Packager:	Sebastien Godard <sysstat _at_ orange.fr>
+BuildRoot:	%{_tmppath}/%{name}-%{version}-root-%(id -u -n)
+Requires:	gettext
+
+%description
+The sysstat package contains the sar, sadf, mpstat, iostat, tapestat,
+pidstat, cifsiostat and sa tools for Linux.
+The sar command collects and reports system activity information.
+The information collected by sar can be saved in a file in a binary
+format for future inspection. The statistics reported by sar concern
+I/O transfer rates, paging activity, process-related activities,
+interrupts, network activity, memory and swap space utilization, CPU
+utilization, kernel activities and TTY statistics, among others. Both
+UP and SMP machines are fully supported.
+The sadf command may be used to display data collected by sar in
+various formats (CSV, XML, etc.) and to draw graphs (SVG).
+The iostat command reports CPU utilization and I/O statistics for disks.
+The tapestat command reports statistics for tapes connected to the system.
+The mpstat command reports global and per-processor statistics.
+The pidstat command reports statistics for Linux tasks (processes).
+The cifsiostat command reports I/O statistics for CIFS filesystems.
+
+%define debug_package %{nil}
+
+%prep
+%setup
+
+%build
+# To include cron installation, add options --enable-install-cron and --enable-copy-only
+./configure --prefix=%{_prefix} \
+	--disable-file-attr \
+	sa_lib_dir=%{_libdir}/sa \
+	--mandir=%{_mandir} \
+	DESTDIR=$RPM_BUILD_ROOT
+make
+
+%install
+rm -rf $RPM_BUILD_ROOT
+install -d $RPM_BUILD_ROOT/var/log/sa
+
+make install
+
+mkdir -p $RPM_BUILD_ROOT/etc/rc.d/init.d
+install -m 755  sysstat $RPM_BUILD_ROOT/etc/rc.d/init.d/sysstat
+mkdir -p $RPM_BUILD_ROOT/etc/sysconfig
+install -m 644 sysstat.sysconfig $RPM_BUILD_ROOT/etc/sysconfig/sysstat
+install -m 644 sysstat.ioconf $RPM_BUILD_ROOT/etc/sysconfig/sysstat.ioconf
+mkdir -p $RPM_BUILD_ROOT/etc/cron.d
+install -m 644 cron/sysstat.crond.sample $RPM_BUILD_ROOT/etc/cron.d/sysstat
+mkdir -p $RPM_BUILD_ROOT/etc/rc2.d
+cd $RPM_BUILD_ROOT/etc/rc2.d && ln -sf ../init.d/sysstat S01sysstat
+mkdir -p $RPM_BUILD_ROOT/etc/rc3.d
+cd $RPM_BUILD_ROOT/etc/rc3.d && ln -sf ../init.d/sysstat S01sysstat
+mkdir -p $RPM_BUILD_ROOT/etc/rc5.d
+cd $RPM_BUILD_ROOT/etc/rc5.d && ln -sf ../init.d/sysstat S01sysstat
+
+%clean
+rm -rf $RPM_BUILD_ROOT
+
+%files
+%defattr(644,root,root,755)
+%doc %{_datadir}/doc/sysstat-%{version}/*
+%attr(755,root,root) %{_bindir}/*
+%attr(755,root,root) %{_libdir}/sa/*
+%attr(644,root,root) %{_mandir}/man*/*
+%attr(644,root,root) %{_datadir}/locale/*/LC_MESSAGES/sysstat.mo
+%attr(755,root,root) %dir /var/log/sa
+%attr(755,root,root) /etc/rc.d/init.d/sysstat
+%attr(644,root,root) /etc/sysconfig/sysstat
+%attr(644,root,root) /etc/sysconfig/sysstat.ioconf
+/etc/rc2.d/S01sysstat
+/etc/rc3.d/S01sysstat
+/etc/rc5.d/S01sysstat
+%config(noreplace) %attr(0644,root,root) /etc/cron.d/sysstat
+
diff -pruN 12.7.5-2/sysstat.in 12.7.7-0ubuntu2/sysstat.in
--- 12.7.5-2/sysstat.in	2023-05-06 16:26:53.000000000 +0000
+++ 12.7.7-0ubuntu2/sysstat.in	2025-02-02 07:33:59.000000000 +0000
@@ -4,7 +4,7 @@
 # description: Reset the system activity logs
 #
 # @INIT_DIR@/sysstat
-# (C) 2000-2023 Sebastien Godard (sysstat <at> orange.fr)
+# (C) 2000-2025 Sebastien Godard (sysstat <at> orange.fr)
 #
 ### BEGIN INIT INFO
 # Provides:		sysstat
diff -pruN 12.7.5-2/systest.c 12.7.7-0ubuntu2/systest.c
--- 12.7.5-2/systest.c	2023-05-06 16:26:53.000000000 +0000
+++ 12.7.7-0ubuntu2/systest.c	2025-02-02 07:33:59.000000000 +0000
@@ -1,6 +1,6 @@
 /*
  * sysstat test functions.
- * (C) 2019-2023 by Sebastien GODARD (sysstat <at> orange.fr)
+ * (C) 2019-2025 by Sebastien GODARD (sysstat <at> orange.fr)
  *
  ***************************************************************************
  * This program is free software; you can redistribute it and/or modify it *
diff -pruN 12.7.5-2/systest.h 12.7.7-0ubuntu2/systest.h
--- 12.7.5-2/systest.h	2023-05-06 16:26:53.000000000 +0000
+++ 12.7.7-0ubuntu2/systest.h	2025-02-02 07:33:59.000000000 +0000
@@ -1,6 +1,6 @@
 /*
  * sysstat: System performance tools for Linux
- * (C) 1999-2023 by Sebastien Godard (sysstat <at> orange.fr)
+ * (C) 1999-2025 by Sebastien Godard (sysstat <at> orange.fr)
  */
 
 #ifndef _SYSTEST_H
diff -pruN 12.7.5-2/tapestat.c 12.7.7-0ubuntu2/tapestat.c
--- 12.7.5-2/tapestat.c	2023-11-02 16:41:35.000000000 +0000
+++ 12.7.7-0ubuntu2/tapestat.c	2025-02-02 07:33:59.000000000 +0000
@@ -31,7 +31,6 @@
 #define __DO_NOT_DEFINE_COMPILE
 #include <regex.h>
 #include <inttypes.h>
-#include <stdint.h>
 #include <signal.h>
 #include <sys/stat.h>
 #include <sys/time.h>
@@ -50,8 +49,8 @@
 #include "rd_stats.h"
 #include "count.h"
 
+#include <locale.h>	/* For setlocale() */
 #ifdef USE_NLS
-#include <locale.h>
 #include <libintl.h>
 #define _(string) gettext(string)
 #else
@@ -64,17 +63,18 @@ char *sccsid(void) { return (SCCSID); }
 #endif
 
 #ifdef TEST
-void int_handler(int n) { return; }
 extern int __env;
 #endif
 
 int cpu_nr = 0;		/* Nb of processors on the machine */
-int flags = 0;		/* Flag for common options and system state */
+uint64_t flags = 0;	/* Flag for common options and system state */
+uint64_t xflags = 0;	/* Extended flag for options used by multiple commands */
 
 long interval = 0;
 char timestamp[TIMESTAMP_LEN];
 
-struct sigaction alrm_act;
+struct sigaction alrm_act, int_act;
+int sigint_caught = 0;
 
 /* Number of decimal places */
 int dplaces_nr = -1;
@@ -105,7 +105,7 @@ void usage(char *progname)
 	fprintf(stderr, _("Usage: %s [ options ] [ <interval> [ <count> ] ]\n"),
 		progname);
 	fprintf(stderr, _("Options are:\n"
-			  "[ --human ] [ -k | -m ] [ -t ] [ -V ] [ -y ] [ -z ]\n"));
+			  "[ --human ] [ -k | -m ] [ -o JSON ] [ -t ] [ -V ] [ -y ] [ -z ]\n"));
 	exit(1);
 }
 
@@ -123,6 +123,19 @@ void alarm_handler(int sig)
 }
 
 /*
+ * **************************************************************************
+ * SIGINT signal handler.
+ *
+ * IN:
+ * @sig	Signal number.
+ **************************************************************************
+ */
+void int_handler(int sig)
+{
+	sigint_caught = 1;
+}
+
+/*
  ***************************************************************************
  * Initialization.
  ***************************************************************************
@@ -273,8 +286,14 @@ void tape_gather_initial_stats(void)
 
 	if (new_max_tape_drives == 0) {
 		/* No tapes found */
-		fprintf(stderr, _("No tape drives with statistics found\n"));
-		exit(1);
+		if (!DISPLAY_JSON_OUTPUT(xflags)) {
+			fprintf(stderr, _("No tape drives with statistics found\n"));
+			exit(1);
+		}
+		/*
+		 * Don't exit now if displaying stats in JSON format so that
+		 * JSON file can be properly terminated.
+		 */
 	}
 	else {
 		/* Allocate structures */
@@ -287,12 +306,13 @@ void tape_gather_initial_stats(void)
 				tape_old_stats[i].valid = TAPE_STATS_INVALID;
 				tape_new_stats[i].valid = TAPE_STATS_INVALID;
 			}
-			max_tape_drives = new_max_tape_drives;
 		} else
 			/* This should only be called once */
 			return;
 	}
 
+	max_tape_drives = new_max_tape_drives;
+
 	/* Read stats for each tape */
 	for (i = 0; i < max_tape_drives; i++) {
 		/*
@@ -374,8 +394,13 @@ void tape_get_updated_stats(void)
  * Display tapes statistics headings.
  ***************************************************************************
  */
-void tape_write_headings(void)
+void write_tape_headings(int *tab)
 {
+	if (DISPLAY_JSON_OUTPUT(xflags)) {
+		xprintf((*tab)++, "\"tape\": [");
+		return;
+	}
+
 	printf("Tape:     r/s     w/s   ");
 	if (DISPLAY_MEGABYTES(flags)) {
 		printf("MB_read/s   MB_wrtn/s");
@@ -441,14 +466,14 @@ void tape_calc_one_stats(struct calc_sta
 
 /*
  ***************************************************************************
- * Display statistics for current tape.
+ * Display statistics for current tape in plain format.
  *
  * IN:
  * @tape	Statistics for current tape.
  * @i		Index in array for current tape.
  ***************************************************************************
  */
-void tape_write_stats(struct calc_stats *tape, int i)
+void write_plain_tape_stats(struct calc_stats *tape, int i)
 {
 	char buffer[32];
 	uint64_t divisor = 1;
@@ -478,6 +503,69 @@ void tape_write_stats(struct calc_stats
 }
 
 /*
+ * **************************************************************************
+ * Display statistics for current tape in JSON format.
+ *
+ * IN:
+ * @tab		Number of tabs to print.
+ * @tape	Statistics for current tape.
+ * @i		Index in array for current tape.
+ ***************************************************************************
+ */
+void write_json_tape_stats(int tab, struct calc_stats *tape, int i)
+{
+
+	char line[256];
+	uint64_t divisor = 1;
+
+	xprintf0(tab,
+		 "{\"tape_device\": \"st%i\", "
+		 "\"r/s\": %" PRIu64 ", \"w/s\": %" PRIu64 ", ",
+		 i, tape->reads_per_second, tape->writes_per_second);
+
+	if (DISPLAY_MEGABYTES(flags)) {
+		divisor = 1024;
+		sprintf(line, "\"MB_read/s\": %%%s, \"MB_wrtn/s\": %%%s, ",
+			PRIu64, PRIu64);
+	}
+	else {
+		sprintf(line, "\"kB_read/s\": %%%s, \"kB_wrtn/s\": %%%s, ",
+			PRIu64, PRIu64);
+	}
+
+	printf(line,
+	       tape->kbytes_read_per_second / divisor,
+	       tape->kbytes_written_per_second / divisor);
+	printf("\"Rd\": %" PRIu64 ", \"Wr\": %" PRIu64 ", \"Oa\": %" PRIu64 ", "
+	       "\"Rs/s\": %" PRIu64 ", \"Ot/s\": %" PRIu64 "}",
+	       tape->read_pct_wait,
+	       tape->write_pct_wait,
+	       tape->all_pct_wait,
+	       tape->resids_per_second,
+	       tape->other_per_second);
+}
+
+/*
+ * **************************************************************************
+ * Display statistics for current tape in plain or JSON format.
+ *
+ * IN:
+ * @tape	Statistics for current tape.
+ * @i		Index in array for current tape.
+ * @tab		Number of tabs to print (JSON format only).
+ ***************************************************************************
+ */
+void write_tape_stats(struct calc_stats *tape, int i, int tab)
+{
+	if (DISPLAY_JSON_OUTPUT(xflags)) {
+		write_json_tape_stats(tab, tape, i);
+	}
+	else {
+		write_plain_tape_stats(tape, i);
+	}
+}
+
+/*
  ***************************************************************************
  * Print everything now (stats and uptime).
  *
@@ -487,25 +575,24 @@ void tape_write_stats(struct calc_stats
  */
 void write_stats(struct tm *rectime)
 {
+	int tab = 4, next = FALSE;
 	struct calc_stats tape;
 	struct tape_stats *tmp;
 
 	/* Test stdout */
 	TEST_STDOUT(STDOUT_FILENO);
 
+	if (DISPLAY_JSON_OUTPUT(xflags)) {
+		xprintf(tab++, "{");
+	}
+
 	/* Print time stamp */
 	if (DISPLAY_TIMESTAMP(flags)) {
-		if (DISPLAY_ISO(flags)) {
-			strftime(timestamp, sizeof(timestamp), "%FT%T%z", rectime);
-		}
-		else {
-			strftime(timestamp, sizeof(timestamp), "%x %X", rectime);
-		}
-		printf("%s\n", timestamp);
+		write_sample_timestamp(tab, rectime, xflags);
 	}
 
 	/* Print the headings */
-	tape_write_headings();
+	write_tape_headings(&tab);
 
 	/*
 	 * If either new or old is invalid or the I/Os per second is 0 and
@@ -518,6 +605,7 @@ void write_stats(struct tm *rectime)
 			if ((tape_new_stats[i].valid == TAPE_STATS_VALID) &&
 				(tape_old_stats[i].valid == TAPE_STATS_VALID)) {
 				tape_calc_one_stats(&tape, i);
+
 				if (!(DISPLAY_ZERO_OMIT(flags)
 					&& (tape.other_per_second == 0)
 					&& (tape.reads_per_second == 0)
@@ -528,7 +616,13 @@ void write_stats(struct tm *rectime)
 					&& (tape.write_pct_wait == 0)
 					&& (tape.all_pct_wait == 0)
 					&& (tape.resids_per_second == 0))) {
-					tape_write_stats(&tape, i);
+
+					if (DISPLAY_JSON_OUTPUT(xflags) && next) {
+						printf(",\n");
+					}
+					next = TRUE;
+
+					write_tape_stats(&tape, i, tab);
 				}
 			}
 		}
@@ -541,7 +635,12 @@ void write_stats(struct tm *rectime)
 		tape_old_stats = tape_new_stats;
 		tape_new_stats = tmp;
 	}
-	printf("\n");
+
+	if (DISPLAY_JSON_OUTPUT(xflags)) {
+		printf("\n");
+		xprintf(--tab, "]");
+		xprintf0(--tab, "}");
+	}
 }
 
 /*
@@ -563,11 +662,26 @@ void rw_tape_stat_loop(long int count, s
 		skip = 1;
 	}
 
+	/* Set a handler for SIGALRM */
+	memset(&alrm_act, 0, sizeof(alrm_act));
+	alrm_act.sa_handler = alarm_handler;
+	sigaction(SIGALRM, &alrm_act, NULL);
+	alarm(interval);
+
+	/* Set a handler for SIGINT */
+	memset(&int_act, 0, sizeof(int_act));
+	int_act.sa_handler = int_handler;
+	sigaction(SIGINT, &int_act, NULL);
+
 	do {
 
 		if (tape_new_stats == NULL) {
 			tape_gather_initial_stats();
-		} else {
+			if (!max_tape_drives) {
+				count = 0;
+			}
+		}
+		else {
 			tape_get_updated_stats();
 		}
 
@@ -584,7 +698,6 @@ void rw_tape_stat_loop(long int count, s
 			}
 		}
 		else {
-			skip = 0;
 			tmp = tape_old_stats;
 			tape_old_stats = tape_new_stats;
 			tape_new_stats = tmp;
@@ -592,9 +705,23 @@ void rw_tape_stat_loop(long int count, s
 
 		if (count) {
 			__pause();
+
+			if (sigint_caught) {
+				/* SIGINT signal caught => Terminate JSON output properly */
+				count = 0;
+			}
+			else if (DISPLAY_JSON_OUTPUT(xflags) && !skip) {	/* count != 0 */
+				printf(",");
+			}
 		}
+		skip = 0;
+		printf("\n");
 	}
 	while (count);
+
+	if (DISPLAY_JSON_OUTPUT(xflags)) {
+		printf("\t\t\t]\n\t\t}\n\t]\n}}\n");
+	}
 }
 
 /*
@@ -634,6 +761,17 @@ int main(int argc, char **argv)
 		}
 #endif
 
+		else if (!strcmp(argv[opt], "-o")) {
+			/* Select output format */
+			if (argv[++opt] && !strcmp(argv[opt], K_JSON)) {
+				xflags |= X_D_JSON_OUTPUT;
+				opt++;
+			}
+			else {
+				usage(argv[0]);
+			}
+		}
+
 		else if (!strncmp(argv[opt], "-", 1)) {
 			for (i = 1; *(argv[opt] + i); i++) {
 
@@ -724,20 +862,22 @@ int main(int argc, char **argv)
 	 */
 	setbuf(stdout, NULL);
 
+	if (DISPLAY_JSON_OUTPUT(xflags)) {
+		/* Use a decimal point to make JSON code compliant with RFC7159 */
+		setlocale(LC_NUMERIC, "C");
+	}
+
 	/* Get system name, release number and hostname */
 	__uname(&header);
 	if (print_gal_header(&rectime, header.sysname, header.release,
 			     header.nodename, header.machine, cpu_nr,
-			     PLAIN_OUTPUT)) {
-		flags |= T_D_ISO;
+			     DISPLAY_JSON_OUTPUT(xflags))) {
+		xflags |= X_D_ISO;
+	}
+	if (!DISPLAY_JSON_OUTPUT(xflags) &&
+		(!DISPLAY_OMIT_SINCE_BOOT(flags) || (interval == 0))) {
+		printf("\n");
 	}
-	printf("\n");
-
-	/* Set a handler for SIGALRM */
-	memset(&alrm_act, 0, sizeof(alrm_act));
-	alrm_act.sa_handler = alarm_handler;
-	sigaction(SIGALRM, &alrm_act, NULL);
-	alarm(interval);
 
 	/* Main loop */
 	rw_tape_stat_loop(count, &rectime);
diff -pruN 12.7.5-2/tapestat.h 12.7.7-0ubuntu2/tapestat.h
--- 12.7.5-2/tapestat.h	2023-05-06 16:26:53.000000000 +0000
+++ 12.7.7-0ubuntu2/tapestat.h	2025-02-02 07:33:59.000000000 +0000
@@ -16,7 +16,7 @@
 #define T_D_KILOBYTES		0x00002
 #define T_D_MEGABYTES		0x00004
 #define T_D_OMIT_SINCE_BOOT	0x00008
-#define T_D_ISO			0x00010
+/* Unused			0x00010 */
 #define T_D_ZERO_OMIT		0x00020
 #define T_D_UNIT		0x00040
 
@@ -24,7 +24,6 @@
 #define DISPLAY_KILOBYTES(m)		(((m) & T_D_KILOBYTES)       == T_D_KILOBYTES)
 #define DISPLAY_MEGABYTES(m)		(((m) & T_D_MEGABYTES)       == T_D_MEGABYTES)
 #define DISPLAY_OMIT_SINCE_BOOT(m)	(((m) & T_D_OMIT_SINCE_BOOT) == T_D_OMIT_SINCE_BOOT)
-#define DISPLAY_ISO(m)			(((m) & T_D_ISO)             == T_D_ISO)
 #define DISPLAY_ZERO_OMIT(m)		(((m) & T_D_ZERO_OMIT)       == T_D_ZERO_OMIT)
 #define DISPLAY_UNIT(m)			(((m) & T_D_UNIT)	     == T_D_UNIT)
 
@@ -118,14 +117,4 @@ struct calc_stats {
         uint64_t resids_per_second;
 };
 
-void tape_get_updated_stats(void);
-void tape_gather_initial_stats(void);
-void tape_check_tapes_and_realloc(void);
-int get_max_tape_drives(void);
-void tape_uninitialise(void);
-void tape_initialise(void);
-void tape_calc_one_stats(struct calc_stats *, int);
-void tape_write_headings(void);
-void tape_write_stats(struct calc_stats *, int);
-
 #endif  /* _TAPESTAT_H */
diff -pruN 12.7.5-2/tests/00155 12.7.7-0ubuntu2/tests/00155
--- 12.7.5-2/tests/00155	1970-01-01 00:00:00.000000000 +0000
+++ 12.7.7-0ubuntu2/tests/00155	2024-06-03 10:01:42.000000000 +0000
@@ -0,0 +1 @@
+LC_ALL=C TZ=GMT ./sar -x -u ALL -I -n SOFT -P 0,6 -f tests/data-CPUoffon.tmp -e 13:20:39 > tests/out1.sar-CPUoffon.tmp && diff -u tests/expected1.sar-CPUoffon tests/out1.sar-CPUoffon.tmp
diff -pruN 12.7.5-2/tests/00370 12.7.7-0ubuntu2/tests/00370
--- 12.7.5-2/tests/00370	1970-01-01 00:00:00.000000000 +0000
+++ 12.7.7-0ubuntu2/tests/00370	2024-11-16 15:50:34.000000000 +0000
@@ -0,0 +1,9 @@
+. tests/variables
+if [ ! -z "$VER_JSON" ]; then
+	rm -f tests/root
+	ln -s root1 tests/root
+	./cifsiostat -k -o JSON 1 10 | $VER_JSON >/dev/null
+else
+	echo Skipped
+	touch tests/SKIPPED
+fi
diff -pruN 12.7.5-2/tests/00371 12.7.7-0ubuntu2/tests/00371
--- 12.7.5-2/tests/00371	1970-01-01 00:00:00.000000000 +0000
+++ 12.7.7-0ubuntu2/tests/00371	2024-11-30 16:39:44.000000000 +0000
@@ -0,0 +1,10 @@
+. tests/variables
+if [ ! -z "$VER_JSON" ]; then
+	rm -f tests/root
+	# No CIFS fs should be found here
+	ln -s root6 tests/root
+	./cifsiostat 1 3 -t -o JSON | $VER_JSON >/dev/null
+else
+	echo Skipped
+	touch tests/SKIPPED
+fi
diff -pruN 12.7.5-2/tests/00372 12.7.7-0ubuntu2/tests/00372
--- 12.7.5-2/tests/00372	1970-01-01 00:00:00.000000000 +0000
+++ 12.7.7-0ubuntu2/tests/00372	2024-11-16 17:32:20.000000000 +0000
@@ -0,0 +1,9 @@
+. tests/variables
+if [ ! -z "$VER_JSON" ]; then
+	rm -f tests/root
+	ln -s root1 tests/root
+	./cifsiostat 1 3 -t -o JSON | $VER_JSON >/dev/null
+else
+	echo Skipped
+	touch tests/SKIPPED
+fi
diff -pruN 12.7.5-2/tests/00373 12.7.7-0ubuntu2/tests/00373
--- 12.7.5-2/tests/00373	1970-01-01 00:00:00.000000000 +0000
+++ 12.7.7-0ubuntu2/tests/00373	2025-01-05 10:03:24.000000000 +0000
@@ -0,0 +1,9 @@
+. tests/variables
+if [ ! -z "$VER_JSON" ]; then
+	rm -f tests/root
+	ln -s root1 tests/root
+	./cifsiostat -y 1 3 -t -o JSON | $VER_JSON >/dev/null
+else
+	echo Skipped
+	touch tests/SKIPPED
+fi
diff -pruN 12.7.5-2/tests/00375 12.7.7-0ubuntu2/tests/00375
--- 12.7.5-2/tests/00375	1970-01-01 00:00:00.000000000 +0000
+++ 12.7.7-0ubuntu2/tests/00375	2024-11-30 15:34:14.000000000 +0000
@@ -0,0 +1,9 @@
+. tests/variables
+if [ ! -z "$VER_JSON" ]; then
+	rm -f tests/root
+	ln -s root1 tests/root
+	./tapestat -k -o JSON 1 10 | $VER_JSON >/dev/null
+else
+	echo Skipped
+	touch tests/SKIPPED
+fi
diff -pruN 12.7.5-2/tests/00376 12.7.7-0ubuntu2/tests/00376
--- 12.7.5-2/tests/00376	1970-01-01 00:00:00.000000000 +0000
+++ 12.7.7-0ubuntu2/tests/00376	2024-11-30 16:41:28.000000000 +0000
@@ -0,0 +1,10 @@
+. tests/variables
+if [ ! -z "$VER_JSON" ]; then
+	rm -f tests/root
+	# No tape drives should be found here
+	ln -s root4 tests/root
+	./tapestat 1 3 -t -o JSON | $VER_JSON >/dev/null
+else
+	echo Skipped
+	touch tests/SKIPPED
+fi
diff -pruN 12.7.5-2/tests/00377 12.7.7-0ubuntu2/tests/00377
--- 12.7.5-2/tests/00377	1970-01-01 00:00:00.000000000 +0000
+++ 12.7.7-0ubuntu2/tests/00377	2024-11-30 16:11:14.000000000 +0000
@@ -0,0 +1,9 @@
+. tests/variables
+if [ ! -z "$VER_JSON" ]; then
+	rm -f tests/root
+	ln -s root1 tests/root
+	./tapestat 1 3 -t -o JSON | $VER_JSON >/dev/null
+else
+	echo Skipped
+	touch tests/SKIPPED
+fi
diff -pruN 12.7.5-2/tests/00378 12.7.7-0ubuntu2/tests/00378
--- 12.7.5-2/tests/00378	1970-01-01 00:00:00.000000000 +0000
+++ 12.7.7-0ubuntu2/tests/00378	2025-01-05 10:03:57.000000000 +0000
@@ -0,0 +1,9 @@
+. tests/variables
+if [ ! -z "$VER_JSON" ]; then
+	rm -f tests/root
+	ln -s root1 tests/root
+	./tapestat -y 1 3 -t -o JSON | $VER_JSON >/dev/null
+else
+	echo Skipped
+	touch tests/SKIPPED
+fi
diff -pruN 12.7.5-2/tests/00380 12.7.7-0ubuntu2/tests/00380
--- 12.7.5-2/tests/00380	1970-01-01 00:00:00.000000000 +0000
+++ 12.7.7-0ubuntu2/tests/00380	2025-01-11 07:44:33.000000000 +0000
@@ -0,0 +1,9 @@
+. tests/variables
+if [ ! -z "$VER_JSON" ]; then
+	rm -f tests/root
+	ln -s root1 tests/root
+	./pidstat -o JSON -r -lh | $VER_JSON >/dev/null
+else
+	echo Skipped
+	touch tests/SKIPPED
+fi
diff -pruN 12.7.5-2/tests/00381 12.7.7-0ubuntu2/tests/00381
--- 12.7.5-2/tests/00381	1970-01-01 00:00:00.000000000 +0000
+++ 12.7.7-0ubuntu2/tests/00381	2024-12-22 14:01:28.000000000 +0000
@@ -0,0 +1,9 @@
+. tests/variables
+if [ ! -z "$VER_JSON" ]; then
+	rm -f tests/root
+	ln -s root1 tests/root
+	./pidstat -o JSON -dRrsuvw -T ALL -t 1 3 | $VER_JSON >/dev/null
+else
+	echo Skipped
+	touch tests/SKIPPED
+fi
diff -pruN 12.7.5-2/tests/00382 12.7.7-0ubuntu2/tests/00382
--- 12.7.5-2/tests/00382	1970-01-01 00:00:00.000000000 +0000
+++ 12.7.7-0ubuntu2/tests/00382	2024-12-22 14:01:28.000000000 +0000
@@ -0,0 +1,9 @@
+. tests/variables
+if [ ! -z "$VER_JSON" ]; then
+	rm -f tests/root
+	ln -s root1 tests/root
+	./pidstat -o JSON -U --human -H 1 10 | $VER_JSON >/dev/null
+else
+	echo Skipped
+	touch tests/SKIPPED
+fi
diff -pruN 12.7.5-2/tests/00420 12.7.7-0ubuntu2/tests/00420
--- 12.7.5-2/tests/00420	2023-05-06 16:26:53.000000000 +0000
+++ 12.7.7-0ubuntu2/tests/00420	2024-01-20 15:07:51.000000000 +0000
@@ -1,7 +1,7 @@
 . tests/variables
 if [ ! -z "$VER_XML" ]; then
 	export LC_ALL=C
-	cat tests/data-12.0.1.xml | $VER_XML --schema xml/sysstat.xsd - >/dev/null
+	cat tests/data-12.7.6.xml | $VER_XML --schema xml/sysstat.xsd - >/dev/null
 else
 	echo Skipped
 	touch tests/SKIPPED
diff -pruN 12.7.5-2/tests/00430 12.7.7-0ubuntu2/tests/00430
--- 12.7.5-2/tests/00430	2023-05-29 12:40:10.000000000 +0000
+++ 12.7.7-0ubuntu2/tests/00430	2024-01-20 15:08:04.000000000 +0000
@@ -1,7 +1,7 @@
 . tests/variables
 if [ ! -z "$VER_XML" ]; then
 	export LC_ALL=C
-	cat tests/data-12.0.1.xml | $VER_XML --noout --dtdvalid xml/sysstat-*.dtd -
+	cat tests/data-12.7.6.xml | $VER_XML --noout --dtdvalid xml/sysstat-*.dtd -
 else
 	echo Skipped
 	touch tests/SKIPPED
diff -pruN 12.7.5-2/tests/00670 12.7.7-0ubuntu2/tests/00670
--- 12.7.5-2/tests/00670	2023-05-06 16:26:53.000000000 +0000
+++ 12.7.7-0ubuntu2/tests/00670	2024-11-30 16:09:07.000000000 +0000
@@ -1,3 +1,5 @@
+rm -f tests/root
+ln -s root1 tests/root
 rm -f tests/data-11.6.5-ow.tmp
 cp -f tests/data-11.6.5 tests/data-11.6.5-ow.tmp
 
diff -pruN 12.7.5-2/tests/01830 12.7.7-0ubuntu2/tests/01830
--- 12.7.5-2/tests/01830	1970-01-01 00:00:00.000000000 +0000
+++ 12.7.7-0ubuntu2/tests/01830	2024-06-02 12:00:09.000000000 +0000
@@ -0,0 +1 @@
+LC_ALL=C TZ=GMT ./sadf -g tests/data-CPUoffon.tmp -- -n SOFT -P all,8 -s 13:20:19 -e 13:20:29 > tests/out.sadf-g-CPUoff.tmp && diff -u tests/expected.sadf-g-CPUoff tests/out.sadf-g-CPUoff.tmp
diff -pruN 12.7.5-2/tests/01835 12.7.7-0ubuntu2/tests/01835
--- 12.7.5-2/tests/01835	1970-01-01 00:00:00.000000000 +0000
+++ 12.7.7-0ubuntu2/tests/01835	2024-06-02 12:01:11.000000000 +0000
@@ -0,0 +1 @@
+LC_ALL=C TZ=GMT ./sadf -g tests/data-CPUoffon.tmp -- -n SOFT -P 8 -s 13:20:19 -e 13:20:29 > tests/out0.sadf-g-CPUoff.tmp && diff -u tests/expected0.sadf-g-CPUoff tests/out0.sadf-g-CPUoff.tmp
diff -pruN 12.7.5-2/tests/04050 12.7.7-0ubuntu2/tests/04050
--- 12.7.5-2/tests/04050	1970-01-01 00:00:00.000000000 +0000
+++ 12.7.7-0ubuntu2/tests/04050	2024-11-30 16:13:21.000000000 +0000
@@ -0,0 +1,3 @@
+rm -f tests/root
+ln -s root1 tests/root
+LC_ALL=C TZ=GMT ./tapestat -o JSON 1 2 > tests/out.tapestat-JSON.tmp && diff -u tests/expected.tapestat-JSON tests/out.tapestat-JSON.tmp
diff -pruN 12.7.5-2/tests/04052 12.7.7-0ubuntu2/tests/04052
--- 12.7.5-2/tests/04052	1970-01-01 00:00:00.000000000 +0000
+++ 12.7.7-0ubuntu2/tests/04052	2024-11-30 16:19:38.000000000 +0000
@@ -0,0 +1,3 @@
+rm -f tests/root
+ln -s root1 tests/root
+LC_ALL=C TZ=GMT ./tapestat -mt -o JSON 1 3 > tests/out.tapestat-mt-JSON.tmp && diff -u tests/expected.tapestat-mt-JSON tests/out.tapestat-mt-JSON.tmp
diff -pruN 12.7.5-2/tests/04505 12.7.7-0ubuntu2/tests/04505
--- 12.7.5-2/tests/04505	1970-01-01 00:00:00.000000000 +0000
+++ 12.7.7-0ubuntu2/tests/04505	2024-11-30 16:32:42.000000000 +0000
@@ -0,0 +1,3 @@
+rm -f tests/root
+ln -s root6 tests/root
+LC_ALL=C TZ=GMT ./cifsiostat 1 2 2>&1 | grep "No CIFS filesystems" >/dev/null
diff -pruN 12.7.5-2/tests/04515 12.7.7-0ubuntu2/tests/04515
--- 12.7.5-2/tests/04515	1970-01-01 00:00:00.000000000 +0000
+++ 12.7.7-0ubuntu2/tests/04515	2025-01-05 10:30:25.000000000 +0000
@@ -0,0 +1,3 @@
+rm -f tests/root
+ln -s root1 tests/root
+LC_ALL=C TZ=GMT ./cifsiostat -y -k 1 2 > tests/out.cifsiostat-yk.tmp && diff -u tests/expected.cifsiostat-yk tests/out.cifsiostat-yk.tmp
diff -pruN 12.7.5-2/tests/04570 12.7.7-0ubuntu2/tests/04570
--- 12.7.5-2/tests/04570	1970-01-01 00:00:00.000000000 +0000
+++ 12.7.7-0ubuntu2/tests/04570	2024-11-16 15:16:01.000000000 +0000
@@ -0,0 +1,3 @@
+rm -f tests/root
+ln -s root1 tests/root
+LC_ALL=C TZ=GMT ./cifsiostat -o JSON 1 2 > tests/out.cifsiostat-JSON.tmp && diff -u tests/expected.cifsiostat-JSON tests/out.cifsiostat-JSON.tmp
diff -pruN 12.7.5-2/tests/04572 12.7.7-0ubuntu2/tests/04572
--- 12.7.5-2/tests/04572	1970-01-01 00:00:00.000000000 +0000
+++ 12.7.7-0ubuntu2/tests/04572	2024-11-16 17:31:33.000000000 +0000
@@ -0,0 +1,3 @@
+rm -f tests/root
+ln -s root1 tests/root
+LC_ALL=C TZ=GMT ./cifsiostat -kt -o JSON 1 3 > tests/out.cifsiostat-kt-JSON.tmp && diff -u tests/expected.cifsiostat-kt-JSON tests/out.cifsiostat-kt-JSON.tmp
diff -pruN 12.7.5-2/tests/05042 12.7.7-0ubuntu2/tests/05042
--- 12.7.5-2/tests/05042	1970-01-01 00:00:00.000000000 +0000
+++ 12.7.7-0ubuntu2/tests/05042	2024-12-22 14:01:28.000000000 +0000
@@ -0,0 +1,3 @@
+rm -f tests/root
+ln -s root1 tests/root
+LC_ALL=C TZ=GMT ./pidstat -o JSON -t -dRrsuvw -p ALL > tests/out.pidstat-At-ALL-JSON.tmp && diff -u tests/expected.pidstat-At-ALL-JSON tests/out.pidstat-At-ALL-JSON.tmp
diff -pruN 12.7.5-2/tests/05072 12.7.7-0ubuntu2/tests/05072
--- 12.7.5-2/tests/05072	1970-01-01 00:00:00.000000000 +0000
+++ 12.7.7-0ubuntu2/tests/05072	2024-12-22 14:01:28.000000000 +0000
@@ -0,0 +1,3 @@
+rm -f tests/root
+ln -s root1 tests/root
+LC_ALL=C TZ=GMT ./pidstat -o JSON -T TASK -t -dRrsuvw 2 6 > tests/out1.pidstat-At-TTASK-JSON.tmp && diff -u tests/expected1.pidstat-At-TTASK-JSON tests/out1.pidstat-At-TTASK-JSON.tmp
diff -pruN 12.7.5-2/tests/05152 12.7.7-0ubuntu2/tests/05152
--- 12.7.5-2/tests/05152	1970-01-01 00:00:00.000000000 +0000
+++ 12.7.7-0ubuntu2/tests/05152	2024-12-22 14:01:28.000000000 +0000
@@ -0,0 +1,3 @@
+rm -f tests/root
+ln -s root1 tests/root
+LC_ALL=C TZ=GMT ./pidstat -U -o JSON -T ALL -t -dRrsuvw -p ALL 2 2 > tests/out1.pidstat-At-TALL-ALL-JSON.tmp && diff -u tests/expected1.pidstat-At-TALL-ALL-JSON tests/out1.pidstat-At-TALL-ALL-JSON.tmp
diff -pruN 12.7.5-2/tests/05252 12.7.7-0ubuntu2/tests/05252
--- 12.7.5-2/tests/05252	1970-01-01 00:00:00.000000000 +0000
+++ 12.7.7-0ubuntu2/tests/05252	2024-12-22 14:01:28.000000000 +0000
@@ -0,0 +1,3 @@
+rm -f tests/root
+ln -s root1 tests/root
+LC_ALL=C TZ=GMT ./pidstat -o JSON -H -C fox 2 6 > tests/out1.pidstat-C-JSON.tmp && diff -u tests/expected1.pidstat-C-JSON tests/out1.pidstat-C-JSON.tmp
diff -pruN 12.7.5-2/tests/05452 12.7.7-0ubuntu2/tests/05452
--- 12.7.5-2/tests/05452	2023-05-06 16:26:53.000000000 +0000
+++ 12.7.7-0ubuntu2/tests/05452	1970-01-01 00:00:00.000000000 +0000
@@ -1,3 +0,0 @@
-rm -f tests/root
-ln -s root1 tests/root
-LC_ALL=C TZ=GMT ./pidstat -e sleep 2 > tests/out2.pidstat-e.tmp && diff -u tests/expected2.pidstat-e tests/out2.pidstat-e.tmp
diff -pruN 12.7.5-2/tests/05605 12.7.7-0ubuntu2/tests/05605
--- 12.7.5-2/tests/05605	1970-01-01 00:00:00.000000000 +0000
+++ 12.7.7-0ubuntu2/tests/05605	2024-12-22 14:01:28.000000000 +0000
@@ -0,0 +1 @@
+LC_ALL=C ./pidstat -e sleep 2 2>&1 | grep "Usage:" >/dev/null
diff -pruN 12.7.5-2/tests/TLIST 12.7.7-0ubuntu2/tests/TLIST
--- 12.7.5-2/tests/TLIST	2023-12-02 17:43:57.000000000 +0000
+++ 12.7.7-0ubuntu2/tests/TLIST	2025-01-11 07:44:14.000000000 +0000
@@ -85,8 +85,9 @@ NOTES:
 	[Check that -A doesn't necessarily imply -I ALL -P ALL]
 00134	LC_ALL=C TZ=GMT ./sar -I --int=0,3,30-50,4000-,LOC,PWD,MCE-XXX,TLB,sum -P all,3 --pretty -f tests/data.tmp > tests/out.sar-I.tmp
 
-=====	sar: Reading data-CPUoffon.tmp
+=====	sar: Reading data-CPUoffon.tmp (for persistent activities)
 00150	LC_ALL=C TZ=GMT ./sar -u ALL -I -n SOFT -P all,8 -f tests/data-CPUoffon.tmp > tests/out.sar-CPUoffon.tmp
+00155	LC_ALL=C TZ=GMT ./sar -x -u ALL -I -n SOFT -P 0,6 -f tests/data-CPUoffon.tmp -e 13:20:39 > tests/out1.sar-CPUoffon.tmp
 
 =====	sar: Reading data.tmp
 00160	LC_ALL=C TZ=GMT ./sar -C -u -P ALL -f tests/data.tmp > tests/out2.sar-u.tmp
@@ -132,6 +133,24 @@ NOTES:
 00347	./iostat -xs 1 3 -o JSON ALL -p ALL | $VER_JSON >/dev/null
 00350	./iostat -o JSON -g total /dev/sda1 sda3 -g foo 1 3 | $VER_JSON >/dev/null
 00360	./mpstat -P ALL -T 1 2 -o JSON | $VER_JSON >/dev/null
+00370	./cifsiostat -k -o JSON 1 10 | $VER_JSON >/dev/null
+	[Simulate a Ctrl/C within cifsiostat]
+00371	./cifsiostat 1 3 -t -o JSON | $VER_JSON >/dev/null
+	[Starting above at root6]
+00372	./cifsiostat 1 3 -t -o JSON | $VER_JSON >/dev/null
+	[Starting above at root1]
+00373	./cifsiostat -y 1 3 -t -o JSON | $VER_JSON >/dev/null
+00375	./tapestat -k -o JSON 1 10 | $VER_JSON >/dev/null
+	[Simulate a Ctrl/C within tapestat]
+00376	./tapestat 1 3 -t -o JSON | $VER_JSON >/dev/null
+	[Starting above at root4]
+00377	./tapestat 1 3 -t -o JSON | $VER_JSON >/dev/null
+	[Starting above at root1]
+00378	./tapestat -y 1 3 -t -o JSON | $VER_JSON >/dev/null
+00380	./pidstat -o JSON -r -lh | $VER_JSON >/dev/null
+00381	./pidstat -o JSON -dRrsuvw -T ALL -t 1 3 | $VER_JSON >/dev/null
+00382	./pidstat -o JSON -U --human -H 1 10 | $VER_JSON >/dev/null
+	[Simulate a Ctrl/C within pidstat]
 
 =====	Checking XML output validity
 00400	export LC_ALL=C ; ./sadf -x tests/data.tmp -C -- -A | $VER_XML --schema xml/sysstat.xsd - >/dev/null && ./sadf -x tests/data.tmp | $VER_XML --schema xml/sysstat.xsd - >/dev/null && ./sadf -T -x tests/data.tmp | $VER_XML --schema xml/sysstat.xsd - >/dev/null
@@ -140,8 +159,8 @@ NOTES:
 00410	export LC_ALL=C ; ./sadf -x tests/data.tmp -C -- -A | $VER_XML --dtdvalid xml/sysstat-*.dtd - >/dev/null && ./sadf -x tests/data.tmp | $VER_XML --dtdvalid xml/sysstat-*.dtd - >/dev/null && ./sadf -t -x tests/data.tmp | $VER_XML --dtdvalid xml/sysstat-*.dtd - >/dev/null
 00412	export LC_ALL=C ; ./sadf -x tests/data-CPUoff.tmp -- -A -P 8 | $VER_XML --dtdvalid xml/sysstat-*.dtd - >/dev/null
 00415	export LC_ALL=C ; ./sadf -Hx tests/data.tmp -C | $VER_XML --dtdvalid xml/sysstat-*.dtd - >/dev/null
-00420	export LC_ALL=C ; cat tests/data-12.0.1.xml | $VER_XML --schema xml/sysstat.xsd - >/dev/null
-00430	export LC_ALL=C ; cat tests/data-12.0.1.xml | $VER_XML --dtdvalid xml/sysstat-*.dtd - >/dev/null
+00420	export LC_ALL=C ; cat tests/data-12.7.6.xml | $VER_XML --schema xml/sysstat.xsd - >/dev/null
+00430	export LC_ALL=C ; cat tests/data-12.7.6.xml | $VER_XML --dtdvalid xml/sysstat-*.dtd - >/dev/null
 
 =====	Checking sadf output
 00500	LC_ALL=C ./sadf -p tests/data.tmp -C -- -A > tests/out.sadf-p.tmp
@@ -358,6 +377,10 @@ NOTES:
 01810	LC_ALL=C TZ=GMT ./sar -C -P ALL -uw -n DEV -F -I --int=19,NMI -f tests/datax.tmp > tests/out.sar-ext-hl.tmp
 01820	LC_ALL=C TZ=GMT ./sadf -g tests/data-long.tmp -- -d --dev=sds -n DEV,EDEV --iface=wlp5s0 > tests/out.sadf-disc.tmp
 01825	LC_ALL=C TZ=GMT ./sadf -g tests/data-long.tmp -O debug -- -d --dev=sdq,sdr -n DEV,EDEV --iface=virbr0,virbr0-1 > tests/out2.sadf-disc.tmp
+01830	LC_ALL=C TZ=GMT ./sadf -g tests/data-CPUoffon.tmp -- -n SOFT -P all,8 -s 13:20:19 -e 13:20:29 > tests/out.sadf-g-CPUoff.tmp
+	[Display softnet CPU stats for CPU all and 8. CPU8 is offline on the whole period]
+01835	LC_ALL=C TZ=GMT ./sadf -g tests/data-CPUoffon.tmp -- -n SOFT -P 8 -s 13:20:19 -e 13:20:29 > tests/out0.sadf-g-CPUoff.tmp
+	[Try to display softnet CPU stats for CPU8 which is offline on the whole period]
 
 =====	Read file in different timezones
 01900	LC_ALL=C TZ="America/New_York" ./sadf -g tests/data-tz.tmp -- -uw | grep ":20:" > tests/out.sadf-tz.tmp
@@ -512,6 +535,8 @@ NOTES:
 04020	LC_ALL=C TZ=GMT ./tapestat --human -y 1 2 > tests/out.tapestat-y.tmp
 04030	LC_ALL=C TZ=GMT ./tapestat -z 1 2 > tests/out.tapestat-z.tmp
 04040	LC_ALL=C TZ=GMT ./tapestat -t 1 2 > tests/out.tapestat-t.tmp
+04050	LC_ALL=C TZ=GMT ./tapestat -o JSON 1 2 > tests/out.tapestat-JSON.tmp
+04052	LC_ALL=C TZ=GMT ./tapestat -mt -o JSON 1 3 > tests/out.tapestat-mt-JSON.tmp
 
 =====	Tests tapestat error cases
 04100	LC_ALL=C TZ=GMT ./tapestat 1 2 2>&1 | grep "No tape drives" >/dev/null
@@ -523,12 +548,16 @@ NOTES:
 
 =====	cifsiostat: Basic tests
 04500	LC_ALL=C TZ=GMT ./cifsiostat > tests/out.cifsiostat.tmp
+04505	LC_ALL=C TZ=GMT ./cifsiostat 1 2 2>&1 | grep "No CIFS filesystems" >/dev/null
 04510	LC_ALL=C TZ=GMT ./cifsiostat -k 1 3 > tests/out.cifsiostat-k.tmp
+04515	LC_ALL=C TZ=GMT ./cifsiostat -y -k 1 2 > tests/out.cifsiostat-yk.tmp
 04520	LC_ALL=C TZ=GMT ./cifsiostat -t --human 1 3 > tests/out.cifsiostat-t-human.tmp
 04530	LC_ALL=C TZ=GMT ./cifsiostat -h 2 3 > tests/out.cifsiostat-h.tmp
 04540	LC_ALL=C TZ=GMT ./cifsiostat --dec=0 1 3 > tests/out.cifsiostat-dec.tmp
 04550	LC_ALL=C TZ=GMT ./cifsiostat 1 2 > tests/out.cifsiostat-SMB2.tmp
 04560	LC_ALL=C TZ=GMT ./cifsiostat --pretty 2 3 > tests/out.cifsiostat-pretty.tmp
+04570	LC_ALL=C TZ=GMT ./cifsiostat -o JSON 1 2 > tests/out.cifsiostat-JSON.tmp
+04572	LC_ALL=C TZ=GMT ./cifsiostat -kt -o JSON 1 3 > tests/out.cifsiostat-k-JSON.tmp
 
 =====	Test cifsiostat error cases
 04600	LC_ALL=C ./cifsiostat -1 2>&1 | grep "Usage:" >/dev/null
@@ -544,9 +573,11 @@ NOTES:
 05020	LC_ALL=C TZ=GMT ./pidstat -t -dRrsuvw > tests/out.pidstat-At.tmp
 05030	LC_ALL=C TZ=GMT ./pidstat -dRrsuvw -p ALL > tests/out.pidstat-A-ALL.tmp
 05040	LC_ALL=C TZ=GMT ./pidstat -t -dRrsuvw -p ALL > tests/out.pidstat-At-ALL.tmp
+05042	LC_ALL=C TZ=GMT ./pidstat -o JSON -t -dRrsuvw -p ALL > tests/out.pidstat-At-ALL-JSON.tmp
 05050	LC_ALL=C TZ=GMT ./pidstat -T TASK -dRrsuvw > tests/out.pidstat-A-TTASK.tmp
 05060	LC_ALL=C TZ=GMT ./pidstat -T TASK -dRrsuvw 2 6 > tests/out1.pidstat-A-TTASK.tmp
 05070	LC_ALL=C TZ=GMT ./pidstat -T TASK -t -dRrsuvw 2 6 > tests/out1.pidstat-At-TTASK.tmp
+05072	LC_ALL=C TZ=GMT ./pidstat -o JSON -T TASK -t -dRrsuvw 2 6 > tests/out1.pidstat-At-TTASK-JSON.tmp
 05080	LC_ALL=C TZ=GMT ./pidstat -t -dRrsuvw 2 6 > tests/out1.pidstat-At.tmp
 05090	LC_ALL=C TZ=GMT ./pidstat -T TASK -t -dRrsuvw -p ALL 2 6 > tests/out1.pidstat-At-TTASK-ALL.tmp
 05100	LC_ALL=C TZ=GMT ./pidstat -T CHILD -dRrsuvw > tests/out.pidstat-A-TCHILD.tmp
@@ -555,6 +586,7 @@ NOTES:
 05130	LC_ALL=C TZ=GMT ./pidstat -T CHILD -t -dRrsuvw -p ALL 2 6 > tests/out1.pidstat-At-TCHILD-ALL.tmp
 05140	LC_ALL=C TZ=GMT ./pidstat -T ALL -t -dRrsuvw > tests/out.pidstat-At-TALL.tmp
 05150	LC_ALL=C TZ=GMT ./pidstat -T ALL -t -dRrsuvw -p ALL 2 6 > tests/out1.pidstat-At-TALL-ALL.tmp
+05152	LC_ALL=C TZ=GMT ./pidstat -U -o JSON -T ALL -t -dRrsuvw -p ALL 2 2 > tests/out1.pidstat-At-TALL-ALL-JSON.tmp
 05160	LC_ALL=C TZ=GMT ./pidstat -T TASK -d 1 3 > tests/out1.pidstat-d-TTASK.tmp
 05170	LC_ALL=C TZ=GMT ./pidstat -T TASK -d -p ALL > tests/out.pidstat-d-TTASK-ALL.tmp
 05180	LC_ALL=C TZ=GMT ./pidstat -uRr -p 1234 1 2 > tests/out.pidstat-p-unkwn.tmp
@@ -565,6 +597,7 @@ NOTES:
 05230	LC_ALL=C TZ=GMT ./pidstat -Rw 2 > tests/out.pidstat-sigint.tmp
 05240	LC_ALL=C TZ=GMT ./pidstat -C foofox 2 6 > tests/out.pidstat-C.tmp
 05250	LC_ALL=C TZ=GMT ./pidstat -C fox 2 6 > tests/out1.pidstat-C.tmp
+05252	LC_ALL=C TZ=GMT ./pidstat -o JSON -H -C fox 2 6 > tests/out1.pidstat-C-JSON.tmp
 05260	LC_ALL=C TZ=GMT ./pidstat -C shell -C Web 2 6 > tests/out2.pidstat-C.tmp
 05270	LC_ALL=C TZ=GMT ./pidstat -t -C Web 2 6 > tests/out3.pidstat-C.tmp
 05280	LC_ALL=C TZ=GMT ./pidstat -t -C "(fox|shell)" 2 6 > tests/out4.pidstat-C.tmp
@@ -586,10 +619,10 @@ NOTES:
 05430	LC_ALL=C TZ=GMT ./pidstat -t -rw -u -U root 2 1 > tests/out.pidstat-Uroot.tmp
 05440	LC_ALL=C TZ=GMT ./pidstat -t -svwu -p 21342,1234,7900,9009 2 6 > tests/out.pidstat-plist.tmp
 05450	LC_ALL=C TZ=GMT ./pidstat 2 6 -t -e sleep 3 > tests/out.pidstat-e.tmp
-05452	LC_ALL=C TZ=GMT ./pidstat -e sleep 2 > tests/out2.pidstat-e.tmp
 
 =====	Test pidstat error cases
 05600	LC_ALL=C ./pidstat --dec=A 2>&1 | grep "Usage:" >/dev/null
+05605	LC_ALL=C ./pidstat -e sleep 2 2>&1 | grep "Usage:" >/dev/null
 
 =====	Tests to be done at the very end
 08900	cat tests/TLIST | grep ^0 | awk '{print $1}' > tests/out.list1.tmp
diff -pruN 12.7.5-2/tests/data-12.0.1.xml 12.7.7-0ubuntu2/tests/data-12.0.1.xml
--- 12.7.5-2/tests/data-12.0.1.xml	2023-05-29 12:39:00.000000000 +0000
+++ 12.7.7-0ubuntu2/tests/data-12.0.1.xml	1970-01-01 00:00:00.000000000 +0000
@@ -1,1285 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<sysstat
-xmlns="https://sysstat.github.io"
-xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-	xsi:schemaLocation="https://sysstat.github.io https://sysstat.github.io/sysstat.xsd">
-	<sysdata-version>3.4</sysdata-version>
-	<host nodename="linux.home">
-		<sysname>Linux</sysname>
-		<release>5.0.16-100.fc28.x86_64</release>
-		<machine>x86_64</machine>
-		<number-of-cpus>8</number-of-cpus>
-		<file-date>2019-10-13</file-date>
-		<file-utc-time>13:26:28</file-utc-time>
-		<statistics>
-			<timestamp date="2019-10-13" time="13:26:35" utc="1" interval="1">
-				<cpu-load>
-					<cpu number="all" usr="0.25" nice="0.00" sys="0.25" iowait="0.00" steal="0.00" irq="0.13" soft="0.13" guest="0.00" gnice="0.00" idle="99.25"/>
-					<cpu number="0" usr="0.00" nice="0.00" sys="0.00" iowait="0.00" steal="0.00" irq="0.00" soft="0.00" guest="0.00" gnice="0.00" idle="100.00"/>
-					<cpu number="1" usr="0.00" nice="0.00" sys="0.00" iowait="0.00" steal="0.00" irq="0.00" soft="0.00" guest="0.00" gnice="0.00" idle="100.00"/>
-					<cpu number="2" usr="1.00" nice="0.00" sys="0.00" iowait="0.00" steal="0.00" irq="0.00" soft="0.00" guest="0.00" gnice="0.00" idle="99.00"/>
-					<cpu number="3" usr="0.00" nice="0.00" sys="0.00" iowait="0.00" steal="0.00" irq="0.00" soft="0.00" guest="0.00" gnice="0.00" idle="100.00"/>
-					<cpu number="4" usr="0.00" nice="0.00" sys="0.00" iowait="0.00" steal="0.00" irq="0.00" soft="0.00" guest="0.00" gnice="0.00" idle="100.00"/>
-					<cpu number="5" usr="1.00" nice="0.00" sys="0.00" iowait="0.00" steal="0.00" irq="0.00" soft="0.00" guest="0.00" gnice="0.00" idle="99.00"/>
-					<cpu number="6" usr="0.00" nice="0.00" sys="0.00" iowait="0.00" steal="0.00" irq="0.99" soft="0.99" guest="0.00" gnice="0.00" idle="98.02"/>
-					<cpu number="7" usr="0.00" nice="0.00" sys="2.04" iowait="0.00" steal="0.00" irq="0.00" soft="0.00" guest="0.00" gnice="0.00" idle="97.96"/>
-				</cpu-load>
-				<process-and-context-switch per="second" proc="0.00" cswch="11002.00"/>
-				<interrupts>
-					<int-global per="second">
-						<irq intr="sum" value="5731.00"/>
-						<irq intr="0" value="0.00"/>
-						<irq intr="1" value="0.00"/>
-						<irq intr="2" value="0.00"/>
-						<irq intr="3" value="0.00"/>
-						<irq intr="4" value="0.00"/>
-						<irq intr="5" value="0.00"/>
-						<irq intr="6" value="0.00"/>
-						<irq intr="7" value="0.00"/>
-						<irq intr="8" value="0.00"/>
-						<irq intr="9" value="0.00"/>
-						<irq intr="10" value="0.00"/>
-						<irq intr="11" value="0.00"/>
-						<irq intr="12" value="0.00"/>
-						<irq intr="13" value="0.00"/>
-						<irq intr="14" value="0.00"/>
-						<irq intr="15" value="0.00"/>
-						<irq intr="16" value="0.00"/>
-						<irq intr="17" value="0.00"/>
-						<irq intr="18" value="0.00"/>
-						<irq intr="19" value="49.00"/>
-						<irq intr="20" value="0.00"/>
-						<irq intr="21" value="0.00"/>
-						<irq intr="22" value="0.00"/>
-						<irq intr="23" value="1.00"/>
-						<irq intr="24" value="2.00"/>
-						<irq intr="25" value="0.00"/>
-						<irq intr="26" value="0.00"/>
-						<irq intr="27" value="0.00"/>
-						<irq intr="28" value="0.00"/>
-						<irq intr="29" value="0.00"/>
-						<irq intr="30" value="0.00"/>
-						<irq intr="31" value="0.00"/>
-						<irq intr="32" value="0.00"/>
-						<irq intr="33" value="1.00"/>
-						<irq intr="34" value="126.00"/>
-						<irq intr="35" value="0.00"/>
-						<irq intr="36" value="0.00"/>
-						<irq intr="37" value="0.00"/>
-						<irq intr="38" value="0.00"/>
-						<irq intr="39" value="0.00"/>
-						<irq intr="40" value="0.00"/>
-						<irq intr="41" value="0.00"/>
-						<irq intr="42" value="0.00"/>
-						<irq intr="43" value="0.00"/>
-						<irq intr="44" value="0.00"/>
-						<irq intr="45" value="0.00"/>
-						<irq intr="46" value="0.00"/>
-						<irq intr="47" value="0.00"/>
-						<irq intr="48" value="0.00"/>
-						<irq intr="49" value="0.00"/>
-						<irq intr="50" value="0.00"/>
-						<irq intr="51" value="0.00"/>
-						<irq intr="52" value="0.00"/>
-						<irq intr="53" value="0.00"/>
-						<irq intr="54" value="0.00"/>
-						<irq intr="55" value="0.00"/>
-						<irq intr="56" value="0.00"/>
-						<irq intr="57" value="0.00"/>
-						<irq intr="58" value="0.00"/>
-						<irq intr="59" value="0.00"/>
-						<irq intr="60" value="0.00"/>
-						<irq intr="61" value="0.00"/>
-						<irq intr="62" value="0.00"/>
-						<irq intr="63" value="0.00"/>
-						<irq intr="64" value="0.00"/>
-						<irq intr="65" value="0.00"/>
-						<irq intr="66" value="0.00"/>
-						<irq intr="67" value="0.00"/>
-						<irq intr="68" value="0.00"/>
-						<irq intr="69" value="0.00"/>
-						<irq intr="70" value="0.00"/>
-						<irq intr="71" value="0.00"/>
-						<irq intr="72" value="0.00"/>
-						<irq intr="73" value="0.00"/>
-						<irq intr="74" value="0.00"/>
-						<irq intr="75" value="0.00"/>
-						<irq intr="76" value="0.00"/>
-						<irq intr="77" value="0.00"/>
-						<irq intr="78" value="0.00"/>
-						<irq intr="79" value="0.00"/>
-						<irq intr="80" value="0.00"/>
-						<irq intr="81" value="0.00"/>
-						<irq intr="82" value="0.00"/>
-						<irq intr="83" value="0.00"/>
-						<irq intr="84" value="0.00"/>
-						<irq intr="85" value="0.00"/>
-						<irq intr="86" value="0.00"/>
-						<irq intr="87" value="0.00"/>
-						<irq intr="88" value="0.00"/>
-						<irq intr="89" value="0.00"/>
-						<irq intr="90" value="0.00"/>
-						<irq intr="91" value="0.00"/>
-						<irq intr="92" value="0.00"/>
-						<irq intr="93" value="0.00"/>
-						<irq intr="94" value="0.00"/>
-						<irq intr="95" value="0.00"/>
-						<irq intr="96" value="0.00"/>
-						<irq intr="97" value="0.00"/>
-						<irq intr="98" value="0.00"/>
-						<irq intr="99" value="0.00"/>
-						<irq intr="100" value="0.00"/>
-						<irq intr="101" value="0.00"/>
-						<irq intr="102" value="0.00"/>
-						<irq intr="103" value="0.00"/>
-						<irq intr="104" value="0.00"/>
-						<irq intr="105" value="0.00"/>
-						<irq intr="106" value="0.00"/>
-						<irq intr="107" value="0.00"/>
-						<irq intr="108" value="0.00"/>
-						<irq intr="109" value="0.00"/>
-						<irq intr="110" value="0.00"/>
-						<irq intr="111" value="0.00"/>
-						<irq intr="112" value="0.00"/>
-						<irq intr="113" value="0.00"/>
-						<irq intr="114" value="0.00"/>
-						<irq intr="115" value="0.00"/>
-						<irq intr="116" value="0.00"/>
-						<irq intr="117" value="0.00"/>
-						<irq intr="118" value="0.00"/>
-						<irq intr="119" value="0.00"/>
-						<irq intr="120" value="0.00"/>
-						<irq intr="121" value="0.00"/>
-						<irq intr="122" value="0.00"/>
-						<irq intr="123" value="0.00"/>
-						<irq intr="124" value="0.00"/>
-						<irq intr="125" value="0.00"/>
-						<irq intr="126" value="0.00"/>
-						<irq intr="127" value="0.00"/>
-						<irq intr="128" value="0.00"/>
-						<irq intr="129" value="0.00"/>
-						<irq intr="130" value="0.00"/>
-						<irq intr="131" value="0.00"/>
-						<irq intr="132" value="0.00"/>
-						<irq intr="133" value="0.00"/>
-						<irq intr="134" value="0.00"/>
-						<irq intr="135" value="0.00"/>
-						<irq intr="136" value="0.00"/>
-						<irq intr="137" value="0.00"/>
-						<irq intr="138" value="0.00"/>
-						<irq intr="139" value="0.00"/>
-						<irq intr="140" value="0.00"/>
-						<irq intr="141" value="0.00"/>
-						<irq intr="142" value="0.00"/>
-						<irq intr="143" value="0.00"/>
-						<irq intr="144" value="0.00"/>
-						<irq intr="145" value="0.00"/>
-						<irq intr="146" value="0.00"/>
-						<irq intr="147" value="0.00"/>
-						<irq intr="148" value="0.00"/>
-						<irq intr="149" value="0.00"/>
-						<irq intr="150" value="0.00"/>
-						<irq intr="151" value="0.00"/>
-						<irq intr="152" value="0.00"/>
-						<irq intr="153" value="0.00"/>
-						<irq intr="154" value="0.00"/>
-						<irq intr="155" value="0.00"/>
-						<irq intr="156" value="0.00"/>
-						<irq intr="157" value="0.00"/>
-						<irq intr="158" value="0.00"/>
-						<irq intr="159" value="0.00"/>
-						<irq intr="160" value="0.00"/>
-						<irq intr="161" value="0.00"/>
-						<irq intr="162" value="0.00"/>
-						<irq intr="163" value="0.00"/>
-						<irq intr="164" value="0.00"/>
-						<irq intr="165" value="0.00"/>
-						<irq intr="166" value="0.00"/>
-						<irq intr="167" value="0.00"/>
-						<irq intr="168" value="0.00"/>
-						<irq intr="169" value="0.00"/>
-						<irq intr="170" value="0.00"/>
-						<irq intr="171" value="0.00"/>
-						<irq intr="172" value="0.00"/>
-						<irq intr="173" value="0.00"/>
-						<irq intr="174" value="0.00"/>
-						<irq intr="175" value="0.00"/>
-						<irq intr="176" value="0.00"/>
-						<irq intr="177" value="0.00"/>
-						<irq intr="178" value="0.00"/>
-						<irq intr="179" value="0.00"/>
-						<irq intr="180" value="0.00"/>
-						<irq intr="181" value="0.00"/>
-						<irq intr="182" value="0.00"/>
-						<irq intr="183" value="0.00"/>
-						<irq intr="184" value="0.00"/>
-						<irq intr="185" value="0.00"/>
-						<irq intr="186" value="0.00"/>
-						<irq intr="187" value="0.00"/>
-						<irq intr="188" value="0.00"/>
-						<irq intr="189" value="0.00"/>
-						<irq intr="190" value="0.00"/>
-						<irq intr="191" value="0.00"/>
-						<irq intr="192" value="0.00"/>
-						<irq intr="193" value="0.00"/>
-						<irq intr="194" value="0.00"/>
-						<irq intr="195" value="0.00"/>
-						<irq intr="196" value="0.00"/>
-						<irq intr="197" value="0.00"/>
-						<irq intr="198" value="0.00"/>
-						<irq intr="199" value="0.00"/>
-						<irq intr="200" value="0.00"/>
-						<irq intr="201" value="0.00"/>
-						<irq intr="202" value="0.00"/>
-						<irq intr="203" value="0.00"/>
-						<irq intr="204" value="0.00"/>
-						<irq intr="205" value="0.00"/>
-						<irq intr="206" value="0.00"/>
-						<irq intr="207" value="0.00"/>
-						<irq intr="208" value="0.00"/>
-						<irq intr="209" value="0.00"/>
-						<irq intr="210" value="0.00"/>
-						<irq intr="211" value="0.00"/>
-						<irq intr="212" value="0.00"/>
-						<irq intr="213" value="0.00"/>
-						<irq intr="214" value="0.00"/>
-						<irq intr="215" value="0.00"/>
-						<irq intr="216" value="0.00"/>
-						<irq intr="217" value="0.00"/>
-						<irq intr="218" value="0.00"/>
-						<irq intr="219" value="0.00"/>
-						<irq intr="220" value="0.00"/>
-						<irq intr="221" value="0.00"/>
-						<irq intr="222" value="0.00"/>
-						<irq intr="223" value="0.00"/>
-						<irq intr="224" value="0.00"/>
-						<irq intr="225" value="0.00"/>
-						<irq intr="226" value="0.00"/>
-						<irq intr="227" value="0.00"/>
-						<irq intr="228" value="0.00"/>
-						<irq intr="229" value="0.00"/>
-						<irq intr="230" value="0.00"/>
-						<irq intr="231" value="0.00"/>
-						<irq intr="232" value="0.00"/>
-						<irq intr="233" value="0.00"/>
-						<irq intr="234" value="0.00"/>
-						<irq intr="235" value="0.00"/>
-						<irq intr="236" value="0.00"/>
-						<irq intr="237" value="0.00"/>
-						<irq intr="238" value="0.00"/>
-						<irq intr="239" value="0.00"/>
-						<irq intr="240" value="0.00"/>
-						<irq intr="241" value="0.00"/>
-						<irq intr="242" value="0.00"/>
-						<irq intr="243" value="0.00"/>
-						<irq intr="244" value="0.00"/>
-						<irq intr="245" value="0.00"/>
-						<irq intr="246" value="0.00"/>
-						<irq intr="247" value="0.00"/>
-						<irq intr="248" value="0.00"/>
-						<irq intr="249" value="0.00"/>
-						<irq intr="250" value="0.00"/>
-						<irq intr="251" value="0.00"/>
-						<irq intr="252" value="0.00"/>
-						<irq intr="253" value="0.00"/>
-						<irq intr="254" value="0.00"/>
-						<irq intr="255" value="0.00"/>
-						<irq intr="256" value="0.00"/>
-						<irq intr="257" value="0.00"/>
-						<irq intr="258" value="0.00"/>
-						<irq intr="259" value="0.00"/>
-						<irq intr="260" value="0.00"/>
-						<irq intr="261" value="0.00"/>
-						<irq intr="262" value="0.00"/>
-						<irq intr="263" value="0.00"/>
-						<irq intr="264" value="0.00"/>
-						<irq intr="265" value="0.00"/>
-						<irq intr="266" value="0.00"/>
-						<irq intr="267" value="0.00"/>
-						<irq intr="268" value="0.00"/>
-						<irq intr="269" value="0.00"/>
-						<irq intr="270" value="0.00"/>
-						<irq intr="271" value="0.00"/>
-						<irq intr="272" value="0.00"/>
-						<irq intr="273" value="0.00"/>
-						<irq intr="274" value="0.00"/>
-						<irq intr="275" value="0.00"/>
-						<irq intr="276" value="0.00"/>
-						<irq intr="277" value="0.00"/>
-						<irq intr="278" value="0.00"/>
-						<irq intr="279" value="0.00"/>
-						<irq intr="280" value="0.00"/>
-						<irq intr="281" value="0.00"/>
-						<irq intr="282" value="0.00"/>
-						<irq intr="283" value="0.00"/>
-						<irq intr="284" value="0.00"/>
-						<irq intr="285" value="0.00"/>
-						<irq intr="286" value="0.00"/>
-						<irq intr="287" value="0.00"/>
-						<irq intr="288" value="0.00"/>
-						<irq intr="289" value="0.00"/>
-						<irq intr="290" value="0.00"/>
-						<irq intr="291" value="0.00"/>
-						<irq intr="292" value="0.00"/>
-						<irq intr="293" value="0.00"/>
-						<irq intr="294" value="0.00"/>
-						<irq intr="295" value="0.00"/>
-						<irq intr="296" value="0.00"/>
-						<irq intr="297" value="0.00"/>
-						<irq intr="298" value="0.00"/>
-						<irq intr="299" value="0.00"/>
-						<irq intr="300" value="0.00"/>
-						<irq intr="301" value="0.00"/>
-						<irq intr="302" value="0.00"/>
-						<irq intr="303" value="0.00"/>
-						<irq intr="304" value="0.00"/>
-						<irq intr="305" value="0.00"/>
-						<irq intr="306" value="0.00"/>
-						<irq intr="307" value="0.00"/>
-						<irq intr="308" value="0.00"/>
-						<irq intr="309" value="0.00"/>
-						<irq intr="310" value="0.00"/>
-						<irq intr="311" value="0.00"/>
-						<irq intr="312" value="0.00"/>
-						<irq intr="313" value="0.00"/>
-						<irq intr="314" value="0.00"/>
-						<irq intr="315" value="0.00"/>
-						<irq intr="316" value="0.00"/>
-						<irq intr="317" value="0.00"/>
-						<irq intr="318" value="0.00"/>
-						<irq intr="319" value="0.00"/>
-						<irq intr="320" value="0.00"/>
-						<irq intr="321" value="0.00"/>
-						<irq intr="322" value="0.00"/>
-						<irq intr="323" value="0.00"/>
-						<irq intr="324" value="0.00"/>
-						<irq intr="325" value="0.00"/>
-						<irq intr="326" value="0.00"/>
-						<irq intr="327" value="0.00"/>
-						<irq intr="328" value="0.00"/>
-						<irq intr="329" value="0.00"/>
-						<irq intr="330" value="0.00"/>
-						<irq intr="331" value="0.00"/>
-						<irq intr="332" value="0.00"/>
-						<irq intr="333" value="0.00"/>
-						<irq intr="334" value="0.00"/>
-						<irq intr="335" value="0.00"/>
-						<irq intr="336" value="0.00"/>
-						<irq intr="337" value="0.00"/>
-						<irq intr="338" value="0.00"/>
-						<irq intr="339" value="0.00"/>
-						<irq intr="340" value="0.00"/>
-						<irq intr="341" value="0.00"/>
-						<irq intr="342" value="0.00"/>
-						<irq intr="343" value="0.00"/>
-						<irq intr="344" value="0.00"/>
-						<irq intr="345" value="0.00"/>
-						<irq intr="346" value="0.00"/>
-						<irq intr="347" value="0.00"/>
-						<irq intr="348" value="0.00"/>
-						<irq intr="349" value="0.00"/>
-						<irq intr="350" value="0.00"/>
-						<irq intr="351" value="0.00"/>
-						<irq intr="352" value="0.00"/>
-						<irq intr="353" value="0.00"/>
-						<irq intr="354" value="0.00"/>
-						<irq intr="355" value="0.00"/>
-						<irq intr="356" value="0.00"/>
-						<irq intr="357" value="0.00"/>
-						<irq intr="358" value="0.00"/>
-						<irq intr="359" value="0.00"/>
-						<irq intr="360" value="0.00"/>
-						<irq intr="361" value="0.00"/>
-						<irq intr="362" value="0.00"/>
-						<irq intr="363" value="0.00"/>
-						<irq intr="364" value="0.00"/>
-						<irq intr="365" value="0.00"/>
-						<irq intr="366" value="0.00"/>
-						<irq intr="367" value="0.00"/>
-						<irq intr="368" value="0.00"/>
-						<irq intr="369" value="0.00"/>
-						<irq intr="370" value="0.00"/>
-						<irq intr="371" value="0.00"/>
-						<irq intr="372" value="0.00"/>
-						<irq intr="373" value="0.00"/>
-						<irq intr="374" value="0.00"/>
-						<irq intr="375" value="0.00"/>
-						<irq intr="376" value="0.00"/>
-						<irq intr="377" value="0.00"/>
-						<irq intr="378" value="0.00"/>
-						<irq intr="379" value="0.00"/>
-						<irq intr="380" value="0.00"/>
-						<irq intr="381" value="0.00"/>
-						<irq intr="382" value="0.00"/>
-						<irq intr="383" value="0.00"/>
-						<irq intr="384" value="0.00"/>
-						<irq intr="385" value="0.00"/>
-						<irq intr="386" value="0.00"/>
-						<irq intr="387" value="0.00"/>
-						<irq intr="388" value="0.00"/>
-						<irq intr="389" value="0.00"/>
-						<irq intr="390" value="0.00"/>
-						<irq intr="391" value="0.00"/>
-						<irq intr="392" value="0.00"/>
-						<irq intr="393" value="0.00"/>
-						<irq intr="394" value="0.00"/>
-						<irq intr="395" value="0.00"/>
-						<irq intr="396" value="0.00"/>
-						<irq intr="397" value="0.00"/>
-						<irq intr="398" value="0.00"/>
-						<irq intr="399" value="0.00"/>
-						<irq intr="400" value="0.00"/>
-						<irq intr="401" value="0.00"/>
-						<irq intr="402" value="0.00"/>
-						<irq intr="403" value="0.00"/>
-						<irq intr="404" value="0.00"/>
-						<irq intr="405" value="0.00"/>
-						<irq intr="406" value="0.00"/>
-						<irq intr="407" value="0.00"/>
-						<irq intr="408" value="0.00"/>
-						<irq intr="409" value="0.00"/>
-						<irq intr="410" value="0.00"/>
-						<irq intr="411" value="0.00"/>
-						<irq intr="412" value="0.00"/>
-						<irq intr="413" value="0.00"/>
-						<irq intr="414" value="0.00"/>
-						<irq intr="415" value="0.00"/>
-						<irq intr="416" value="0.00"/>
-						<irq intr="417" value="0.00"/>
-						<irq intr="418" value="0.00"/>
-						<irq intr="419" value="0.00"/>
-						<irq intr="420" value="0.00"/>
-						<irq intr="421" value="0.00"/>
-						<irq intr="422" value="0.00"/>
-						<irq intr="423" value="0.00"/>
-						<irq intr="424" value="0.00"/>
-						<irq intr="425" value="0.00"/>
-						<irq intr="426" value="0.00"/>
-						<irq intr="427" value="0.00"/>
-						<irq intr="428" value="0.00"/>
-						<irq intr="429" value="0.00"/>
-						<irq intr="430" value="0.00"/>
-						<irq intr="431" value="0.00"/>
-						<irq intr="432" value="0.00"/>
-						<irq intr="433" value="0.00"/>
-						<irq intr="434" value="0.00"/>
-						<irq intr="435" value="0.00"/>
-						<irq intr="436" value="0.00"/>
-						<irq intr="437" value="0.00"/>
-						<irq intr="438" value="0.00"/>
-						<irq intr="439" value="0.00"/>
-						<irq intr="440" value="0.00"/>
-						<irq intr="441" value="0.00"/>
-						<irq intr="442" value="0.00"/>
-						<irq intr="443" value="0.00"/>
-						<irq intr="444" value="0.00"/>
-						<irq intr="445" value="0.00"/>
-						<irq intr="446" value="0.00"/>
-						<irq intr="447" value="0.00"/>
-						<irq intr="448" value="0.00"/>
-						<irq intr="449" value="0.00"/>
-						<irq intr="450" value="0.00"/>
-						<irq intr="451" value="0.00"/>
-						<irq intr="452" value="0.00"/>
-						<irq intr="453" value="0.00"/>
-						<irq intr="454" value="0.00"/>
-						<irq intr="455" value="0.00"/>
-						<irq intr="456" value="0.00"/>
-						<irq intr="457" value="0.00"/>
-						<irq intr="458" value="0.00"/>
-						<irq intr="459" value="0.00"/>
-						<irq intr="460" value="0.00"/>
-						<irq intr="461" value="0.00"/>
-						<irq intr="462" value="0.00"/>
-						<irq intr="463" value="0.00"/>
-						<irq intr="464" value="0.00"/>
-						<irq intr="465" value="0.00"/>
-						<irq intr="466" value="0.00"/>
-						<irq intr="467" value="0.00"/>
-						<irq intr="468" value="0.00"/>
-						<irq intr="469" value="0.00"/>
-						<irq intr="470" value="0.00"/>
-						<irq intr="471" value="0.00"/>
-						<irq intr="472" value="0.00"/>
-						<irq intr="473" value="0.00"/>
-						<irq intr="474" value="0.00"/>
-						<irq intr="475" value="0.00"/>
-						<irq intr="476" value="0.00"/>
-						<irq intr="477" value="0.00"/>
-						<irq intr="478" value="0.00"/>
-						<irq intr="479" value="0.00"/>
-						<irq intr="480" value="0.00"/>
-						<irq intr="481" value="0.00"/>
-						<irq intr="482" value="0.00"/>
-						<irq intr="483" value="0.00"/>
-						<irq intr="484" value="0.00"/>
-						<irq intr="485" value="0.00"/>
-						<irq intr="486" value="0.00"/>
-						<irq intr="487" value="0.00"/>
-					</int-global>
-				</interrupts>
-				<swap-pages per="second" pswpin="0.00" pswpout="0.00"/>
-				<paging per="second" pgpgin="0.00" pgpgout="0.00" fault="188.00" majflt="0.00" pgfree="427.00" pgscank="0.00" pgscand="0.00" pgsteal="0.00" vmeff-percent="0.00"/>
-				<io per="second">
-					<tps>0.00</tps>
-					<io-reads rtps="0.00" bread="0.00"/>
-					<io-writes wtps="0.00" bwrtn="0.00"/>
-				</io>
-				<memory per="second" unit="kB">
-					<memfree>5057504</memfree>
-					<avail>6089980</avail>
-					<memused>1612740</memused>
-					<memused-percent>19.80</memused-percent>
-					<buffers>76620</buffers>
-					<cached>1154736</cached>
-					<commit>6238560</commit>
-					<commit-percent>25.03</commit-percent>
-					<active>1682592</active>
-					<inactive>897708</inactive>
-					<dirty>4840</dirty>
-					<anonpg>1348968</anonpg>
-					<slab>243476</slab>
-					<kstack>12512</kstack>
-					<pgtbl>60368</pgtbl>
-					<vmused>0</vmused>
-					<swpfree>16777212</swpfree>
-					<swpused>0</swpused>
-					<swpused-percent>0.00</swpused-percent>
-					<swpcad>0</swpcad>
-					<swpcad-percent>0.00</swpcad-percent>
-				</memory>
-				<hugepages unit="kB">
-					<hugfree>0</hugfree>
-					<hugused>0</hugused>
-					<hugused-percent>0.00</hugused-percent>
-				</hugepages>
-				<kernel dentunusd="41656" file-nr="14048" inode-nr="55177" pty-nr="2"/>
-				<queue runq-sz="0" plist-sz="775" ldavg-1="0.65" ldavg-5="0.80" ldavg-15="0.36" blocked="0"/>
-				<disk per="second">
-					<disk-device dev="dev8-0" tps="0.00" rd_sec="0.00" wr_sec="0.00" rkB="0.00" wkB="0.00" avgrq-sz="0.00" areq-sz="0.00" avgqu-sz="0.00" aqu-sz="0.00" await="0.00" svctm="0.00" util-percent="0.00"/>
-				</disk>
-				<network per="second">
-					<net-dev iface="virbr0" rxpck="0.00" txpck="0.00" rxkB="0.00" txkB="0.00" rxcmp="0.00" txcmp="0.00" rxmcst="0.00" ifutil-percent="0.00"/>
-					<net-dev iface="lo" rxpck="0.00" txpck="0.00" rxkB="0.00" txkB="0.00" rxcmp="0.00" txcmp="0.00" rxmcst="0.00" ifutil-percent="0.00"/>
-					<net-dev iface="virbr0-nic" rxpck="0.00" txpck="0.00" rxkB="0.00" txkB="0.00" rxcmp="0.00" txcmp="0.00" rxmcst="0.00" ifutil-percent="0.00"/>
-					<net-dev iface="enp6s0" rxpck="1.00" txpck="0.00" rxkB="0.06" txkB="0.00" rxcmp="0.00" txcmp="0.00" rxmcst="1.00" ifutil-percent="0.00"/>
-					<net-dev iface="wlp5s0" rxpck="0.00" txpck="0.00" rxkB="0.00" txkB="0.00" rxcmp="0.00" txcmp="0.00" rxmcst="0.00" ifutil-percent="0.00"/>
-					<net-edev iface="virbr0" rxerr="0.00" txerr="0.00" coll="0.00" rxdrop="0.00" txdrop="0.00" txcarr="0.00" rxfram="0.00" rxfifo="0.00" txfifo="0.00"/>
-					<net-edev iface="lo" rxerr="0.00" txerr="0.00" coll="0.00" rxdrop="0.00" txdrop="0.00" txcarr="0.00" rxfram="0.00" rxfifo="0.00" txfifo="0.00"/>
-					<net-edev iface="virbr0-nic" rxerr="0.00" txerr="0.00" coll="0.00" rxdrop="0.00" txdrop="0.00" txcarr="0.00" rxfram="0.00" rxfifo="0.00" txfifo="0.00"/>
-					<net-edev iface="enp6s0" rxerr="0.00" txerr="0.00" coll="0.00" rxdrop="0.00" txdrop="0.00" txcarr="0.00" rxfram="0.00" rxfifo="0.00" txfifo="0.00"/>
-					<net-edev iface="wlp5s0" rxerr="0.00" txerr="0.00" coll="0.00" rxdrop="0.00" txdrop="0.00" txcarr="0.00" rxfram="0.00" rxfifo="0.00" txfifo="0.00"/>
-					<net-nfs call="0.00" retrans="0.00" read="0.00" write="0.00" access="0.00" getatt="0.00"/>
-					<net-nfsd scall="0.00" badcall="0.00" packet="0.00" udp="0.00" tcp="0.00" hit="0.00" miss="0.00" sread="0.00" swrite="0.00" saccess="0.00" sgetatt="0.00"/>
-					<net-sock totsck="1192" tcpsck="16" udpsck="6" rawsck="0" ip-frag="0" tcp-tw="0"/>
-					<net-ip irec="1.00" fwddgm="0.00" idel="0.00" orq="0.00" asmrq="0.00" asmok="0.00" fragok="0.00" fragcrt="0.00"/>
-					<net-eip ihdrerr="0.00" iadrerr="0.00" iukwnpr="0.00" idisc="0.00" odisc="0.00" onort="0.00" asmf="0.00" fragf="0.00"/>
-					<net-icmp imsg="0.00" omsg="0.00" iech="0.00" iechr="0.00" oech="0.00" oechr="0.00" itm="0.00" itmr="0.00" otm="0.00" otmr="0.00" iadrmk="0.00" iadrmkr="0.00" oadrmk="0.00" oadrmkr="0.00"/>
-					<net-eicmp ierr="0.00" oerr="0.00" idstunr="0.00" odstunr="0.00" itmex="0.00" otmex="0.00" iparmpb="0.00" oparmpb="0.00" isrcq="0.00" osrcq="0.00" iredir="0.00" oredir="0.00"/>
-					<net-tcp active="0.00" passive="0.00" iseg="0.00" oseg="0.00"/>
-					<net-etcp atmptf="0.00" estres="0.00" retrans="0.00" isegerr="0.00" orsts="0.00"/>
-					<net-udp idgm="0.00" odgm="0.00" noport="0.00" idgmerr="0.00"/>
-					<net-sock6 tcp6sck="7" udp6sck="4" raw6sck="1" ip6-frag="0"/>
-					<net-ip6 irec6="0.00" fwddgm6="0.00" idel6="0.00" orq6="0.00" asmrq6="0.00" asmok6="0.00" imcpck6="0.00" omcpck6="0.00" fragok6="0.00" fragcr6="0.00"/>
-					<net-eip6 ihdrer6="0.00" iadrer6="0.00" iukwnp6="0.00" i2big6="0.00" idisc6="0.00" odisc6="0.00" inort6="0.00" onort6="0.00" asmf6="0.00" fragf6="0.00" itrpck6="0.00"/>
-					<net-icmp6 imsg6="0.00" omsg6="0.00" iech6="0.00" iechr6="0.00" oechr6="0.00" igmbq6="0.00" igmbr6="0.00" ogmbr6="0.00" igmbrd6="0.00" ogmbrd6="0.00" irtsol6="0.00" ortsol6="0.00" irtad6="0.00" inbsol6="0.00" onbsol6="0.00" inbad6="0.00" onbad6="0.00"/>
-					<net-eicmp6 ierr6="0.00" idtunr6="0.00" odtunr6="0.00" itmex6="0.00" otmex6="0.00" iprmpb6="0.00" oprmpb6="0.00" iredir6="0.00" oredir6="0.00" ipck2b6="0.00" opck2b6="0.00"/>
-					<net-udp6 idgm6="0.00" odgm6="0.00" noport6="0.00" idgmer6="0.00"/>
-					<softnet cpu="all" total="1.00" dropd="0.00" squeezd="0.00" rx_rps="0.00" flw_lim="0.00"/>
-					<softnet cpu="0" total="0.00" dropd="0.00" squeezd="0.00" rx_rps="0.00" flw_lim="0.00"/>
-					<softnet cpu="2" total="0.00" dropd="0.00" squeezd="0.00" rx_rps="0.00" flw_lim="0.00"/>
-					<softnet cpu="3" total="1.00" dropd="0.00" squeezd="0.00" rx_rps="0.00" flw_lim="0.00"/>
-					<softnet cpu="4" total="0.00" dropd="0.00" squeezd="0.00" rx_rps="0.00" flw_lim="0.00"/>
-					<softnet cpu="6" total="0.00" dropd="0.00" squeezd="0.00" rx_rps="0.00" flw_lim="0.00"/>
-					<softnet cpu="7" total="0.00" dropd="0.00" squeezd="0.00" rx_rps="0.00" flw_lim="0.00"/>
-				</network>
-				<power-management>
-					<cpu-frequency unit="MHz">
-						<cpufreq number="all" frequency="1927.57"/>
-						<cpufreq number="0" frequency="2117.72"/>
-						<cpufreq number="1" frequency="1778.92"/>
-						<cpufreq number="2" frequency="1958.48"/>
-						<cpufreq number="3" frequency="1703.39"/>
-						<cpufreq number="4" frequency="1606.62"/>
-						<cpufreq number="5" frequency="1909.15"/>
-						<cpufreq number="6" frequency="1872.78"/>
-						<cpufreq number="7" frequency="2473.52"/>
-					</cpu-frequency>
-					<fan-speed unit="rpm">
-						<fan number="1" rpm="1263" drpm="1263" device="f71858fg-isa-0200"/>
-						<fan number="2" rpm="1338" drpm="1338" device="f71858fg-isa-0200"/>
-						<fan number="3" rpm="0" drpm="0" device="f71858fg-isa-0200"/>
-						<fan number="4" rpm="1650" drpm="1650" device="nouveau-pci-0100"/>
-					</fan-speed>
-					<temperature unit="degree Celsius">
-						<temp number="1" degC="26.25" percent-temp="37.50" device="f71858fg-isa-0200"/>
-						<temp number="2" degC="22.88" percent-temp="22.88" device="f71858fg-isa-0200"/>
-						<temp number="3" degC="22.75" percent-temp="22.75" device="f71858fg-isa-0200"/>
-						<temp number="4" degC="30.00" percent-temp="31.58" device="nouveau-pci-0100"/>
-						<temp number="5" degC="29.00" percent-temp="36.25" device="coretemp-isa-0000"/>
-						<temp number="6" degC="29.00" percent-temp="36.25" device="coretemp-isa-0000"/>
-						<temp number="7" degC="25.00" percent-temp="31.25" device="coretemp-isa-0000"/>
-						<temp number="8" degC="25.00" percent-temp="31.25" device="coretemp-isa-0000"/>
-						<temp number="9" degC="25.00" percent-temp="31.25" device="coretemp-isa-0000"/>
-					</temperature>
-					<voltage-input unit="V">
-						<in number="0" inV="3.33" percent-in="0.00" device="f71858fg-isa-0200"/>
-						<in number="1" inV="3.34" percent-in="0.00" device="f71858fg-isa-0200"/>
-						<in number="2" inV="3.30" percent-in="0.00" device="f71858fg-isa-0200"/>
-						<in number="3" inV="0.95" percent-in="38.46" device="nouveau-pci-0100"/>
-					</voltage-input>
-					<usb-devices>
-						<usb bus_number="2" idvendor="3f0" idprod="862" maxpower="196" manufact="HP" product="HP Wireless Keyboard Mouse Kit"/>
-						<usb bus_number="2" idvendor="8087" idprod="24" maxpower="0" manufact="" product=""/>
-						<usb bus_number="2" idvendor="58f" idprod="6362" maxpower="500" manufact="Generic" product="Mass Storage Device"/>
-						<usb bus_number="1" idvendor="8087" idprod="24" maxpower="0" manufact="" product=""/>
-						<usb bus_number="2" idvendor="46d" idprod="825" maxpower="1000" manufact="" product=""/>
-					</usb-devices>
-				</power-management>
-				<filesystems>
-					<filesystem fsname="/dev/sda9" MBfsfree="8383" MBfsused="21018" fsused-percent="71.49" ufsused-percent="76.64" Ifree="1617286" Iused="304074" Iused-percent="15.83"/>
-					<filesystem fsname="/dev/sda12" MBfsfree="81697" MBfsused="11660" fsused-percent="12.49" ufsused-percent="17.61" Ifree="5933860" Iused="177372" Iused-percent="2.90"/>
-					<filesystem fsname="/dev/sda6" MBfsfree="279564" MBfsused="15600" fsused-percent="5.29" ufsused-percent="10.37" Ifree="19201549" Iused="499" Iused-percent="0.00"/>
-					<filesystem fsname="/dev/sda7" MBfsfree="278754" MBfsused="16410" fsused-percent="5.56" ufsused-percent="10.65" Ifree="19042030" Iused="160018" Iused-percent="0.83"/>
-				</filesystems>
-			</timestamp>
-			<timestamp date="2019-10-13" time="13:26:36" utc="1" interval="1">
-				<cpu-load>
-					<cpu number="all" usr="0.00" nice="0.00" sys="0.25" iowait="1.00" steal="0.00" irq="0.00" soft="0.00" guest="0.00" gnice="0.00" idle="98.75"/>
-					<cpu number="0" usr="0.00" nice="0.00" sys="0.00" iowait="0.00" steal="0.00" irq="0.00" soft="0.00" guest="0.00" gnice="0.00" idle="100.00"/>
-					<cpu number="1" usr="0.00" nice="0.00" sys="0.00" iowait="0.00" steal="0.00" irq="0.00" soft="0.00" guest="0.00" gnice="0.00" idle="100.00"/>
-					<cpu number="2" usr="0.00" nice="0.00" sys="1.00" iowait="0.00" steal="0.00" irq="0.00" soft="0.00" guest="0.00" gnice="0.00" idle="99.00"/>
-					<cpu number="3" usr="0.00" nice="0.00" sys="0.00" iowait="0.00" steal="0.00" irq="0.00" soft="0.00" guest="0.00" gnice="0.00" idle="100.00"/>
-					<cpu number="4" usr="0.00" nice="0.00" sys="0.00" iowait="0.00" steal="0.00" irq="0.00" soft="0.00" guest="0.00" gnice="0.00" idle="100.00"/>
-					<cpu number="5" usr="0.00" nice="0.00" sys="0.00" iowait="0.00" steal="0.00" irq="0.00" soft="0.00" guest="0.00" gnice="0.00" idle="100.00"/>
-					<cpu number="6" usr="0.00" nice="0.00" sys="0.00" iowait="7.92" steal="0.00" irq="0.00" soft="0.00" guest="0.00" gnice="0.00" idle="92.08"/>
-					<cpu number="7" usr="0.00" nice="0.00" sys="1.00" iowait="0.00" steal="0.00" irq="0.00" soft="0.00" guest="0.00" gnice="0.00" idle="99.00"/>
-				</cpu-load>
-				<process-and-context-switch per="second" proc="0.00" cswch="3218.00"/>
-				<interrupts>
-					<int-global per="second">
-						<irq intr="sum" value="1820.00"/>
-						<irq intr="0" value="0.00"/>
-						<irq intr="1" value="0.00"/>
-						<irq intr="2" value="0.00"/>
-						<irq intr="3" value="0.00"/>
-						<irq intr="4" value="0.00"/>
-						<irq intr="5" value="0.00"/>
-						<irq intr="6" value="0.00"/>
-						<irq intr="7" value="0.00"/>
-						<irq intr="8" value="0.00"/>
-						<irq intr="9" value="0.00"/>
-						<irq intr="10" value="0.00"/>
-						<irq intr="11" value="0.00"/>
-						<irq intr="12" value="0.00"/>
-						<irq intr="13" value="0.00"/>
-						<irq intr="14" value="0.00"/>
-						<irq intr="15" value="0.00"/>
-						<irq intr="16" value="0.00"/>
-						<irq intr="17" value="0.00"/>
-						<irq intr="18" value="0.00"/>
-						<irq intr="19" value="40.00"/>
-						<irq intr="20" value="0.00"/>
-						<irq intr="21" value="0.00"/>
-						<irq intr="22" value="0.00"/>
-						<irq intr="23" value="24.00"/>
-						<irq intr="24" value="95.00"/>
-						<irq intr="25" value="0.00"/>
-						<irq intr="26" value="0.00"/>
-						<irq intr="27" value="0.00"/>
-						<irq intr="28" value="0.00"/>
-						<irq intr="29" value="0.00"/>
-						<irq intr="30" value="0.00"/>
-						<irq intr="31" value="0.00"/>
-						<irq intr="32" value="0.00"/>
-						<irq intr="33" value="0.00"/>
-						<irq intr="34" value="123.00"/>
-						<irq intr="35" value="0.00"/>
-						<irq intr="36" value="0.00"/>
-						<irq intr="37" value="0.00"/>
-						<irq intr="38" value="0.00"/>
-						<irq intr="39" value="0.00"/>
-						<irq intr="40" value="0.00"/>
-						<irq intr="41" value="0.00"/>
-						<irq intr="42" value="0.00"/>
-						<irq intr="43" value="0.00"/>
-						<irq intr="44" value="0.00"/>
-						<irq intr="45" value="0.00"/>
-						<irq intr="46" value="0.00"/>
-						<irq intr="47" value="0.00"/>
-						<irq intr="48" value="0.00"/>
-						<irq intr="49" value="0.00"/>
-						<irq intr="50" value="0.00"/>
-						<irq intr="51" value="0.00"/>
-						<irq intr="52" value="0.00"/>
-						<irq intr="53" value="0.00"/>
-						<irq intr="54" value="0.00"/>
-						<irq intr="55" value="0.00"/>
-						<irq intr="56" value="0.00"/>
-						<irq intr="57" value="0.00"/>
-						<irq intr="58" value="0.00"/>
-						<irq intr="59" value="0.00"/>
-						<irq intr="60" value="0.00"/>
-						<irq intr="61" value="0.00"/>
-						<irq intr="62" value="0.00"/>
-						<irq intr="63" value="0.00"/>
-						<irq intr="64" value="0.00"/>
-						<irq intr="65" value="0.00"/>
-						<irq intr="66" value="0.00"/>
-						<irq intr="67" value="0.00"/>
-						<irq intr="68" value="0.00"/>
-						<irq intr="69" value="0.00"/>
-						<irq intr="70" value="0.00"/>
-						<irq intr="71" value="0.00"/>
-						<irq intr="72" value="0.00"/>
-						<irq intr="73" value="0.00"/>
-						<irq intr="74" value="0.00"/>
-						<irq intr="75" value="0.00"/>
-						<irq intr="76" value="0.00"/>
-						<irq intr="77" value="0.00"/>
-						<irq intr="78" value="0.00"/>
-						<irq intr="79" value="0.00"/>
-						<irq intr="80" value="0.00"/>
-						<irq intr="81" value="0.00"/>
-						<irq intr="82" value="0.00"/>
-						<irq intr="83" value="0.00"/>
-						<irq intr="84" value="0.00"/>
-						<irq intr="85" value="0.00"/>
-						<irq intr="86" value="0.00"/>
-						<irq intr="87" value="0.00"/>
-						<irq intr="88" value="0.00"/>
-						<irq intr="89" value="0.00"/>
-						<irq intr="90" value="0.00"/>
-						<irq intr="91" value="0.00"/>
-						<irq intr="92" value="0.00"/>
-						<irq intr="93" value="0.00"/>
-						<irq intr="94" value="0.00"/>
-						<irq intr="95" value="0.00"/>
-						<irq intr="96" value="0.00"/>
-						<irq intr="97" value="0.00"/>
-						<irq intr="98" value="0.00"/>
-						<irq intr="99" value="0.00"/>
-						<irq intr="100" value="0.00"/>
-						<irq intr="101" value="0.00"/>
-						<irq intr="102" value="0.00"/>
-						<irq intr="103" value="0.00"/>
-						<irq intr="104" value="0.00"/>
-						<irq intr="105" value="0.00"/>
-						<irq intr="106" value="0.00"/>
-						<irq intr="107" value="0.00"/>
-						<irq intr="108" value="0.00"/>
-						<irq intr="109" value="0.00"/>
-						<irq intr="110" value="0.00"/>
-						<irq intr="111" value="0.00"/>
-						<irq intr="112" value="0.00"/>
-						<irq intr="113" value="0.00"/>
-						<irq intr="114" value="0.00"/>
-						<irq intr="115" value="0.00"/>
-						<irq intr="116" value="0.00"/>
-						<irq intr="117" value="0.00"/>
-						<irq intr="118" value="0.00"/>
-						<irq intr="119" value="0.00"/>
-						<irq intr="120" value="0.00"/>
-						<irq intr="121" value="0.00"/>
-						<irq intr="122" value="0.00"/>
-						<irq intr="123" value="0.00"/>
-						<irq intr="124" value="0.00"/>
-						<irq intr="125" value="0.00"/>
-						<irq intr="126" value="0.00"/>
-						<irq intr="127" value="0.00"/>
-						<irq intr="128" value="0.00"/>
-						<irq intr="129" value="0.00"/>
-						<irq intr="130" value="0.00"/>
-						<irq intr="131" value="0.00"/>
-						<irq intr="132" value="0.00"/>
-						<irq intr="133" value="0.00"/>
-						<irq intr="134" value="0.00"/>
-						<irq intr="135" value="0.00"/>
-						<irq intr="136" value="0.00"/>
-						<irq intr="137" value="0.00"/>
-						<irq intr="138" value="0.00"/>
-						<irq intr="139" value="0.00"/>
-						<irq intr="140" value="0.00"/>
-						<irq intr="141" value="0.00"/>
-						<irq intr="142" value="0.00"/>
-						<irq intr="143" value="0.00"/>
-						<irq intr="144" value="0.00"/>
-						<irq intr="145" value="0.00"/>
-						<irq intr="146" value="0.00"/>
-						<irq intr="147" value="0.00"/>
-						<irq intr="148" value="0.00"/>
-						<irq intr="149" value="0.00"/>
-						<irq intr="150" value="0.00"/>
-						<irq intr="151" value="0.00"/>
-						<irq intr="152" value="0.00"/>
-						<irq intr="153" value="0.00"/>
-						<irq intr="154" value="0.00"/>
-						<irq intr="155" value="0.00"/>
-						<irq intr="156" value="0.00"/>
-						<irq intr="157" value="0.00"/>
-						<irq intr="158" value="0.00"/>
-						<irq intr="159" value="0.00"/>
-						<irq intr="160" value="0.00"/>
-						<irq intr="161" value="0.00"/>
-						<irq intr="162" value="0.00"/>
-						<irq intr="163" value="0.00"/>
-						<irq intr="164" value="0.00"/>
-						<irq intr="165" value="0.00"/>
-						<irq intr="166" value="0.00"/>
-						<irq intr="167" value="0.00"/>
-						<irq intr="168" value="0.00"/>
-						<irq intr="169" value="0.00"/>
-						<irq intr="170" value="0.00"/>
-						<irq intr="171" value="0.00"/>
-						<irq intr="172" value="0.00"/>
-						<irq intr="173" value="0.00"/>
-						<irq intr="174" value="0.00"/>
-						<irq intr="175" value="0.00"/>
-						<irq intr="176" value="0.00"/>
-						<irq intr="177" value="0.00"/>
-						<irq intr="178" value="0.00"/>
-						<irq intr="179" value="0.00"/>
-						<irq intr="180" value="0.00"/>
-						<irq intr="181" value="0.00"/>
-						<irq intr="182" value="0.00"/>
-						<irq intr="183" value="0.00"/>
-						<irq intr="184" value="0.00"/>
-						<irq intr="185" value="0.00"/>
-						<irq intr="186" value="0.00"/>
-						<irq intr="187" value="0.00"/>
-						<irq intr="188" value="0.00"/>
-						<irq intr="189" value="0.00"/>
-						<irq intr="190" value="0.00"/>
-						<irq intr="191" value="0.00"/>
-						<irq intr="192" value="0.00"/>
-						<irq intr="193" value="0.00"/>
-						<irq intr="194" value="0.00"/>
-						<irq intr="195" value="0.00"/>
-						<irq intr="196" value="0.00"/>
-						<irq intr="197" value="0.00"/>
-						<irq intr="198" value="0.00"/>
-						<irq intr="199" value="0.00"/>
-						<irq intr="200" value="0.00"/>
-						<irq intr="201" value="0.00"/>
-						<irq intr="202" value="0.00"/>
-						<irq intr="203" value="0.00"/>
-						<irq intr="204" value="0.00"/>
-						<irq intr="205" value="0.00"/>
-						<irq intr="206" value="0.00"/>
-						<irq intr="207" value="0.00"/>
-						<irq intr="208" value="0.00"/>
-						<irq intr="209" value="0.00"/>
-						<irq intr="210" value="0.00"/>
-						<irq intr="211" value="0.00"/>
-						<irq intr="212" value="0.00"/>
-						<irq intr="213" value="0.00"/>
-						<irq intr="214" value="0.00"/>
-						<irq intr="215" value="0.00"/>
-						<irq intr="216" value="0.00"/>
-						<irq intr="217" value="0.00"/>
-						<irq intr="218" value="0.00"/>
-						<irq intr="219" value="0.00"/>
-						<irq intr="220" value="0.00"/>
-						<irq intr="221" value="0.00"/>
-						<irq intr="222" value="0.00"/>
-						<irq intr="223" value="0.00"/>
-						<irq intr="224" value="0.00"/>
-						<irq intr="225" value="0.00"/>
-						<irq intr="226" value="0.00"/>
-						<irq intr="227" value="0.00"/>
-						<irq intr="228" value="0.00"/>
-						<irq intr="229" value="0.00"/>
-						<irq intr="230" value="0.00"/>
-						<irq intr="231" value="0.00"/>
-						<irq intr="232" value="0.00"/>
-						<irq intr="233" value="0.00"/>
-						<irq intr="234" value="0.00"/>
-						<irq intr="235" value="0.00"/>
-						<irq intr="236" value="0.00"/>
-						<irq intr="237" value="0.00"/>
-						<irq intr="238" value="0.00"/>
-						<irq intr="239" value="0.00"/>
-						<irq intr="240" value="0.00"/>
-						<irq intr="241" value="0.00"/>
-						<irq intr="242" value="0.00"/>
-						<irq intr="243" value="0.00"/>
-						<irq intr="244" value="0.00"/>
-						<irq intr="245" value="0.00"/>
-						<irq intr="246" value="0.00"/>
-						<irq intr="247" value="0.00"/>
-						<irq intr="248" value="0.00"/>
-						<irq intr="249" value="0.00"/>
-						<irq intr="250" value="0.00"/>
-						<irq intr="251" value="0.00"/>
-						<irq intr="252" value="0.00"/>
-						<irq intr="253" value="0.00"/>
-						<irq intr="254" value="0.00"/>
-						<irq intr="255" value="0.00"/>
-						<irq intr="256" value="0.00"/>
-						<irq intr="257" value="0.00"/>
-						<irq intr="258" value="0.00"/>
-						<irq intr="259" value="0.00"/>
-						<irq intr="260" value="0.00"/>
-						<irq intr="261" value="0.00"/>
-						<irq intr="262" value="0.00"/>
-						<irq intr="263" value="0.00"/>
-						<irq intr="264" value="0.00"/>
-						<irq intr="265" value="0.00"/>
-						<irq intr="266" value="0.00"/>
-						<irq intr="267" value="0.00"/>
-						<irq intr="268" value="0.00"/>
-						<irq intr="269" value="0.00"/>
-						<irq intr="270" value="0.00"/>
-						<irq intr="271" value="0.00"/>
-						<irq intr="272" value="0.00"/>
-						<irq intr="273" value="0.00"/>
-						<irq intr="274" value="0.00"/>
-						<irq intr="275" value="0.00"/>
-						<irq intr="276" value="0.00"/>
-						<irq intr="277" value="0.00"/>
-						<irq intr="278" value="0.00"/>
-						<irq intr="279" value="0.00"/>
-						<irq intr="280" value="0.00"/>
-						<irq intr="281" value="0.00"/>
-						<irq intr="282" value="0.00"/>
-						<irq intr="283" value="0.00"/>
-						<irq intr="284" value="0.00"/>
-						<irq intr="285" value="0.00"/>
-						<irq intr="286" value="0.00"/>
-						<irq intr="287" value="0.00"/>
-						<irq intr="288" value="0.00"/>
-						<irq intr="289" value="0.00"/>
-						<irq intr="290" value="0.00"/>
-						<irq intr="291" value="0.00"/>
-						<irq intr="292" value="0.00"/>
-						<irq intr="293" value="0.00"/>
-						<irq intr="294" value="0.00"/>
-						<irq intr="295" value="0.00"/>
-						<irq intr="296" value="0.00"/>
-						<irq intr="297" value="0.00"/>
-						<irq intr="298" value="0.00"/>
-						<irq intr="299" value="0.00"/>
-						<irq intr="300" value="0.00"/>
-						<irq intr="301" value="0.00"/>
-						<irq intr="302" value="0.00"/>
-						<irq intr="303" value="0.00"/>
-						<irq intr="304" value="0.00"/>
-						<irq intr="305" value="0.00"/>
-						<irq intr="306" value="0.00"/>
-						<irq intr="307" value="0.00"/>
-						<irq intr="308" value="0.00"/>
-						<irq intr="309" value="0.00"/>
-						<irq intr="310" value="0.00"/>
-						<irq intr="311" value="0.00"/>
-						<irq intr="312" value="0.00"/>
-						<irq intr="313" value="0.00"/>
-						<irq intr="314" value="0.00"/>
-						<irq intr="315" value="0.00"/>
-						<irq intr="316" value="0.00"/>
-						<irq intr="317" value="0.00"/>
-						<irq intr="318" value="0.00"/>
-						<irq intr="319" value="0.00"/>
-						<irq intr="320" value="0.00"/>
-						<irq intr="321" value="0.00"/>
-						<irq intr="322" value="0.00"/>
-						<irq intr="323" value="0.00"/>
-						<irq intr="324" value="0.00"/>
-						<irq intr="325" value="0.00"/>
-						<irq intr="326" value="0.00"/>
-						<irq intr="327" value="0.00"/>
-						<irq intr="328" value="0.00"/>
-						<irq intr="329" value="0.00"/>
-						<irq intr="330" value="0.00"/>
-						<irq intr="331" value="0.00"/>
-						<irq intr="332" value="0.00"/>
-						<irq intr="333" value="0.00"/>
-						<irq intr="334" value="0.00"/>
-						<irq intr="335" value="0.00"/>
-						<irq intr="336" value="0.00"/>
-						<irq intr="337" value="0.00"/>
-						<irq intr="338" value="0.00"/>
-						<irq intr="339" value="0.00"/>
-						<irq intr="340" value="0.00"/>
-						<irq intr="341" value="0.00"/>
-						<irq intr="342" value="0.00"/>
-						<irq intr="343" value="0.00"/>
-						<irq intr="344" value="0.00"/>
-						<irq intr="345" value="0.00"/>
-						<irq intr="346" value="0.00"/>
-						<irq intr="347" value="0.00"/>
-						<irq intr="348" value="0.00"/>
-						<irq intr="349" value="0.00"/>
-						<irq intr="350" value="0.00"/>
-						<irq intr="351" value="0.00"/>
-						<irq intr="352" value="0.00"/>
-						<irq intr="353" value="0.00"/>
-						<irq intr="354" value="0.00"/>
-						<irq intr="355" value="0.00"/>
-						<irq intr="356" value="0.00"/>
-						<irq intr="357" value="0.00"/>
-						<irq intr="358" value="0.00"/>
-						<irq intr="359" value="0.00"/>
-						<irq intr="360" value="0.00"/>
-						<irq intr="361" value="0.00"/>
-						<irq intr="362" value="0.00"/>
-						<irq intr="363" value="0.00"/>
-						<irq intr="364" value="0.00"/>
-						<irq intr="365" value="0.00"/>
-						<irq intr="366" value="0.00"/>
-						<irq intr="367" value="0.00"/>
-						<irq intr="368" value="0.00"/>
-						<irq intr="369" value="0.00"/>
-						<irq intr="370" value="0.00"/>
-						<irq intr="371" value="0.00"/>
-						<irq intr="372" value="0.00"/>
-						<irq intr="373" value="0.00"/>
-						<irq intr="374" value="0.00"/>
-						<irq intr="375" value="0.00"/>
-						<irq intr="376" value="0.00"/>
-						<irq intr="377" value="0.00"/>
-						<irq intr="378" value="0.00"/>
-						<irq intr="379" value="0.00"/>
-						<irq intr="380" value="0.00"/>
-						<irq intr="381" value="0.00"/>
-						<irq intr="382" value="0.00"/>
-						<irq intr="383" value="0.00"/>
-						<irq intr="384" value="0.00"/>
-						<irq intr="385" value="0.00"/>
-						<irq intr="386" value="0.00"/>
-						<irq intr="387" value="0.00"/>
-						<irq intr="388" value="0.00"/>
-						<irq intr="389" value="0.00"/>
-						<irq intr="390" value="0.00"/>
-						<irq intr="391" value="0.00"/>
-						<irq intr="392" value="0.00"/>
-						<irq intr="393" value="0.00"/>
-						<irq intr="394" value="0.00"/>
-						<irq intr="395" value="0.00"/>
-						<irq intr="396" value="0.00"/>
-						<irq intr="397" value="0.00"/>
-						<irq intr="398" value="0.00"/>
-						<irq intr="399" value="0.00"/>
-						<irq intr="400" value="0.00"/>
-						<irq intr="401" value="0.00"/>
-						<irq intr="402" value="0.00"/>
-						<irq intr="403" value="0.00"/>
-						<irq intr="404" value="0.00"/>
-						<irq intr="405" value="0.00"/>
-						<irq intr="406" value="0.00"/>
-						<irq intr="407" value="0.00"/>
-						<irq intr="408" value="0.00"/>
-						<irq intr="409" value="0.00"/>
-						<irq intr="410" value="0.00"/>
-						<irq intr="411" value="0.00"/>
-						<irq intr="412" value="0.00"/>
-						<irq intr="413" value="0.00"/>
-						<irq intr="414" value="0.00"/>
-						<irq intr="415" value="0.00"/>
-						<irq intr="416" value="0.00"/>
-						<irq intr="417" value="0.00"/>
-						<irq intr="418" value="0.00"/>
-						<irq intr="419" value="0.00"/>
-						<irq intr="420" value="0.00"/>
-						<irq intr="421" value="0.00"/>
-						<irq intr="422" value="0.00"/>
-						<irq intr="423" value="0.00"/>
-						<irq intr="424" value="0.00"/>
-						<irq intr="425" value="0.00"/>
-						<irq intr="426" value="0.00"/>
-						<irq intr="427" value="0.00"/>
-						<irq intr="428" value="0.00"/>
-						<irq intr="429" value="0.00"/>
-						<irq intr="430" value="0.00"/>
-						<irq intr="431" value="0.00"/>
-						<irq intr="432" value="0.00"/>
-						<irq intr="433" value="0.00"/>
-						<irq intr="434" value="0.00"/>
-						<irq intr="435" value="0.00"/>
-						<irq intr="436" value="0.00"/>
-						<irq intr="437" value="0.00"/>
-						<irq intr="438" value="0.00"/>
-						<irq intr="439" value="0.00"/>
-						<irq intr="440" value="0.00"/>
-						<irq intr="441" value="0.00"/>
-						<irq intr="442" value="0.00"/>
-						<irq intr="443" value="0.00"/>
-						<irq intr="444" value="0.00"/>
-						<irq intr="445" value="0.00"/>
-						<irq intr="446" value="0.00"/>
-						<irq intr="447" value="0.00"/>
-						<irq intr="448" value="0.00"/>
-						<irq intr="449" value="0.00"/>
-						<irq intr="450" value="0.00"/>
-						<irq intr="451" value="0.00"/>
-						<irq intr="452" value="0.00"/>
-						<irq intr="453" value="0.00"/>
-						<irq intr="454" value="0.00"/>
-						<irq intr="455" value="0.00"/>
-						<irq intr="456" value="0.00"/>
-						<irq intr="457" value="0.00"/>
-						<irq intr="458" value="0.00"/>
-						<irq intr="459" value="0.00"/>
-						<irq intr="460" value="0.00"/>
-						<irq intr="461" value="0.00"/>
-						<irq intr="462" value="0.00"/>
-						<irq intr="463" value="0.00"/>
-						<irq intr="464" value="0.00"/>
-						<irq intr="465" value="0.00"/>
-						<irq intr="466" value="0.00"/>
-						<irq intr="467" value="0.00"/>
-						<irq intr="468" value="0.00"/>
-						<irq intr="469" value="0.00"/>
-						<irq intr="470" value="0.00"/>
-						<irq intr="471" value="0.00"/>
-						<irq intr="472" value="0.00"/>
-						<irq intr="473" value="0.00"/>
-						<irq intr="474" value="0.00"/>
-						<irq intr="475" value="0.00"/>
-						<irq intr="476" value="0.00"/>
-						<irq intr="477" value="0.00"/>
-						<irq intr="478" value="0.00"/>
-						<irq intr="479" value="0.00"/>
-						<irq intr="480" value="0.00"/>
-						<irq intr="481" value="0.00"/>
-						<irq intr="482" value="0.00"/>
-						<irq intr="483" value="0.00"/>
-						<irq intr="484" value="0.00"/>
-						<irq intr="485" value="0.00"/>
-						<irq intr="486" value="0.00"/>
-						<irq intr="487" value="0.00"/>
-					</int-global>
-				</interrupts>
-				<swap-pages per="second" pswpin="0.00" pswpout="0.00"/>
-				<paging per="second" pgpgin="0.00" pgpgout="4768.00" fault="2.00" majflt="0.00" pgfree="22.00" pgscank="0.00" pgscand="0.00" pgsteal="0.00" vmeff-percent="0.00"/>
-				<io per="second">
-					<tps>93.00</tps>
-					<io-reads rtps="0.00" bread="0.00"/>
-					<io-writes wtps="93.00" bwrtn="9536.00"/>
-				</io>
-				<memory per="second" unit="kB">
-					<memfree>5057252</memfree>
-					<avail>6089732</avail>
-					<memused>1612968</memused>
-					<memused-percent>19.80</memused-percent>
-					<buffers>76628</buffers>
-					<cached>1154748</cached>
-					<commit>6238560</commit>
-					<commit-percent>25.03</commit-percent>
-					<active>1682592</active>
-					<inactive>897708</inactive>
-					<dirty>164</dirty>
-					<anonpg>1348968</anonpg>
-					<slab>243480</slab>
-					<kstack>12512</kstack>
-					<pgtbl>60368</pgtbl>
-					<vmused>0</vmused>
-					<swpfree>16777212</swpfree>
-					<swpused>0</swpused>
-					<swpused-percent>0.00</swpused-percent>
-					<swpcad>0</swpcad>
-					<swpcad-percent>0.00</swpcad-percent>
-				</memory>
-				<hugepages unit="kB">
-					<hugfree>0</hugfree>
-					<hugused>0</hugused>
-					<hugused-percent>0.00</hugused-percent>
-				</hugepages>
-				<kernel dentunusd="41656" file-nr="14048" inode-nr="55177" pty-nr="2"/>
-				<queue runq-sz="0" plist-sz="775" ldavg-1="0.65" ldavg-5="0.80" ldavg-15="0.36" blocked="0"/>
-				<disk per="second">
-					<disk-device dev="dev8-0" tps="93.00" rd_sec="0.00" wr_sec="9536.00" rkB="0.00" wkB="4768.00" avgrq-sz="102.54" areq-sz="51.27" avgqu-sz="0.75" aqu-sz="0.75" await="8.57" svctm="0.33" util-percent="3.10"/>
-				</disk>
-				<network per="second">
-					<net-dev iface="virbr0" rxpck="0.00" txpck="0.00" rxkB="0.00" txkB="0.00" rxcmp="0.00" txcmp="0.00" rxmcst="0.00" ifutil-percent="0.00"/>
-					<net-dev iface="lo" rxpck="0.00" txpck="0.00" rxkB="0.00" txkB="0.00" rxcmp="0.00" txcmp="0.00" rxmcst="0.00" ifutil-percent="0.00"/>
-					<net-dev iface="virbr0-nic" rxpck="0.00" txpck="0.00" rxkB="0.00" txkB="0.00" rxcmp="0.00" txcmp="0.00" rxmcst="0.00" ifutil-percent="0.00"/>
-					<net-dev iface="enp6s0" rxpck="0.00" txpck="0.00" rxkB="0.00" txkB="0.00" rxcmp="0.00" txcmp="0.00" rxmcst="0.00" ifutil-percent="0.00"/>
-					<net-dev iface="wlp5s0" rxpck="0.00" txpck="0.00" rxkB="0.00" txkB="0.00" rxcmp="0.00" txcmp="0.00" rxmcst="0.00" ifutil-percent="0.00"/>
-					<net-edev iface="virbr0" rxerr="0.00" txerr="0.00" coll="0.00" rxdrop="0.00" txdrop="0.00" txcarr="0.00" rxfram="0.00" rxfifo="0.00" txfifo="0.00"/>
-					<net-edev iface="lo" rxerr="0.00" txerr="0.00" coll="0.00" rxdrop="0.00" txdrop="0.00" txcarr="0.00" rxfram="0.00" rxfifo="0.00" txfifo="0.00"/>
-					<net-edev iface="virbr0-nic" rxerr="0.00" txerr="0.00" coll="0.00" rxdrop="0.00" txdrop="0.00" txcarr="0.00" rxfram="0.00" rxfifo="0.00" txfifo="0.00"/>
-					<net-edev iface="enp6s0" rxerr="0.00" txerr="0.00" coll="0.00" rxdrop="0.00" txdrop="0.00" txcarr="0.00" rxfram="0.00" rxfifo="0.00" txfifo="0.00"/>
-					<net-edev iface="wlp5s0" rxerr="0.00" txerr="0.00" coll="0.00" rxdrop="0.00" txdrop="0.00" txcarr="0.00" rxfram="0.00" rxfifo="0.00" txfifo="0.00"/>
-					<net-nfs call="0.00" retrans="0.00" read="0.00" write="0.00" access="0.00" getatt="0.00"/>
-					<net-nfsd scall="0.00" badcall="0.00" packet="0.00" udp="0.00" tcp="0.00" hit="0.00" miss="0.00" sread="0.00" swrite="0.00" saccess="0.00" sgetatt="0.00"/>
-					<net-sock totsck="1192" tcpsck="16" udpsck="6" rawsck="0" ip-frag="0" tcp-tw="0"/>
-					<net-ip irec="0.00" fwddgm="0.00" idel="0.00" orq="0.00" asmrq="0.00" asmok="0.00" fragok="0.00" fragcrt="0.00"/>
-					<net-eip ihdrerr="0.00" iadrerr="0.00" iukwnpr="0.00" idisc="0.00" odisc="0.00" onort="0.00" asmf="0.00" fragf="0.00"/>
-					<net-icmp imsg="0.00" omsg="0.00" iech="0.00" iechr="0.00" oech="0.00" oechr="0.00" itm="0.00" itmr="0.00" otm="0.00" otmr="0.00" iadrmk="0.00" iadrmkr="0.00" oadrmk="0.00" oadrmkr="0.00"/>
-					<net-eicmp ierr="0.00" oerr="0.00" idstunr="0.00" odstunr="0.00" itmex="0.00" otmex="0.00" iparmpb="0.00" oparmpb="0.00" isrcq="0.00" osrcq="0.00" iredir="0.00" oredir="0.00"/>
-					<net-tcp active="0.00" passive="0.00" iseg="0.00" oseg="0.00"/>
-					<net-etcp atmptf="0.00" estres="0.00" retrans="0.00" isegerr="0.00" orsts="0.00"/>
-					<net-udp idgm="0.00" odgm="0.00" noport="0.00" idgmerr="0.00"/>
-					<net-sock6 tcp6sck="7" udp6sck="4" raw6sck="1" ip6-frag="0"/>
-					<net-ip6 irec6="0.00" fwddgm6="0.00" idel6="0.00" orq6="0.00" asmrq6="0.00" asmok6="0.00" imcpck6="0.00" omcpck6="0.00" fragok6="0.00" fragcr6="0.00"/>
-					<net-eip6 ihdrer6="0.00" iadrer6="0.00" iukwnp6="0.00" i2big6="0.00" idisc6="0.00" odisc6="0.00" inort6="0.00" onort6="0.00" asmf6="0.00" fragf6="0.00" itrpck6="0.00"/>
-					<net-icmp6 imsg6="0.00" omsg6="0.00" iech6="0.00" iechr6="0.00" oechr6="0.00" igmbq6="0.00" igmbr6="0.00" ogmbr6="0.00" igmbrd6="0.00" ogmbrd6="0.00" irtsol6="0.00" ortsol6="0.00" irtad6="0.00" inbsol6="0.00" onbsol6="0.00" inbad6="0.00" onbad6="0.00"/>
-					<net-eicmp6 ierr6="0.00" idtunr6="0.00" odtunr6="0.00" itmex6="0.00" otmex6="0.00" iprmpb6="0.00" oprmpb6="0.00" iredir6="0.00" oredir6="0.00" ipck2b6="0.00" opck2b6="0.00"/>
-					<net-udp6 idgm6="0.00" odgm6="0.00" noport6="0.00" idgmer6="0.00"/>
-					<softnet cpu="all" total="0.00" dropd="0.00" squeezd="0.00" rx_rps="0.00" flw_lim="0.00"/>
-					<softnet cpu="0" total="0.00" dropd="0.00" squeezd="0.00" rx_rps="0.00" flw_lim="0.00"/>
-					<softnet cpu="2" total="0.00" dropd="0.00" squeezd="0.00" rx_rps="0.00" flw_lim="0.00"/>
-					<softnet cpu="3" total="0.00" dropd="0.00" squeezd="0.00" rx_rps="0.00" flw_lim="0.00"/>
-					<softnet cpu="4" total="0.00" dropd="0.00" squeezd="0.00" rx_rps="0.00" flw_lim="0.00"/>
-					<softnet cpu="6" total="0.00" dropd="0.00" squeezd="0.00" rx_rps="0.00" flw_lim="0.00"/>
-					<softnet cpu="7" total="0.00" dropd="0.00" squeezd="0.00" rx_rps="0.00" flw_lim="0.00"/>
-				</network>
-				<power-management>
-					<cpu-frequency unit="MHz">
-						<cpufreq number="all" frequency="1596.37"/>
-						<cpufreq number="0" frequency="1596.38"/>
-						<cpufreq number="1" frequency="1596.37"/>
-						<cpufreq number="2" frequency="1596.38"/>
-						<cpufreq number="3" frequency="1596.37"/>
-						<cpufreq number="4" frequency="1596.40"/>
-						<cpufreq number="5" frequency="1596.38"/>
-						<cpufreq number="6" frequency="1596.34"/>
-						<cpufreq number="7" frequency="1596.38"/>
-					</cpu-frequency>
-					<fan-speed unit="rpm">
-						<fan number="1" rpm="1263" drpm="1263" device="f71858fg-isa-0200"/>
-						<fan number="2" rpm="1328" drpm="1328" device="f71858fg-isa-0200"/>
-						<fan number="3" rpm="0" drpm="0" device="f71858fg-isa-0200"/>
-						<fan number="4" rpm="1650" drpm="1650" device="nouveau-pci-0100"/>
-					</fan-speed>
-					<temperature unit="degree Celsius">
-						<temp number="1" degC="26.12" percent-temp="37.32" device="f71858fg-isa-0200"/>
-						<temp number="2" degC="23.75" percent-temp="23.75" device="f71858fg-isa-0200"/>
-						<temp number="3" degC="22.50" percent-temp="22.50" device="f71858fg-isa-0200"/>
-						<temp number="4" degC="30.00" percent-temp="31.58" device="nouveau-pci-0100"/>
-						<temp number="5" degC="27.00" percent-temp="33.75" device="coretemp-isa-0000"/>
-						<temp number="6" degC="27.00" percent-temp="33.75" device="coretemp-isa-0000"/>
-						<temp number="7" degC="24.00" percent-temp="30.00" device="coretemp-isa-0000"/>
-						<temp number="8" degC="25.00" percent-temp="31.25" device="coretemp-isa-0000"/>
-						<temp number="9" degC="25.00" percent-temp="31.25" device="coretemp-isa-0000"/>
-					</temperature>
-					<voltage-input unit="V">
-						<in number="0" inV="3.34" percent-in="0.00" device="f71858fg-isa-0200"/>
-						<in number="1" inV="3.34" percent-in="0.00" device="f71858fg-isa-0200"/>
-						<in number="2" inV="3.30" percent-in="0.00" device="f71858fg-isa-0200"/>
-						<in number="3" inV="0.95" percent-in="38.46" device="nouveau-pci-0100"/>
-					</voltage-input>
-					<usb-devices>
-						<usb bus_number="2" idvendor="3f0" idprod="862" maxpower="196" manufact="HP" product="HP Wireless Keyboard Mouse Kit"/>
-						<usb bus_number="2" idvendor="8087" idprod="24" maxpower="0" manufact="" product=""/>
-						<usb bus_number="2" idvendor="58f" idprod="6362" maxpower="500" manufact="Generic" product="Mass Storage Device"/>
-						<usb bus_number="1" idvendor="8087" idprod="24" maxpower="0" manufact="" product=""/>
-						<usb bus_number="2" idvendor="46d" idprod="825" maxpower="1000" manufact="" product=""/>
-					</usb-devices>
-				</power-management>
-				<filesystems>
-					<filesystem fsname="/dev/sda9" MBfsfree="8383" MBfsused="21018" fsused-percent="71.49" ufsused-percent="76.64" Ifree="1617286" Iused="304074" Iused-percent="15.83"/>
-					<filesystem fsname="/dev/sda12" MBfsfree="81696" MBfsused="11660" fsused-percent="12.49" ufsused-percent="17.61" Ifree="5933860" Iused="177372" Iused-percent="2.90"/>
-					<filesystem fsname="/dev/sda6" MBfsfree="279564" MBfsused="15600" fsused-percent="5.29" ufsused-percent="10.37" Ifree="19201549" Iused="499" Iused-percent="0.00"/>
-					<filesystem fsname="/dev/sda7" MBfsfree="278754" MBfsused="16410" fsused-percent="5.56" ufsused-percent="10.65" Ifree="19042030" Iused="160018" Iused-percent="0.83"/>
-				</filesystems>
-			</timestamp>
-		</statistics>
-		<restarts>
-			<boot date="2019-10-13" time="13:26:28" utc="1" cpu_count="8"/>
-		</restarts>
-		<comments>
-			<comment date="2019-10-13" time="13:26:45" utc="1" com="Hello world!"/>
-		</comments>
-	</host>
-</sysstat>
diff -pruN 12.7.5-2/tests/data-12.7.6.xml 12.7.7-0ubuntu2/tests/data-12.7.6.xml
--- 12.7.5-2/tests/data-12.7.6.xml	1970-01-01 00:00:00.000000000 +0000
+++ 12.7.7-0ubuntu2/tests/data-12.7.6.xml	2024-01-20 16:06:40.000000000 +0000
@@ -0,0 +1,1338 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<sysstat
+xmlns="https://sysstat.github.io"
+xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+xsi:schemaLocation="https://sysstat.github.io https://sysstat.github.io/sysstat.xsd">
+	<sysdata-version>3.17</sysdata-version>
+	<host nodename="brooks.home">
+		<sysname>Linux</sysname>
+		<release>6.6.11-100.fc38.x86_64</release>
+		<machine>x86_64</machine>
+		<number-of-cpus>8</number-of-cpus>
+		<file-date>2024-01-20</file-date>
+		<file-utc-time>16:00:17</file-utc-time>
+		<timezone>CET</timezone>
+		<statistics>
+			<timestamp date="2024-01-20" time="16:00:22" tz="UTC" interval="1">
+				<cpu-load>
+					<cpu number="all" usr="0.87" nice="0.00" sys="0.25" iowait="0.00" steal="0.00" irq="0.25" soft="0.25" guest="0.00" gnice="0.00" idle="98.38"/>
+					<cpu number="0" usr="0.00" nice="0.00" sys="0.00" iowait="0.00" steal="0.00" irq="0.00" soft="0.00" guest="0.00" gnice="0.00" idle="100.00"/>
+					<cpu number="1" usr="0.00" nice="0.00" sys="0.00" iowait="0.00" steal="0.00" irq="1.00" soft="0.00" guest="0.00" gnice="0.00" idle="99.00"/>
+					<cpu number="2" usr="3.00" nice="0.00" sys="0.00" iowait="0.00" steal="0.00" irq="0.00" soft="1.00" guest="0.00" gnice="0.00" idle="96.00"/>
+					<cpu number="3" usr="0.00" nice="0.00" sys="0.00" iowait="0.00" steal="0.00" irq="0.99" soft="0.00" guest="0.00" gnice="0.00" idle="99.01"/>
+					<cpu number="4" usr="1.00" nice="0.00" sys="2.00" iowait="0.00" steal="0.00" irq="0.00" soft="0.00" guest="0.00" gnice="0.00" idle="97.00"/>
+					<cpu number="5" usr="0.99" nice="0.00" sys="0.00" iowait="0.00" steal="0.00" irq="0.00" soft="0.00" guest="0.00" gnice="0.00" idle="99.01"/>
+					<cpu number="6" usr="0.00" nice="0.00" sys="0.00" iowait="0.00" steal="0.00" irq="0.00" soft="1.00" guest="0.00" gnice="0.00" idle="99.00"/>
+					<cpu number="7" usr="2.00" nice="0.00" sys="0.00" iowait="0.00" steal="0.00" irq="0.00" soft="0.00" guest="0.00" gnice="0.00" idle="98.00"/>
+				</cpu-load>
+				<process-and-context-switch per="second" proc="0.00" cswch="599.00"/>
+				<interrupts>
+					<int-global per="second">
+						<irq intr="sum" cpu="all" value="682.00"/>
+						<irq intr="sum" cpu="0" value="110.00"/>
+						<irq intr="sum" cpu="1" value="76.00"/>
+						<irq intr="sum" cpu="2" value="71.00"/>
+						<irq intr="sum" cpu="3" value="44.00"/>
+						<irq intr="sum" cpu="4" value="116.00"/>
+						<irq intr="sum" cpu="5" value="65.00"/>
+						<irq intr="sum" cpu="6" value="137.00"/>
+						<irq intr="sum" cpu="7" value="63.00"/>
+						<irq intr="0" cpu="all" value="0.00"/>
+						<irq intr="0" cpu="0" value="0.00"/>
+						<irq intr="0" cpu="1" value="0.00"/>
+						<irq intr="0" cpu="2" value="0.00"/>
+						<irq intr="0" cpu="3" value="0.00"/>
+						<irq intr="0" cpu="4" value="0.00"/>
+						<irq intr="0" cpu="5" value="0.00"/>
+						<irq intr="0" cpu="6" value="0.00"/>
+						<irq intr="0" cpu="7" value="0.00"/>
+						<irq intr="1" cpu="all" value="0.00"/>
+						<irq intr="1" cpu="0" value="0.00"/>
+						<irq intr="1" cpu="1" value="0.00"/>
+						<irq intr="1" cpu="2" value="0.00"/>
+						<irq intr="1" cpu="3" value="0.00"/>
+						<irq intr="1" cpu="4" value="0.00"/>
+						<irq intr="1" cpu="5" value="0.00"/>
+						<irq intr="1" cpu="6" value="0.00"/>
+						<irq intr="1" cpu="7" value="0.00"/>
+						<irq intr="7" cpu="all" value="0.00"/>
+						<irq intr="7" cpu="0" value="0.00"/>
+						<irq intr="7" cpu="1" value="0.00"/>
+						<irq intr="7" cpu="2" value="0.00"/>
+						<irq intr="7" cpu="3" value="0.00"/>
+						<irq intr="7" cpu="4" value="0.00"/>
+						<irq intr="7" cpu="5" value="0.00"/>
+						<irq intr="7" cpu="6" value="0.00"/>
+						<irq intr="7" cpu="7" value="0.00"/>
+						<irq intr="8" cpu="all" value="0.00"/>
+						<irq intr="8" cpu="0" value="0.00"/>
+						<irq intr="8" cpu="1" value="0.00"/>
+						<irq intr="8" cpu="2" value="0.00"/>
+						<irq intr="8" cpu="3" value="0.00"/>
+						<irq intr="8" cpu="4" value="0.00"/>
+						<irq intr="8" cpu="5" value="0.00"/>
+						<irq intr="8" cpu="6" value="0.00"/>
+						<irq intr="8" cpu="7" value="0.00"/>
+						<irq intr="9" cpu="all" value="0.00"/>
+						<irq intr="9" cpu="0" value="0.00"/>
+						<irq intr="9" cpu="1" value="0.00"/>
+						<irq intr="9" cpu="2" value="0.00"/>
+						<irq intr="9" cpu="3" value="0.00"/>
+						<irq intr="9" cpu="4" value="0.00"/>
+						<irq intr="9" cpu="5" value="0.00"/>
+						<irq intr="9" cpu="6" value="0.00"/>
+						<irq intr="9" cpu="7" value="0.00"/>
+						<irq intr="12" cpu="all" value="0.00"/>
+						<irq intr="12" cpu="0" value="0.00"/>
+						<irq intr="12" cpu="1" value="0.00"/>
+						<irq intr="12" cpu="2" value="0.00"/>
+						<irq intr="12" cpu="3" value="0.00"/>
+						<irq intr="12" cpu="4" value="0.00"/>
+						<irq intr="12" cpu="5" value="0.00"/>
+						<irq intr="12" cpu="6" value="0.00"/>
+						<irq intr="12" cpu="7" value="0.00"/>
+						<irq intr="25" cpu="all" value="0.00"/>
+						<irq intr="25" cpu="0" value="0.00"/>
+						<irq intr="25" cpu="1" value="0.00"/>
+						<irq intr="25" cpu="2" value="0.00"/>
+						<irq intr="25" cpu="3" value="0.00"/>
+						<irq intr="25" cpu="4" value="0.00"/>
+						<irq intr="25" cpu="5" value="0.00"/>
+						<irq intr="25" cpu="6" value="0.00"/>
+						<irq intr="25" cpu="7" value="0.00"/>
+						<irq intr="26" cpu="all" value="0.00"/>
+						<irq intr="26" cpu="0" value="0.00"/>
+						<irq intr="26" cpu="1" value="0.00"/>
+						<irq intr="26" cpu="2" value="0.00"/>
+						<irq intr="26" cpu="3" value="0.00"/>
+						<irq intr="26" cpu="4" value="0.00"/>
+						<irq intr="26" cpu="5" value="0.00"/>
+						<irq intr="26" cpu="6" value="0.00"/>
+						<irq intr="26" cpu="7" value="0.00"/>
+						<irq intr="27" cpu="all" value="0.00"/>
+						<irq intr="27" cpu="0" value="0.00"/>
+						<irq intr="27" cpu="1" value="0.00"/>
+						<irq intr="27" cpu="2" value="0.00"/>
+						<irq intr="27" cpu="3" value="0.00"/>
+						<irq intr="27" cpu="4" value="0.00"/>
+						<irq intr="27" cpu="5" value="0.00"/>
+						<irq intr="27" cpu="6" value="0.00"/>
+						<irq intr="27" cpu="7" value="0.00"/>
+						<irq intr="29" cpu="all" value="0.00"/>
+						<irq intr="29" cpu="0" value="0.00"/>
+						<irq intr="29" cpu="1" value="0.00"/>
+						<irq intr="29" cpu="2" value="0.00"/>
+						<irq intr="29" cpu="3" value="0.00"/>
+						<irq intr="29" cpu="4" value="0.00"/>
+						<irq intr="29" cpu="5" value="0.00"/>
+						<irq intr="29" cpu="6" value="0.00"/>
+						<irq intr="29" cpu="7" value="0.00"/>
+						<irq intr="31" cpu="all" value="4.00"/>
+						<irq intr="31" cpu="0" value="4.00"/>
+						<irq intr="31" cpu="1" value="0.00"/>
+						<irq intr="31" cpu="2" value="0.00"/>
+						<irq intr="31" cpu="3" value="0.00"/>
+						<irq intr="31" cpu="4" value="0.00"/>
+						<irq intr="31" cpu="5" value="0.00"/>
+						<irq intr="31" cpu="6" value="0.00"/>
+						<irq intr="31" cpu="7" value="0.00"/>
+						<irq intr="32" cpu="all" value="0.00"/>
+						<irq intr="32" cpu="0" value="0.00"/>
+						<irq intr="32" cpu="1" value="0.00"/>
+						<irq intr="32" cpu="2" value="0.00"/>
+						<irq intr="32" cpu="3" value="0.00"/>
+						<irq intr="32" cpu="4" value="0.00"/>
+						<irq intr="32" cpu="5" value="0.00"/>
+						<irq intr="32" cpu="6" value="0.00"/>
+						<irq intr="32" cpu="7" value="0.00"/>
+						<irq intr="34" cpu="all" value="1.00"/>
+						<irq intr="34" cpu="0" value="0.00"/>
+						<irq intr="34" cpu="1" value="0.00"/>
+						<irq intr="34" cpu="2" value="1.00"/>
+						<irq intr="34" cpu="3" value="0.00"/>
+						<irq intr="34" cpu="4" value="0.00"/>
+						<irq intr="34" cpu="5" value="0.00"/>
+						<irq intr="34" cpu="6" value="0.00"/>
+						<irq intr="34" cpu="7" value="0.00"/>
+						<irq intr="35" cpu="all" value="0.00"/>
+						<irq intr="35" cpu="0" value="0.00"/>
+						<irq intr="35" cpu="1" value="0.00"/>
+						<irq intr="35" cpu="2" value="0.00"/>
+						<irq intr="35" cpu="3" value="0.00"/>
+						<irq intr="35" cpu="4" value="0.00"/>
+						<irq intr="35" cpu="5" value="0.00"/>
+						<irq intr="35" cpu="6" value="0.00"/>
+						<irq intr="35" cpu="7" value="0.00"/>
+						<irq intr="36" cpu="all" value="0.00"/>
+						<irq intr="36" cpu="0" value="0.00"/>
+						<irq intr="36" cpu="1" value="0.00"/>
+						<irq intr="36" cpu="2" value="0.00"/>
+						<irq intr="36" cpu="3" value="0.00"/>
+						<irq intr="36" cpu="4" value="0.00"/>
+						<irq intr="36" cpu="5" value="0.00"/>
+						<irq intr="36" cpu="6" value="0.00"/>
+						<irq intr="36" cpu="7" value="0.00"/>
+						<irq intr="37" cpu="all" value="0.00"/>
+						<irq intr="37" cpu="0" value="0.00"/>
+						<irq intr="37" cpu="1" value="0.00"/>
+						<irq intr="37" cpu="2" value="0.00"/>
+						<irq intr="37" cpu="3" value="0.00"/>
+						<irq intr="37" cpu="4" value="0.00"/>
+						<irq intr="37" cpu="5" value="0.00"/>
+						<irq intr="37" cpu="6" value="0.00"/>
+						<irq intr="37" cpu="7" value="0.00"/>
+						<irq intr="38" cpu="all" value="0.00"/>
+						<irq intr="38" cpu="0" value="0.00"/>
+						<irq intr="38" cpu="1" value="0.00"/>
+						<irq intr="38" cpu="2" value="0.00"/>
+						<irq intr="38" cpu="3" value="0.00"/>
+						<irq intr="38" cpu="4" value="0.00"/>
+						<irq intr="38" cpu="5" value="0.00"/>
+						<irq intr="38" cpu="6" value="0.00"/>
+						<irq intr="38" cpu="7" value="0.00"/>
+						<irq intr="39" cpu="all" value="0.00"/>
+						<irq intr="39" cpu="0" value="0.00"/>
+						<irq intr="39" cpu="1" value="0.00"/>
+						<irq intr="39" cpu="2" value="0.00"/>
+						<irq intr="39" cpu="3" value="0.00"/>
+						<irq intr="39" cpu="4" value="0.00"/>
+						<irq intr="39" cpu="5" value="0.00"/>
+						<irq intr="39" cpu="6" value="0.00"/>
+						<irq intr="39" cpu="7" value="0.00"/>
+						<irq intr="40" cpu="all" value="0.00"/>
+						<irq intr="40" cpu="0" value="0.00"/>
+						<irq intr="40" cpu="1" value="0.00"/>
+						<irq intr="40" cpu="2" value="0.00"/>
+						<irq intr="40" cpu="3" value="0.00"/>
+						<irq intr="40" cpu="4" value="0.00"/>
+						<irq intr="40" cpu="5" value="0.00"/>
+						<irq intr="40" cpu="6" value="0.00"/>
+						<irq intr="40" cpu="7" value="0.00"/>
+						<irq intr="41" cpu="all" value="0.00"/>
+						<irq intr="41" cpu="0" value="0.00"/>
+						<irq intr="41" cpu="1" value="0.00"/>
+						<irq intr="41" cpu="2" value="0.00"/>
+						<irq intr="41" cpu="3" value="0.00"/>
+						<irq intr="41" cpu="4" value="0.00"/>
+						<irq intr="41" cpu="5" value="0.00"/>
+						<irq intr="41" cpu="6" value="0.00"/>
+						<irq intr="41" cpu="7" value="0.00"/>
+						<irq intr="42" cpu="all" value="9.00"/>
+						<irq intr="42" cpu="0" value="0.00"/>
+						<irq intr="42" cpu="1" value="0.00"/>
+						<irq intr="42" cpu="2" value="9.00"/>
+						<irq intr="42" cpu="3" value="0.00"/>
+						<irq intr="42" cpu="4" value="0.00"/>
+						<irq intr="42" cpu="5" value="0.00"/>
+						<irq intr="42" cpu="6" value="0.00"/>
+						<irq intr="42" cpu="7" value="0.00"/>
+						<irq intr="43" cpu="all" value="0.00"/>
+						<irq intr="43" cpu="0" value="0.00"/>
+						<irq intr="43" cpu="1" value="0.00"/>
+						<irq intr="43" cpu="2" value="0.00"/>
+						<irq intr="43" cpu="3" value="0.00"/>
+						<irq intr="43" cpu="4" value="0.00"/>
+						<irq intr="43" cpu="5" value="0.00"/>
+						<irq intr="43" cpu="6" value="0.00"/>
+						<irq intr="43" cpu="7" value="0.00"/>
+						<irq intr="44" cpu="all" value="0.00"/>
+						<irq intr="44" cpu="0" value="0.00"/>
+						<irq intr="44" cpu="1" value="0.00"/>
+						<irq intr="44" cpu="2" value="0.00"/>
+						<irq intr="44" cpu="3" value="0.00"/>
+						<irq intr="44" cpu="4" value="0.00"/>
+						<irq intr="44" cpu="5" value="0.00"/>
+						<irq intr="44" cpu="6" value="0.00"/>
+						<irq intr="44" cpu="7" value="0.00"/>
+						<irq intr="45" cpu="all" value="0.00"/>
+						<irq intr="45" cpu="0" value="0.00"/>
+						<irq intr="45" cpu="1" value="0.00"/>
+						<irq intr="45" cpu="2" value="0.00"/>
+						<irq intr="45" cpu="3" value="0.00"/>
+						<irq intr="45" cpu="4" value="0.00"/>
+						<irq intr="45" cpu="5" value="0.00"/>
+						<irq intr="45" cpu="6" value="0.00"/>
+						<irq intr="45" cpu="7" value="0.00"/>
+						<irq intr="46" cpu="all" value="0.00"/>
+						<irq intr="46" cpu="0" value="0.00"/>
+						<irq intr="46" cpu="1" value="0.00"/>
+						<irq intr="46" cpu="2" value="0.00"/>
+						<irq intr="46" cpu="3" value="0.00"/>
+						<irq intr="46" cpu="4" value="0.00"/>
+						<irq intr="46" cpu="5" value="0.00"/>
+						<irq intr="46" cpu="6" value="0.00"/>
+						<irq intr="46" cpu="7" value="0.00"/>
+						<irq intr="47" cpu="all" value="0.00"/>
+						<irq intr="47" cpu="0" value="0.00"/>
+						<irq intr="47" cpu="1" value="0.00"/>
+						<irq intr="47" cpu="2" value="0.00"/>
+						<irq intr="47" cpu="3" value="0.00"/>
+						<irq intr="47" cpu="4" value="0.00"/>
+						<irq intr="47" cpu="5" value="0.00"/>
+						<irq intr="47" cpu="6" value="0.00"/>
+						<irq intr="47" cpu="7" value="0.00"/>
+						<irq intr="48" cpu="all" value="0.00"/>
+						<irq intr="48" cpu="0" value="0.00"/>
+						<irq intr="48" cpu="1" value="0.00"/>
+						<irq intr="48" cpu="2" value="0.00"/>
+						<irq intr="48" cpu="3" value="0.00"/>
+						<irq intr="48" cpu="4" value="0.00"/>
+						<irq intr="48" cpu="5" value="0.00"/>
+						<irq intr="48" cpu="6" value="0.00"/>
+						<irq intr="48" cpu="7" value="0.00"/>
+						<irq intr="49" cpu="all" value="0.00"/>
+						<irq intr="49" cpu="0" value="0.00"/>
+						<irq intr="49" cpu="1" value="0.00"/>
+						<irq intr="49" cpu="2" value="0.00"/>
+						<irq intr="49" cpu="3" value="0.00"/>
+						<irq intr="49" cpu="4" value="0.00"/>
+						<irq intr="49" cpu="5" value="0.00"/>
+						<irq intr="49" cpu="6" value="0.00"/>
+						<irq intr="49" cpu="7" value="0.00"/>
+						<irq intr="51" cpu="all" value="0.00"/>
+						<irq intr="51" cpu="0" value="0.00"/>
+						<irq intr="51" cpu="1" value="0.00"/>
+						<irq intr="51" cpu="2" value="0.00"/>
+						<irq intr="51" cpu="3" value="0.00"/>
+						<irq intr="51" cpu="4" value="0.00"/>
+						<irq intr="51" cpu="5" value="0.00"/>
+						<irq intr="51" cpu="6" value="0.00"/>
+						<irq intr="51" cpu="7" value="0.00"/>
+						<irq intr="53" cpu="all" value="0.00"/>
+						<irq intr="53" cpu="0" value="0.00"/>
+						<irq intr="53" cpu="1" value="0.00"/>
+						<irq intr="53" cpu="2" value="0.00"/>
+						<irq intr="53" cpu="3" value="0.00"/>
+						<irq intr="53" cpu="4" value="0.00"/>
+						<irq intr="53" cpu="5" value="0.00"/>
+						<irq intr="53" cpu="6" value="0.00"/>
+						<irq intr="53" cpu="7" value="0.00"/>
+						<irq intr="54" cpu="all" value="89.00"/>
+						<irq intr="54" cpu="0" value="0.00"/>
+						<irq intr="54" cpu="1" value="0.00"/>
+						<irq intr="54" cpu="2" value="0.00"/>
+						<irq intr="54" cpu="3" value="0.00"/>
+						<irq intr="54" cpu="4" value="0.00"/>
+						<irq intr="54" cpu="5" value="0.00"/>
+						<irq intr="54" cpu="6" value="89.00"/>
+						<irq intr="54" cpu="7" value="0.00"/>
+						<irq intr="56" cpu="all" value="0.00"/>
+						<irq intr="56" cpu="0" value="0.00"/>
+						<irq intr="56" cpu="1" value="0.00"/>
+						<irq intr="56" cpu="2" value="0.00"/>
+						<irq intr="56" cpu="3" value="0.00"/>
+						<irq intr="56" cpu="4" value="0.00"/>
+						<irq intr="56" cpu="5" value="0.00"/>
+						<irq intr="56" cpu="6" value="0.00"/>
+						<irq intr="56" cpu="7" value="0.00"/>
+						<irq intr="57" cpu="all" value="0.00"/>
+						<irq intr="57" cpu="0" value="0.00"/>
+						<irq intr="57" cpu="1" value="0.00"/>
+						<irq intr="57" cpu="2" value="0.00"/>
+						<irq intr="57" cpu="3" value="0.00"/>
+						<irq intr="57" cpu="4" value="0.00"/>
+						<irq intr="57" cpu="5" value="0.00"/>
+						<irq intr="57" cpu="6" value="0.00"/>
+						<irq intr="57" cpu="7" value="0.00"/>
+						<irq intr="59" cpu="all" value="0.00"/>
+						<irq intr="59" cpu="0" value="0.00"/>
+						<irq intr="59" cpu="1" value="0.00"/>
+						<irq intr="59" cpu="2" value="0.00"/>
+						<irq intr="59" cpu="3" value="0.00"/>
+						<irq intr="59" cpu="4" value="0.00"/>
+						<irq intr="59" cpu="5" value="0.00"/>
+						<irq intr="59" cpu="6" value="0.00"/>
+						<irq intr="59" cpu="7" value="0.00"/>
+						<irq intr="NMI" cpu="all" value="0.00"/>
+						<irq intr="NMI" cpu="0" value="0.00"/>
+						<irq intr="NMI" cpu="1" value="0.00"/>
+						<irq intr="NMI" cpu="2" value="0.00"/>
+						<irq intr="NMI" cpu="3" value="0.00"/>
+						<irq intr="NMI" cpu="4" value="0.00"/>
+						<irq intr="NMI" cpu="5" value="0.00"/>
+						<irq intr="NMI" cpu="6" value="0.00"/>
+						<irq intr="NMI" cpu="7" value="0.00"/>
+						<irq intr="LOC" cpu="all" value="367.00"/>
+						<irq intr="LOC" cpu="0" value="29.00"/>
+						<irq intr="LOC" cpu="1" value="48.00"/>
+						<irq intr="LOC" cpu="2" value="53.00"/>
+						<irq intr="LOC" cpu="3" value="27.00"/>
+						<irq intr="LOC" cpu="4" value="82.00"/>
+						<irq intr="LOC" cpu="5" value="54.00"/>
+						<irq intr="LOC" cpu="6" value="25.00"/>
+						<irq intr="LOC" cpu="7" value="49.00"/>
+						<irq intr="SPU" cpu="all" value="0.00"/>
+						<irq intr="SPU" cpu="0" value="0.00"/>
+						<irq intr="SPU" cpu="1" value="0.00"/>
+						<irq intr="SPU" cpu="2" value="0.00"/>
+						<irq intr="SPU" cpu="3" value="0.00"/>
+						<irq intr="SPU" cpu="4" value="0.00"/>
+						<irq intr="SPU" cpu="5" value="0.00"/>
+						<irq intr="SPU" cpu="6" value="0.00"/>
+						<irq intr="SPU" cpu="7" value="0.00"/>
+						<irq intr="PMI" cpu="all" value="0.00"/>
+						<irq intr="PMI" cpu="0" value="0.00"/>
+						<irq intr="PMI" cpu="1" value="0.00"/>
+						<irq intr="PMI" cpu="2" value="0.00"/>
+						<irq intr="PMI" cpu="3" value="0.00"/>
+						<irq intr="PMI" cpu="4" value="0.00"/>
+						<irq intr="PMI" cpu="5" value="0.00"/>
+						<irq intr="PMI" cpu="6" value="0.00"/>
+						<irq intr="PMI" cpu="7" value="0.00"/>
+						<irq intr="IWI" cpu="all" value="5.00"/>
+						<irq intr="IWI" cpu="0" value="0.00"/>
+						<irq intr="IWI" cpu="1" value="0.00"/>
+						<irq intr="IWI" cpu="2" value="0.00"/>
+						<irq intr="IWI" cpu="3" value="0.00"/>
+						<irq intr="IWI" cpu="4" value="0.00"/>
+						<irq intr="IWI" cpu="5" value="0.00"/>
+						<irq intr="IWI" cpu="6" value="5.00"/>
+						<irq intr="IWI" cpu="7" value="0.00"/>
+						<irq intr="RTR" cpu="all" value="0.00"/>
+						<irq intr="RTR" cpu="0" value="0.00"/>
+						<irq intr="RTR" cpu="1" value="0.00"/>
+						<irq intr="RTR" cpu="2" value="0.00"/>
+						<irq intr="RTR" cpu="3" value="0.00"/>
+						<irq intr="RTR" cpu="4" value="0.00"/>
+						<irq intr="RTR" cpu="5" value="0.00"/>
+						<irq intr="RTR" cpu="6" value="0.00"/>
+						<irq intr="RTR" cpu="7" value="0.00"/>
+						<irq intr="RES" cpu="all" value="1.00"/>
+						<irq intr="RES" cpu="0" value="0.00"/>
+						<irq intr="RES" cpu="1" value="0.00"/>
+						<irq intr="RES" cpu="2" value="0.00"/>
+						<irq intr="RES" cpu="3" value="1.00"/>
+						<irq intr="RES" cpu="4" value="0.00"/>
+						<irq intr="RES" cpu="5" value="0.00"/>
+						<irq intr="RES" cpu="6" value="0.00"/>
+						<irq intr="RES" cpu="7" value="0.00"/>
+						<irq intr="CAL" cpu="all" value="206.00"/>
+						<irq intr="CAL" cpu="0" value="77.00"/>
+						<irq intr="CAL" cpu="1" value="28.00"/>
+						<irq intr="CAL" cpu="2" value="8.00"/>
+						<irq intr="CAL" cpu="3" value="16.00"/>
+						<irq intr="CAL" cpu="4" value="34.00"/>
+						<irq intr="CAL" cpu="5" value="11.00"/>
+						<irq intr="CAL" cpu="6" value="18.00"/>
+						<irq intr="CAL" cpu="7" value="14.00"/>
+						<irq intr="TLB" cpu="all" value="0.00"/>
+						<irq intr="TLB" cpu="0" value="0.00"/>
+						<irq intr="TLB" cpu="1" value="0.00"/>
+						<irq intr="TLB" cpu="2" value="0.00"/>
+						<irq intr="TLB" cpu="3" value="0.00"/>
+						<irq intr="TLB" cpu="4" value="0.00"/>
+						<irq intr="TLB" cpu="5" value="0.00"/>
+						<irq intr="TLB" cpu="6" value="0.00"/>
+						<irq intr="TLB" cpu="7" value="0.00"/>
+						<irq intr="TRM" cpu="all" value="0.00"/>
+						<irq intr="TRM" cpu="0" value="0.00"/>
+						<irq intr="TRM" cpu="1" value="0.00"/>
+						<irq intr="TRM" cpu="2" value="0.00"/>
+						<irq intr="TRM" cpu="3" value="0.00"/>
+						<irq intr="TRM" cpu="4" value="0.00"/>
+						<irq intr="TRM" cpu="5" value="0.00"/>
+						<irq intr="TRM" cpu="6" value="0.00"/>
+						<irq intr="TRM" cpu="7" value="0.00"/>
+						<irq intr="THR" cpu="all" value="0.00"/>
+						<irq intr="THR" cpu="0" value="0.00"/>
+						<irq intr="THR" cpu="1" value="0.00"/>
+						<irq intr="THR" cpu="2" value="0.00"/>
+						<irq intr="THR" cpu="3" value="0.00"/>
+						<irq intr="THR" cpu="4" value="0.00"/>
+						<irq intr="THR" cpu="5" value="0.00"/>
+						<irq intr="THR" cpu="6" value="0.00"/>
+						<irq intr="THR" cpu="7" value="0.00"/>
+						<irq intr="DFR" cpu="all" value="0.00"/>
+						<irq intr="DFR" cpu="0" value="0.00"/>
+						<irq intr="DFR" cpu="1" value="0.00"/>
+						<irq intr="DFR" cpu="2" value="0.00"/>
+						<irq intr="DFR" cpu="3" value="0.00"/>
+						<irq intr="DFR" cpu="4" value="0.00"/>
+						<irq intr="DFR" cpu="5" value="0.00"/>
+						<irq intr="DFR" cpu="6" value="0.00"/>
+						<irq intr="DFR" cpu="7" value="0.00"/>
+						<irq intr="MCE" cpu="all" value="0.00"/>
+						<irq intr="MCE" cpu="0" value="0.00"/>
+						<irq intr="MCE" cpu="1" value="0.00"/>
+						<irq intr="MCE" cpu="2" value="0.00"/>
+						<irq intr="MCE" cpu="3" value="0.00"/>
+						<irq intr="MCE" cpu="4" value="0.00"/>
+						<irq intr="MCE" cpu="5" value="0.00"/>
+						<irq intr="MCE" cpu="6" value="0.00"/>
+						<irq intr="MCE" cpu="7" value="0.00"/>
+						<irq intr="MCP" cpu="all" value="0.00"/>
+						<irq intr="MCP" cpu="0" value="0.00"/>
+						<irq intr="MCP" cpu="1" value="0.00"/>
+						<irq intr="MCP" cpu="2" value="0.00"/>
+						<irq intr="MCP" cpu="3" value="0.00"/>
+						<irq intr="MCP" cpu="4" value="0.00"/>
+						<irq intr="MCP" cpu="5" value="0.00"/>
+						<irq intr="MCP" cpu="6" value="0.00"/>
+						<irq intr="MCP" cpu="7" value="0.00"/>
+						<irq intr="ERR" cpu="all" value="0.00"/>
+						<irq intr="ERR" cpu="0" value="0.00"/>
+						<irq intr="ERR" cpu="1" value="0.00"/>
+						<irq intr="ERR" cpu="2" value="0.00"/>
+						<irq intr="ERR" cpu="3" value="0.00"/>
+						<irq intr="ERR" cpu="4" value="0.00"/>
+						<irq intr="ERR" cpu="5" value="0.00"/>
+						<irq intr="ERR" cpu="6" value="0.00"/>
+						<irq intr="ERR" cpu="7" value="0.00"/>
+						<irq intr="MIS" cpu="all" value="0.00"/>
+						<irq intr="MIS" cpu="0" value="0.00"/>
+						<irq intr="MIS" cpu="1" value="0.00"/>
+						<irq intr="MIS" cpu="2" value="0.00"/>
+						<irq intr="MIS" cpu="3" value="0.00"/>
+						<irq intr="MIS" cpu="4" value="0.00"/>
+						<irq intr="MIS" cpu="5" value="0.00"/>
+						<irq intr="MIS" cpu="6" value="0.00"/>
+						<irq intr="MIS" cpu="7" value="0.00"/>
+						<irq intr="PIN" cpu="all" value="0.00"/>
+						<irq intr="PIN" cpu="0" value="0.00"/>
+						<irq intr="PIN" cpu="1" value="0.00"/>
+						<irq intr="PIN" cpu="2" value="0.00"/>
+						<irq intr="PIN" cpu="3" value="0.00"/>
+						<irq intr="PIN" cpu="4" value="0.00"/>
+						<irq intr="PIN" cpu="5" value="0.00"/>
+						<irq intr="PIN" cpu="6" value="0.00"/>
+						<irq intr="PIN" cpu="7" value="0.00"/>
+						<irq intr="NPI" cpu="all" value="0.00"/>
+						<irq intr="NPI" cpu="0" value="0.00"/>
+						<irq intr="NPI" cpu="1" value="0.00"/>
+						<irq intr="NPI" cpu="2" value="0.00"/>
+						<irq intr="NPI" cpu="3" value="0.00"/>
+						<irq intr="NPI" cpu="4" value="0.00"/>
+						<irq intr="NPI" cpu="5" value="0.00"/>
+						<irq intr="NPI" cpu="6" value="0.00"/>
+						<irq intr="NPI" cpu="7" value="0.00"/>
+						<irq intr="PIW" cpu="all" value="0.00"/>
+						<irq intr="PIW" cpu="0" value="0.00"/>
+						<irq intr="PIW" cpu="1" value="0.00"/>
+						<irq intr="PIW" cpu="2" value="0.00"/>
+						<irq intr="PIW" cpu="3" value="0.00"/>
+						<irq intr="PIW" cpu="4" value="0.00"/>
+						<irq intr="PIW" cpu="5" value="0.00"/>
+						<irq intr="PIW" cpu="6" value="0.00"/>
+						<irq intr="PIW" cpu="7" value="0.00"/>
+					</int-global>
+				</interrupts>
+				<swap-pages per="second" pswpin="0.00" pswpout="0.00"/>
+				<paging per="second" pgpgin="0.00" pgpgout="20.00" fault="10.00" majflt="0.00" pgfree="97.00" pgscank="0.00" pgscand="0.00" pgsteal="0.00" pgprom="0.00" pgdem="0.00"/>
+				<io per="second">
+					<tps>2.00</tps>
+					<io-reads rtps="0.00" bread="0.00"/>
+					<io-writes wtps="2.00" bwrtn="40.00"/>
+					<io-discard dtps="0.00" bdscd="0.00"/>
+				</io>
+				<memory unit="kB">
+					<memfree>8544664</memfree>
+					<avail>11371284</avail>
+					<memused>2252908</memused>
+					<memused-percent>15.84</memused-percent>
+					<buffers>201872</buffers>
+					<cached>2871536</cached>
+					<commit>9514628</commit>
+					<commit-percent>30.70</commit-percent>
+					<active>2975556</active>
+					<inactive>1911160</inactive>
+					<dirty>7944</dirty>
+					<anonpg>1819008</anonpg>
+					<slab>348596</slab>
+					<kstack>15712</kstack>
+					<pgtbl>32760</pgtbl>
+					<vmused>93176</vmused>
+					<swpfree>16777208</swpfree>
+					<swpused>0</swpused>
+					<swpused-percent>0.00</swpused-percent>
+					<swpcad>0</swpcad>
+					<swpcad-percent>0.00</swpcad-percent>
+				</memory>
+				<hugepages unit="kB">
+					<hugfree>0</hugfree>
+					<hugused>0</hugused>
+					<hugused-percent>0.00</hugused-percent>
+					<hugrsvd>0</hugrsvd>
+					<hugsurp>0</hugsurp>
+				</hugepages>
+				<kernel dentunusd="154360" file-nr="12960" inode-nr="148843" pty-nr="5"/>
+				<queue runq-sz="0" plist-sz="967" ldavg-1="0.27" ldavg-5="0.25" ldavg-15="0.25" blocked="0"/>
+				<disk per="second">
+					<disk-device dev="sda" tps="2.00" rd_sec="0.00" wr_sec="40.00" dc_sec="0.00" rkB="0.00" wkB="20.00" dkB="0.00" avgrq-sz="20.00" areq-sz="10.00" avgqu-sz="0.01" aqu-sz="0.01" await="2.50" util-percent="0.60"/>
+					<disk-device dev="sda1" tps="0.00" rd_sec="0.00" wr_sec="0.00" dc_sec="0.00" rkB="0.00" wkB="0.00" dkB="0.00" avgrq-sz="0.00" areq-sz="0.00" avgqu-sz="0.00" aqu-sz="0.00" await="0.00" util-percent="0.00"/>
+					<disk-device dev="sda2" tps="0.00" rd_sec="0.00" wr_sec="0.00" dc_sec="0.00" rkB="0.00" wkB="0.00" dkB="0.00" avgrq-sz="0.00" areq-sz="0.00" avgqu-sz="0.00" aqu-sz="0.00" await="0.00" util-percent="0.00"/>
+					<disk-device dev="sda3" tps="0.00" rd_sec="0.00" wr_sec="0.00" dc_sec="0.00" rkB="0.00" wkB="0.00" dkB="0.00" avgrq-sz="0.00" areq-sz="0.00" avgqu-sz="0.00" aqu-sz="0.00" await="0.00" util-percent="0.00"/>
+					<disk-device dev="sda4" tps="0.00" rd_sec="0.00" wr_sec="0.00" dc_sec="0.00" rkB="0.00" wkB="0.00" dkB="0.00" avgrq-sz="0.00" areq-sz="0.00" avgqu-sz="0.00" aqu-sz="0.00" await="0.00" util-percent="0.00"/>
+					<disk-device dev="sda5" tps="0.00" rd_sec="0.00" wr_sec="0.00" dc_sec="0.00" rkB="0.00" wkB="0.00" dkB="0.00" avgrq-sz="0.00" areq-sz="0.00" avgqu-sz="0.00" aqu-sz="0.00" await="0.00" util-percent="0.00"/>
+					<disk-device dev="sda6" tps="0.00" rd_sec="0.00" wr_sec="0.00" dc_sec="0.00" rkB="0.00" wkB="0.00" dkB="0.00" avgrq-sz="0.00" areq-sz="0.00" avgqu-sz="0.00" aqu-sz="0.00" await="0.00" util-percent="0.00"/>
+					<disk-device dev="sda7" tps="2.00" rd_sec="0.00" wr_sec="40.00" dc_sec="0.00" rkB="0.00" wkB="20.00" dkB="0.00" avgrq-sz="20.00" areq-sz="10.00" avgqu-sz="0.00" aqu-sz="0.00" await="2.00" util-percent="0.60"/>
+					<disk-device dev="sdb" tps="0.00" rd_sec="0.00" wr_sec="0.00" dc_sec="0.00" rkB="0.00" wkB="0.00" dkB="0.00" avgrq-sz="0.00" areq-sz="0.00" avgqu-sz="0.00" aqu-sz="0.00" await="0.00" util-percent="0.00"/>
+					<disk-device dev="sdb1" tps="0.00" rd_sec="0.00" wr_sec="0.00" dc_sec="0.00" rkB="0.00" wkB="0.00" dkB="0.00" avgrq-sz="0.00" areq-sz="0.00" avgqu-sz="0.00" aqu-sz="0.00" await="0.00" util-percent="0.00"/>
+					<disk-device dev="sdb2" tps="0.00" rd_sec="0.00" wr_sec="0.00" dc_sec="0.00" rkB="0.00" wkB="0.00" dkB="0.00" avgrq-sz="0.00" areq-sz="0.00" avgqu-sz="0.00" aqu-sz="0.00" await="0.00" util-percent="0.00"/>
+					<disk-device dev="sdb3" tps="0.00" rd_sec="0.00" wr_sec="0.00" dc_sec="0.00" rkB="0.00" wkB="0.00" dkB="0.00" avgrq-sz="0.00" areq-sz="0.00" avgqu-sz="0.00" aqu-sz="0.00" await="0.00" util-percent="0.00"/>
+					<disk-device dev="sdb4" tps="0.00" rd_sec="0.00" wr_sec="0.00" dc_sec="0.00" rkB="0.00" wkB="0.00" dkB="0.00" avgrq-sz="0.00" areq-sz="0.00" avgqu-sz="0.00" aqu-sz="0.00" await="0.00" util-percent="0.00"/>
+					<disk-device dev="sdb5" tps="0.00" rd_sec="0.00" wr_sec="0.00" dc_sec="0.00" rkB="0.00" wkB="0.00" dkB="0.00" avgrq-sz="0.00" areq-sz="0.00" avgqu-sz="0.00" aqu-sz="0.00" await="0.00" util-percent="0.00"/>
+					<disk-device dev="sdb6" tps="0.00" rd_sec="0.00" wr_sec="0.00" dc_sec="0.00" rkB="0.00" wkB="0.00" dkB="0.00" avgrq-sz="0.00" areq-sz="0.00" avgqu-sz="0.00" aqu-sz="0.00" await="0.00" util-percent="0.00"/>
+					<disk-device dev="zram0" tps="0.00" rd_sec="0.00" wr_sec="0.00" dc_sec="0.00" rkB="0.00" wkB="0.00" dkB="0.00" avgrq-sz="0.00" areq-sz="0.00" avgqu-sz="0.00" aqu-sz="0.00" await="0.00" util-percent="0.00"/>
+					<disk-device dev="dm-0" tps="0.00" rd_sec="0.00" wr_sec="0.00" dc_sec="0.00" rkB="0.00" wkB="0.00" dkB="0.00" avgrq-sz="0.00" areq-sz="0.00" avgqu-sz="0.00" aqu-sz="0.00" await="0.00" util-percent="0.00"/>
+					<disk-device dev="dm-1" tps="0.00" rd_sec="0.00" wr_sec="0.00" dc_sec="0.00" rkB="0.00" wkB="0.00" dkB="0.00" avgrq-sz="0.00" areq-sz="0.00" avgqu-sz="0.00" aqu-sz="0.00" await="0.00" util-percent="0.00"/>
+					<disk-device dev="dm-2" tps="0.00" rd_sec="0.00" wr_sec="0.00" dc_sec="0.00" rkB="0.00" wkB="0.00" dkB="0.00" avgrq-sz="0.00" areq-sz="0.00" avgqu-sz="0.00" aqu-sz="0.00" await="0.00" util-percent="0.00"/>
+					<disk-device dev="dm-3" tps="0.00" rd_sec="0.00" wr_sec="0.00" dc_sec="0.00" rkB="0.00" wkB="0.00" dkB="0.00" avgrq-sz="0.00" areq-sz="0.00" avgqu-sz="0.00" aqu-sz="0.00" await="0.00" util-percent="0.00"/>
+				</disk>
+				<network per="second">
+					<net-dev iface="lo" rxpck="0.00" txpck="0.00" rxkB="0.00" txkB="0.00" rxcmp="0.00" txcmp="0.00" rxmcst="0.00" ifutil-percent="0.00"/>
+					<net-dev iface="eno1" rxpck="0.00" txpck="0.00" rxkB="0.00" txkB="0.00" rxcmp="0.00" txcmp="0.00" rxmcst="0.00" ifutil-percent="0.00"/>
+					<net-dev iface="wlp2s0" rxpck="0.00" txpck="0.00" rxkB="0.00" txkB="0.00" rxcmp="0.00" txcmp="0.00" rxmcst="0.00" ifutil-percent="0.00"/>
+					<net-edev iface="lo" rxerr="0.00" txerr="0.00" coll="0.00" rxdrop="0.00" txdrop="0.00" txcarr="0.00" rxfram="0.00" rxfifo="0.00" txfifo="0.00"/>
+					<net-edev iface="eno1" rxerr="0.00" txerr="0.00" coll="0.00" rxdrop="0.00" txdrop="0.00" txcarr="0.00" rxfram="0.00" rxfifo="0.00" txfifo="0.00"/>
+					<net-edev iface="wlp2s0" rxerr="0.00" txerr="0.00" coll="0.00" rxdrop="0.00" txdrop="0.00" txcarr="0.00" rxfram="0.00" rxfifo="0.00" txfifo="0.00"/>
+					<net-nfs call="0.00" retrans="0.00" read="0.00" write="0.00" access="0.00" getatt="0.00"/>
+					<net-nfsd scall="0.00" badcall="0.00" packet="0.00" udp="0.00" tcp="0.00" hit="0.00" miss="0.00" sread="0.00" swrite="0.00" saccess="0.00" sgetatt="0.00"/>
+					<net-sock totsck="1014" tcpsck="8" udpsck="7" rawsck="0" ip-frag="0" tcp-tw="0"/>
+					<net-ip irec="0.00" fwddgm="0.00" idel="0.00" orq="0.00" asmrq="0.00" asmok="0.00" fragok="0.00" fragcrt="0.00"/>
+					<net-eip ihdrerr="0.00" iadrerr="0.00" iukwnpr="0.00" idisc="0.00" odisc="0.00" onort="0.00" asmf="0.00" fragf="0.00"/>
+					<net-icmp imsg="0.00" omsg="0.00" iech="0.00" iechr="0.00" oech="0.00" oechr="0.00" itm="0.00" itmr="0.00" otm="0.00" otmr="0.00" iadrmk="0.00" iadrmkr="0.00" oadrmk="0.00" oadrmkr="0.00"/>
+					<net-eicmp ierr="0.00" oerr="0.00" idstunr="0.00" odstunr="0.00" itmex="0.00" otmex="0.00" iparmpb="0.00" oparmpb="0.00" isrcq="0.00" osrcq="0.00" iredir="0.00" oredir="0.00"/>
+					<net-tcp active="0.00" passive="0.00" iseg="0.00" oseg="0.00"/>
+					<net-etcp atmptf="0.00" estres="0.00" retrseg="0.00" isegerr="0.00" orsts="0.00"/>
+					<net-udp idgm="0.00" odgm="0.00" noport="0.00" idgmerr="0.00"/>
+					<net-sock6 tcp6sck="4" udp6sck="5" raw6sck="1" ip6-frag="0"/>
+					<net-ip6 irec6="0.00" fwddgm6="0.00" idel6="0.00" orq6="0.00" asmrq6="0.00" asmok6="0.00" imcpck6="0.00" omcpck6="0.00" fragok6="0.00" fragcr6="0.00"/>
+					<net-eip6 ihdrer6="0.00" iadrer6="0.00" iukwnp6="0.00" i2big6="0.00" idisc6="0.00" odisc6="0.00" inort6="0.00" onort6="0.00" asmf6="0.00" fragf6="0.00" itrpck6="0.00"/>
+					<net-icmp6 imsg6="0.00" omsg6="0.00" iech6="0.00" iechr6="0.00" oechr6="0.00" igmbq6="0.00" igmbr6="0.00" ogmbr6="0.00" igmbrd6="0.00" ogmbrd6="0.00" irtsol6="0.00" ortsol6="0.00" irtad6="0.00" inbsol6="0.00" onbsol6="0.00" inbad6="0.00" onbad6="0.00"/>
+					<net-eicmp6 ierr6="0.00" idtunr6="0.00" odtunr6="0.00" itmex6="0.00" otmex6="0.00" iprmpb6="0.00" oprmpb6="0.00" iredir6="0.00" oredir6="0.00" ipck2b6="0.00" opck2b6="0.00"/>
+					<net-udp6 idgm6="0.00" odgm6="0.00" noport6="0.00" idgmer6="0.00"/>
+					<softnet cpu="all" total="0.00" dropd="0.00" squeezd="0.00" rx_rps="0.00" flw_lim="0.00" blg_len="0"/>
+					<softnet cpu="1" total="0.00" dropd="0.00" squeezd="0.00" rx_rps="0.00" flw_lim="0.00" blg_len="0"/>
+					<softnet cpu="2" total="0.00" dropd="0.00" squeezd="0.00" rx_rps="0.00" flw_lim="0.00" blg_len="0"/>
+					<softnet cpu="3" total="0.00" dropd="0.00" squeezd="0.00" rx_rps="0.00" flw_lim="0.00" blg_len="0"/>
+					<softnet cpu="4" total="0.00" dropd="0.00" squeezd="0.00" rx_rps="0.00" flw_lim="0.00" blg_len="0"/>
+					<softnet cpu="5" total="0.00" dropd="0.00" squeezd="0.00" rx_rps="0.00" flw_lim="0.00" blg_len="0"/>
+					<softnet cpu="6" total="0.00" dropd="0.00" squeezd="0.00" rx_rps="0.00" flw_lim="0.00" blg_len="0"/>
+					<softnet cpu="7" total="0.00" dropd="0.00" squeezd="0.00" rx_rps="0.00" flw_lim="0.00" blg_len="0"/>
+				</network>
+				<power-management>
+					<cpu-frequency unit="MHz">
+						<cpufreq number="all" frequency="1370.80"/>
+						<cpufreq number="0" frequency="1400.00"/>
+						<cpufreq number="1" frequency="1397.46"/>
+						<cpufreq number="2" frequency="1400.00"/>
+						<cpufreq number="3" frequency="1400.00"/>
+						<cpufreq number="4" frequency="1396.36"/>
+						<cpufreq number="5" frequency="1286.57"/>
+						<cpufreq number="6" frequency="1400.00"/>
+						<cpufreq number="7" frequency="1286.08"/>
+					</cpu-frequency>
+					<temperature unit="degree Celsius">
+						<temp number="1" degC="29.75" percent-temp="0.00" device="k10temp-pci-00c3"/>
+						<temp number="2" degC="29.00" percent-temp="0.00" device="amdgpu-pci-0300"/>
+						<temp number="3" degC="29.00" percent-temp="0.00" device="acpitz-acpi-0"/>
+						<temp number="4" degC="0.00" percent-temp="0.00" device="acpitz-acpi-0"/>
+					</temperature>
+					<voltage-input unit="V">
+						<in number="0" inV="12.74" percent-in="0.00" device="BAT0-acpi-0"/>
+						<in number="1" inV="0.00" percent-in="0.00" device="amdgpu-pci-0300"/>
+						<in number="2" inV="0.00" percent-in="0.00" device="amdgpu-pci-0300"/>
+					</voltage-input>
+					<cpu-weighted-frequency unit="MHz">
+						<cpuwfreq number="all" weighted-frequency="1445.00"/>
+						<cpuwfreq number="0" weighted-frequency="1760.00"/>
+						<cpuwfreq number="1" weighted-frequency="1400.00"/>
+						<cpuwfreq number="2" weighted-frequency="1400.00"/>
+						<cpuwfreq number="3" weighted-frequency="1400.00"/>
+						<cpuwfreq number="4" weighted-frequency="1400.00"/>
+						<cpuwfreq number="5" weighted-frequency="1400.00"/>
+						<cpuwfreq number="6" weighted-frequency="1400.00"/>
+						<cpuwfreq number="7" weighted-frequency="1400.00"/>
+					</cpu-weighted-frequency>
+					<battery unit="minute">
+						<bat number="0" percent-capacity="100" variation="0.00" status="Full"/>
+					</battery>
+					<usb-devices>
+						<usb bus_number="3" idvendor="5e3" idprod="608" maxpower="200" manufact="" product="USB2.0 Hub"/>
+						<usb bus_number="1" idvendor="46d" idprod="c542" maxpower="100" manufact="Logitech" product="Wireless Receiver"/>
+						<usb bus_number="3" idvendor="4f2" idprod="b62a" maxpower="1000" manufact="Chicony Electronics C" product="HP Webcam"/>
+						<usb bus_number="3" idvendor="174c" idprod="55aa" maxpower="0" manufact="ASMT" product="ASM1153"/>
+						<usb bus_number="1" idvendor="3f0" idprod="862" maxpower="196" manufact="HP" product="HP Wireless Keyboard Mouse Kit"/>
+						<usb bus_number="3" idvendor="bda" idprod="b009" maxpower="1000" manufact="Realtek" product="802.11n WLAN Adapter"/>
+					</usb-devices>
+				</power-management>
+				<filesystems>
+					<filesystem fsname="/dev/sda7" MBfsfree="7929" MBfsused="24021" fsused-percent="75.18" ufsused-percent="80.36" Ifree="1494756" Iused="602396" Iused-percent="28.72"/>
+					<filesystem fsname="/dev/sda6" MBfsfree="576" MBfsused="344" fsused-percent="37.39" ufsused-percent="44.31" Ifree="61013" Iused="43" Iused-percent="0.07"/>
+					<filesystem fsname="/dev/sda5" MBfsfree="243" MBfsused="7" fsused-percent="2.81" ufsused-percent="2.81" Ifree="0" Iused="0" Iused-percent="0.00"/>
+					<filesystem fsname="/dev/mapper/fedora_sata--1-data" MBfsfree="301687" MBfsused="0" fsused-percent="0.00" ufsused-percent="5.10" Ifree="19693554" Iused="14" Iused-percent="0.00"/>
+					<filesystem fsname="/dev/mapper/fedora-home" MBfsfree="22948" MBfsused="17066" fsused-percent="42.65" ufsused-percent="47.81" Ifree="2359326" Iused="262114" Iused-percent="10.00"/>
+					<filesystem fsname="/dev/mapper/fedora_sata--0-opt" MBfsfree="263710" MBfsused="38077" fsused-percent="12.62" ufsused-percent="17.72" Ifree="19506911" Iused="186657" Iused-percent="0.95"/>
+				</filesystems>
+				<psi per="second">
+					<psi-cpu some_avg10="0.03" some_avg60="0.02" some_avg300="0.00" some_avg="0.16"/>
+					<psi-io some_avg10="0.53" some_avg60="0.90" some_avg300="0.88" some_avg="0.13" full_avg10="0.39" full_avg60="0.82" full_avg300="0.85" full_avg="0.12"/>
+					<psi-mem some_avg10="0.00" some_avg60="0.00" some_avg300="0.00" some_avg="0.00" full_avg10="0.00" full_avg60="0.00" full_avg300="0.00" full_avg="0.00"/>
+				</psi>
+			</timestamp>
+			<timestamp date="2024-01-20" time="16:01:19" tz="UTC" interval="58">
+				<cpu-load>
+					<cpu number="all" usr="0.48" nice="0.00" sys="0.35" iowait="0.47" steal="0.00" irq="0.10" soft="0.04" guest="0.00" gnice="0.00" idle="98.56"/>
+					<cpu number="0" usr="0.19" nice="0.00" sys="0.23" iowait="0.03" steal="0.00" irq="0.07" soft="0.05" guest="0.00" gnice="0.00" idle="99.43"/>
+					<cpu number="1" usr="0.12" nice="0.00" sys="0.17" iowait="0.83" steal="0.00" irq="0.03" soft="0.03" guest="0.00" gnice="0.00" idle="98.80"/>
+					<cpu number="2" usr="0.38" nice="0.00" sys="0.21" iowait="1.32" steal="0.00" irq="0.07" soft="0.07" guest="0.00" gnice="0.00" idle="97.95"/>
+					<cpu number="3" usr="0.83" nice="0.00" sys="0.36" iowait="0.00" steal="0.00" irq="0.05" soft="0.02" guest="0.00" gnice="0.00" idle="98.73"/>
+					<cpu number="4" usr="0.78" nice="0.00" sys="0.49" iowait="0.68" steal="0.00" irq="0.07" soft="0.02" guest="0.00" gnice="0.00" idle="97.97"/>
+					<cpu number="5" usr="0.43" nice="0.00" sys="0.52" iowait="0.69" steal="0.00" irq="0.07" soft="0.03" guest="0.00" gnice="0.00" idle="98.25"/>
+					<cpu number="6" usr="0.71" nice="0.00" sys="0.64" iowait="0.19" steal="0.00" irq="0.43" soft="0.03" guest="0.00" gnice="0.00" idle="97.99"/>
+					<cpu number="7" usr="0.38" nice="0.00" sys="0.16" iowait="0.00" steal="0.00" irq="0.03" soft="0.03" guest="0.00" gnice="0.00" idle="99.39"/>
+				</cpu-load>
+				<process-and-context-switch per="second" proc="0.81" cswch="627.63"/>
+				<interrupts>
+					<int-global per="second">
+						<irq intr="sum" cpu="all" value="619.29"/>
+						<irq intr="sum" cpu="0" value="103.19"/>
+						<irq intr="sum" cpu="1" value="57.36"/>
+						<irq intr="sum" cpu="2" value="69.41"/>
+						<irq intr="sum" cpu="3" value="46.00"/>
+						<irq intr="sum" cpu="4" value="63.39"/>
+						<irq intr="sum" cpu="5" value="65.45"/>
+						<irq intr="sum" cpu="6" value="167.57"/>
+						<irq intr="sum" cpu="7" value="46.92"/>
+						<irq intr="0" cpu="all" value="0.00"/>
+						<irq intr="0" cpu="0" value="0.00"/>
+						<irq intr="0" cpu="1" value="0.00"/>
+						<irq intr="0" cpu="2" value="0.00"/>
+						<irq intr="0" cpu="3" value="0.00"/>
+						<irq intr="0" cpu="4" value="0.00"/>
+						<irq intr="0" cpu="5" value="0.00"/>
+						<irq intr="0" cpu="6" value="0.00"/>
+						<irq intr="0" cpu="7" value="0.00"/>
+						<irq intr="1" cpu="all" value="0.00"/>
+						<irq intr="1" cpu="0" value="0.00"/>
+						<irq intr="1" cpu="1" value="0.00"/>
+						<irq intr="1" cpu="2" value="0.00"/>
+						<irq intr="1" cpu="3" value="0.00"/>
+						<irq intr="1" cpu="4" value="0.00"/>
+						<irq intr="1" cpu="5" value="0.00"/>
+						<irq intr="1" cpu="6" value="0.00"/>
+						<irq intr="1" cpu="7" value="0.00"/>
+						<irq intr="7" cpu="all" value="0.00"/>
+						<irq intr="7" cpu="0" value="0.00"/>
+						<irq intr="7" cpu="1" value="0.00"/>
+						<irq intr="7" cpu="2" value="0.00"/>
+						<irq intr="7" cpu="3" value="0.00"/>
+						<irq intr="7" cpu="4" value="0.00"/>
+						<irq intr="7" cpu="5" value="0.00"/>
+						<irq intr="7" cpu="6" value="0.00"/>
+						<irq intr="7" cpu="7" value="0.00"/>
+						<irq intr="8" cpu="all" value="0.00"/>
+						<irq intr="8" cpu="0" value="0.00"/>
+						<irq intr="8" cpu="1" value="0.00"/>
+						<irq intr="8" cpu="2" value="0.00"/>
+						<irq intr="8" cpu="3" value="0.00"/>
+						<irq intr="8" cpu="4" value="0.00"/>
+						<irq intr="8" cpu="5" value="0.00"/>
+						<irq intr="8" cpu="6" value="0.00"/>
+						<irq intr="8" cpu="7" value="0.00"/>
+						<irq intr="9" cpu="all" value="0.00"/>
+						<irq intr="9" cpu="0" value="0.00"/>
+						<irq intr="9" cpu="1" value="0.00"/>
+						<irq intr="9" cpu="2" value="0.00"/>
+						<irq intr="9" cpu="3" value="0.00"/>
+						<irq intr="9" cpu="4" value="0.00"/>
+						<irq intr="9" cpu="5" value="0.00"/>
+						<irq intr="9" cpu="6" value="0.00"/>
+						<irq intr="9" cpu="7" value="0.00"/>
+						<irq intr="12" cpu="all" value="0.00"/>
+						<irq intr="12" cpu="0" value="0.00"/>
+						<irq intr="12" cpu="1" value="0.00"/>
+						<irq intr="12" cpu="2" value="0.00"/>
+						<irq intr="12" cpu="3" value="0.00"/>
+						<irq intr="12" cpu="4" value="0.00"/>
+						<irq intr="12" cpu="5" value="0.00"/>
+						<irq intr="12" cpu="6" value="0.00"/>
+						<irq intr="12" cpu="7" value="0.00"/>
+						<irq intr="25" cpu="all" value="0.00"/>
+						<irq intr="25" cpu="0" value="0.00"/>
+						<irq intr="25" cpu="1" value="0.00"/>
+						<irq intr="25" cpu="2" value="0.00"/>
+						<irq intr="25" cpu="3" value="0.00"/>
+						<irq intr="25" cpu="4" value="0.00"/>
+						<irq intr="25" cpu="5" value="0.00"/>
+						<irq intr="25" cpu="6" value="0.00"/>
+						<irq intr="25" cpu="7" value="0.00"/>
+						<irq intr="26" cpu="all" value="0.00"/>
+						<irq intr="26" cpu="0" value="0.00"/>
+						<irq intr="26" cpu="1" value="0.00"/>
+						<irq intr="26" cpu="2" value="0.00"/>
+						<irq intr="26" cpu="3" value="0.00"/>
+						<irq intr="26" cpu="4" value="0.00"/>
+						<irq intr="26" cpu="5" value="0.00"/>
+						<irq intr="26" cpu="6" value="0.00"/>
+						<irq intr="26" cpu="7" value="0.00"/>
+						<irq intr="27" cpu="all" value="0.00"/>
+						<irq intr="27" cpu="0" value="0.00"/>
+						<irq intr="27" cpu="1" value="0.00"/>
+						<irq intr="27" cpu="2" value="0.00"/>
+						<irq intr="27" cpu="3" value="0.00"/>
+						<irq intr="27" cpu="4" value="0.00"/>
+						<irq intr="27" cpu="5" value="0.00"/>
+						<irq intr="27" cpu="6" value="0.00"/>
+						<irq intr="27" cpu="7" value="0.00"/>
+						<irq intr="29" cpu="all" value="0.00"/>
+						<irq intr="29" cpu="0" value="0.00"/>
+						<irq intr="29" cpu="1" value="0.00"/>
+						<irq intr="29" cpu="2" value="0.00"/>
+						<irq intr="29" cpu="3" value="0.00"/>
+						<irq intr="29" cpu="4" value="0.00"/>
+						<irq intr="29" cpu="5" value="0.00"/>
+						<irq intr="29" cpu="6" value="0.00"/>
+						<irq intr="29" cpu="7" value="0.00"/>
+						<irq intr="31" cpu="all" value="4.32"/>
+						<irq intr="31" cpu="0" value="4.32"/>
+						<irq intr="31" cpu="1" value="0.00"/>
+						<irq intr="31" cpu="2" value="0.00"/>
+						<irq intr="31" cpu="3" value="0.00"/>
+						<irq intr="31" cpu="4" value="0.00"/>
+						<irq intr="31" cpu="5" value="0.00"/>
+						<irq intr="31" cpu="6" value="0.00"/>
+						<irq intr="31" cpu="7" value="0.00"/>
+						<irq intr="32" cpu="all" value="5.46"/>
+						<irq intr="32" cpu="0" value="0.00"/>
+						<irq intr="32" cpu="1" value="5.46"/>
+						<irq intr="32" cpu="2" value="0.00"/>
+						<irq intr="32" cpu="3" value="0.00"/>
+						<irq intr="32" cpu="4" value="0.00"/>
+						<irq intr="32" cpu="5" value="0.00"/>
+						<irq intr="32" cpu="6" value="0.00"/>
+						<irq intr="32" cpu="7" value="0.00"/>
+						<irq intr="34" cpu="all" value="2.81"/>
+						<irq intr="34" cpu="0" value="0.00"/>
+						<irq intr="34" cpu="1" value="0.00"/>
+						<irq intr="34" cpu="2" value="2.81"/>
+						<irq intr="34" cpu="3" value="0.00"/>
+						<irq intr="34" cpu="4" value="0.00"/>
+						<irq intr="34" cpu="5" value="0.00"/>
+						<irq intr="34" cpu="6" value="0.00"/>
+						<irq intr="34" cpu="7" value="0.00"/>
+						<irq intr="35" cpu="all" value="0.00"/>
+						<irq intr="35" cpu="0" value="0.00"/>
+						<irq intr="35" cpu="1" value="0.00"/>
+						<irq intr="35" cpu="2" value="0.00"/>
+						<irq intr="35" cpu="3" value="0.00"/>
+						<irq intr="35" cpu="4" value="0.00"/>
+						<irq intr="35" cpu="5" value="0.00"/>
+						<irq intr="35" cpu="6" value="0.00"/>
+						<irq intr="35" cpu="7" value="0.00"/>
+						<irq intr="36" cpu="all" value="0.00"/>
+						<irq intr="36" cpu="0" value="0.00"/>
+						<irq intr="36" cpu="1" value="0.00"/>
+						<irq intr="36" cpu="2" value="0.00"/>
+						<irq intr="36" cpu="3" value="0.00"/>
+						<irq intr="36" cpu="4" value="0.00"/>
+						<irq intr="36" cpu="5" value="0.00"/>
+						<irq intr="36" cpu="6" value="0.00"/>
+						<irq intr="36" cpu="7" value="0.00"/>
+						<irq intr="37" cpu="all" value="0.00"/>
+						<irq intr="37" cpu="0" value="0.00"/>
+						<irq intr="37" cpu="1" value="0.00"/>
+						<irq intr="37" cpu="2" value="0.00"/>
+						<irq intr="37" cpu="3" value="0.00"/>
+						<irq intr="37" cpu="4" value="0.00"/>
+						<irq intr="37" cpu="5" value="0.00"/>
+						<irq intr="37" cpu="6" value="0.00"/>
+						<irq intr="37" cpu="7" value="0.00"/>
+						<irq intr="38" cpu="all" value="0.00"/>
+						<irq intr="38" cpu="0" value="0.00"/>
+						<irq intr="38" cpu="1" value="0.00"/>
+						<irq intr="38" cpu="2" value="0.00"/>
+						<irq intr="38" cpu="3" value="0.00"/>
+						<irq intr="38" cpu="4" value="0.00"/>
+						<irq intr="38" cpu="5" value="0.00"/>
+						<irq intr="38" cpu="6" value="0.00"/>
+						<irq intr="38" cpu="7" value="0.00"/>
+						<irq intr="39" cpu="all" value="0.00"/>
+						<irq intr="39" cpu="0" value="0.00"/>
+						<irq intr="39" cpu="1" value="0.00"/>
+						<irq intr="39" cpu="2" value="0.00"/>
+						<irq intr="39" cpu="3" value="0.00"/>
+						<irq intr="39" cpu="4" value="0.00"/>
+						<irq intr="39" cpu="5" value="0.00"/>
+						<irq intr="39" cpu="6" value="0.00"/>
+						<irq intr="39" cpu="7" value="0.00"/>
+						<irq intr="40" cpu="all" value="0.00"/>
+						<irq intr="40" cpu="0" value="0.00"/>
+						<irq intr="40" cpu="1" value="0.00"/>
+						<irq intr="40" cpu="2" value="0.00"/>
+						<irq intr="40" cpu="3" value="0.00"/>
+						<irq intr="40" cpu="4" value="0.00"/>
+						<irq intr="40" cpu="5" value="0.00"/>
+						<irq intr="40" cpu="6" value="0.00"/>
+						<irq intr="40" cpu="7" value="0.00"/>
+						<irq intr="41" cpu="all" value="0.00"/>
+						<irq intr="41" cpu="0" value="0.00"/>
+						<irq intr="41" cpu="1" value="0.00"/>
+						<irq intr="41" cpu="2" value="0.00"/>
+						<irq intr="41" cpu="3" value="0.00"/>
+						<irq intr="41" cpu="4" value="0.00"/>
+						<irq intr="41" cpu="5" value="0.00"/>
+						<irq intr="41" cpu="6" value="0.00"/>
+						<irq intr="41" cpu="7" value="0.00"/>
+						<irq intr="42" cpu="all" value="4.37"/>
+						<irq intr="42" cpu="0" value="0.00"/>
+						<irq intr="42" cpu="1" value="0.00"/>
+						<irq intr="42" cpu="2" value="4.37"/>
+						<irq intr="42" cpu="3" value="0.00"/>
+						<irq intr="42" cpu="4" value="0.00"/>
+						<irq intr="42" cpu="5" value="0.00"/>
+						<irq intr="42" cpu="6" value="0.00"/>
+						<irq intr="42" cpu="7" value="0.00"/>
+						<irq intr="43" cpu="all" value="0.00"/>
+						<irq intr="43" cpu="0" value="0.00"/>
+						<irq intr="43" cpu="1" value="0.00"/>
+						<irq intr="43" cpu="2" value="0.00"/>
+						<irq intr="43" cpu="3" value="0.00"/>
+						<irq intr="43" cpu="4" value="0.00"/>
+						<irq intr="43" cpu="5" value="0.00"/>
+						<irq intr="43" cpu="6" value="0.00"/>
+						<irq intr="43" cpu="7" value="0.00"/>
+						<irq intr="44" cpu="all" value="0.00"/>
+						<irq intr="44" cpu="0" value="0.00"/>
+						<irq intr="44" cpu="1" value="0.00"/>
+						<irq intr="44" cpu="2" value="0.00"/>
+						<irq intr="44" cpu="3" value="0.00"/>
+						<irq intr="44" cpu="4" value="0.00"/>
+						<irq intr="44" cpu="5" value="0.00"/>
+						<irq intr="44" cpu="6" value="0.00"/>
+						<irq intr="44" cpu="7" value="0.00"/>
+						<irq intr="45" cpu="all" value="0.00"/>
+						<irq intr="45" cpu="0" value="0.00"/>
+						<irq intr="45" cpu="1" value="0.00"/>
+						<irq intr="45" cpu="2" value="0.00"/>
+						<irq intr="45" cpu="3" value="0.00"/>
+						<irq intr="45" cpu="4" value="0.00"/>
+						<irq intr="45" cpu="5" value="0.00"/>
+						<irq intr="45" cpu="6" value="0.00"/>
+						<irq intr="45" cpu="7" value="0.00"/>
+						<irq intr="46" cpu="all" value="0.00"/>
+						<irq intr="46" cpu="0" value="0.00"/>
+						<irq intr="46" cpu="1" value="0.00"/>
+						<irq intr="46" cpu="2" value="0.00"/>
+						<irq intr="46" cpu="3" value="0.00"/>
+						<irq intr="46" cpu="4" value="0.00"/>
+						<irq intr="46" cpu="5" value="0.00"/>
+						<irq intr="46" cpu="6" value="0.00"/>
+						<irq intr="46" cpu="7" value="0.00"/>
+						<irq intr="47" cpu="all" value="0.00"/>
+						<irq intr="47" cpu="0" value="0.00"/>
+						<irq intr="47" cpu="1" value="0.00"/>
+						<irq intr="47" cpu="2" value="0.00"/>
+						<irq intr="47" cpu="3" value="0.00"/>
+						<irq intr="47" cpu="4" value="0.00"/>
+						<irq intr="47" cpu="5" value="0.00"/>
+						<irq intr="47" cpu="6" value="0.00"/>
+						<irq intr="47" cpu="7" value="0.00"/>
+						<irq intr="48" cpu="all" value="0.00"/>
+						<irq intr="48" cpu="0" value="0.00"/>
+						<irq intr="48" cpu="1" value="0.00"/>
+						<irq intr="48" cpu="2" value="0.00"/>
+						<irq intr="48" cpu="3" value="0.00"/>
+						<irq intr="48" cpu="4" value="0.00"/>
+						<irq intr="48" cpu="5" value="0.00"/>
+						<irq intr="48" cpu="6" value="0.00"/>
+						<irq intr="48" cpu="7" value="0.00"/>
+						<irq intr="49" cpu="all" value="0.00"/>
+						<irq intr="49" cpu="0" value="0.00"/>
+						<irq intr="49" cpu="1" value="0.00"/>
+						<irq intr="49" cpu="2" value="0.00"/>
+						<irq intr="49" cpu="3" value="0.00"/>
+						<irq intr="49" cpu="4" value="0.00"/>
+						<irq intr="49" cpu="5" value="0.00"/>
+						<irq intr="49" cpu="6" value="0.00"/>
+						<irq intr="49" cpu="7" value="0.00"/>
+						<irq intr="51" cpu="all" value="0.55"/>
+						<irq intr="51" cpu="0" value="0.00"/>
+						<irq intr="51" cpu="1" value="0.00"/>
+						<irq intr="51" cpu="2" value="0.55"/>
+						<irq intr="51" cpu="3" value="0.00"/>
+						<irq intr="51" cpu="4" value="0.00"/>
+						<irq intr="51" cpu="5" value="0.00"/>
+						<irq intr="51" cpu="6" value="0.00"/>
+						<irq intr="51" cpu="7" value="0.00"/>
+						<irq intr="53" cpu="all" value="0.00"/>
+						<irq intr="53" cpu="0" value="0.00"/>
+						<irq intr="53" cpu="1" value="0.00"/>
+						<irq intr="53" cpu="2" value="0.00"/>
+						<irq intr="53" cpu="3" value="0.00"/>
+						<irq intr="53" cpu="4" value="0.00"/>
+						<irq intr="53" cpu="5" value="0.00"/>
+						<irq intr="53" cpu="6" value="0.00"/>
+						<irq intr="53" cpu="7" value="0.00"/>
+						<irq intr="54" cpu="all" value="79.93"/>
+						<irq intr="54" cpu="0" value="0.00"/>
+						<irq intr="54" cpu="1" value="0.00"/>
+						<irq intr="54" cpu="2" value="0.00"/>
+						<irq intr="54" cpu="3" value="0.00"/>
+						<irq intr="54" cpu="4" value="0.00"/>
+						<irq intr="54" cpu="5" value="0.00"/>
+						<irq intr="54" cpu="6" value="79.93"/>
+						<irq intr="54" cpu="7" value="0.00"/>
+						<irq intr="56" cpu="all" value="0.00"/>
+						<irq intr="56" cpu="0" value="0.00"/>
+						<irq intr="56" cpu="1" value="0.00"/>
+						<irq intr="56" cpu="2" value="0.00"/>
+						<irq intr="56" cpu="3" value="0.00"/>
+						<irq intr="56" cpu="4" value="0.00"/>
+						<irq intr="56" cpu="5" value="0.00"/>
+						<irq intr="56" cpu="6" value="0.00"/>
+						<irq intr="56" cpu="7" value="0.00"/>
+						<irq intr="57" cpu="all" value="0.00"/>
+						<irq intr="57" cpu="0" value="0.00"/>
+						<irq intr="57" cpu="1" value="0.00"/>
+						<irq intr="57" cpu="2" value="0.00"/>
+						<irq intr="57" cpu="3" value="0.00"/>
+						<irq intr="57" cpu="4" value="0.00"/>
+						<irq intr="57" cpu="5" value="0.00"/>
+						<irq intr="57" cpu="6" value="0.00"/>
+						<irq intr="57" cpu="7" value="0.00"/>
+						<irq intr="59" cpu="all" value="0.00"/>
+						<irq intr="59" cpu="0" value="0.00"/>
+						<irq intr="59" cpu="1" value="0.00"/>
+						<irq intr="59" cpu="2" value="0.00"/>
+						<irq intr="59" cpu="3" value="0.00"/>
+						<irq intr="59" cpu="4" value="0.00"/>
+						<irq intr="59" cpu="5" value="0.00"/>
+						<irq intr="59" cpu="6" value="0.00"/>
+						<irq intr="59" cpu="7" value="0.00"/>
+						<irq intr="NMI" cpu="all" value="0.00"/>
+						<irq intr="NMI" cpu="0" value="0.00"/>
+						<irq intr="NMI" cpu="1" value="0.00"/>
+						<irq intr="NMI" cpu="2" value="0.00"/>
+						<irq intr="NMI" cpu="3" value="0.00"/>
+						<irq intr="NMI" cpu="4" value="0.00"/>
+						<irq intr="NMI" cpu="5" value="0.00"/>
+						<irq intr="NMI" cpu="6" value="0.00"/>
+						<irq intr="NMI" cpu="7" value="0.00"/>
+						<irq intr="LOC" cpu="all" value="281.49"/>
+						<irq intr="LOC" cpu="0" value="24.82"/>
+						<irq intr="LOC" cpu="1" value="30.11"/>
+						<irq intr="LOC" cpu="2" value="28.74"/>
+						<irq intr="LOC" cpu="3" value="28.74"/>
+						<irq intr="LOC" cpu="4" value="43.13"/>
+						<irq intr="LOC" cpu="5" value="46.72"/>
+						<irq intr="LOC" cpu="6" value="54.95"/>
+						<irq intr="LOC" cpu="7" value="24.28"/>
+						<irq intr="SPU" cpu="all" value="0.00"/>
+						<irq intr="SPU" cpu="0" value="0.00"/>
+						<irq intr="SPU" cpu="1" value="0.00"/>
+						<irq intr="SPU" cpu="2" value="0.00"/>
+						<irq intr="SPU" cpu="3" value="0.00"/>
+						<irq intr="SPU" cpu="4" value="0.00"/>
+						<irq intr="SPU" cpu="5" value="0.00"/>
+						<irq intr="SPU" cpu="6" value="0.00"/>
+						<irq intr="SPU" cpu="7" value="0.00"/>
+						<irq intr="PMI" cpu="all" value="0.00"/>
+						<irq intr="PMI" cpu="0" value="0.00"/>
+						<irq intr="PMI" cpu="1" value="0.00"/>
+						<irq intr="PMI" cpu="2" value="0.00"/>
+						<irq intr="PMI" cpu="3" value="0.00"/>
+						<irq intr="PMI" cpu="4" value="0.00"/>
+						<irq intr="PMI" cpu="5" value="0.00"/>
+						<irq intr="PMI" cpu="6" value="0.00"/>
+						<irq intr="PMI" cpu="7" value="0.00"/>
+						<irq intr="IWI" cpu="all" value="3.55"/>
+						<irq intr="IWI" cpu="0" value="0.00"/>
+						<irq intr="IWI" cpu="1" value="0.00"/>
+						<irq intr="IWI" cpu="2" value="0.00"/>
+						<irq intr="IWI" cpu="3" value="0.00"/>
+						<irq intr="IWI" cpu="4" value="0.00"/>
+						<irq intr="IWI" cpu="5" value="0.00"/>
+						<irq intr="IWI" cpu="6" value="3.55"/>
+						<irq intr="IWI" cpu="7" value="0.00"/>
+						<irq intr="RTR" cpu="all" value="0.00"/>
+						<irq intr="RTR" cpu="0" value="0.00"/>
+						<irq intr="RTR" cpu="1" value="0.00"/>
+						<irq intr="RTR" cpu="2" value="0.00"/>
+						<irq intr="RTR" cpu="3" value="0.00"/>
+						<irq intr="RTR" cpu="4" value="0.00"/>
+						<irq intr="RTR" cpu="5" value="0.00"/>
+						<irq intr="RTR" cpu="6" value="0.00"/>
+						<irq intr="RTR" cpu="7" value="0.00"/>
+						<irq intr="RES" cpu="all" value="0.97"/>
+						<irq intr="RES" cpu="0" value="0.19"/>
+						<irq intr="RES" cpu="1" value="0.10"/>
+						<irq intr="RES" cpu="2" value="0.09"/>
+						<irq intr="RES" cpu="3" value="0.23"/>
+						<irq intr="RES" cpu="4" value="0.14"/>
+						<irq intr="RES" cpu="5" value="0.05"/>
+						<irq intr="RES" cpu="6" value="0.03"/>
+						<irq intr="RES" cpu="7" value="0.14"/>
+						<irq intr="CAL" cpu="all" value="234.58"/>
+						<irq intr="CAL" cpu="0" value="73.55"/>
+						<irq intr="CAL" cpu="1" value="21.68"/>
+						<irq intr="CAL" cpu="2" value="32.85"/>
+						<irq intr="CAL" cpu="3" value="17.04"/>
+						<irq intr="CAL" cpu="4" value="19.62"/>
+						<irq intr="CAL" cpu="5" value="18.69"/>
+						<irq intr="CAL" cpu="6" value="29.10"/>
+						<irq intr="CAL" cpu="7" value="22.05"/>
+						<irq intr="TLB" cpu="all" value="1.27"/>
+						<irq intr="TLB" cpu="0" value="0.31"/>
+						<irq intr="TLB" cpu="1" value="0.00"/>
+						<irq intr="TLB" cpu="2" value="0.00"/>
+						<irq intr="TLB" cpu="3" value="0.00"/>
+						<irq intr="TLB" cpu="4" value="0.50"/>
+						<irq intr="TLB" cpu="5" value="0.00"/>
+						<irq intr="TLB" cpu="6" value="0.00"/>
+						<irq intr="TLB" cpu="7" value="0.45"/>
+						<irq intr="TRM" cpu="all" value="0.00"/>
+						<irq intr="TRM" cpu="0" value="0.00"/>
+						<irq intr="TRM" cpu="1" value="0.00"/>
+						<irq intr="TRM" cpu="2" value="0.00"/>
+						<irq intr="TRM" cpu="3" value="0.00"/>
+						<irq intr="TRM" cpu="4" value="0.00"/>
+						<irq intr="TRM" cpu="5" value="0.00"/>
+						<irq intr="TRM" cpu="6" value="0.00"/>
+						<irq intr="TRM" cpu="7" value="0.00"/>
+						<irq intr="THR" cpu="all" value="0.00"/>
+						<irq intr="THR" cpu="0" value="0.00"/>
+						<irq intr="THR" cpu="1" value="0.00"/>
+						<irq intr="THR" cpu="2" value="0.00"/>
+						<irq intr="THR" cpu="3" value="0.00"/>
+						<irq intr="THR" cpu="4" value="0.00"/>
+						<irq intr="THR" cpu="5" value="0.00"/>
+						<irq intr="THR" cpu="6" value="0.00"/>
+						<irq intr="THR" cpu="7" value="0.00"/>
+						<irq intr="DFR" cpu="all" value="0.00"/>
+						<irq intr="DFR" cpu="0" value="0.00"/>
+						<irq intr="DFR" cpu="1" value="0.00"/>
+						<irq intr="DFR" cpu="2" value="0.00"/>
+						<irq intr="DFR" cpu="3" value="0.00"/>
+						<irq intr="DFR" cpu="4" value="0.00"/>
+						<irq intr="DFR" cpu="5" value="0.00"/>
+						<irq intr="DFR" cpu="6" value="0.00"/>
+						<irq intr="DFR" cpu="7" value="0.00"/>
+						<irq intr="MCE" cpu="all" value="0.00"/>
+						<irq intr="MCE" cpu="0" value="0.00"/>
+						<irq intr="MCE" cpu="1" value="0.00"/>
+						<irq intr="MCE" cpu="2" value="0.00"/>
+						<irq intr="MCE" cpu="3" value="0.00"/>
+						<irq intr="MCE" cpu="4" value="0.00"/>
+						<irq intr="MCE" cpu="5" value="0.00"/>
+						<irq intr="MCE" cpu="6" value="0.00"/>
+						<irq intr="MCE" cpu="7" value="0.00"/>
+						<irq intr="MCP" cpu="all" value="0.00"/>
+						<irq intr="MCP" cpu="0" value="0.00"/>
+						<irq intr="MCP" cpu="1" value="0.00"/>
+						<irq intr="MCP" cpu="2" value="0.00"/>
+						<irq intr="MCP" cpu="3" value="0.00"/>
+						<irq intr="MCP" cpu="4" value="0.00"/>
+						<irq intr="MCP" cpu="5" value="0.00"/>
+						<irq intr="MCP" cpu="6" value="0.00"/>
+						<irq intr="MCP" cpu="7" value="0.00"/>
+						<irq intr="ERR" cpu="all" value="0.00"/>
+						<irq intr="ERR" cpu="0" value="0.00"/>
+						<irq intr="ERR" cpu="1" value="0.00"/>
+						<irq intr="ERR" cpu="2" value="0.00"/>
+						<irq intr="ERR" cpu="3" value="0.00"/>
+						<irq intr="ERR" cpu="4" value="0.00"/>
+						<irq intr="ERR" cpu="5" value="0.00"/>
+						<irq intr="ERR" cpu="6" value="0.00"/>
+						<irq intr="ERR" cpu="7" value="0.00"/>
+						<irq intr="MIS" cpu="all" value="0.00"/>
+						<irq intr="MIS" cpu="0" value="0.00"/>
+						<irq intr="MIS" cpu="1" value="0.00"/>
+						<irq intr="MIS" cpu="2" value="0.00"/>
+						<irq intr="MIS" cpu="3" value="0.00"/>
+						<irq intr="MIS" cpu="4" value="0.00"/>
+						<irq intr="MIS" cpu="5" value="0.00"/>
+						<irq intr="MIS" cpu="6" value="0.00"/>
+						<irq intr="MIS" cpu="7" value="0.00"/>
+						<irq intr="PIN" cpu="all" value="0.00"/>
+						<irq intr="PIN" cpu="0" value="0.00"/>
+						<irq intr="PIN" cpu="1" value="0.00"/>
+						<irq intr="PIN" cpu="2" value="0.00"/>
+						<irq intr="PIN" cpu="3" value="0.00"/>
+						<irq intr="PIN" cpu="4" value="0.00"/>
+						<irq intr="PIN" cpu="5" value="0.00"/>
+						<irq intr="PIN" cpu="6" value="0.00"/>
+						<irq intr="PIN" cpu="7" value="0.00"/>
+						<irq intr="NPI" cpu="all" value="0.00"/>
+						<irq intr="NPI" cpu="0" value="0.00"/>
+						<irq intr="NPI" cpu="1" value="0.00"/>
+						<irq intr="NPI" cpu="2" value="0.00"/>
+						<irq intr="NPI" cpu="3" value="0.00"/>
+						<irq intr="NPI" cpu="4" value="0.00"/>
+						<irq intr="NPI" cpu="5" value="0.00"/>
+						<irq intr="NPI" cpu="6" value="0.00"/>
+						<irq intr="NPI" cpu="7" value="0.00"/>
+						<irq intr="PIW" cpu="all" value="0.00"/>
+						<irq intr="PIW" cpu="0" value="0.00"/>
+						<irq intr="PIW" cpu="1" value="0.00"/>
+						<irq intr="PIW" cpu="2" value="0.00"/>
+						<irq intr="PIW" cpu="3" value="0.00"/>
+						<irq intr="PIW" cpu="4" value="0.00"/>
+						<irq intr="PIW" cpu="5" value="0.00"/>
+						<irq intr="PIW" cpu="6" value="0.00"/>
+						<irq intr="PIW" cpu="7" value="0.00"/>
+					</int-global>
+				</interrupts>
+				<swap-pages per="second" pswpin="0.00" pswpout="0.00"/>
+				<paging per="second" pgpgin="0.00" pgpgout="171.95" fault="196.34" majflt="0.00" pgfree="200.09" pgscank="0.00" pgscand="0.00" pgsteal="0.00" pgprom="0.00" pgdem="0.00"/>
+				<io per="second">
+					<tps>10.24</tps>
+					<io-reads rtps="0.00" bread="0.00"/>
+					<io-writes wtps="10.24" bwrtn="343.91"/>
+					<io-discard dtps="0.00" bdscd="0.00"/>
+				</io>
+				<memory unit="kB">
+					<memfree>8551968</memfree>
+					<avail>11378932</avail>
+					<memused>2245312</memused>
+					<memused-percent>15.79</memused-percent>
+					<buffers>202032</buffers>
+					<cached>2871732</cached>
+					<commit>9514640</commit>
+					<commit-percent>30.70</commit-percent>
+					<active>2975472</active>
+					<inactive>1911392</inactive>
+					<dirty>216</dirty>
+					<anonpg>1818736</anonpg>
+					<slab>348532</slab>
+					<kstack>15728</kstack>
+					<pgtbl>32708</pgtbl>
+					<vmused>93192</vmused>
+					<swpfree>16777208</swpfree>
+					<swpused>0</swpused>
+					<swpused-percent>0.00</swpused-percent>
+					<swpcad>0</swpcad>
+					<swpcad-percent>0.00</swpcad-percent>
+				</memory>
+				<hugepages unit="kB">
+					<hugfree>0</hugfree>
+					<hugused>0</hugused>
+					<hugused-percent>0.00</hugused-percent>
+					<hugrsvd>0</hugrsvd>
+					<hugsurp>0</hugsurp>
+				</hugepages>
+				<kernel dentunusd="154368" file-nr="12928" inode-nr="148851" pty-nr="5"/>
+				<queue runq-sz="0" plist-sz="969" ldavg-1="0.24" ldavg-5="0.26" ldavg-15="0.25" blocked="0"/>
+				<disk per="second">
+					<disk-device dev="sda" tps="4.68" rd_sec="0.00" wr_sec="52.28" dc_sec="0.00" rkB="0.00" wkB="26.14" dkB="0.00" avgrq-sz="11.17" areq-sz="5.59" avgqu-sz="0.01" aqu-sz="0.01" await="2.32" util-percent="0.24"/>
+					<disk-device dev="sda1" tps="0.00" rd_sec="0.00" wr_sec="0.00" dc_sec="0.00" rkB="0.00" wkB="0.00" dkB="0.00" avgrq-sz="0.00" areq-sz="0.00" avgqu-sz="0.00" aqu-sz="0.00" await="0.00" util-percent="0.00"/>
+					<disk-device dev="sda2" tps="0.00" rd_sec="0.00" wr_sec="0.00" dc_sec="0.00" rkB="0.00" wkB="0.00" dkB="0.00" avgrq-sz="0.00" areq-sz="0.00" avgqu-sz="0.00" aqu-sz="0.00" await="0.00" util-percent="0.00"/>
+					<disk-device dev="sda3" tps="0.00" rd_sec="0.00" wr_sec="0.00" dc_sec="0.00" rkB="0.00" wkB="0.00" dkB="0.00" avgrq-sz="0.00" areq-sz="0.00" avgqu-sz="0.00" aqu-sz="0.00" await="0.00" util-percent="0.00"/>
+					<disk-device dev="sda4" tps="0.00" rd_sec="0.00" wr_sec="0.00" dc_sec="0.00" rkB="0.00" wkB="0.00" dkB="0.00" avgrq-sz="0.00" areq-sz="0.00" avgqu-sz="0.00" aqu-sz="0.00" await="0.00" util-percent="0.00"/>
+					<disk-device dev="sda5" tps="0.00" rd_sec="0.00" wr_sec="0.00" dc_sec="0.00" rkB="0.00" wkB="0.00" dkB="0.00" avgrq-sz="0.00" areq-sz="0.00" avgqu-sz="0.00" aqu-sz="0.00" await="0.00" util-percent="0.00"/>
+					<disk-device dev="sda6" tps="0.00" rd_sec="0.00" wr_sec="0.00" dc_sec="0.00" rkB="0.00" wkB="0.00" dkB="0.00" avgrq-sz="0.00" areq-sz="0.00" avgqu-sz="0.00" aqu-sz="0.00" await="0.00" util-percent="0.00"/>
+					<disk-device dev="sda7" tps="4.68" rd_sec="0.00" wr_sec="52.28" dc_sec="0.00" rkB="0.00" wkB="26.14" dkB="0.00" avgrq-sz="11.17" areq-sz="5.59" avgqu-sz="0.01" aqu-sz="0.01" await="2.32" util-percent="0.24"/>
+					<disk-device dev="sdb" tps="5.56" rd_sec="0.00" wr_sec="291.63" dc_sec="0.00" rkB="0.00" wkB="145.81" dkB="0.00" avgrq-sz="52.41" areq-sz="26.21" avgqu-sz="0.34" aqu-sz="0.34" await="56.59" util-percent="3.56"/>
+					<disk-device dev="sdb1" tps="0.00" rd_sec="0.00" wr_sec="0.00" dc_sec="0.00" rkB="0.00" wkB="0.00" dkB="0.00" avgrq-sz="0.00" areq-sz="0.00" avgqu-sz="0.00" aqu-sz="0.00" await="0.00" util-percent="0.00"/>
+					<disk-device dev="sdb2" tps="0.00" rd_sec="0.00" wr_sec="0.00" dc_sec="0.00" rkB="0.00" wkB="0.00" dkB="0.00" avgrq-sz="0.00" areq-sz="0.00" avgqu-sz="0.00" aqu-sz="0.00" await="0.00" util-percent="0.00"/>
+					<disk-device dev="sdb3" tps="0.00" rd_sec="0.00" wr_sec="0.00" dc_sec="0.00" rkB="0.00" wkB="0.00" dkB="0.00" avgrq-sz="0.00" areq-sz="0.00" avgqu-sz="0.00" aqu-sz="0.00" await="0.00" util-percent="0.00"/>
+					<disk-device dev="sdb4" tps="0.00" rd_sec="0.00" wr_sec="0.00" dc_sec="0.00" rkB="0.00" wkB="0.00" dkB="0.00" avgrq-sz="0.00" areq-sz="0.00" avgqu-sz="0.00" aqu-sz="0.00" await="0.00" util-percent="0.00"/>
+					<disk-device dev="sdb5" tps="0.00" rd_sec="0.00" wr_sec="0.00" dc_sec="0.00" rkB="0.00" wkB="0.00" dkB="0.00" avgrq-sz="0.00" areq-sz="0.00" avgqu-sz="0.00" aqu-sz="0.00" await="0.00" util-percent="0.00"/>
+					<disk-device dev="sdb6" tps="5.56" rd_sec="0.00" wr_sec="291.63" dc_sec="0.00" rkB="0.00" wkB="145.81" dkB="0.00" avgrq-sz="52.41" areq-sz="26.21" avgqu-sz="0.31" aqu-sz="0.31" await="56.59" util-percent="3.56"/>
+					<disk-device dev="zram0" tps="0.00" rd_sec="0.00" wr_sec="0.00" dc_sec="0.00" rkB="0.00" wkB="0.00" dkB="0.00" avgrq-sz="0.00" areq-sz="0.00" avgqu-sz="0.00" aqu-sz="0.00" await="0.00" util-percent="0.00"/>
+					<disk-device dev="dm-0" tps="0.00" rd_sec="0.00" wr_sec="0.00" dc_sec="0.00" rkB="0.00" wkB="0.00" dkB="0.00" avgrq-sz="0.00" areq-sz="0.00" avgqu-sz="0.00" aqu-sz="0.00" await="0.00" util-percent="0.00"/>
+					<disk-device dev="dm-1" tps="0.00" rd_sec="0.00" wr_sec="0.00" dc_sec="0.00" rkB="0.00" wkB="0.00" dkB="0.00" avgrq-sz="0.00" areq-sz="0.00" avgqu-sz="0.00" aqu-sz="0.00" await="0.00" util-percent="0.00"/>
+					<disk-device dev="dm-2" tps="0.00" rd_sec="0.00" wr_sec="0.00" dc_sec="0.00" rkB="0.00" wkB="0.00" dkB="0.00" avgrq-sz="0.00" areq-sz="0.00" avgqu-sz="0.00" aqu-sz="0.00" await="0.00" util-percent="0.00"/>
+					<disk-device dev="dm-3" tps="11.51" rd_sec="0.00" wr_sec="291.63" dc_sec="0.00" rkB="0.00" wkB="145.81" dkB="0.00" avgrq-sz="25.34" areq-sz="12.67" avgqu-sz="0.68" aqu-sz="0.68" await="58.66" util-percent="3.56"/>
+				</disk>
+				<network per="second">
+					<net-dev iface="lo" rxpck="0.00" txpck="0.00" rxkB="0.00" txkB="0.00" rxcmp="0.00" txcmp="0.00" rxmcst="0.00" ifutil-percent="0.00"/>
+					<net-dev iface="eno1" rxpck="0.40" txpck="0.16" rxkB="0.05" txkB="0.01" rxcmp="0.00" txcmp="0.00" rxmcst="0.09" ifutil-percent="0.00"/>
+					<net-dev iface="wlp2s0" rxpck="0.00" txpck="0.00" rxkB="0.00" txkB="0.00" rxcmp="0.00" txcmp="0.00" rxmcst="0.00" ifutil-percent="0.00"/>
+					<net-edev iface="lo" rxerr="0.00" txerr="0.00" coll="0.00" rxdrop="0.00" txdrop="0.00" txcarr="0.00" rxfram="0.00" rxfifo="0.00" txfifo="0.00"/>
+					<net-edev iface="eno1" rxerr="0.00" txerr="0.00" coll="0.00" rxdrop="0.05" txdrop="0.00" txcarr="0.00" rxfram="0.00" rxfifo="0.00" txfifo="0.00"/>
+					<net-edev iface="wlp2s0" rxerr="0.00" txerr="0.00" coll="0.00" rxdrop="0.00" txdrop="0.00" txcarr="0.00" rxfram="0.00" rxfifo="0.00" txfifo="0.00"/>
+					<net-nfs call="0.00" retrans="0.00" read="0.00" write="0.00" access="0.00" getatt="0.00"/>
+					<net-nfsd scall="0.00" badcall="0.00" packet="0.00" udp="0.00" tcp="0.00" hit="0.00" miss="0.00" sread="0.00" swrite="0.00" saccess="0.00" sgetatt="0.00"/>
+					<net-sock totsck="1014" tcpsck="8" udpsck="7" rawsck="0" ip-frag="0" tcp-tw="0"/>
+					<net-ip irec="0.16" fwddgm="0.00" idel="0.14" orq="0.02" asmrq="0.00" asmok="0.00" fragok="0.00" fragcrt="0.00"/>
+					<net-eip ihdrerr="0.00" iadrerr="0.00" iukwnpr="0.00" idisc="0.00" odisc="0.00" onort="0.00" asmf="0.00" fragf="0.00"/>
+					<net-icmp imsg="0.00" omsg="0.00" iech="0.00" iechr="0.00" oech="0.00" oechr="0.00" itm="0.00" itmr="0.00" otm="0.00" otmr="0.00" iadrmk="0.00" iadrmkr="0.00" oadrmk="0.00" oadrmkr="0.00"/>
+					<net-eicmp ierr="0.00" oerr="0.00" idstunr="0.00" odstunr="0.00" itmex="0.00" otmex="0.00" iparmpb="0.00" oparmpb="0.00" isrcq="0.00" osrcq="0.00" iredir="0.00" oredir="0.00"/>
+					<net-tcp active="0.00" passive="0.00" iseg="0.03" oseg="0.02"/>
+					<net-etcp atmptf="0.00" estres="0.00" retrseg="0.00" isegerr="0.00" orsts="0.00"/>
+					<net-udp idgm="0.00" odgm="0.00" noport="0.00" idgmerr="0.00"/>
+					<net-sock6 tcp6sck="4" udp6sck="5" raw6sck="1" ip6-frag="0"/>
+					<net-ip6 irec6="0.14" fwddgm6="0.00" idel6="0.14" orq6="0.12" asmrq6="0.00" asmok6="0.00" imcpck6="0.07" omcpck6="0.03" fragok6="0.00" fragcr6="0.00"/>
+					<net-eip6 ihdrer6="0.00" iadrer6="0.00" iukwnp6="0.00" i2big6="0.00" idisc6="0.00" odisc6="0.00" inort6="0.00" onort6="0.00" asmf6="0.00" fragf6="0.00" itrpck6="0.00"/>
+					<net-icmp6 imsg6="0.14" omsg6="0.12" iech6="0.02" iechr6="0.00" oechr6="0.02" igmbq6="0.00" igmbr6="0.00" ogmbr6="0.00" igmbrd6="0.00" ogmbrd6="0.00" irtsol6="0.00" ortsol6="0.00" irtad6="0.02" inbsol6="0.07" onbsol6="0.03" inbad6="0.03" onbad6="0.03"/>
+					<net-eicmp6 ierr6="0.00" idtunr6="0.00" odtunr6="0.00" itmex6="0.00" otmex6="0.00" iprmpb6="0.00" oprmpb6="0.00" iredir6="0.00" oredir6="0.00" ipck2b6="0.00" opck2b6="0.00"/>
+					<net-udp6 idgm6="0.00" odgm6="0.00" noport6="0.00" idgmer6="0.00"/>
+					<softnet cpu="all" total="0.40" dropd="0.00" squeezd="0.00" rx_rps="0.00" flw_lim="0.00" blg_len="0"/>
+					<softnet cpu="1" total="0.00" dropd="0.00" squeezd="0.00" rx_rps="0.00" flw_lim="0.00" blg_len="0"/>
+					<softnet cpu="2" total="0.40" dropd="0.00" squeezd="0.00" rx_rps="0.00" flw_lim="0.00" blg_len="0"/>
+					<softnet cpu="3" total="0.00" dropd="0.00" squeezd="0.00" rx_rps="0.00" flw_lim="0.00" blg_len="0"/>
+					<softnet cpu="4" total="0.00" dropd="0.00" squeezd="0.00" rx_rps="0.00" flw_lim="0.00" blg_len="0"/>
+					<softnet cpu="5" total="0.00" dropd="0.00" squeezd="0.00" rx_rps="0.00" flw_lim="0.00" blg_len="0"/>
+					<softnet cpu="6" total="0.00" dropd="0.00" squeezd="0.00" rx_rps="0.00" flw_lim="0.00" blg_len="0"/>
+					<softnet cpu="7" total="0.00" dropd="0.00" squeezd="0.00" rx_rps="0.00" flw_lim="0.00" blg_len="0"/>
+				</network>
+				<power-management>
+					<cpu-frequency unit="MHz">
+						<cpufreq number="all" frequency="1361.45"/>
+						<cpufreq number="0" frequency="1394.05"/>
+						<cpufreq number="1" frequency="1331.04"/>
+						<cpufreq number="2" frequency="1246.62"/>
+						<cpufreq number="3" frequency="1327.98"/>
+						<cpufreq number="4" frequency="1397.05"/>
+						<cpufreq number="5" frequency="1400.00"/>
+						<cpufreq number="6" frequency="1397.44"/>
+						<cpufreq number="7" frequency="1397.49"/>
+					</cpu-frequency>
+					<temperature unit="degree Celsius">
+						<temp number="1" degC="29.25" percent-temp="0.00" device="k10temp-pci-00c3"/>
+						<temp number="2" degC="29.00" percent-temp="0.00" device="amdgpu-pci-0300"/>
+						<temp number="3" degC="29.00" percent-temp="0.00" device="acpitz-acpi-0"/>
+						<temp number="4" degC="0.00" percent-temp="0.00" device="acpitz-acpi-0"/>
+					</temperature>
+					<voltage-input unit="V">
+						<in number="0" inV="12.74" percent-in="0.00" device="BAT0-acpi-0"/>
+						<in number="1" inV="0.00" percent-in="0.00" device="amdgpu-pci-0300"/>
+						<in number="2" inV="0.00" percent-in="0.00" device="amdgpu-pci-0300"/>
+					</voltage-input>
+					<cpu-weighted-frequency unit="MHz">
+						<cpuwfreq number="all" weighted-frequency="1421.68"/>
+						<cpuwfreq number="0" weighted-frequency="1552.70"/>
+						<cpuwfreq number="1" weighted-frequency="1401.72"/>
+						<cpuwfreq number="2" weighted-frequency="1417.94"/>
+						<cpuwfreq number="3" weighted-frequency="1400.00"/>
+						<cpuwfreq number="4" weighted-frequency="1400.16"/>
+						<cpuwfreq number="5" weighted-frequency="1400.00"/>
+						<cpuwfreq number="6" weighted-frequency="1400.47"/>
+						<cpuwfreq number="7" weighted-frequency="1400.00"/>
+					</cpu-weighted-frequency>
+					<battery unit="minute">
+						<bat number="0" percent-capacity="100" variation="0.00" status="Full"/>
+					</battery>
+					<usb-devices>
+						<usb bus_number="3" idvendor="5e3" idprod="608" maxpower="200" manufact="" product="USB2.0 Hub"/>
+						<usb bus_number="1" idvendor="46d" idprod="c542" maxpower="100" manufact="Logitech" product="Wireless Receiver"/>
+						<usb bus_number="3" idvendor="4f2" idprod="b62a" maxpower="1000" manufact="Chicony Electronics C" product="HP Webcam"/>
+						<usb bus_number="3" idvendor="174c" idprod="55aa" maxpower="0" manufact="ASMT" product="ASM1153"/>
+						<usb bus_number="1" idvendor="3f0" idprod="862" maxpower="196" manufact="HP" product="HP Wireless Keyboard Mouse Kit"/>
+						<usb bus_number="3" idvendor="bda" idprod="b009" maxpower="1000" manufact="Realtek" product="802.11n WLAN Adapter"/>
+					</usb-devices>
+				</power-management>
+				<filesystems>
+					<filesystem fsname="/dev/sda7" MBfsfree="7929" MBfsused="24021" fsused-percent="75.18" ufsused-percent="80.36" Ifree="1494756" Iused="602396" Iused-percent="28.72"/>
+					<filesystem fsname="/dev/sda6" MBfsfree="576" MBfsused="344" fsused-percent="37.39" ufsused-percent="44.31" Ifree="61013" Iused="43" Iused-percent="0.07"/>
+					<filesystem fsname="/dev/sda5" MBfsfree="243" MBfsused="7" fsused-percent="2.81" ufsused-percent="2.81" Ifree="0" Iused="0" Iused-percent="0.00"/>
+					<filesystem fsname="/dev/mapper/fedora_sata--1-data" MBfsfree="301687" MBfsused="0" fsused-percent="0.00" ufsused-percent="5.10" Ifree="19693554" Iused="14" Iused-percent="0.00"/>
+					<filesystem fsname="/dev/mapper/fedora-home" MBfsfree="22948" MBfsused="17066" fsused-percent="42.65" ufsused-percent="47.81" Ifree="2359326" Iused="262114" Iused-percent="10.00"/>
+					<filesystem fsname="/dev/mapper/fedora_sata--0-opt" MBfsfree="263710" MBfsused="38077" fsused-percent="12.62" ufsused-percent="17.72" Ifree="19506911" Iused="186657" Iused-percent="0.95"/>
+				</filesystems>
+				<psi per="second">
+					<psi-cpu some_avg10="0.00" some_avg60="0.00" some_avg300="0.00" some_avg="0.09"/>
+					<psi-io some_avg10="1.76" some_avg60="1.52" some_avg300="1.07" some_avg="2.13" full_avg10="1.76" full_avg60="1.49" full_avg300="1.04" full_avg="2.12"/>
+					<psi-mem some_avg10="0.00" some_avg60="0.00" some_avg300="0.00" some_avg="0.00" full_avg10="0.00" full_avg60="0.00" full_avg300="0.00" full_avg="0.00"/>
+				</psi>
+			</timestamp>
+		</statistics>
+		<restarts>
+			<boot date="2024-01-20" time="16:00:17" tz="UTC" cpu_count="8"/>
+		</restarts>
+		<comments>
+			<comment date="2024-01-20" time="16:00:34" tz="UTC" com="Hello, world!"/>
+		</comments>
+	</host>
+</sysstat>
diff -pruN 12.7.5-2/tests/data-new.out 12.7.7-0ubuntu2/tests/data-new.out
--- 12.7.5-2/tests/data-new.out	2023-11-10 17:48:52.000000000 +0000
+++ 12.7.7-0ubuntu2/tests/data-new.out	2024-05-28 08:17:59.000000000 +0000
@@ -308,10 +308,10 @@ Average:         0.00      0.00      0.0
 
 13:20:09    kbmemfree   kbavail kbmemused  %memused kbbuffers  kbcached  kbcommit   %commit  kbactive   kbinact   kbdirty  kbanonpg    kbslab  kbkstack   kbpgtbl  kbvmused
 13:20:19      1437740   4389516   3179712     39.04    260172   2821596  12097852     48.54   4042384   1772396       396   2733164    445740     15328     73760         0
-13:20:29      1437740   4389516   3179712     39.04    260172   2821596  12097852     48.54   4042384   1772396       396   2733164    445740     15328     73760         0
+13:20:29      1437740   4389516   3179712     39.04    260172   2821596  30097852    120.77   4042384   1772396       396   2733164    445740     15328     73760         0
 13:20:39      1437740   4389516   3179712     39.04    260172   2821596  12097852     48.54   4042384   1772396       396   2733164    445740     15328     73760         0
 13:20:49      1437740   4389516   3179712     39.04    260172   2821596  12097852     48.54   4042384   1772396       396   2733164    445740     15328     73760         0
-Average:      1437740   4389516   3179712     39.04    260172   2821596  12097852     48.54   4042384   1772396       396   2733164    445740     15328     73760         0
+Average:      1437740   4389516   3179712     39.04    260172   2821596  16597852     66.60   4042384   1772396       396   2733164    445740     15328     73760         0
 
 13:20:09    kbswpfree kbswpused  %swpused  kbswpcad   %swpcad
 13:20:19     16777212         0      0.00         0      0.00
@@ -570,7 +570,7 @@ Average:         0.00      0.00      0.0
 13:20:49         0.00      0.00      0.00      0.00
 Average:         0.00      0.00      0.00      0.00
 
-13:20:09     atmptf/s  estres/s retrans/s isegerr/s   orsts/s
+13:20:09     atmptf/s  estres/s retrseg/s isegerr/s   orsts/s
 13:20:19         0.00      0.00      0.00      0.00      0.00
 13:20:29         0.00      0.00      0.00      0.00      0.00
 13:20:39         0.00      0.00      0.00      0.00      0.00
diff -pruN 12.7.5-2/tests/data.out 12.7.7-0ubuntu2/tests/data.out
--- 12.7.5-2/tests/data.out	2023-12-09 15:53:16.000000000 +0000
+++ 12.7.7-0ubuntu2/tests/data.out	2024-05-28 08:18:43.000000000 +0000
@@ -308,10 +308,10 @@ Average:         0.00      0.00      0.0
 
 13:20:09    kbmemfree   kbavail kbmemused  %memused kbbuffers  kbcached  kbcommit   %commit  kbactive   kbinact   kbdirty  kbanonpg    kbslab  kbkstack   kbpgtbl  kbvmused
 13:20:19      1437740   4389516   3179712     39.04    260172   2821596  12097852     48.54   4042384   1772396       396   2733164    445740     15328     73760         0
-13:20:29      1437740   4389516   3179712     39.04    260172   2821596  12097852     48.54   4042384   1772396       396   2733164    445740     15328     73760         0
+13:20:29      1437740   4389516   3179712     39.04    260172   2821596  30097852    120.77   4042384   1772396       396   2733164    445740     15328     73760         0
 13:20:39      1437740   4389516   3179712     39.04    260172   2821596  12097852     48.54   4042384   1772396       396   2733164    445740     15328     73760         0
 13:20:49      1437740   4389516   3179712     39.04    260172   2821596  12097852     48.54   4042384   1772396       396   2733164    445740     15328     73760         0
-Average:      1437740   4389516   3179712     39.04    260172   2821596  12097852     48.54   4042384   1772396       396   2733164    445740     15328     73760         0
+Average:      1437740   4389516   3179712     39.04    260172   2821596  16597852     66.60   4042384   1772396       396   2733164    445740     15328     73760         0
 
 13:20:09    kbswpfree kbswpused  %swpused  kbswpcad   %swpcad
 13:20:19     16777212         0      0.00         0      0.00
@@ -570,7 +570,7 @@ Average:         0.00      0.00      0.0
 13:20:49         0.00      0.00      0.00      0.00
 Average:         0.00      0.00      0.00      0.00
 
-13:20:09     atmptf/s  estres/s retrans/s isegerr/s   orsts/s
+13:20:09     atmptf/s  estres/s retrseg/s isegerr/s   orsts/s
 13:20:19         0.00      0.00      0.00      0.00      0.00
 13:20:29         0.00      0.00      0.00      0.00      0.00
 13:20:39         0.00      0.00      0.00      0.00      0.00
@@ -1067,7 +1067,7 @@ Average:         0.00      0.00      0.0
 13:54:35         0.00      0.00      0.00      0.00
 Average:         0.00      0.00      0.00      0.00
 
-13:54:15     atmptf/s  estres/s retrans/s isegerr/s   orsts/s
+13:54:15     atmptf/s  estres/s retrseg/s isegerr/s   orsts/s
 13:54:35         0.00      0.00      0.00      0.00      0.00
 Average:         0.00      0.00      0.00      0.00      0.00
 
diff -pruN 12.7.5-2/tests/data32.out 12.7.7-0ubuntu2/tests/data32.out
--- 12.7.5-2/tests/data32.out	2023-12-09 15:53:16.000000000 +0000
+++ 12.7.7-0ubuntu2/tests/data32.out	2024-01-20 15:13:54.000000000 +0000
@@ -254,7 +254,7 @@ Average:         0.00      0.00      0.0
 13:20:39         0.00      0.00      0.00      0.00
 Average:         0.00      0.00      0.00      0.00
 
-13:20:29     atmptf/s  estres/s retrans/s isegerr/s   orsts/s
+13:20:29     atmptf/s  estres/s retrseg/s isegerr/s   orsts/s
 13:20:39         0.00      0.00      0.00      0.00      0.00
 Average:         0.00      0.00      0.00      0.00      0.00
 
diff -pruN 12.7.5-2/tests/expected.cifsiostat-JSON 12.7.7-0ubuntu2/tests/expected.cifsiostat-JSON
--- 12.7.5-2/tests/expected.cifsiostat-JSON	1970-01-01 00:00:00.000000000 +0000
+++ 12.7.7-0ubuntu2/tests/expected.cifsiostat-JSON	2024-11-16 17:29:49.000000000 +0000
@@ -0,0 +1,25 @@
+{"sysstat": {
+	"hosts": [
+		{
+			"nodename": "SYSSTAT.TEST",
+			"sysname": "Linux",
+			"release": "1.2.3-TEST",
+			"machine": "x86_64",
+			"number-of-cpus": 9,
+			"date": "06/01/20",
+			"statistics": [
+				{
+					"filesystem": [
+						{"fs_name": "\\\\addr\\SHARED", "rB/s": 0.03, "wB/s": 0.00, "rops/s": 0.00, "wops/s": 0.00, "fo/s": 0.00, "fc/s": 0.00, "fd/s": 0.00}
+					]
+				},
+				{
+					"filesystem": [
+						{"fs_name": "\\\\addr\\SHARED", "rB/s": 23.10, "wB/s": 3.95, "rops/s": 0.19, "wops/s": 0.10, "fo/s": 0.00, "fc/s": 0.00, "fd/s": 0.00},
+						{"fs_name": "\\\\server\\share1", "rB/s": 2.92, "wB/s": 3.30, "rops/s": 0.16, "wops/s": 0.06, "fo/s": 0.16, "fc/s": 0.06, "fd/s": 0.03}
+					]
+				}
+			]
+		}
+	]
+}}
diff -pruN 12.7.5-2/tests/expected.cifsiostat-kt-JSON 12.7.7-0ubuntu2/tests/expected.cifsiostat-kt-JSON
--- 12.7.5-2/tests/expected.cifsiostat-kt-JSON	1970-01-01 00:00:00.000000000 +0000
+++ 12.7.7-0ubuntu2/tests/expected.cifsiostat-kt-JSON	2024-11-16 17:34:26.000000000 +0000
@@ -0,0 +1,34 @@
+{"sysstat": {
+	"hosts": [
+		{
+			"nodename": "SYSSTAT.TEST",
+			"sysname": "Linux",
+			"release": "1.2.3-TEST",
+			"machine": "x86_64",
+			"number-of-cpus": 9,
+			"date": "06/01/20",
+			"statistics": [
+				{
+					"timestamp": "06/01/20 12:53:20",
+					"filesystem": [
+						{"fs_name": "\\\\addr\\SHARED", "rkB/s": 0.00, "wkB/s": 0.00, "rops/s": 0.00, "wops/s": 0.00, "fo/s": 0.00, "fc/s": 0.00, "fd/s": 0.00}
+					]
+				},
+				{
+					"timestamp": "06/01/20 12:53:21",
+					"filesystem": [
+						{"fs_name": "\\\\addr\\SHARED", "rkB/s": 0.02, "wkB/s": 0.00, "rops/s": 0.19, "wops/s": 0.10, "fo/s": 0.00, "fc/s": 0.00, "fd/s": 0.00},
+						{"fs_name": "\\\\server\\share1", "rkB/s": 0.00, "wkB/s": 0.00, "rops/s": 0.16, "wops/s": 0.06, "fo/s": 0.16, "fc/s": 0.06, "fd/s": 0.03}
+					]
+				},
+				{
+					"timestamp": "06/01/20 12:53:22",
+					"filesystem": [
+						{"fs_name": "\\\\addr\\SHARED", "rkB/s": 0.00, "wkB/s": 0.00, "rops/s": 0.00, "wops/s": 0.00, "fo/s": 0.10, "fc/s": 0.19, "fd/s": 0.16},
+						{"fs_name": "\\\\server\\share1", "rkB/s": 0.03, "wkB/s": 0.02, "rops/s": 0.29, "wops/s": 0.38, "fo/s": 0.32, "fc/s": 0.32, "fd/s": 0.32}
+					]
+				}
+			]
+		}
+	]
+}}
diff -pruN 12.7.5-2/tests/expected.cifsiostat-yk 12.7.7-0ubuntu2/tests/expected.cifsiostat-yk
--- 12.7.5-2/tests/expected.cifsiostat-yk	1970-01-01 00:00:00.000000000 +0000
+++ 12.7.7-0ubuntu2/tests/expected.cifsiostat-yk	2025-01-05 10:42:06.000000000 +0000
@@ -0,0 +1,10 @@
+Linux 1.2.3-TEST (SYSSTAT.TEST) 	06/01/20 	_x86_64_	(9 CPU)
+
+Filesystem                    rkB/s        wkB/s    rops/s    wops/s         fo/s         fc/s         fd/s
+\\addr\SHARED                  0.02         0.00      0.19      0.10         0.00         0.00         0.00
+\\server\share1                0.00         0.00      0.16      0.06         0.16         0.06         0.03
+
+Filesystem                    rkB/s        wkB/s    rops/s    wops/s         fo/s         fc/s         fd/s
+\\addr\SHARED                  0.00         0.00      0.00      0.00         0.10         0.19         0.16
+\\server\share1                0.03         0.02      0.29      0.38         0.32         0.32         0.32
+
diff -pruN 12.7.5-2/tests/expected.data-10.3.1 12.7.7-0ubuntu2/tests/expected.data-10.3.1
--- 12.7.5-2/tests/expected.data-10.3.1	2023-12-09 15:53:16.000000000 +0000
+++ 12.7.7-0ubuntu2/tests/expected.data-10.3.1	2024-01-20 15:13:17.000000000 +0000
@@ -1123,7 +1123,7 @@ Average:         0.00      0.00      0.0
 08:15:10         0.00      0.00      0.00      0.00
 Average:         0.00      0.00      0.00      0.00
 
-08:15:09     atmptf/s  estres/s retrans/s isegerr/s   orsts/s
+08:15:09     atmptf/s  estres/s retrseg/s isegerr/s   orsts/s
 08:15:10         0.00      0.00      0.00      0.00      0.00
 Average:         0.00      0.00      0.00      0.00      0.00
 
diff -pruN 12.7.5-2/tests/expected.data-11.6.5 12.7.7-0ubuntu2/tests/expected.data-11.6.5
--- 12.7.5-2/tests/expected.data-11.6.5	2023-12-09 15:53:16.000000000 +0000
+++ 12.7.7-0ubuntu2/tests/expected.data-11.6.5	2024-01-20 15:13:32.000000000 +0000
@@ -1147,7 +1147,7 @@ Average:         0.00      0.00      0.0
 Average:         0.00      0.00      0.04      0.02
 09:34:30     COM Hello, world!
 
-09:33:48     atmptf/s  estres/s retrans/s isegerr/s   orsts/s
+09:33:48     atmptf/s  estres/s retrseg/s isegerr/s   orsts/s
 09:34:34         0.00      0.00      0.00      0.00      0.00
 Average:         0.00      0.00      0.00      0.00      0.00
 09:34:30     COM Hello, world!
diff -pruN 12.7.5-2/tests/expected.data-11.6.5-sadf-x 12.7.7-0ubuntu2/tests/expected.data-11.6.5-sadf-x
--- 12.7.5-2/tests/expected.data-11.6.5-sadf-x	2023-12-09 15:53:16.000000000 +0000
+++ 12.7.7-0ubuntu2/tests/expected.data-11.6.5-sadf-x	2024-01-20 15:14:58.000000000 +0000
@@ -3,7 +3,7 @@
 xmlns="https://sysstat.github.io"
 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
 xsi:schemaLocation="https://sysstat.github.io https://sysstat.github.io/sysstat.xsd">
-	<sysdata-version>3.16</sysdata-version>
+	<sysdata-version>3.17</sysdata-version>
 	<host nodename="linux.home">
 		<sysname>Linux</sysname>
 		<release>4.17.18-200.fc28.x86_64</release>
diff -pruN 12.7.5-2/tests/expected.data-12.0.0 12.7.7-0ubuntu2/tests/expected.data-12.0.0
--- 12.7.5-2/tests/expected.data-12.0.0	2023-12-09 15:53:16.000000000 +0000
+++ 12.7.7-0ubuntu2/tests/expected.data-12.0.0	2024-01-20 15:13:43.000000000 +0000
@@ -163,7 +163,7 @@ Average:         0.00      0.00      0.0
 05:40:26     COM Hello world!
 Average:         0.00      0.00      0.00      0.00
 
-05:39:33     atmptf/s  estres/s retrans/s isegerr/s   orsts/s
+05:39:33     atmptf/s  estres/s retrseg/s isegerr/s   orsts/s
 05:39:34         0.00      0.00      0.00      0.00      0.00
 05:40:26     COM Hello world!
 Average:         0.00      0.00      0.00      0.00      0.00
diff -pruN 12.7.5-2/tests/expected.data-9.1.6 12.7.7-0ubuntu2/tests/expected.data-9.1.6
--- 12.7.5-2/tests/expected.data-9.1.6	2023-12-09 15:53:16.000000000 +0000
+++ 12.7.7-0ubuntu2/tests/expected.data-9.1.6	2024-01-20 15:12:57.000000000 +0000
@@ -655,7 +655,7 @@ Average:         0.00      0.00      0.0
 08:17:02         0.00      0.00      0.00      0.00
 Average:         0.00      0.00      0.00      0.00
 
-08:17:01     atmptf/s  estres/s retrans/s isegerr/s   orsts/s
+08:17:01     atmptf/s  estres/s retrseg/s isegerr/s   orsts/s
 08:17:02         0.00      0.00      0.00      0.00      0.00
 Average:         0.00      0.00      0.00      0.00      0.00
 
diff -pruN 12.7.5-2/tests/expected.data-ini 12.7.7-0ubuntu2/tests/expected.data-ini
--- 12.7.5-2/tests/expected.data-ini	2023-05-06 16:26:53.000000000 +0000
+++ 12.7.7-0ubuntu2/tests/expected.data-ini	2024-05-28 08:28:12.000000000 +0000
@@ -78,10 +78,10 @@ Average:         0.00      0.00      0.0
 
 13:20:09    kbmemfree   kbavail kbmemused  %memused kbbuffers  kbcached  kbcommit   %commit  kbactive   kbinact   kbdirty  kbanonpg    kbslab  kbkstack   kbpgtbl  kbvmused
 13:20:19      1437740   4389516   3179712     39.04    260172   2821596  12097852     48.54   4042384   1772396       396   2733164    445740     15328     73760         0
-13:20:29      1437740   4389516   3179712     39.04    260172   2821596  12097852     48.54   4042384   1772396       396   2733164    445740     15328     73760         0
+13:20:29      1437740   4389516   3179712     39.04    260172   2821596  30097852    120.77   4042384   1772396       396   2733164    445740     15328     73760         0
 13:20:39      1437740   4389516   3179712     39.04    260172   2821596  12097852     48.54   4042384   1772396       396   2733164    445740     15328     73760         0
 13:20:49      1437740   4389516   3179712     39.04    260172   2821596  12097852     48.54   4042384   1772396       396   2733164    445740     15328     73760         0
-Average:      1437740   4389516   3179712     39.04    260172   2821596  12097852     48.54   4042384   1772396       396   2733164    445740     15328     73760         0
+Average:      1437740   4389516   3179712     39.04    260172   2821596  16597852     66.60   4042384   1772396       396   2733164    445740     15328     73760         0
 
 13:20:09    kbswpfree kbswpused  %swpused  kbswpcad   %swpcad
 13:20:19     16777212         0      0.00         0      0.00
diff -pruN 12.7.5-2/tests/expected.data-wghfreq-sadf-x 12.7.7-0ubuntu2/tests/expected.data-wghfreq-sadf-x
--- 12.7.5-2/tests/expected.data-wghfreq-sadf-x	2023-12-09 15:53:16.000000000 +0000
+++ 12.7.7-0ubuntu2/tests/expected.data-wghfreq-sadf-x	2024-01-20 15:15:09.000000000 +0000
@@ -3,7 +3,7 @@
 xmlns="https://sysstat.github.io"
 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
 xsi:schemaLocation="https://sysstat.github.io https://sysstat.github.io/sysstat.xsd">
-	<sysdata-version>3.16</sysdata-version>
+	<sysdata-version>3.17</sysdata-version>
 	<host nodename="SYSSTAT.TEST">
 		<sysname>Linux</sysname>
 		<release>1.2.3-TEST</release>
diff -pruN 12.7.5-2/tests/expected.iostat-gpy 12.7.7-0ubuntu2/tests/expected.iostat-gpy
--- 12.7.5-2/tests/expected.iostat-gpy	2023-05-06 16:26:53.000000000 +0000
+++ 12.7.7-0ubuntu2/tests/expected.iostat-gpy	2024-11-23 16:25:33.000000000 +0000
@@ -1,6 +1,5 @@
 Linux 1.2.3-TEST (SYSSTAT.TEST) 	06/01/20 	_x86_64_	(9 CPU)
 
-
 avg-cpu:  %user   %nice %system %iowait  %steal   %idle
            2.15   12.50    2.35    0.12    0.00   82.89
 
diff -pruN 12.7.5-2/tests/expected.iostat-ym 12.7.7-0ubuntu2/tests/expected.iostat-ym
--- 12.7.5-2/tests/expected.iostat-ym	2023-05-06 16:26:53.000000000 +0000
+++ 12.7.7-0ubuntu2/tests/expected.iostat-ym	2024-11-23 16:24:36.000000000 +0000
@@ -1,6 +1,5 @@
 Linux 1.2.3-TEST (SYSSTAT.TEST) 	06/01/20 	_x86_64_	(9 CPU)
 
-
 avg-cpu:  %user   %nice %system %iowait  %steal   %idle
            2.15   12.50    2.35    0.12    0.00   82.89
 
diff -pruN 12.7.5-2/tests/expected.pidstat-At-ALL-JSON 12.7.7-0ubuntu2/tests/expected.pidstat-At-ALL-JSON
--- 12.7.5-2/tests/expected.pidstat-At-ALL-JSON	1970-01-01 00:00:00.000000000 +0000
+++ 12.7.7-0ubuntu2/tests/expected.pidstat-At-ALL-JSON	2024-12-22 14:01:28.000000000 +0000
@@ -0,0 +1,136 @@
+{"sysstat": {
+	"hosts": [
+		{
+			"nodename": "SYSSTAT.TEST",
+			"sysname": "Linux",
+			"release": "1.2.3-TEST",
+			"machine": "x86_64",
+			"number-of-cpus": 9,
+			"date": "06/01/20",
+			"statistics": [
+				{
+					"timestamp": "12:53:20",
+					"task-cpu-load": [
+						{"UID": "0", "TGID": "8407", "TID": "", "usr": 0.12, "system": 0.01, "guest": 0.00, "wait": 0.00, "cpu": 0.13, "cpu_nr": 1, "leader": "", "cmd": "gnome-terminal-"},
+						{"UID": "0", "TGID": "8407", "TID": "8407", "usr": 0.12, "system": 0.01, "guest": 0.00, "wait": 0.00, "cpu": 0.13, "cpu_nr": 1, "leader": "gnome-terminal-", "cmd": "gnome-terminal-"},
+						{"UID": "1000", "TGID": "8741", "TID": "", "usr": 0.97, "system": 0.28, "guest": 0.00, "wait": 0.01, "cpu": 1.25, "cpu_nr": 2, "leader": "", "cmd": "firefox"},
+						{"UID": "1000", "TGID": "8741", "TID": "8741", "usr": 0.40, "system": 0.08, "guest": 0.00, "wait": 0.01, "cpu": 0.48, "cpu_nr": 2, "leader": "firefox", "cmd": "firefox"},
+						{"UID": "1000", "TGID": "8741", "TID": "8785", "usr": 0.00, "system": 0.00, "guest": 0.00, "wait": 0.00, "cpu": 0.00, "cpu_nr": 3, "leader": "firefox", "cmd": "JS Helper"},
+						{"UID": "1000", "TGID": "8741", "TID": "8789", "usr": 0.00, "system": 0.00, "guest": 0.00, "wait": 0.00, "cpu": 0.00, "cpu_nr": 2, "leader": "firefox", "cmd": "Link Monitor"},
+						{"UID": "1000", "TGID": "8741", "TID": "8835", "usr": 0.00, "system": 0.00, "guest": 0.00, "wait": 0.00, "cpu": 0.00, "cpu_nr": 0, "leader": "firefox", "cmd": "ImgDecoder #1"},
+						{"UID": "1000", "TGID": "8741", "TID": "9109", "usr": 0.00, "system": 0.00, "guest": 0.00, "wait": 0.00, "cpu": 0.00, "cpu_nr": 7, "leader": "firefox", "cmd": "DOM Worker"},
+						{"UID": "1000", "TGID": "9009", "TID": "", "usr": 0.06, "system": 0.03, "guest": 0.00, "wait": 0.01, "cpu": 0.09, "cpu_nr": 3, "leader": "", "cmd": "WebExtensions"},
+						{"UID": "1000", "TGID": "9009", "TID": "9009", "usr": 0.05, "system": 0.01, "guest": 0.00, "wait": 0.01, "cpu": 0.06, "cpu_nr": 3, "leader": "WebExtensions", "cmd": "WebExtensions"},
+						{"UID": "1000", "TGID": "9009", "TID": "9029", "usr": 0.01, "system": 0.02, "guest": 0.00, "wait": 0.00, "cpu": 0.03, "cpu_nr": 2, "leader": "WebExtensions", "cmd": "Timer"},
+						{"UID": "1000", "TGID": "21342", "TID": "", "usr": 0.12, "system": 0.01, "guest": 0.00, "wait": 0.00, "cpu": 0.13, "cpu_nr": 5, "leader": "", "cmd": "soffice.bin"},
+						{"UID": "1000", "TGID": "21342", "TID": "21342", "usr": 0.12, "system": 0.01, "guest": 0.00, "wait": 0.00, "cpu": 0.12, "cpu_nr": 5, "leader": "soffice.bin", "cmd": "soffice.bin"},
+						{"UID": "1000", "TGID": "21342", "TID": "21344", "usr": 0.00, "system": 0.00, "guest": 0.00, "wait": 0.00, "cpu": 0.00, "cpu_nr": 5, "leader": "soffice.bin", "cmd": "rtl_cache_wsupd"},
+						{"UID": "1000", "TGID": "21342", "TID": "21350", "usr": 0.00, "system": 0.00, "guest": 0.00, "wait": 0.00, "cpu": 0.00, "cpu_nr": 4, "leader": "soffice.bin", "cmd": "gdbus"}
+					],
+					"task-memory": [
+						{"UID": "0", "TGID": "8407", "TID": "", "minflt/s": 3.07, "majflt/s": 0.00, "VSZ": 723868, "RSS": 42156, "MEM": 0.52, "leader": "", "cmd": "gnome-terminal-"},
+						{"UID": "0", "TGID": "8407", "TID": "8407", "minflt/s": 3.04, "majflt/s": 0.00, "VSZ": 723868, "RSS": 42156, "MEM": 0.52, "leader": "gnome-terminal-", "cmd": "gnome-terminal-"},
+						{"UID": "1000", "TGID": "8741", "TID": "", "minflt/s": 108.05, "majflt/s": 0.07, "VSZ": 2535728, "RSS": 335804, "MEM": 4.12, "leader": "", "cmd": "firefox"},
+						{"UID": "1000", "TGID": "8741", "TID": "8741", "minflt/s": 53.18, "majflt/s": 0.06, "VSZ": 2535728, "RSS": 335804, "MEM": 4.12, "leader": "firefox", "cmd": "firefox"},
+						{"UID": "1000", "TGID": "8741", "TID": "8785", "minflt/s": 0.93, "majflt/s": 0.00, "VSZ": 2535728, "RSS": 335804, "MEM": 4.12, "leader": "firefox", "cmd": "JS Helper"},
+						{"UID": "1000", "TGID": "8741", "TID": "8789", "minflt/s": 0.00, "majflt/s": 0.00, "VSZ": 2535728, "RSS": 335804, "MEM": 4.12, "leader": "firefox", "cmd": "Link Monitor"},
+						{"UID": "1000", "TGID": "8741", "TID": "8835", "minflt/s": 0.02, "majflt/s": 0.00, "VSZ": 2535728, "RSS": 335804, "MEM": 4.12, "leader": "firefox", "cmd": "ImgDecoder #1"},
+						{"UID": "1000", "TGID": "8741", "TID": "9109", "minflt/s": 0.37, "majflt/s": 0.00, "VSZ": 2535728, "RSS": 335804, "MEM": 4.12, "leader": "firefox", "cmd": "DOM Worker"},
+						{"UID": "1000", "TGID": "9009", "TID": "", "minflt/s": 3.44, "majflt/s": 0.00, "VSZ": 1744508, "RSS": 105628, "MEM": 1.30, "leader": "", "cmd": "WebExtensions"},
+						{"UID": "1000", "TGID": "9009", "TID": "9009", "minflt/s": 2.67, "majflt/s": 0.00, "VSZ": 1744508, "RSS": 105628, "MEM": 1.30, "leader": "WebExtensions", "cmd": "WebExtensions"},
+						{"UID": "1000", "TGID": "9009", "TID": "9029", "minflt/s": 0.00, "majflt/s": 0.00, "VSZ": 1744508, "RSS": 105628, "MEM": 1.30, "leader": "WebExtensions", "cmd": "Timer"},
+						{"UID": "1000", "TGID": "21342", "TID": "", "minflt/s": 19.46, "majflt/s": 0.14, "VSZ": 1790688, "RSS": 439484, "MEM": 5.40, "leader": "", "cmd": "soffice.bin"},
+						{"UID": "1000", "TGID": "21342", "TID": "21342", "minflt/s": 19.28, "majflt/s": 0.14, "VSZ": 1790688, "RSS": 439484, "MEM": 5.40, "leader": "soffice.bin", "cmd": "soffice.bin"},
+						{"UID": "1000", "TGID": "21342", "TID": "21344", "minflt/s": 0.00, "majflt/s": 0.00, "VSZ": 1790688, "RSS": 439484, "MEM": 5.40, "leader": "soffice.bin", "cmd": "rtl_cache_wsupd"},
+						{"UID": "1000", "TGID": "21342", "TID": "21350", "minflt/s": 0.00, "majflt/s": 0.00, "VSZ": 1790688, "RSS": 439484, "MEM": 5.40, "leader": "soffice.bin", "cmd": "gdbus"}
+					],
+					"stack": [
+						{"UID": "0", "TGID": "8407", "TID": "", "StkSize": 132, "StkRef": 120, "leader": "", "cmd": "gnome-terminal-"},
+						{"UID": "0", "TGID": "8407", "TID": "8407", "StkSize": 132, "StkRef": 120, "leader": "gnome-terminal-", "cmd": "gnome-terminal-"},
+						{"UID": "1000", "TGID": "8741", "TID": "", "StkSize": 132, "StkRef": 52, "leader": "", "cmd": "firefox"},
+						{"UID": "1000", "TGID": "8741", "TID": "8741", "StkSize": 132, "StkRef": 52, "leader": "firefox", "cmd": "firefox"},
+						{"UID": "1000", "TGID": "8741", "TID": "8785", "StkSize": 132, "StkRef": 52, "leader": "firefox", "cmd": "JS Helper"},
+						{"UID": "1000", "TGID": "8741", "TID": "8789", "StkSize": 132, "StkRef": 52, "leader": "firefox", "cmd": "Link Monitor"},
+						{"UID": "1000", "TGID": "8741", "TID": "8835", "StkSize": 132, "StkRef": 52, "leader": "firefox", "cmd": "ImgDecoder #1"},
+						{"UID": "1000", "TGID": "8741", "TID": "9109", "StkSize": 132, "StkRef": 52, "leader": "firefox", "cmd": "DOM Worker"},
+						{"UID": "1000", "TGID": "9009", "TID": "", "StkSize": 132, "StkRef": 20, "leader": "", "cmd": "WebExtensions"},
+						{"UID": "1000", "TGID": "9009", "TID": "9009", "StkSize": 132, "StkRef": 20, "leader": "WebExtensions", "cmd": "WebExtensions"},
+						{"UID": "1000", "TGID": "9009", "TID": "9029", "StkSize": 132, "StkRef": 20, "leader": "WebExtensions", "cmd": "Timer"},
+						{"UID": "1000", "TGID": "21342", "TID": "", "StkSize": 132, "StkRef": 36, "leader": "", "cmd": "soffice.bin"},
+						{"UID": "1000", "TGID": "21342", "TID": "21342", "StkSize": 132, "StkRef": 36, "leader": "soffice.bin", "cmd": "soffice.bin"},
+						{"UID": "1000", "TGID": "21342", "TID": "21344", "StkSize": 132, "StkRef": 36, "leader": "soffice.bin", "cmd": "rtl_cache_wsupd"},
+						{"UID": "1000", "TGID": "21342", "TID": "21350", "StkSize": 132, "StkRef": 36, "leader": "soffice.bin", "cmd": "gdbus"}
+					],
+					"io": [
+						{"UID": "0", "TGID": "8407", "TID": "", "kB_rd/s": 23.34, "kB_wr/s": 28.80, "kB_ccwr/s": 0.01, "iodelay": 58, "leader": "", "cmd": "gnome-terminal-"},
+						{"UID": "0", "TGID": "8407", "TID": "8407", "kB_rd/s": 0.27, "kB_wr/s": 0.00, "kB_ccwr/s": 0.00, "iodelay": 58, "leader": "gnome-terminal-", "cmd": "gnome-terminal-"},
+						{"UID": "1000", "TGID": "8741", "TID": "", "kB_rd/s": 28.50, "kB_wr/s": 31.74, "kB_ccwr/s": 4.81, "iodelay": 1146, "leader": "", "cmd": "firefox"},
+						{"UID": "1000", "TGID": "8741", "TID": "8741", "kB_rd/s": 10.58, "kB_wr/s": 0.04, "kB_ccwr/s": 0.00, "iodelay": 1146, "leader": "firefox", "cmd": "firefox"},
+						{"UID": "1000", "TGID": "8741", "TID": "8785", "kB_rd/s": 0.02, "kB_wr/s": 0.00, "kB_ccwr/s": 0.00, "iodelay": 5, "leader": "firefox", "cmd": "JS Helper"},
+						{"UID": "1000", "TGID": "8741", "TID": "8789", "kB_rd/s": 0.00, "kB_wr/s": 0.00, "kB_ccwr/s": 0.00, "iodelay": 0, "leader": "firefox", "cmd": "Link Monitor"},
+						{"UID": "1000", "TGID": "8741", "TID": "8835", "kB_rd/s": 0.00, "kB_wr/s": 0.00, "kB_ccwr/s": 0.00, "iodelay": 0, "leader": "firefox", "cmd": "ImgDecoder #1"},
+						{"UID": "1000", "TGID": "8741", "TID": "9109", "kB_rd/s": 0.02, "kB_wr/s": 0.05, "kB_ccwr/s": 0.00, "iodelay": 8, "leader": "firefox", "cmd": "DOM Worker"},
+						{"UID": "1000", "TGID": "9009", "TID": "", "kB_rd/s": 0.16, "kB_wr/s": 0.00, "kB_ccwr/s": 0.00, "iodelay": 69, "leader": "", "cmd": "WebExtensions"},
+						{"UID": "1000", "TGID": "9009", "TID": "9009", "kB_rd/s": 0.13, "kB_wr/s": 0.00, "kB_ccwr/s": 0.00, "iodelay": 69, "leader": "WebExtensions", "cmd": "WebExtensions"},
+						{"UID": "1000", "TGID": "9009", "TID": "9029", "kB_rd/s": 0.00, "kB_wr/s": 0.00, "kB_ccwr/s": 0.00, "iodelay": 0, "leader": "WebExtensions", "cmd": "Timer"},
+						{"UID": "1000", "TGID": "21342", "TID": "", "kB_rd/s": 24.47, "kB_wr/s": 4.65, "kB_ccwr/s": 0.00, "iodelay": 874, "leader": "", "cmd": "soffice.bin"},
+						{"UID": "1000", "TGID": "21342", "TID": "21342", "kB_rd/s": 24.45, "kB_wr/s": 0.04, "kB_ccwr/s": 0.00, "iodelay": 874, "leader": "soffice.bin", "cmd": "soffice.bin"},
+						{"UID": "1000", "TGID": "21342", "TID": "21344", "kB_rd/s": 0.00, "kB_wr/s": 0.00, "kB_ccwr/s": 0.00, "iodelay": 0, "leader": "soffice.bin", "cmd": "rtl_cache_wsupd"},
+						{"UID": "1000", "TGID": "21342", "TID": "21350", "kB_rd/s": 0.00, "kB_wr/s": 0.00, "kB_ccwr/s": 0.00, "iodelay": 0, "leader": "soffice.bin", "cmd": "gdbus"}
+					],
+					"context-switch": [
+						{"UID": "0", "TGID": "8407", "TID": "", "cswch/s": 4.99, "nvcswch/s": 0.06, "leader": "", "cmd": "gnome-terminal-"},
+						{"UID": "0", "TGID": "8407", "TID": "8407", "cswch/s": 4.99, "nvcswch/s": 0.06, "leader": "gnome-terminal-", "cmd": "gnome-terminal-"},
+						{"UID": "1000", "TGID": "8741", "TID": "", "cswch/s": 22.79, "nvcswch/s": 0.28, "leader": "", "cmd": "firefox"},
+						{"UID": "1000", "TGID": "8741", "TID": "8741", "cswch/s": 22.79, "nvcswch/s": 0.28, "leader": "firefox", "cmd": "firefox"},
+						{"UID": "1000", "TGID": "8741", "TID": "8785", "cswch/s": 0.12, "nvcswch/s": 0.00, "leader": "firefox", "cmd": "JS Helper"},
+						{"UID": "1000", "TGID": "8741", "TID": "8789", "cswch/s": 0.03, "nvcswch/s": 0.00, "leader": "firefox", "cmd": "Link Monitor"},
+						{"UID": "1000", "TGID": "8741", "TID": "8835", "cswch/s": 0.03, "nvcswch/s": 0.00, "leader": "firefox", "cmd": "ImgDecoder #1"},
+						{"UID": "1000", "TGID": "8741", "TID": "9109", "cswch/s": 0.04, "nvcswch/s": 0.00, "leader": "firefox", "cmd": "DOM Worker"},
+						{"UID": "1000", "TGID": "9009", "TID": "", "cswch/s": 3.36, "nvcswch/s": 0.06, "leader": "", "cmd": "WebExtensions"},
+						{"UID": "1000", "TGID": "9009", "TID": "9009", "cswch/s": 3.36, "nvcswch/s": 0.06, "leader": "WebExtensions", "cmd": "WebExtensions"},
+						{"UID": "1000", "TGID": "9009", "TID": "9029", "cswch/s": 6.75, "nvcswch/s": 0.01, "leader": "WebExtensions", "cmd": "Timer"},
+						{"UID": "1000", "TGID": "21342", "TID": "", "cswch/s": 0.81, "nvcswch/s": 0.05, "leader": "", "cmd": "soffice.bin"},
+						{"UID": "1000", "TGID": "21342", "TID": "21342", "cswch/s": 0.81, "nvcswch/s": 0.05, "leader": "soffice.bin", "cmd": "soffice.bin"},
+						{"UID": "1000", "TGID": "21342", "TID": "21344", "cswch/s": 0.03, "nvcswch/s": 0.00, "leader": "soffice.bin", "cmd": "rtl_cache_wsupd"},
+						{"UID": "1000", "TGID": "21342", "TID": "21350", "cswch/s": 0.01, "nvcswch/s": 0.00, "leader": "soffice.bin", "cmd": "gdbus"}
+					],
+					"kernel": [
+						{"UID": "0", "TGID": "8407", "TID": "", "threads": 4, "fd-nr": 5, "leader": "", "cmd": "gnome-terminal-"},
+						{"UID": "0", "TGID": "8407", "TID": "8407", "threads": 4, "fd-nr": 5, "leader": "gnome-terminal-", "cmd": "gnome-terminal-"},
+						{"UID": "1000", "TGID": "8741", "TID": "", "threads": 67, "fd-nr": 5, "leader": "", "cmd": "firefox"},
+						{"UID": "1000", "TGID": "8741", "TID": "8741", "threads": 67, "fd-nr": 5, "leader": "firefox", "cmd": "firefox"},
+						{"UID": "1000", "TGID": "8741", "TID": "8785", "threads": 67, "fd-nr": 5, "leader": "firefox", "cmd": "JS Helper"},
+						{"UID": "1000", "TGID": "8741", "TID": "8789", "threads": 67, "fd-nr": 5, "leader": "firefox", "cmd": "Link Monitor"},
+						{"UID": "1000", "TGID": "8741", "TID": "8835", "threads": 67, "fd-nr": 5, "leader": "firefox", "cmd": "ImgDecoder #1"},
+						{"UID": "1000", "TGID": "8741", "TID": "9109", "threads": 67, "fd-nr": 5, "leader": "firefox", "cmd": "DOM Worker"},
+						{"UID": "1000", "TGID": "9009", "TID": "", "threads": 32, "fd-nr": 5, "leader": "", "cmd": "WebExtensions"},
+						{"UID": "1000", "TGID": "9009", "TID": "9009", "threads": 32, "fd-nr": 5, "leader": "WebExtensions", "cmd": "WebExtensions"},
+						{"UID": "1000", "TGID": "9009", "TID": "9029", "threads": 32, "fd-nr": 5, "leader": "WebExtensions", "cmd": "Timer"},
+						{"UID": "1000", "TGID": "21342", "TID": "", "threads": 6, "fd-nr": 5, "leader": "", "cmd": "soffice.bin"},
+						{"UID": "1000", "TGID": "21342", "TID": "21342", "threads": 6, "fd-nr": 5, "leader": "soffice.bin", "cmd": "soffice.bin"},
+						{"UID": "1000", "TGID": "21342", "TID": "21344", "threads": 6, "fd-nr": 5, "leader": "soffice.bin", "cmd": "rtl_cache_wsupd"},
+						{"UID": "1000", "TGID": "21342", "TID": "21350", "threads": 6, "fd-nr": 5, "leader": "soffice.bin", "cmd": "gdbus"}
+					],
+					"realtime": [
+						{"UID": "0", "TGID": "8407", "TID": "", "prio": 0, "policy": "NORMAL", "leader": "", "cmd": "gnome-terminal-"},
+						{"UID": "0", "TGID": "8407", "TID": "8407", "prio": 0, "policy": "NORMAL", "leader": "gnome-terminal-", "cmd": "gnome-terminal-"},
+						{"UID": "1000", "TGID": "8741", "TID": "", "prio": 0, "policy": "NORMAL", "leader": "", "cmd": "firefox"},
+						{"UID": "1000", "TGID": "8741", "TID": "8741", "prio": 0, "policy": "NORMAL", "leader": "firefox", "cmd": "firefox"},
+						{"UID": "1000", "TGID": "8741", "TID": "8785", "prio": 0, "policy": "NORMAL", "leader": "firefox", "cmd": "JS Helper"},
+						{"UID": "1000", "TGID": "8741", "TID": "8789", "prio": 0, "policy": "NORMAL", "leader": "firefox", "cmd": "Link Monitor"},
+						{"UID": "1000", "TGID": "8741", "TID": "8835", "prio": 0, "policy": "NORMAL", "leader": "firefox", "cmd": "ImgDecoder #1"},
+						{"UID": "1000", "TGID": "8741", "TID": "9109", "prio": 0, "policy": "NORMAL", "leader": "firefox", "cmd": "DOM Worker"},
+						{"UID": "1000", "TGID": "9009", "TID": "", "prio": 0, "policy": "NORMAL", "leader": "", "cmd": "WebExtensions"},
+						{"UID": "1000", "TGID": "9009", "TID": "9009", "prio": 0, "policy": "NORMAL", "leader": "WebExtensions", "cmd": "WebExtensions"},
+						{"UID": "1000", "TGID": "9009", "TID": "9029", "prio": 0, "policy": "NORMAL", "leader": "WebExtensions", "cmd": "Timer"},
+						{"UID": "1000", "TGID": "21342", "TID": "", "prio": 0, "policy": "NORMAL", "leader": "", "cmd": "soffice.bin"},
+						{"UID": "1000", "TGID": "21342", "TID": "21342", "prio": 0, "policy": "NORMAL", "leader": "soffice.bin", "cmd": "soffice.bin"},
+						{"UID": "1000", "TGID": "21342", "TID": "21344", "prio": 0, "policy": "NORMAL", "leader": "soffice.bin", "cmd": "rtl_cache_wsupd"},
+						{"UID": "1000", "TGID": "21342", "TID": "21350", "prio": 0, "policy": "NORMAL", "leader": "soffice.bin", "cmd": "gdbus"}
+					]
+				}
+			]
+		}
+	]
+}}
diff -pruN 12.7.5-2/tests/expected.sa2 12.7.7-0ubuntu2/tests/expected.sa2
--- 12.7.5-2/tests/expected.sa2	2023-12-09 15:53:16.000000000 +0000
+++ 12.7.7-0ubuntu2/tests/expected.sa2	2024-05-28 08:19:37.000000000 +0000
@@ -38,8 +38,8 @@ Average:         0.00      0.00      0.0
 Average:        56.63     41.26      8.96      6.40     17.16     20.81     32.01
 
 13:20:29    kbmemfree   kbavail kbmemused  %memused kbbuffers  kbcached  kbcommit   %commit  kbactive   kbinact   kbdirty  kbanonpg    kbslab  kbkstack   kbpgtbl  kbvmused
-13:20:49      1437740   4389516   3179712     39.04    260172   2821596  12097852     48.54   4042384   1772396       396   2733164    445740     15328     73760         0
-Average:      1437740   4389516   3179712     39.04    260172   2821596  12097852     48.54   4042384   1772396       396   2733164    445740     15328     73760         0
+13:20:49      1437740   4389516   3179712     39.04    260172   2821596  30097852    120.77   4042384   1772396       396   2733164    445740     15328     73760         0
+Average:      1437740   4389516   3179712     39.04    260172   2821596  30097852    120.77   4042384   1772396       396   2733164    445740     15328     73760         0
 
 13:20:29    kbswpfree kbswpused  %swpused  kbswpcad   %swpcad
 13:20:49     16777212         0      0.00         0      0.00
diff -pruN 12.7.5-2/tests/expected.sadf-d 12.7.7-0ubuntu2/tests/expected.sadf-d
--- 12.7.5-2/tests/expected.sadf-d	2023-12-09 15:53:16.000000000 +0000
+++ 12.7.7-0ubuntu2/tests/expected.sadf-d	2024-05-28 08:20:25.000000000 +0000
@@ -234,7 +234,7 @@ SYSSTAT.TEST;39;2019-04-18 13:20:39 UTC;
 SYSSTAT.TEST;22;2019-04-18 13:20:49 UTC;136.22;85.80;5.85;44.57;4497.45;48.24;214.83
 # hostname;interval;timestamp;kbmemfree;kbavail;kbmemused;%memused;kbbuffers;kbcached;kbcommit;%commit;kbactive;kbinact;kbdirty;kbanonpg;kbslab;kbkstack;kbpgtbl;kbvmused
 SYSSTAT.TEST;31;2019-04-18 13:20:19 UTC;1437740;4389516;3179712;39.04;260172;2821596;12097852;48.54;4042384;1772396;396;2733164;445740;15328;73760;0
-SYSSTAT.TEST;31;2019-04-18 13:20:29 UTC;1437740;4389516;3179712;39.04;260172;2821596;12097852;48.54;4042384;1772396;396;2733164;445740;15328;73760;0
+SYSSTAT.TEST;31;2019-04-18 13:20:29 UTC;1437740;4389516;3179712;39.04;260172;2821596;30097852;120.77;4042384;1772396;396;2733164;445740;15328;73760;0
 SYSSTAT.TEST;39;2019-04-18 13:20:39 UTC;1437740;4389516;3179712;39.04;260172;2821596;12097852;48.54;4042384;1772396;396;2733164;445740;15328;73760;0
 SYSSTAT.TEST;22;2019-04-18 13:20:49 UTC;1437740;4389516;3179712;39.04;260172;2821596;12097852;48.54;4042384;1772396;396;2733164;445740;15328;73760;0
 # hostname;interval;timestamp;kbswpfree;kbswpused;%swpused;kbswpcad;%swpcad
@@ -430,7 +430,7 @@ SYSSTAT.TEST;31;2019-04-18 13:20:19 UTC;
 SYSSTAT.TEST;31;2019-04-18 13:20:29 UTC;0.00;0.00;0.00;0.00
 SYSSTAT.TEST;39;2019-04-18 13:20:39 UTC;0.00;0.00;0.00;0.00
 SYSSTAT.TEST;22;2019-04-18 13:20:49 UTC;0.00;0.00;0.00;0.00
-# hostname;interval;timestamp;atmptf/s;estres/s;retrans/s;isegerr/s;orsts/s
+# hostname;interval;timestamp;atmptf/s;estres/s;retrseg/s;isegerr/s;orsts/s
 SYSSTAT.TEST;31;2019-04-18 13:20:19 UTC;0.00;0.00;0.00;0.00;0.00
 SYSSTAT.TEST;31;2019-04-18 13:20:29 UTC;0.00;0.00;0.00;0.00;0.00
 SYSSTAT.TEST;39;2019-04-18 13:20:39 UTC;0.00;0.00;0.00;0.00;0.00
@@ -734,7 +734,7 @@ SYSSTAT.TEST;31;2019-04-18 13:54:35 UTC;
 SYSSTAT.TEST;31;2019-04-18 13:54:35 UTC;0.00;0.00;0.00;0.00;0.00;0.00;0.00;0.00;0.00;0.00;0.00;0.00
 # hostname;interval;timestamp;active/s;passive/s;iseg/s;oseg/s
 SYSSTAT.TEST;31;2019-04-18 13:54:35 UTC;0.00;0.00;0.00;0.00
-# hostname;interval;timestamp;atmptf/s;estres/s;retrans/s;isegerr/s;orsts/s
+# hostname;interval;timestamp;atmptf/s;estres/s;retrseg/s;isegerr/s;orsts/s
 SYSSTAT.TEST;31;2019-04-18 13:54:35 UTC;0.00;0.00;0.00;0.00;0.00
 # hostname;interval;timestamp;idgm/s;odgm/s;noport/s;idgmerr/s
 SYSSTAT.TEST;31;2019-04-18 13:54:35 UTC;0.00;0.00;0.00;0.00
diff -pruN 12.7.5-2/tests/expected.sadf-g 12.7.7-0ubuntu2/tests/expected.sadf-g
--- 12.7.5-2/tests/expected.sadf-g	2023-12-09 15:53:16.000000000 +0000
+++ 12.7.7-0ubuntu2/tests/expected.sadf-g	2024-05-28 08:23:37.000000000 +0000
@@ -1247,15 +1247,15 @@
 <polyline points="70,670 70,870 790,870" style="fill: #000000; stroke: #ffffff; stroke-width: 2"/>
 <text x="795" y="670" style="fill: #e85f00; stroke: none; font-size: 12px">MBbuffers (254.07, 254.07)</text>
 <text x="795" y="685" style="fill: #0000ff; stroke: none; font-size: 12px">MBcached (2755.46, 2755.46)</text>
-<text x="795" y="700" style="fill: #006020; stroke: none; font-size: 12px">MBcommit (11814.31, 11814.31)</text>
+<text x="795" y="700" style="fill: #006020; stroke: none; font-size: 12px">MBcommit (11814.31, 29392.43)</text>
 <g transform="translate(70,870)">
 <text x="0" y="0" style="fill: #ffffff; stroke: none; font-size: 12px; text-anchor: end">0.</text>
-<polyline points="0,3000.00 720,3000.00" style="vector-effect: non-scaling-stroke; stroke: #202020" transform="scale(1,-0.016929)"/>
-<text x="0" y="-50" style="fill: #ffffff; stroke: none; font-size: 12px; text-anchor: end">3000.</text>
-<polyline points="0,6000.00 720,6000.00" style="vector-effect: non-scaling-stroke; stroke: #202020" transform="scale(1,-0.016929)"/>
-<text x="0" y="-101" style="fill: #ffffff; stroke: none; font-size: 12px; text-anchor: end">6000.</text>
-<polyline points="0,9000.00 720,9000.00" style="vector-effect: non-scaling-stroke; stroke: #202020" transform="scale(1,-0.016929)"/>
-<text x="0" y="-152" style="fill: #ffffff; stroke: none; font-size: 12px; text-anchor: end">9000.</text>
+<polyline points="0,9000.00 720,9000.00" style="vector-effect: non-scaling-stroke; stroke: #202020" transform="scale(1,-0.006804)"/>
+<text x="0" y="-61" style="fill: #ffffff; stroke: none; font-size: 12px; text-anchor: end">9000.</text>
+<polyline points="0,18000.00 720,18000.00" style="vector-effect: non-scaling-stroke; stroke: #202020" transform="scale(1,-0.006804)"/>
+<text x="0" y="-122" style="fill: #ffffff; stroke: none; font-size: 12px; text-anchor: end">18000.</text>
+<polyline points="0,27000.00 720,27000.00" style="vector-effect: non-scaling-stroke; stroke: #202020" transform="scale(1,-0.006804)"/>
+<text x="0" y="-183" style="fill: #ffffff; stroke: none; font-size: 12px; text-anchor: end">27000.</text>
 <polyline points="0,0 0,-200" style="vector-effect: non-scaling-stroke; stroke: #202020" transform="scale(0.348500,1)"/>
 <text x="0" y="10" style="fill: #ffffff; stroke: none; font-size: 12px; text-anchor: start" transform="rotate(45,0,0)">13:20:09</text>
 <polyline points="206,0 206,-200" style="vector-effect: non-scaling-stroke; stroke: #202020" transform="scale(0.348500,1)"/>
@@ -1279,26 +1279,26 @@
 <polyline points="2060,0 2060,-200" style="vector-effect: non-scaling-stroke; stroke: #202020" transform="scale(0.348500,1)"/>
 <text x="717" y="10" style="fill: #ffffff; stroke: none; font-size: 12px; text-anchor: start" transform="rotate(45,717,0)">13:54:29</text>
 <text x="-10" y="30" style="fill: #ffff00; stroke: none; font-size: 12px; text-anchor: end">UTC</text>
-<path d=" M10,254.07 L20,254.07 L30,254.07 L40,254.07 M2066,254.07" style="vector-effect: non-scaling-stroke; stroke: #e85f00; stroke-width: 1; fill-opacity: 0" transform="scale(0.348500,-0.016929)"/>
-<path d=" M10,2755.46 L20,2755.46 L30,2755.46 L40,2755.46 M2066,2755.46" style="vector-effect: non-scaling-stroke; stroke: #0000ff; stroke-width: 1; fill-opacity: 0" transform="scale(0.348500,-0.016929)"/>
-<path d=" M10,11814.31 L20,11814.31 L30,11814.31 L40,11814.31 M2066,11814.31" style="vector-effect: non-scaling-stroke; stroke: #006020; stroke-width: 1; fill-opacity: 0" transform="scale(0.348500,-0.016929)"/>
+<path d=" M10,254.07 L20,254.07 L30,254.07 L40,254.07 M2066,254.07" style="vector-effect: non-scaling-stroke; stroke: #e85f00; stroke-width: 1; fill-opacity: 0" transform="scale(0.348500,-0.006804)"/>
+<path d=" M10,2755.46 L20,2755.46 L30,2755.46 L40,2755.46 M2066,2755.46" style="vector-effect: non-scaling-stroke; stroke: #0000ff; stroke-width: 1; fill-opacity: 0" transform="scale(0.348500,-0.006804)"/>
+<path d=" M10,11814.31 L20,29392.43 L30,11814.31 L40,11814.31 M2066,11814.31" style="vector-effect: non-scaling-stroke; stroke: #006020; stroke-width: 1; fill-opacity: 0" transform="scale(0.348500,-0.006804)"/>
 </g>
 <rect x="0" y="930" height="300" width="1050" fill="#000000"/>
 <text x="0" y="950" style="fill: #ffff00; stroke: none">Memory utilization (4)
 <tspan x="795" y="955" style="fill: #ffff00; stroke: none; font-size: 12px">(Min, Max values)</tspan>
 </text>
 <polyline points="70,980 70,1180 790,1180" style="fill: #000000; stroke: #ffffff; stroke-width: 2"/>
-<text x="795" y="980" style="fill: #7030a0; stroke: none; font-size: 12px">%commit (48.54, 48.54)</text>
+<text x="795" y="980" style="fill: #7030a0; stroke: none; font-size: 12px">%commit (48.54, 120.77)</text>
 <g transform="translate(70,1180)">
 <text x="0" y="0" style="fill: #ffffff; stroke: none; font-size: 12px; text-anchor: end">0.</text>
-<polyline points="0,25.00 720,25.00" style="vector-effect: non-scaling-stroke; stroke: #202020" transform="scale(1,-2.000000)"/>
-<text x="0" y="-50" style="fill: #ffffff; stroke: none; font-size: 12px; text-anchor: end">25.</text>
-<polyline points="0,50.00 720,50.00" style="vector-effect: non-scaling-stroke; stroke: #202020" transform="scale(1,-2.000000)"/>
-<text x="0" y="-100" style="fill: #ffffff; stroke: none; font-size: 12px; text-anchor: end">50.</text>
-<polyline points="0,75.00 720,75.00" style="vector-effect: non-scaling-stroke; stroke: #202020" transform="scale(1,-2.000000)"/>
-<text x="0" y="-150" style="fill: #ffffff; stroke: none; font-size: 12px; text-anchor: end">75.</text>
-<polyline points="0,100.00 720,100.00" style="vector-effect: non-scaling-stroke; stroke: #202020" transform="scale(1,-2.000000)"/>
-<text x="0" y="-200" style="fill: #ffffff; stroke: none; font-size: 12px; text-anchor: end">100.</text>
+<polyline points="0,25.00 720,25.00" style="vector-effect: non-scaling-stroke; stroke: #202020" transform="scale(1,-1.656076)"/>
+<text x="0" y="-41" style="fill: #ffffff; stroke: none; font-size: 12px; text-anchor: end">25.</text>
+<polyline points="0,50.00 720,50.00" style="vector-effect: non-scaling-stroke; stroke: #202020" transform="scale(1,-1.656076)"/>
+<text x="0" y="-82" style="fill: #ffffff; stroke: none; font-size: 12px; text-anchor: end">50.</text>
+<polyline points="0,75.00 720,75.00" style="vector-effect: non-scaling-stroke; stroke: #202020" transform="scale(1,-1.656076)"/>
+<text x="0" y="-124" style="fill: #ffffff; stroke: none; font-size: 12px; text-anchor: end">75.</text>
+<polyline points="0,100.00 720,100.00" style="vector-effect: non-scaling-stroke; stroke: #202020" transform="scale(1,-1.656076)"/>
+<text x="0" y="-165" style="fill: #ffffff; stroke: none; font-size: 12px; text-anchor: end">100.</text>
 <polyline points="0,0 0,-200" style="vector-effect: non-scaling-stroke; stroke: #202020" transform="scale(0.348500,1)"/>
 <text x="0" y="10" style="fill: #ffffff; stroke: none; font-size: 12px; text-anchor: start" transform="rotate(45,0,0)">13:20:09</text>
 <polyline points="206,0 206,-200" style="vector-effect: non-scaling-stroke; stroke: #202020" transform="scale(0.348500,1)"/>
@@ -1322,8 +1322,8 @@
 <polyline points="2060,0 2060,-200" style="vector-effect: non-scaling-stroke; stroke: #202020" transform="scale(0.348500,1)"/>
 <text x="717" y="10" style="fill: #ffffff; stroke: none; font-size: 12px; text-anchor: start" transform="rotate(45,717,0)">13:54:29</text>
 <text x="-10" y="30" style="fill: #ffff00; stroke: none; font-size: 12px; text-anchor: end">UTC</text>
-<g style="fill: #7030a0; stroke: none" transform="scale(0.348500,-2.000000)">
-<rect x="0" y="0.00" height="48.54" width="31"/><rect x="0" y="0.00" height="48.54" width="31"/><rect x="0" y="0.00" height="48.54" width="39"/><rect x="18" y="0.00" height="48.54" width="22"/><rect x="2035" y="0.00" height="48.54" width="31"/>
+<g style="fill: #7030a0; stroke: none" transform="scale(0.348500,-1.656076)">
+<rect x="0" y="0.00" height="48.54" width="31"/><rect x="0" y="0.00" height="120.77" width="31"/><rect x="0" y="0.00" height="48.54" width="39"/><rect x="18" y="0.00" height="48.54" width="22"/><rect x="2035" y="0.00" height="48.54" width="31"/>
 </g>
 </g>
 <rect x="0" y="1240" height="300" width="1050" fill="#000000"/>
@@ -11399,7 +11399,7 @@
 <tspan x="795" y="335" style="fill: #ffff00; stroke: none; font-size: 12px">(Min, Max values)</tspan>
 </text>
 <polyline points="70,360 70,560 790,560" style="fill: #000000; stroke: #ffffff; stroke-width: 2"/>
-<text x="795" y="360" style="fill: #00ffff; stroke: none; font-size: 12px">retrans/s (0.00, 0.00)</text>
+<text x="795" y="360" style="fill: #00ffff; stroke: none; font-size: 12px">retrseg/s (0.00, 0.00)</text>
 <text x="795" y="375" style="fill: #ff0000; stroke: none; font-size: 12px">isegerr/s (0.00, 0.00)</text>
 <text x="795" y="390" style="fill: #e85f00; stroke: none; font-size: 12px">orsts/s (0.00, 0.00)</text>
 <g transform="translate(70,560)">
diff -pruN 12.7.5-2/tests/expected.sadf-g-CPUoff 12.7.7-0ubuntu2/tests/expected.sadf-g-CPUoff
--- 12.7.5-2/tests/expected.sadf-g-CPUoff	1970-01-01 00:00:00.000000000 +0000
+++ 12.7.7-0ubuntu2/tests/expected.sadf-g-CPUoff	2024-06-02 12:09:23.000000000 +0000
@@ -0,0 +1,132 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<svg xmlns="http://www.w3.org/2000/svg" width="1060" height="990" fill="black" stroke="#808080" stroke-width="1">
+<text x="0" y="30" text-anchor="start" stroke="#a52a2a">Linux 1.2.3-TEST (SYSSTAT.TEST) 	04/18/19 	_x86_64_	(9 CPU)
+</text>
+<g id="g39-0" transform="translate(0,60)">
+<rect x="0" y="0" height="300" width="1050" fill="#000000"/>
+<text x="0" y="20" style="fill: #ffff00; stroke: none">Software-based network processing statistics (1) [all]
+<tspan x="795" y="25" style="fill: #ffff00; stroke: none; font-size: 12px">(Min, Max values)</tspan>
+</text>
+<polyline points="70,50 70,250 790,250" style="fill: #000000; stroke: #ffffff; stroke-width: 2"/>
+<text x="795" y="50" style="fill: #00cc00; stroke: none; font-size: 12px">total/s (0.00, 0.00)</text>
+<text x="795" y="65" style="fill: #ff00bf; stroke: none; font-size: 12px">dropd/s (0.00, 0.00)</text>
+<g transform="translate(70,250)">
+<text x="0" y="0" style="fill: #ffffff; stroke: none; font-size: 12px; text-anchor: end">0.00.</text>
+<polyline points="0,0.33 720,0.33" style="vector-effect: non-scaling-stroke; stroke: #202020" transform="scale(1,-200.000000)"/>
+<text x="0" y="-66" style="fill: #ffffff; stroke: none; font-size: 12px; text-anchor: end">0.33.</text>
+<polyline points="0,0.67 720,0.67" style="vector-effect: non-scaling-stroke; stroke: #202020" transform="scale(1,-200.000000)"/>
+<text x="0" y="-134" style="fill: #ffffff; stroke: none; font-size: 12px; text-anchor: end">0.67.</text>
+<polyline points="0,1.00 720,1.00" style="vector-effect: non-scaling-stroke; stroke: #202020" transform="scale(1,-200.000000)"/>
+<text x="0" y="-200" style="fill: #ffffff; stroke: none; font-size: 12px; text-anchor: end">1.00.</text>
+<polyline points="0,0 0,-200" style="vector-effect: non-scaling-stroke; stroke: #202020" transform="scale(72.000000,1)"/>
+<text x="0" y="10" style="fill: #ffffff; stroke: none; font-size: 12px; text-anchor: start" transform="rotate(45,0,0)">13:20:19</text>
+<polyline points="1,0 1,-200" style="vector-effect: non-scaling-stroke; stroke: #202020" transform="scale(72.000000,1)"/>
+<text x="72" y="10" style="fill: #ffffff; stroke: none; font-size: 12px; text-anchor: start" transform="rotate(45,72,0)">13:20:20</text>
+<polyline points="2,0 2,-200" style="vector-effect: non-scaling-stroke; stroke: #202020" transform="scale(72.000000,1)"/>
+<text x="144" y="10" style="fill: #ffffff; stroke: none; font-size: 12px; text-anchor: start" transform="rotate(45,144,0)">13:20:21</text>
+<polyline points="3,0 3,-200" style="vector-effect: non-scaling-stroke; stroke: #202020" transform="scale(72.000000,1)"/>
+<text x="216" y="10" style="fill: #ffffff; stroke: none; font-size: 12px; text-anchor: start" transform="rotate(45,216,0)">13:20:22</text>
+<polyline points="4,0 4,-200" style="vector-effect: non-scaling-stroke; stroke: #202020" transform="scale(72.000000,1)"/>
+<text x="288" y="10" style="fill: #ffffff; stroke: none; font-size: 12px; text-anchor: start" transform="rotate(45,288,0)">13:20:23</text>
+<polyline points="5,0 5,-200" style="vector-effect: non-scaling-stroke; stroke: #202020" transform="scale(72.000000,1)"/>
+<text x="360" y="10" style="fill: #ffffff; stroke: none; font-size: 12px; text-anchor: start" transform="rotate(45,360,0)">13:20:24</text>
+<polyline points="6,0 6,-200" style="vector-effect: non-scaling-stroke; stroke: #202020" transform="scale(72.000000,1)"/>
+<text x="432" y="10" style="fill: #ffffff; stroke: none; font-size: 12px; text-anchor: start" transform="rotate(45,432,0)">13:20:25</text>
+<polyline points="7,0 7,-200" style="vector-effect: non-scaling-stroke; stroke: #202020" transform="scale(72.000000,1)"/>
+<text x="504" y="10" style="fill: #ffffff; stroke: none; font-size: 12px; text-anchor: start" transform="rotate(45,504,0)">13:20:26</text>
+<polyline points="8,0 8,-200" style="vector-effect: non-scaling-stroke; stroke: #202020" transform="scale(72.000000,1)"/>
+<text x="576" y="10" style="fill: #ffffff; stroke: none; font-size: 12px; text-anchor: start" transform="rotate(45,576,0)">13:20:27</text>
+<polyline points="9,0 9,-200" style="vector-effect: non-scaling-stroke; stroke: #202020" transform="scale(72.000000,1)"/>
+<text x="648" y="10" style="fill: #ffffff; stroke: none; font-size: 12px; text-anchor: start" transform="rotate(45,648,0)">13:20:28</text>
+<polyline points="10,0 10,-200" style="vector-effect: non-scaling-stroke; stroke: #202020" transform="scale(72.000000,1)"/>
+<text x="720" y="10" style="fill: #ffffff; stroke: none; font-size: 12px; text-anchor: start" transform="rotate(45,720,0)">13:20:29</text>
+<text x="-10" y="30" style="fill: #ffff00; stroke: none; font-size: 12px; text-anchor: end">UTC</text>
+<path d=" M10,0.00" style="vector-effect: non-scaling-stroke; stroke: #00cc00; stroke-width: 1; fill-opacity: 0" transform="scale(72.000000,-200.000000)"/>
+<path d=" M10,0.00" style="vector-effect: non-scaling-stroke; stroke: #ff00bf; stroke-width: 1; fill-opacity: 0" transform="scale(72.000000,-200.000000)"/>
+</g>
+<rect x="0" y="310" height="300" width="1050" fill="#000000"/>
+<text x="0" y="330" style="fill: #ffff00; stroke: none">Software-based network processing statistics (2) [all]
+<tspan x="795" y="335" style="fill: #ffff00; stroke: none; font-size: 12px">(Min, Max values)</tspan>
+</text>
+<polyline points="70,360 70,560 790,560" style="fill: #000000; stroke: #ffffff; stroke-width: 2"/>
+<text x="795" y="360" style="fill: #00ffff; stroke: none; font-size: 12px">squeezd/s (0.00, 0.00)</text>
+<text x="795" y="375" style="fill: #ff0000; stroke: none; font-size: 12px">rx_rps/s (0.00, 0.00)</text>
+<text x="795" y="390" style="fill: #e85f00; stroke: none; font-size: 12px">flw_lim/s (0.00, 0.00)</text>
+<g transform="translate(70,560)">
+<text x="0" y="0" style="fill: #ffffff; stroke: none; font-size: 12px; text-anchor: end">0.00.</text>
+<polyline points="0,0.33 720,0.33" style="vector-effect: non-scaling-stroke; stroke: #202020" transform="scale(1,-200.000000)"/>
+<text x="0" y="-66" style="fill: #ffffff; stroke: none; font-size: 12px; text-anchor: end">0.33.</text>
+<polyline points="0,0.67 720,0.67" style="vector-effect: non-scaling-stroke; stroke: #202020" transform="scale(1,-200.000000)"/>
+<text x="0" y="-134" style="fill: #ffffff; stroke: none; font-size: 12px; text-anchor: end">0.67.</text>
+<polyline points="0,1.00 720,1.00" style="vector-effect: non-scaling-stroke; stroke: #202020" transform="scale(1,-200.000000)"/>
+<text x="0" y="-200" style="fill: #ffffff; stroke: none; font-size: 12px; text-anchor: end">1.00.</text>
+<polyline points="0,0 0,-200" style="vector-effect: non-scaling-stroke; stroke: #202020" transform="scale(72.000000,1)"/>
+<text x="0" y="10" style="fill: #ffffff; stroke: none; font-size: 12px; text-anchor: start" transform="rotate(45,0,0)">13:20:19</text>
+<polyline points="1,0 1,-200" style="vector-effect: non-scaling-stroke; stroke: #202020" transform="scale(72.000000,1)"/>
+<text x="72" y="10" style="fill: #ffffff; stroke: none; font-size: 12px; text-anchor: start" transform="rotate(45,72,0)">13:20:20</text>
+<polyline points="2,0 2,-200" style="vector-effect: non-scaling-stroke; stroke: #202020" transform="scale(72.000000,1)"/>
+<text x="144" y="10" style="fill: #ffffff; stroke: none; font-size: 12px; text-anchor: start" transform="rotate(45,144,0)">13:20:21</text>
+<polyline points="3,0 3,-200" style="vector-effect: non-scaling-stroke; stroke: #202020" transform="scale(72.000000,1)"/>
+<text x="216" y="10" style="fill: #ffffff; stroke: none; font-size: 12px; text-anchor: start" transform="rotate(45,216,0)">13:20:22</text>
+<polyline points="4,0 4,-200" style="vector-effect: non-scaling-stroke; stroke: #202020" transform="scale(72.000000,1)"/>
+<text x="288" y="10" style="fill: #ffffff; stroke: none; font-size: 12px; text-anchor: start" transform="rotate(45,288,0)">13:20:23</text>
+<polyline points="5,0 5,-200" style="vector-effect: non-scaling-stroke; stroke: #202020" transform="scale(72.000000,1)"/>
+<text x="360" y="10" style="fill: #ffffff; stroke: none; font-size: 12px; text-anchor: start" transform="rotate(45,360,0)">13:20:24</text>
+<polyline points="6,0 6,-200" style="vector-effect: non-scaling-stroke; stroke: #202020" transform="scale(72.000000,1)"/>
+<text x="432" y="10" style="fill: #ffffff; stroke: none; font-size: 12px; text-anchor: start" transform="rotate(45,432,0)">13:20:25</text>
+<polyline points="7,0 7,-200" style="vector-effect: non-scaling-stroke; stroke: #202020" transform="scale(72.000000,1)"/>
+<text x="504" y="10" style="fill: #ffffff; stroke: none; font-size: 12px; text-anchor: start" transform="rotate(45,504,0)">13:20:26</text>
+<polyline points="8,0 8,-200" style="vector-effect: non-scaling-stroke; stroke: #202020" transform="scale(72.000000,1)"/>
+<text x="576" y="10" style="fill: #ffffff; stroke: none; font-size: 12px; text-anchor: start" transform="rotate(45,576,0)">13:20:27</text>
+<polyline points="9,0 9,-200" style="vector-effect: non-scaling-stroke; stroke: #202020" transform="scale(72.000000,1)"/>
+<text x="648" y="10" style="fill: #ffffff; stroke: none; font-size: 12px; text-anchor: start" transform="rotate(45,648,0)">13:20:28</text>
+<polyline points="10,0 10,-200" style="vector-effect: non-scaling-stroke; stroke: #202020" transform="scale(72.000000,1)"/>
+<text x="720" y="10" style="fill: #ffffff; stroke: none; font-size: 12px; text-anchor: start" transform="rotate(45,720,0)">13:20:29</text>
+<text x="-10" y="30" style="fill: #ffff00; stroke: none; font-size: 12px; text-anchor: end">UTC</text>
+<path d=" M10,0.00" style="vector-effect: non-scaling-stroke; stroke: #00ffff; stroke-width: 1; fill-opacity: 0" transform="scale(72.000000,-200.000000)"/>
+<path d=" M10,0.00" style="vector-effect: non-scaling-stroke; stroke: #ff0000; stroke-width: 1; fill-opacity: 0" transform="scale(72.000000,-200.000000)"/>
+<path d=" M10,0.00" style="vector-effect: non-scaling-stroke; stroke: #e85f00; stroke-width: 1; fill-opacity: 0" transform="scale(72.000000,-200.000000)"/>
+</g>
+<rect x="0" y="620" height="300" width="1050" fill="#000000"/>
+<text x="0" y="640" style="fill: #ffff00; stroke: none">Software-based network processing statistics (3) [all]
+<tspan x="795" y="645" style="fill: #ffff00; stroke: none; font-size: 12px">(Min, Max values)</tspan>
+</text>
+<polyline points="70,670 70,870 790,870" style="fill: #000000; stroke: #ffffff; stroke-width: 2"/>
+<text x="795" y="670" style="fill: #0000ff; stroke: none; font-size: 12px">blg_len (0, 0)</text>
+<g transform="translate(70,870)">
+<text x="0" y="0" style="fill: #ffffff; stroke: none; font-size: 12px; text-anchor: end">0.00.</text>
+<polyline points="0,0.33 720,0.33" style="vector-effect: non-scaling-stroke; stroke: #202020" transform="scale(1,-200.000000)"/>
+<text x="0" y="-66" style="fill: #ffffff; stroke: none; font-size: 12px; text-anchor: end">0.33.</text>
+<polyline points="0,0.67 720,0.67" style="vector-effect: non-scaling-stroke; stroke: #202020" transform="scale(1,-200.000000)"/>
+<text x="0" y="-134" style="fill: #ffffff; stroke: none; font-size: 12px; text-anchor: end">0.67.</text>
+<polyline points="0,1.00 720,1.00" style="vector-effect: non-scaling-stroke; stroke: #202020" transform="scale(1,-200.000000)"/>
+<text x="0" y="-200" style="fill: #ffffff; stroke: none; font-size: 12px; text-anchor: end">1.00.</text>
+<polyline points="0,0 0,-200" style="vector-effect: non-scaling-stroke; stroke: #202020" transform="scale(72.000000,1)"/>
+<text x="0" y="10" style="fill: #ffffff; stroke: none; font-size: 12px; text-anchor: start" transform="rotate(45,0,0)">13:20:19</text>
+<polyline points="1,0 1,-200" style="vector-effect: non-scaling-stroke; stroke: #202020" transform="scale(72.000000,1)"/>
+<text x="72" y="10" style="fill: #ffffff; stroke: none; font-size: 12px; text-anchor: start" transform="rotate(45,72,0)">13:20:20</text>
+<polyline points="2,0 2,-200" style="vector-effect: non-scaling-stroke; stroke: #202020" transform="scale(72.000000,1)"/>
+<text x="144" y="10" style="fill: #ffffff; stroke: none; font-size: 12px; text-anchor: start" transform="rotate(45,144,0)">13:20:21</text>
+<polyline points="3,0 3,-200" style="vector-effect: non-scaling-stroke; stroke: #202020" transform="scale(72.000000,1)"/>
+<text x="216" y="10" style="fill: #ffffff; stroke: none; font-size: 12px; text-anchor: start" transform="rotate(45,216,0)">13:20:22</text>
+<polyline points="4,0 4,-200" style="vector-effect: non-scaling-stroke; stroke: #202020" transform="scale(72.000000,1)"/>
+<text x="288" y="10" style="fill: #ffffff; stroke: none; font-size: 12px; text-anchor: start" transform="rotate(45,288,0)">13:20:23</text>
+<polyline points="5,0 5,-200" style="vector-effect: non-scaling-stroke; stroke: #202020" transform="scale(72.000000,1)"/>
+<text x="360" y="10" style="fill: #ffffff; stroke: none; font-size: 12px; text-anchor: start" transform="rotate(45,360,0)">13:20:24</text>
+<polyline points="6,0 6,-200" style="vector-effect: non-scaling-stroke; stroke: #202020" transform="scale(72.000000,1)"/>
+<text x="432" y="10" style="fill: #ffffff; stroke: none; font-size: 12px; text-anchor: start" transform="rotate(45,432,0)">13:20:25</text>
+<polyline points="7,0 7,-200" style="vector-effect: non-scaling-stroke; stroke: #202020" transform="scale(72.000000,1)"/>
+<text x="504" y="10" style="fill: #ffffff; stroke: none; font-size: 12px; text-anchor: start" transform="rotate(45,504,0)">13:20:26</text>
+<polyline points="8,0 8,-200" style="vector-effect: non-scaling-stroke; stroke: #202020" transform="scale(72.000000,1)"/>
+<text x="576" y="10" style="fill: #ffffff; stroke: none; font-size: 12px; text-anchor: start" transform="rotate(45,576,0)">13:20:27</text>
+<polyline points="9,0 9,-200" style="vector-effect: non-scaling-stroke; stroke: #202020" transform="scale(72.000000,1)"/>
+<text x="648" y="10" style="fill: #ffffff; stroke: none; font-size: 12px; text-anchor: start" transform="rotate(45,648,0)">13:20:28</text>
+<polyline points="10,0 10,-200" style="vector-effect: non-scaling-stroke; stroke: #202020" transform="scale(72.000000,1)"/>
+<text x="720" y="10" style="fill: #ffffff; stroke: none; font-size: 12px; text-anchor: start" transform="rotate(45,720,0)">13:20:29</text>
+<text x="-10" y="30" style="fill: #ffff00; stroke: none; font-size: 12px; text-anchor: end">UTC</text>
+<path d=" M10,0" style="vector-effect: non-scaling-stroke; stroke: #0000ff; stroke-width: 1; fill-opacity: 0" transform="scale(72.000000,-200.000000)"/>
+</g>
+</g>
+<!-- Actual canvas height: 990 -->
+</svg>
diff -pruN 12.7.5-2/tests/expected.sadf-g-cc 12.7.7-0ubuntu2/tests/expected.sadf-g-cc
--- 12.7.5-2/tests/expected.sadf-g-cc	2023-05-06 16:26:53.000000000 +0000
+++ 12.7.7-0ubuntu2/tests/expected.sadf-g-cc	2024-05-31 11:12:33.000000000 +0000
@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
-<svg xmlns="http://www.w3.org/2000/svg" width="1060" height="3470" fill="black" stroke="#000000" stroke-width="1">
+<svg xmlns="http://www.w3.org/2000/svg" width="1060" height="370" fill="black" stroke="#000000" stroke-width="1">
 <text x="0" y="30" text-anchor="start" stroke="#000000">Linux 1.2.3-TEST (SYSSTAT.TEST) 	04/18/19 	_x86_64_	(9 CPU)
 </text>
 <g id="g1-0" transform="translate(0,60)">
diff -pruN 12.7.5-2/tests/expected.sadf-j 12.7.7-0ubuntu2/tests/expected.sadf-j
--- 12.7.5-2/tests/expected.sadf-j	2023-12-09 15:53:16.000000000 +0000
+++ 12.7.7-0ubuntu2/tests/expected.sadf-j	2024-05-28 08:21:11.000000000 +0000
@@ -125,7 +125,7 @@
 						"net-icmp": {"imsg": 0.00, "omsg": 0.00, "iech": 0.00, "iechr": 0.00, "oech": 0.00, "oechr": 0.00, "itm": 0.00, "itmr": 0.00, "otm": 0.00, "otmr": 0.00, "iadrmk": 0.00, "iadrmkr": 0.00, "oadrmk": 0.00, "oadrmkr": 0.00},
 						"net-eicmp": {"ierr": 0.00, "oerr": 0.00, "idstunr": 0.00, "odstunr": 0.00, "itmex": 0.00, "otmex": 0.00, "iparmpb": 0.00, "oparmpb": 0.00, "isrcq": 0.00, "osrcq": 0.00, "iredir": 0.00, "oredir": 0.00},
 						"net-tcp": {"active": 0.00, "passive": 0.00, "iseg": 0.00, "oseg": 0.00},
-						"net-etcp": {"atmptf": 0.00, "estres": 0.00, "retrans": 0.00, "isegerr": 0.00, "orsts": 0.00},
+						"net-etcp": {"atmptf": 0.00, "estres": 0.00, "retrseg": 0.00, "isegerr": 0.00, "orsts": 0.00},
 						"net-udp": {"idgm": 0.00, "odgm": 0.00, "noport": 0.00, "idgmerr": 0.00},
 						"net-sock6": {"tcp6sck": 3, "udp6sck": 3, "raw6sck": 1, "ip6-frag": 0},
 						"net-ip6": {"irec6": 0.00, "fwddgm6": 0.00, "idel6": 0.00, "orq6": 0.00, "asmrq6": 0.00, "asmok6": 0.00, "imcpck6": 0.00, "omcpck6": 0.00, "fragok6": 0.00, "fragcr6": 0.00},
@@ -239,7 +239,7 @@
 					"swap-pages": {"pswpin": 0.00, "pswpout": 0.00},
 					"paging": {"pgpgin": 0.00, "pgpgout": 0.00, "fault": 0.00, "majflt": 0.00, "pgfree": 0.00, "pgscank": 0.00, "pgscand": 0.00, "pgsteal": 0.00, "pgprom": 0.29, "pgdem": 35.08},
 					"io": {"tps": 56.63, "io-reads": {"rtps": 41.26, "bread": 17.16}, "io-writes": {"wtps": 8.96, "bwrtn": 20.81}, "io-discard": {"dtps": 6.40, "bdscd": 32.01}},
-					"memory": {"memfree": 1437740, "avail": 4389516, "memused": 3179712, "memused-percent": 39.04, "buffers": 260172, "cached": 2821596, "commit": 12097852, "commit-percent": 48.54, "active": 4042384, "inactive": 1772396, "dirty": 396, "anonpg": 2733164, "slab": 445740, "kstack": 15328, "pgtbl": 73760, "vmused": 0, "swpfree": 16777212, "swpused": 0, "swpused-percent": 0.00, "swpcad": 0, "swpcad-percent": 0.00},
+					"memory": {"memfree": 1437740, "avail": 4389516, "memused": 3179712, "memused-percent": 39.04, "buffers": 260172, "cached": 2821596, "commit": 30097852, "commit-percent": 120.77, "active": 4042384, "inactive": 1772396, "dirty": 396, "anonpg": 2733164, "slab": 445740, "kstack": 15328, "pgtbl": 73760, "vmused": 0, "swpfree": 16777212, "swpused": 0, "swpused-percent": 0.00, "swpcad": 0, "swpcad-percent": 0.00},
 					"hugepages": {"hugfree": 0, "hugused": 0, "hugused-percent": 0.00, "hugrsvd": 0, "hugsurp": 0},
 					"kernel": {"dentunusd": 156063, "file-nr": 16704, "inode-nr": 157735, "pty-nr": 4},
 					"queue": {"runq-sz": 3, "plist-sz": 956, "ldavg-1": 3.16, "ldavg-5": 3.24, "ldavg-15": 3.43, "blocked": 0},
@@ -291,7 +291,7 @@
 						"net-icmp": {"imsg": 0.00, "omsg": 0.00, "iech": 0.00, "iechr": 0.00, "oech": 0.00, "oechr": 0.00, "itm": 0.00, "itmr": 0.00, "otm": 0.00, "otmr": 0.00, "iadrmk": 0.00, "iadrmkr": 0.00, "oadrmk": 0.00, "oadrmkr": 0.00},
 						"net-eicmp": {"ierr": 0.00, "oerr": 0.00, "idstunr": 0.00, "odstunr": 0.00, "itmex": 0.00, "otmex": 0.00, "iparmpb": 0.00, "oparmpb": 0.00, "isrcq": 0.00, "osrcq": 0.00, "iredir": 0.00, "oredir": 0.00},
 						"net-tcp": {"active": 0.00, "passive": 0.00, "iseg": 0.00, "oseg": 0.00},
-						"net-etcp": {"atmptf": 0.00, "estres": 0.00, "retrans": 0.00, "isegerr": 0.00, "orsts": 0.00},
+						"net-etcp": {"atmptf": 0.00, "estres": 0.00, "retrseg": 0.00, "isegerr": 0.00, "orsts": 0.00},
 						"net-udp": {"idgm": 0.00, "odgm": 0.00, "noport": 0.00, "idgmerr": 0.00},
 						"net-sock6": {"tcp6sck": 3, "udp6sck": 3, "raw6sck": 1, "ip6-frag": 0},
 						"net-ip6": {"irec6": 0.00, "fwddgm6": 0.00, "idel6": 0.00, "orq6": 0.00, "asmrq6": 0.00, "asmok6": 0.00, "imcpck6": 0.00, "omcpck6": 0.00, "fragok6": 0.00, "fragcr6": 0.00},
@@ -463,7 +463,7 @@
 						"net-icmp": {"imsg": 0.00, "omsg": 0.00, "iech": 0.00, "iechr": 0.00, "oech": 0.00, "oechr": 0.00, "itm": 0.00, "itmr": 0.00, "otm": 0.00, "otmr": 0.00, "iadrmk": 0.00, "iadrmkr": 0.00, "oadrmk": 0.00, "oadrmkr": 0.00},
 						"net-eicmp": {"ierr": 0.00, "oerr": 0.00, "idstunr": 0.00, "odstunr": 0.00, "itmex": 0.00, "otmex": 0.00, "iparmpb": 0.00, "oparmpb": 0.00, "isrcq": 0.00, "osrcq": 0.00, "iredir": 0.00, "oredir": 0.00},
 						"net-tcp": {"active": 0.00, "passive": 0.00, "iseg": 0.00, "oseg": 0.00},
-						"net-etcp": {"atmptf": 0.00, "estres": 0.00, "retrans": 0.00, "isegerr": 0.00, "orsts": 0.00},
+						"net-etcp": {"atmptf": 0.00, "estres": 0.00, "retrseg": 0.00, "isegerr": 0.00, "orsts": 0.00},
 						"net-udp": {"idgm": 0.00, "odgm": 0.00, "noport": 0.00, "idgmerr": 0.00},
 						"net-sock6": {"tcp6sck": 3, "udp6sck": 3, "raw6sck": 1, "ip6-frag": 0},
 						"net-ip6": {"irec6": 0.00, "fwddgm6": 0.00, "idel6": 0.00, "orq6": 0.00, "asmrq6": 0.00, "asmok6": 0.00, "imcpck6": 0.00, "omcpck6": 0.00, "fragok6": 0.00, "fragcr6": 0.00},
@@ -638,7 +638,7 @@
 						"net-icmp": {"imsg": 0.00, "omsg": 0.00, "iech": 0.00, "iechr": 0.00, "oech": 0.00, "oechr": 0.00, "itm": 0.00, "itmr": 0.00, "otm": 0.00, "otmr": 0.00, "iadrmk": 0.00, "iadrmkr": 0.00, "oadrmk": 0.00, "oadrmkr": 0.00},
 						"net-eicmp": {"ierr": 0.00, "oerr": 0.00, "idstunr": 0.00, "odstunr": 0.00, "itmex": 0.00, "otmex": 0.00, "iparmpb": 0.00, "oparmpb": 0.00, "isrcq": 0.00, "osrcq": 0.00, "iredir": 0.00, "oredir": 0.00},
 						"net-tcp": {"active": 0.00, "passive": 0.00, "iseg": 0.00, "oseg": 0.00},
-						"net-etcp": {"atmptf": 0.00, "estres": 0.00, "retrans": 0.00, "isegerr": 0.00, "orsts": 0.00},
+						"net-etcp": {"atmptf": 0.00, "estres": 0.00, "retrseg": 0.00, "isegerr": 0.00, "orsts": 0.00},
 						"net-udp": {"idgm": 0.00, "odgm": 0.00, "noport": 0.00, "idgmerr": 0.00},
 						"net-sock6": {"tcp6sck": 3, "udp6sck": 3, "raw6sck": 1, "ip6-frag": 0},
 						"net-ip6": {"irec6": 0.00, "fwddgm6": 0.00, "idel6": 0.00, "orq6": 0.00, "asmrq6": 0.00, "asmok6": 0.00, "imcpck6": 0.00, "omcpck6": 0.00, "fragok6": 0.00, "fragcr6": 0.00},
@@ -818,7 +818,7 @@
 						"net-icmp": {"imsg": 0.00, "omsg": 0.00, "iech": 0.00, "iechr": 0.00, "oech": 0.00, "oechr": 0.00, "itm": 0.00, "itmr": 0.00, "otm": 0.00, "otmr": 0.00, "iadrmk": 0.00, "iadrmkr": 0.00, "oadrmk": 0.00, "oadrmkr": 0.00},
 						"net-eicmp": {"ierr": 0.00, "oerr": 0.00, "idstunr": 0.00, "odstunr": 0.00, "itmex": 0.00, "otmex": 0.00, "iparmpb": 0.00, "oparmpb": 0.00, "isrcq": 0.00, "osrcq": 0.00, "iredir": 0.00, "oredir": 0.00},
 						"net-tcp": {"active": 0.00, "passive": 0.00, "iseg": 0.00, "oseg": 0.00},
-						"net-etcp": {"atmptf": 0.00, "estres": 0.00, "retrans": 0.00, "isegerr": 0.00, "orsts": 0.00},
+						"net-etcp": {"atmptf": 0.00, "estres": 0.00, "retrseg": 0.00, "isegerr": 0.00, "orsts": 0.00},
 						"net-udp": {"idgm": 0.00, "odgm": 0.00, "noport": 0.00, "idgmerr": 0.00},
 						"net-sock6": {"tcp6sck": 3, "udp6sck": 3, "raw6sck": 1, "ip6-frag": 0},
 						"net-ip6": {"irec6": 0.00, "fwddgm6": 0.00, "idel6": 0.00, "orq6": 0.00, "asmrq6": 0.00, "asmok6": 0.00, "imcpck6": 0.00, "omcpck6": 0.00, "fragok6": 0.00, "fragcr6": 0.00},
diff -pruN 12.7.5-2/tests/expected.sadf-p 12.7.7-0ubuntu2/tests/expected.sadf-p
--- 12.7.5-2/tests/expected.sadf-p	2023-12-09 15:53:16.000000000 +0000
+++ 12.7.7-0ubuntu2/tests/expected.sadf-p	2024-05-28 08:20:07.000000000 +0000
@@ -2048,8 +2048,8 @@ SYSSTAT.TEST	31	2019-04-18 13:20:29 UTC
 SYSSTAT.TEST	31	2019-04-18 13:20:29 UTC	-	%memused	39.04
 SYSSTAT.TEST	31	2019-04-18 13:20:29 UTC	-	kbbuffers	260172
 SYSSTAT.TEST	31	2019-04-18 13:20:29 UTC	-	kbcached	2821596
-SYSSTAT.TEST	31	2019-04-18 13:20:29 UTC	-	kbcommit	12097852
-SYSSTAT.TEST	31	2019-04-18 13:20:29 UTC	-	%commit	48.54
+SYSSTAT.TEST	31	2019-04-18 13:20:29 UTC	-	kbcommit	30097852
+SYSSTAT.TEST	31	2019-04-18 13:20:29 UTC	-	%commit	120.77
 SYSSTAT.TEST	31	2019-04-18 13:20:29 UTC	-	kbactive	4042384
 SYSSTAT.TEST	31	2019-04-18 13:20:29 UTC	-	kbinact	1772396
 SYSSTAT.TEST	31	2019-04-18 13:20:29 UTC	-	kbdirty	396
@@ -3490,22 +3490,22 @@ SYSSTAT.TEST	22	2019-04-18 13:20:49 UTC
 SYSSTAT.TEST	22	2019-04-18 13:20:49 UTC	-	oseg/s	0.00
 SYSSTAT.TEST	31	2019-04-18 13:20:19 UTC	-	atmptf/s	0.00
 SYSSTAT.TEST	31	2019-04-18 13:20:19 UTC	-	estres/s	0.00
-SYSSTAT.TEST	31	2019-04-18 13:20:19 UTC	-	retrans/s	0.00
+SYSSTAT.TEST	31	2019-04-18 13:20:19 UTC	-	retrseg/s	0.00
 SYSSTAT.TEST	31	2019-04-18 13:20:19 UTC	-	isegerr/s	0.00
 SYSSTAT.TEST	31	2019-04-18 13:20:19 UTC	-	orsts/s	0.00
 SYSSTAT.TEST	31	2019-04-18 13:20:29 UTC	-	atmptf/s	0.00
 SYSSTAT.TEST	31	2019-04-18 13:20:29 UTC	-	estres/s	0.00
-SYSSTAT.TEST	31	2019-04-18 13:20:29 UTC	-	retrans/s	0.00
+SYSSTAT.TEST	31	2019-04-18 13:20:29 UTC	-	retrseg/s	0.00
 SYSSTAT.TEST	31	2019-04-18 13:20:29 UTC	-	isegerr/s	0.00
 SYSSTAT.TEST	31	2019-04-18 13:20:29 UTC	-	orsts/s	0.00
 SYSSTAT.TEST	39	2019-04-18 13:20:39 UTC	-	atmptf/s	0.00
 SYSSTAT.TEST	39	2019-04-18 13:20:39 UTC	-	estres/s	0.00
-SYSSTAT.TEST	39	2019-04-18 13:20:39 UTC	-	retrans/s	0.00
+SYSSTAT.TEST	39	2019-04-18 13:20:39 UTC	-	retrseg/s	0.00
 SYSSTAT.TEST	39	2019-04-18 13:20:39 UTC	-	isegerr/s	0.00
 SYSSTAT.TEST	39	2019-04-18 13:20:39 UTC	-	orsts/s	0.00
 SYSSTAT.TEST	22	2019-04-18 13:20:49 UTC	-	atmptf/s	0.00
 SYSSTAT.TEST	22	2019-04-18 13:20:49 UTC	-	estres/s	0.00
-SYSSTAT.TEST	22	2019-04-18 13:20:49 UTC	-	retrans/s	0.00
+SYSSTAT.TEST	22	2019-04-18 13:20:49 UTC	-	retrseg/s	0.00
 SYSSTAT.TEST	22	2019-04-18 13:20:49 UTC	-	isegerr/s	0.00
 SYSSTAT.TEST	22	2019-04-18 13:20:49 UTC	-	orsts/s	0.00
 SYSSTAT.TEST	31	2019-04-18 13:20:19 UTC	-	idgm/s	0.00
@@ -5306,7 +5306,7 @@ SYSSTAT.TEST	31	2019-04-18 13:54:35 UTC
 SYSSTAT.TEST	31	2019-04-18 13:54:35 UTC	-	oseg/s	0.00
 SYSSTAT.TEST	31	2019-04-18 13:54:35 UTC	-	atmptf/s	0.00
 SYSSTAT.TEST	31	2019-04-18 13:54:35 UTC	-	estres/s	0.00
-SYSSTAT.TEST	31	2019-04-18 13:54:35 UTC	-	retrans/s	0.00
+SYSSTAT.TEST	31	2019-04-18 13:54:35 UTC	-	retrseg/s	0.00
 SYSSTAT.TEST	31	2019-04-18 13:54:35 UTC	-	isegerr/s	0.00
 SYSSTAT.TEST	31	2019-04-18 13:54:35 UTC	-	orsts/s	0.00
 SYSSTAT.TEST	31	2019-04-18 13:54:35 UTC	-	idgm/s	0.00
diff -pruN 12.7.5-2/tests/expected.sadf-r 12.7.7-0ubuntu2/tests/expected.sadf-r
--- 12.7.5-2/tests/expected.sadf-r	2023-12-09 15:53:16.000000000 +0000
+++ 12.7.7-0ubuntu2/tests/expected.sadf-r	2024-05-28 08:27:28.000000000 +0000
@@ -290,7 +290,7 @@
 13:20:19 UTC; kbmemfree; 1437740; kbavail; 4389516; kbttlmem; 8144960; kbbuffers; 260172; kbcached; 2821596; kbcommit; 12097852; kbactive; 4042384; kbinact; 1772396; kbdirty; 396; kbanonpg; 2733164; kbslab; 445740; kbkstack; 15328; kbpgtbl; 73760; kbvmused; 0;
 # uptime_cs; 725496; ust_time; 1555593629; extra_next; 0; record_type; 1; HH:MM:SS; 13:20:29
 # name; A_MEMORY; nr_curr; 1; nr_alloc; 1; nr_ini; 1
-13:20:29 UTC; kbmemfree; 1437740; kbavail; 4389516; kbttlmem; 8144960; kbbuffers; 260172; kbcached; 2821596; kbcommit; 12097852; kbactive; 4042384; kbinact; 1772396; kbdirty; 396; kbanonpg; 2733164; kbslab; 445740; kbkstack; 15328; kbpgtbl; 73760; kbvmused; 0;
+13:20:29 UTC; kbmemfree; 1437740; kbavail; 4389516; kbttlmem; 8144960; kbbuffers; 260172; kbcached; 2821596; kbcommit; 30097852; kbactive; 4042384; kbinact; 1772396; kbdirty; 396; kbanonpg; 2733164; kbslab; 445740; kbkstack; 15328; kbpgtbl; 73760; kbvmused; 0;
 # uptime_cs; 729346; ust_time; 1555593639; extra_next; 0; record_type; 1; HH:MM:SS; 13:20:39
 # name; A_MEMORY; nr_curr; 1; nr_alloc; 1; nr_ini; 1
 13:20:39 UTC; kbmemfree; 1437740; kbavail; 4389516; kbttlmem; 8144960; kbbuffers; 260172; kbcached; 2821596; kbcommit; 12097852; kbactive; 4042384; kbinact; 1772396; kbdirty; 396; kbanonpg; 2733164; kbslab; 445740; kbkstack; 15328; kbpgtbl; 73760; kbvmused; 0;
@@ -621,16 +621,16 @@
 # uptime_cs; 0; ust_time; 1555594649; extra_next; 0; record_type; 2; HH:MM:SS; 13:37:29
 # uptime_cs; 722372; ust_time; 1555593619; extra_next; 0; record_type; 1; HH:MM:SS; 13:20:19
 # name; A_NET_ETCP; nr_curr; 1; nr_alloc; 1; nr_ini; 1
-13:20:19 UTC; atmptf/s; 11; 11; estres/s; 62; 62; retrans/s; 304; 304; isegerr/s; 35; 35; orsts/s; 943; 943;
+13:20:19 UTC; atmptf/s; 11; 11; estres/s; 62; 62; retrseg/s; 304; 304; isegerr/s; 35; 35; orsts/s; 943; 943;
 # uptime_cs; 725496; ust_time; 1555593629; extra_next; 0; record_type; 1; HH:MM:SS; 13:20:29
 # name; A_NET_ETCP; nr_curr; 1; nr_alloc; 1; nr_ini; 1
-13:20:29 UTC; atmptf/s; 11; 11; estres/s; 62; 62; retrans/s; 304; 304; isegerr/s; 35; 35; orsts/s; 943; 943;
+13:20:29 UTC; atmptf/s; 11; 11; estres/s; 62; 62; retrseg/s; 304; 304; isegerr/s; 35; 35; orsts/s; 943; 943;
 # uptime_cs; 729346; ust_time; 1555593639; extra_next; 0; record_type; 1; HH:MM:SS; 13:20:39
 # name; A_NET_ETCP; nr_curr; 1; nr_alloc; 1; nr_ini; 1
-13:20:39 UTC; atmptf/s; 11; 11; estres/s; 62; 62; retrans/s; 304; 304; isegerr/s; 35; 35; orsts/s; 943; 943;
+13:20:39 UTC; atmptf/s; 11; 11; estres/s; 62; 62; retrseg/s; 304; 304; isegerr/s; 35; 35; orsts/s; 943; 943;
 # uptime_cs; 731585; ust_time; 1555593649; extra_next; 0; record_type; 1; HH:MM:SS; 13:20:49
 # name; A_NET_ETCP; nr_curr; 1; nr_alloc; 1; nr_ini; 1
-13:20:49 UTC; atmptf/s; 11; 11; estres/s; 62; 62; retrans/s; 304; 304; isegerr/s; 35; 35; orsts/s; 943; 943;
+13:20:49 UTC; atmptf/s; 11; 11; estres/s; 62; 62; retrseg/s; 304; 304; isegerr/s; 35; 35; orsts/s; 943; 943;
 # uptime_cs; 0; ust_time; 1555594649; extra_next; 0; record_type; 2; HH:MM:SS; 13:37:29
 # uptime_cs; 722372; ust_time; 1555593619; extra_next; 0; record_type; 1; HH:MM:SS; 13:20:19
 # name; A_NET_UDP; nr_curr; 1; nr_alloc; 1; nr_ini; 1
@@ -1087,7 +1087,7 @@
 13:54:35 UTC; active/s; 1516; 1516; passive/s; 1; 1; iseg/s; 148044; 148044; oseg/s; 145504; 145504;
 # uptime_cs; 722372; ust_time; 1555595675; extra_next; 0; record_type; 1; HH:MM:SS; 13:54:35
 # name; A_NET_ETCP; nr_curr; 1; nr_alloc; 1; nr_ini; 1
-13:54:35 UTC; atmptf/s; 11; 11; estres/s; 62; 62; retrans/s; 304; 304; isegerr/s; 35; 35; orsts/s; 943; 943;
+13:54:35 UTC; atmptf/s; 11; 11; estres/s; 62; 62; retrseg/s; 304; 304; isegerr/s; 35; 35; orsts/s; 943; 943;
 # uptime_cs; 722372; ust_time; 1555595675; extra_next; 0; record_type; 1; HH:MM:SS; 13:54:35
 # name; A_NET_UDP; nr_curr; 1; nr_alloc; 1; nr_ini; 1
 13:54:35 UTC; idgm/s; 4198; 4198; odgm/s; 3581; 3581; noport/s; 0; 0; idgmerr/s; 0; 0;
diff -pruN 12.7.5-2/tests/expected.sadf-t-tz 12.7.7-0ubuntu2/tests/expected.sadf-t-tz
--- 12.7.5-2/tests/expected.sadf-t-tz	2023-05-06 16:26:53.000000000 +0000
+++ 12.7.7-0ubuntu2/tests/expected.sadf-t-tz	2024-05-31 11:12:33.000000000 +0000
@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
-<svg xmlns="http://www.w3.org/2000/svg" width="1060" height="3780" fill="black" stroke="#808080" stroke-width="1">
+<svg xmlns="http://www.w3.org/2000/svg" width="1060" height="990" fill="black" stroke="#808080" stroke-width="1">
 <text x="0" y="30" text-anchor="start" stroke="#a52a2a">Linux 1.2.3-TEST (SYSSTAT.TEST) 	04/18/19 	_x86_64_	(9 CPU)
 </text>
 <g id="g1-0" transform="translate(0,60)">
diff -pruN 12.7.5-2/tests/expected.sadf-x 12.7.7-0ubuntu2/tests/expected.sadf-x
--- 12.7.5-2/tests/expected.sadf-x	2023-12-09 15:53:16.000000000 +0000
+++ 12.7.7-0ubuntu2/tests/expected.sadf-x	2024-05-28 08:20:48.000000000 +0000
@@ -3,7 +3,7 @@
 xmlns="https://sysstat.github.io"
 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
 xsi:schemaLocation="https://sysstat.github.io https://sysstat.github.io/sysstat.xsd">
-	<sysdata-version>3.16</sysdata-version>
+	<sysdata-version>3.17</sysdata-version>
 	<host nodename="SYSSTAT.TEST">
 		<sysname>Linux</sysname>
 		<release>1.2.3-TEST</release>
@@ -510,7 +510,7 @@ xsi:schemaLocation="https://sysstat.gith
 					<net-icmp imsg="0.00" omsg="0.00" iech="0.00" iechr="0.00" oech="0.00" oechr="0.00" itm="0.00" itmr="0.00" otm="0.00" otmr="0.00" iadrmk="0.00" iadrmkr="0.00" oadrmk="0.00" oadrmkr="0.00"/>
 					<net-eicmp ierr="0.00" oerr="0.00" idstunr="0.00" odstunr="0.00" itmex="0.00" otmex="0.00" iparmpb="0.00" oparmpb="0.00" isrcq="0.00" osrcq="0.00" iredir="0.00" oredir="0.00"/>
 					<net-tcp active="0.00" passive="0.00" iseg="0.00" oseg="0.00"/>
-					<net-etcp atmptf="0.00" estres="0.00" retrans="0.00" isegerr="0.00" orsts="0.00"/>
+					<net-etcp atmptf="0.00" estres="0.00" retrseg="0.00" isegerr="0.00" orsts="0.00"/>
 					<net-udp idgm="0.00" odgm="0.00" noport="0.00" idgmerr="0.00"/>
 					<net-sock6 tcp6sck="3" udp6sck="3" raw6sck="1" ip6-frag="0"/>
 					<net-ip6 irec6="0.00" fwddgm6="0.00" idel6="0.00" orq6="0.00" asmrq6="0.00" asmok6="0.00" imcpck6="0.00" omcpck6="0.00" fragok6="0.00" fragcr6="0.00"/>
@@ -941,8 +941,8 @@ xsi:schemaLocation="https://sysstat.gith
 					<memused-percent>39.04</memused-percent>
 					<buffers>260172</buffers>
 					<cached>2821596</cached>
-					<commit>12097852</commit>
-					<commit-percent>48.54</commit-percent>
+					<commit>30097852</commit>
+					<commit-percent>120.77</commit-percent>
 					<active>4042384</active>
 					<inactive>1772396</inactive>
 					<dirty>396</dirty>
@@ -1010,7 +1010,7 @@ xsi:schemaLocation="https://sysstat.gith
 					<net-icmp imsg="0.00" omsg="0.00" iech="0.00" iechr="0.00" oech="0.00" oechr="0.00" itm="0.00" itmr="0.00" otm="0.00" otmr="0.00" iadrmk="0.00" iadrmkr="0.00" oadrmk="0.00" oadrmkr="0.00"/>
 					<net-eicmp ierr="0.00" oerr="0.00" idstunr="0.00" odstunr="0.00" itmex="0.00" otmex="0.00" iparmpb="0.00" oparmpb="0.00" isrcq="0.00" osrcq="0.00" iredir="0.00" oredir="0.00"/>
 					<net-tcp active="0.00" passive="0.00" iseg="0.00" oseg="0.00"/>
-					<net-etcp atmptf="0.00" estres="0.00" retrans="0.00" isegerr="0.00" orsts="0.00"/>
+					<net-etcp atmptf="0.00" estres="0.00" retrseg="0.00" isegerr="0.00" orsts="0.00"/>
 					<net-udp idgm="0.00" odgm="0.00" noport="0.00" idgmerr="0.00"/>
 					<net-sock6 tcp6sck="3" udp6sck="3" raw6sck="1" ip6-frag="0"/>
 					<net-ip6 irec6="0.00" fwddgm6="0.00" idel6="0.00" orq6="0.00" asmrq6="0.00" asmok6="0.00" imcpck6="0.00" omcpck6="0.00" fragok6="0.00" fragcr6="0.00"/>
@@ -1560,7 +1560,7 @@ xsi:schemaLocation="https://sysstat.gith
 					<net-icmp imsg="0.00" omsg="0.00" iech="0.00" iechr="0.00" oech="0.00" oechr="0.00" itm="0.00" itmr="0.00" otm="0.00" otmr="0.00" iadrmk="0.00" iadrmkr="0.00" oadrmk="0.00" oadrmkr="0.00"/>
 					<net-eicmp ierr="0.00" oerr="0.00" idstunr="0.00" odstunr="0.00" itmex="0.00" otmex="0.00" iparmpb="0.00" oparmpb="0.00" isrcq="0.00" osrcq="0.00" iredir="0.00" oredir="0.00"/>
 					<net-tcp active="0.00" passive="0.00" iseg="0.00" oseg="0.00"/>
-					<net-etcp atmptf="0.00" estres="0.00" retrans="0.00" isegerr="0.00" orsts="0.00"/>
+					<net-etcp atmptf="0.00" estres="0.00" retrseg="0.00" isegerr="0.00" orsts="0.00"/>
 					<net-udp idgm="0.00" odgm="0.00" noport="0.00" idgmerr="0.00"/>
 					<net-sock6 tcp6sck="3" udp6sck="3" raw6sck="1" ip6-frag="0"/>
 					<net-ip6 irec6="0.00" fwddgm6="0.00" idel6="0.00" orq6="0.00" asmrq6="0.00" asmok6="0.00" imcpck6="0.00" omcpck6="0.00" fragok6="0.00" fragcr6="0.00"/>
@@ -2157,7 +2157,7 @@ xsi:schemaLocation="https://sysstat.gith
 					<net-icmp imsg="0.00" omsg="0.00" iech="0.00" iechr="0.00" oech="0.00" oechr="0.00" itm="0.00" itmr="0.00" otm="0.00" otmr="0.00" iadrmk="0.00" iadrmkr="0.00" oadrmk="0.00" oadrmkr="0.00"/>
 					<net-eicmp ierr="0.00" oerr="0.00" idstunr="0.00" odstunr="0.00" itmex="0.00" otmex="0.00" iparmpb="0.00" oparmpb="0.00" isrcq="0.00" osrcq="0.00" iredir="0.00" oredir="0.00"/>
 					<net-tcp active="0.00" passive="0.00" iseg="0.00" oseg="0.00"/>
-					<net-etcp atmptf="0.00" estres="0.00" retrans="0.00" isegerr="0.00" orsts="0.00"/>
+					<net-etcp atmptf="0.00" estres="0.00" retrseg="0.00" isegerr="0.00" orsts="0.00"/>
 					<net-udp idgm="0.00" odgm="0.00" noport="0.00" idgmerr="0.00"/>
 					<net-sock6 tcp6sck="3" udp6sck="3" raw6sck="1" ip6-frag="0"/>
 					<net-ip6 irec6="0.00" fwddgm6="0.00" idel6="0.00" orq6="0.00" asmrq6="0.00" asmok6="0.00" imcpck6="0.00" omcpck6="0.00" fragok6="0.00" fragcr6="0.00"/>
@@ -2803,7 +2803,7 @@ xsi:schemaLocation="https://sysstat.gith
 					<net-icmp imsg="0.00" omsg="0.00" iech="0.00" iechr="0.00" oech="0.00" oechr="0.00" itm="0.00" itmr="0.00" otm="0.00" otmr="0.00" iadrmk="0.00" iadrmkr="0.00" oadrmk="0.00" oadrmkr="0.00"/>
 					<net-eicmp ierr="0.00" oerr="0.00" idstunr="0.00" odstunr="0.00" itmex="0.00" otmex="0.00" iparmpb="0.00" oparmpb="0.00" isrcq="0.00" osrcq="0.00" iredir="0.00" oredir="0.00"/>
 					<net-tcp active="0.00" passive="0.00" iseg="0.00" oseg="0.00"/>
-					<net-etcp atmptf="0.00" estres="0.00" retrans="0.00" isegerr="0.00" orsts="0.00"/>
+					<net-etcp atmptf="0.00" estres="0.00" retrseg="0.00" isegerr="0.00" orsts="0.00"/>
 					<net-udp idgm="0.00" odgm="0.00" noport="0.00" idgmerr="0.00"/>
 					<net-sock6 tcp6sck="3" udp6sck="3" raw6sck="1" ip6-frag="0"/>
 					<net-ip6 irec6="0.00" fwddgm6="0.00" idel6="0.00" orq6="0.00" asmrq6="0.00" asmok6="0.00" imcpck6="0.00" omcpck6="0.00" fragok6="0.00" fragcr6="0.00"/>
diff -pruN 12.7.5-2/tests/expected.sar-A 12.7.7-0ubuntu2/tests/expected.sar-A
--- 12.7.5-2/tests/expected.sar-A	2023-12-09 15:53:16.000000000 +0000
+++ 12.7.7-0ubuntu2/tests/expected.sar-A	2024-05-28 08:29:06.000000000 +0000
@@ -127,7 +127,7 @@ Linux 1.2.3-TEST (SYSSTAT.TEST) 	06/01/2
 12:53:20     active/s passive/s    iseg/s    oseg/s
 12:53:21         0.00      0.00      0.00      0.00
 
-12:53:20     atmptf/s  estres/s retrans/s isegerr/s   orsts/s
+12:53:20     atmptf/s  estres/s retrseg/s isegerr/s   orsts/s
 12:53:21         0.00      0.00      0.00      0.00      0.00
 
 12:53:20       idgm/s    odgm/s  noport/s idgmerr/s
@@ -240,7 +240,7 @@ Linux 1.2.3-TEST (SYSSTAT.TEST) 	06/01/2
 12:53:22        56.63     41.26      8.96      6.40     17.16     20.81     32.01
 
 12:53:21    kbmemfree   kbavail kbmemused  %memused kbbuffers  kbcached  kbcommit   %commit  kbactive   kbinact   kbdirty  kbanonpg    kbslab  kbkstack   kbpgtbl  kbvmused
-12:53:22      1437740   4389516   3179712     39.04    260172   2821596  12097852     48.54   4042384   1772396       396   2733164    445740     15328     73760         0
+12:53:22      1437740   4389516   3179712     39.04    260172   2821596  30097852    120.77   4042384   1772396       396   2733164    445740     15328     73760         0
 
 12:53:21    kbswpfree kbswpused  %swpused  kbswpcad   %swpcad
 12:53:22     16777212         0      0.00         0      0.00
@@ -305,7 +305,7 @@ Linux 1.2.3-TEST (SYSSTAT.TEST) 	06/01/2
 12:53:21     active/s passive/s    iseg/s    oseg/s
 12:53:22         0.00      0.00      0.00      0.00
 
-12:53:21     atmptf/s  estres/s retrans/s isegerr/s   orsts/s
+12:53:21     atmptf/s  estres/s retrseg/s isegerr/s   orsts/s
 12:53:22         0.00      0.00      0.00      0.00      0.00
 
 12:53:21       idgm/s    odgm/s  noport/s idgmerr/s
@@ -424,7 +424,7 @@ Average:          tps      rtps      wtp
 Average:        38.76     27.06      6.89      4.81     37.27     29.64     32.05
 
 Average:    kbmemfree   kbavail kbmemused  %memused kbbuffers  kbcached  kbcommit   %commit  kbactive   kbinact   kbdirty  kbanonpg    kbslab  kbkstack   kbpgtbl  kbvmused
-Average:      1437740   4389516   3179712     39.04    260172   2821596  12097852     48.54   4042384   1772396       396   2733164    445740     15328     73760         0
+Average:      1437740   4389516   3179712     39.04    260172   2821596  21097852     84.65   4042384   1772396       396   2733164    445740     15328     73760         0
 
 Average:    kbswpfree kbswpused  %swpused  kbswpcad   %swpcad
 Average:     16777212         0      0.00         0      0.00
@@ -489,7 +489,7 @@ Average:         0.00      0.00      0.0
 Average:     active/s passive/s    iseg/s    oseg/s
 Average:         0.00      0.00      0.00      0.00
 
-Average:     atmptf/s  estres/s retrans/s isegerr/s   orsts/s
+Average:     atmptf/s  estres/s retrseg/s isegerr/s   orsts/s
 Average:         0.00      0.00      0.00      0.00      0.00
 
 Average:       idgm/s    odgm/s  noport/s idgmerr/s
diff -pruN 12.7.5-2/tests/expected.sar-Ax 12.7.7-0ubuntu2/tests/expected.sar-Ax
--- 12.7.5-2/tests/expected.sar-Ax	2023-12-09 15:53:16.000000000 +0000
+++ 12.7.7-0ubuntu2/tests/expected.sar-Ax	2024-05-28 08:29:27.000000000 +0000
@@ -127,7 +127,7 @@ Linux 1.2.3-TEST (SYSSTAT.TEST) 	06/01/2
 12:53:20     active/s passive/s    iseg/s    oseg/s
 12:53:21         0.00      0.00      0.00      0.00
 
-12:53:20     atmptf/s  estres/s retrans/s isegerr/s   orsts/s
+12:53:20     atmptf/s  estres/s retrseg/s isegerr/s   orsts/s
 12:53:21         0.00      0.00      0.00      0.00      0.00
 
 12:53:20       idgm/s    odgm/s  noport/s idgmerr/s
@@ -240,7 +240,7 @@ Linux 1.2.3-TEST (SYSSTAT.TEST) 	06/01/2
 12:53:22        56.63     41.26      8.96      6.40     17.16     20.81     32.01
 
 12:53:21    kbmemfree   kbavail kbmemused  %memused kbbuffers  kbcached  kbcommit   %commit  kbactive   kbinact   kbdirty  kbanonpg    kbslab  kbkstack   kbpgtbl  kbvmused
-12:53:22      1437740   4389516   3179712     39.04    260172   2821596  12097852     48.54   4042384   1772396       396   2733164    445740     15328     73760         0
+12:53:22      1437740   4389516   3179712     39.04    260172   2821596  30097852    120.77   4042384   1772396       396   2733164    445740     15328     73760         0
 
 12:53:21    kbswpfree kbswpused  %swpused  kbswpcad   %swpcad
 12:53:22     16777212         0      0.00         0      0.00
@@ -305,7 +305,7 @@ Linux 1.2.3-TEST (SYSSTAT.TEST) 	06/01/2
 12:53:21     active/s passive/s    iseg/s    oseg/s
 12:53:22         0.00      0.00      0.00      0.00
 
-12:53:21     atmptf/s  estres/s retrans/s isegerr/s   orsts/s
+12:53:21     atmptf/s  estres/s retrseg/s isegerr/s   orsts/s
 12:53:22         0.00      0.00      0.00      0.00      0.00
 
 12:53:21       idgm/s    odgm/s  noport/s idgmerr/s
@@ -489,7 +489,7 @@ Linux 1.2.3-TEST (SYSSTAT.TEST) 	06/01/2
 12:53:22     active/s passive/s    iseg/s    oseg/s
 12:53:23         0.00      0.00      0.00      0.00
 
-12:53:22     atmptf/s  estres/s retrans/s isegerr/s   orsts/s
+12:53:22     atmptf/s  estres/s retrseg/s isegerr/s   orsts/s
 12:53:23         0.00      0.00      0.00      0.00      0.00
 
 12:53:22       idgm/s    odgm/s  noport/s idgmerr/s
@@ -787,8 +787,8 @@ Average:         0.00      0.00      0.0
 
 Summary:    kbmemfree   kbavail kbmemused  %memused kbbuffers  kbcached  kbcommit   %commit  kbactive   kbinact   kbdirty  kbanonpg    kbslab  kbkstack   kbpgtbl  kbvmused
 Minimum:      1437740   4389516   3179712     39.04    260172   2821596  12097852     48.54   4042384   1772396       396   2733164    445740     15328     73760         0
-Maximum:      1437740   4389516   3179712     39.04    260172   2821596  12097852     48.54   4042384   1772396       396   2733164    445740     15328     73760         0
-Average:      1437740   4389516   3179712     39.04    260172   2821596  12097852     48.54   4042384   1772396       396   2733164    445740     15328     73760         0
+Maximum:      1437740   4389516   3179712     39.04    260172   2821596  30097852    120.77   4042384   1772396       396   2733164    445740     15328     73760         0
+Average:      1437740   4389516   3179712     39.04    260172   2821596  18097852     72.62   4042384   1772396       396   2733164    445740     15328     73760         0
 
 Summary:    kbswpfree kbswpused  %swpused  kbswpcad   %swpcad
 Minimum:     16777212         0      0.00         0      0.00
@@ -945,7 +945,7 @@ Minimum:         0.00      0.00      0.0
 Maximum:         0.00      0.00      0.00      0.00
 Average:         0.00      0.00      0.00      0.00
 
-Summary:     atmptf/s  estres/s retrans/s isegerr/s   orsts/s
+Summary:     atmptf/s  estres/s retrseg/s isegerr/s   orsts/s
 Minimum:         0.00      0.00      0.00      0.00      0.00
 Maximum:         0.00      0.00      0.00      0.00      0.00
 Average:         0.00      0.00      0.00      0.00      0.00
diff -pruN 12.7.5-2/tests/expected.sar-all 12.7.7-0ubuntu2/tests/expected.sar-all
--- 12.7.5-2/tests/expected.sar-all	2023-11-10 17:48:52.000000000 +0000
+++ 12.7.7-0ubuntu2/tests/expected.sar-all	2024-05-28 08:17:59.000000000 +0000
@@ -308,10 +308,10 @@ Average:         0.00      0.00      0.0
 
 13:20:09    kbmemfree   kbavail kbmemused  %memused kbbuffers  kbcached  kbcommit   %commit  kbactive   kbinact   kbdirty  kbanonpg    kbslab  kbkstack   kbpgtbl  kbvmused
 13:20:19      1437740   4389516   3179712     39.04    260172   2821596  12097852     48.54   4042384   1772396       396   2733164    445740     15328     73760         0
-13:20:29      1437740   4389516   3179712     39.04    260172   2821596  12097852     48.54   4042384   1772396       396   2733164    445740     15328     73760         0
+13:20:29      1437740   4389516   3179712     39.04    260172   2821596  30097852    120.77   4042384   1772396       396   2733164    445740     15328     73760         0
 13:20:39      1437740   4389516   3179712     39.04    260172   2821596  12097852     48.54   4042384   1772396       396   2733164    445740     15328     73760         0
 13:20:49      1437740   4389516   3179712     39.04    260172   2821596  12097852     48.54   4042384   1772396       396   2733164    445740     15328     73760         0
-Average:      1437740   4389516   3179712     39.04    260172   2821596  12097852     48.54   4042384   1772396       396   2733164    445740     15328     73760         0
+Average:      1437740   4389516   3179712     39.04    260172   2821596  16597852     66.60   4042384   1772396       396   2733164    445740     15328     73760         0
 
 13:20:09    kbswpfree kbswpused  %swpused  kbswpcad   %swpcad
 13:20:19     16777212         0      0.00         0      0.00
@@ -570,7 +570,7 @@ Average:         0.00      0.00      0.0
 13:20:49         0.00      0.00      0.00      0.00
 Average:         0.00      0.00      0.00      0.00
 
-13:20:09     atmptf/s  estres/s retrans/s isegerr/s   orsts/s
+13:20:09     atmptf/s  estres/s retrseg/s isegerr/s   orsts/s
 13:20:19         0.00      0.00      0.00      0.00      0.00
 13:20:29         0.00      0.00      0.00      0.00      0.00
 13:20:39         0.00      0.00      0.00      0.00      0.00
diff -pruN 12.7.5-2/tests/expected.sar-dec 12.7.7-0ubuntu2/tests/expected.sar-dec
--- 12.7.5-2/tests/expected.sar-dec	2023-12-09 15:53:16.000000000 +0000
+++ 12.7.7-0ubuntu2/tests/expected.sar-dec	2024-05-28 08:28:30.000000000 +0000
@@ -308,10 +308,10 @@ Average:            0         0
 
 13:20:09    kbmemfree   kbavail kbmemused  %memused kbbuffers  kbcached  kbcommit   %commit  kbactive   kbinact   kbdirty  kbanonpg    kbslab  kbkstack   kbpgtbl  kbvmused
 13:20:19      1437740   4389516   3179712        39    260172   2821596  12097852        49   4042384   1772396       396   2733164    445740     15328     73760         0
-13:20:29      1437740   4389516   3179712        39    260172   2821596  12097852        49   4042384   1772396       396   2733164    445740     15328     73760         0
+13:20:29      1437740   4389516   3179712        39    260172   2821596  30097852       121   4042384   1772396       396   2733164    445740     15328     73760         0
 13:20:39      1437740   4389516   3179712        39    260172   2821596  12097852        49   4042384   1772396       396   2733164    445740     15328     73760         0
 13:20:49      1437740   4389516   3179712        39    260172   2821596  12097852        49   4042384   1772396       396   2733164    445740     15328     73760         0
-Average:      1437740   4389516   3179712        39    260172   2821596  12097852        49   4042384   1772396       396   2733164    445740     15328     73760         0
+Average:      1437740   4389516   3179712        39    260172   2821596  16597852        67   4042384   1772396       396   2733164    445740     15328     73760         0
 
 13:20:09    kbswpfree kbswpused  %swpused  kbswpcad   %swpcad
 13:20:19     16777212         0         0         0         0
@@ -570,7 +570,7 @@ Average:            0         0
 13:20:49            0         0         0         0
 Average:            0         0         0         0
 
-13:20:09     atmptf/s  estres/s retrans/s isegerr/s   orsts/s
+13:20:09     atmptf/s  estres/s retrseg/s isegerr/s   orsts/s
 13:20:19            0         0         0         0         0
 13:20:29            0         0         0         0         0
 13:20:39            0         0         0         0         0
@@ -1067,7 +1067,7 @@ Average:            0         0
 13:54:35            0         0         0         0
 Average:            0         0         0         0
 
-13:54:15     atmptf/s  estres/s retrans/s isegerr/s   orsts/s
+13:54:15     atmptf/s  estres/s retrseg/s isegerr/s   orsts/s
 13:54:35            0         0         0         0         0
 Average:            0         0         0         0         0
 
diff -pruN 12.7.5-2/tests/expected.sar-human 12.7.7-0ubuntu2/tests/expected.sar-human
--- 12.7.5-2/tests/expected.sar-human	2023-12-09 15:53:16.000000000 +0000
+++ 12.7.7-0ubuntu2/tests/expected.sar-human	2024-05-28 08:28:44.000000000 +0000
@@ -308,10 +308,10 @@ Average:         0.00      0.00      0.0
 
 13:20:09    kbmemfree   kbavail kbmemused  %memused kbbuffers  kbcached  kbcommit   %commit  kbactive   kbinact   kbdirty  kbanonpg    kbslab  kbkstack   kbpgtbl  kbvmused
 13:20:19         1.4G      4.2G      3.0G     39.0%    254.1M      2.7G     11.5G     48.5%      3.9G      1.7G    396.0k      2.6G    435.3M     15.0M     72.0M      0.0k
-13:20:29         1.4G      4.2G      3.0G     39.0%    254.1M      2.7G     11.5G     48.5%      3.9G      1.7G    396.0k      2.6G    435.3M     15.0M     72.0M      0.0k
+13:20:29         1.4G      4.2G      3.0G     39.0%    254.1M      2.7G     28.7G    120.8%      3.9G      1.7G    396.0k      2.6G    435.3M     15.0M     72.0M      0.0k
 13:20:39         1.4G      4.2G      3.0G     39.0%    254.1M      2.7G     11.5G     48.5%      3.9G      1.7G    396.0k      2.6G    435.3M     15.0M     72.0M      0.0k
 13:20:49         1.4G      4.2G      3.0G     39.0%    254.1M      2.7G     11.5G     48.5%      3.9G      1.7G    396.0k      2.6G    435.3M     15.0M     72.0M      0.0k
-Average:         1.4G      4.2G      3.0G     39.0%    254.1M      2.7G     11.5G     48.5%      3.9G      1.7G    396.0k      2.6G    435.3M     15.0M     72.0M      0.0k
+Average:         1.4G      4.2G      3.0G     39.0%    254.1M      2.7G     15.8G     66.6%      3.9G      1.7G    396.0k      2.6G    435.3M     15.0M     72.0M      0.0k
 
 13:20:09    kbswpfree kbswpused  %swpused  kbswpcad   %swpcad
 13:20:19        16.0G      0.0k      0.0%      0.0k      0.0%
@@ -570,7 +570,7 @@ Average:         0.00      0.00      0.0
 13:20:49         0.00      0.00      0.00      0.00
 Average:         0.00      0.00      0.00      0.00
 
-13:20:09     atmptf/s  estres/s retrans/s isegerr/s   orsts/s
+13:20:09     atmptf/s  estres/s retrseg/s isegerr/s   orsts/s
 13:20:19         0.00      0.00      0.00      0.00      0.00
 13:20:29         0.00      0.00      0.00      0.00      0.00
 13:20:39         0.00      0.00      0.00      0.00      0.00
@@ -1067,7 +1067,7 @@ Average:         0.00      0.00      0.0
 13:54:35         0.00      0.00      0.00      0.00
 Average:         0.00      0.00      0.00      0.00
 
-13:54:15     atmptf/s  estres/s retrans/s isegerr/s   orsts/s
+13:54:15     atmptf/s  estres/s retrseg/s isegerr/s   orsts/s
 13:54:35         0.00      0.00      0.00      0.00      0.00
 Average:         0.00      0.00      0.00      0.00      0.00
 
diff -pruN 12.7.5-2/tests/expected.sar32-A 12.7.7-0ubuntu2/tests/expected.sar32-A
--- 12.7.5-2/tests/expected.sar32-A	2023-12-09 15:53:16.000000000 +0000
+++ 12.7.7-0ubuntu2/tests/expected.sar32-A	2024-01-20 15:13:54.000000000 +0000
@@ -254,7 +254,7 @@ Average:         0.00      0.00      0.0
 13:20:39         0.00      0.00      0.00      0.00
 Average:         0.00      0.00      0.00      0.00
 
-13:20:29     atmptf/s  estres/s retrans/s isegerr/s   orsts/s
+13:20:29     atmptf/s  estres/s retrseg/s isegerr/s   orsts/s
 13:20:39         0.00      0.00      0.00      0.00      0.00
 Average:         0.00      0.00      0.00      0.00      0.00
 
diff -pruN 12.7.5-2/tests/expected.tapestat-JSON 12.7.7-0ubuntu2/tests/expected.tapestat-JSON
--- 12.7.5-2/tests/expected.tapestat-JSON	1970-01-01 00:00:00.000000000 +0000
+++ 12.7.7-0ubuntu2/tests/expected.tapestat-JSON	2024-11-30 16:16:40.000000000 +0000
@@ -0,0 +1,26 @@
+{"sysstat": {
+	"hosts": [
+		{
+			"nodename": "SYSSTAT.TEST",
+			"sysname": "Linux",
+			"release": "1.2.3-TEST",
+			"machine": "x86_64",
+			"number-of-cpus": 9,
+			"date": "06/01/20",
+			"statistics": [
+				{
+					"tape": [
+						{"tape_device": "st0", "r/s": 1, "w/s": 139, "kB_read/s": 24, "kB_wrtn/s": 2673, "Rd": 0, "Wr": 4, "Oa": 6, "Rs/s": 1, "Ot/s": 0},
+						{"tape_device": "st1", "r/s": 1, "w/s": 139, "kB_read/s": 24, "kB_wrtn/s": 2673, "Rd": 0, "Wr": 4, "Oa": 6, "Rs/s": 1, "Ot/s": 0}
+					]
+				},
+				{
+					"tape": [
+						{"tape_device": "st0", "r/s": 3, "w/s": 26, "kB_read/s": 0, "kB_wrtn/s": 0, "Rd": 0, "Wr": 0, "Oa": 0, "Rs/s": 6, "Ot/s": 0},
+						{"tape_device": "st1", "r/s": 0, "w/s": 0, "kB_read/s": 0, "kB_wrtn/s": 0, "Rd": 0, "Wr": 0, "Oa": 0, "Rs/s": 0, "Ot/s": 0}
+					]
+				}
+			]
+		}
+	]
+}}
diff -pruN 12.7.5-2/tests/expected.tapestat-mt-JSON 12.7.7-0ubuntu2/tests/expected.tapestat-mt-JSON
--- 12.7.5-2/tests/expected.tapestat-mt-JSON	1970-01-01 00:00:00.000000000 +0000
+++ 12.7.7-0ubuntu2/tests/expected.tapestat-mt-JSON	2024-11-30 16:22:13.000000000 +0000
@@ -0,0 +1,34 @@
+{"sysstat": {
+	"hosts": [
+		{
+			"nodename": "SYSSTAT.TEST",
+			"sysname": "Linux",
+			"release": "1.2.3-TEST",
+			"machine": "x86_64",
+			"number-of-cpus": 9,
+			"date": "06/01/20",
+			"statistics": [
+				{
+					"timestamp": "06/01/20 12:53:22",
+					"tape": [
+						{"tape_device": "st0", "r/s": 1, "w/s": 139, "MB_read/s": 0, "MB_wrtn/s": 2, "Rd": 0, "Wr": 4, "Oa": 6, "Rs/s": 1, "Ot/s": 0},
+						{"tape_device": "st1", "r/s": 1, "w/s": 139, "MB_read/s": 0, "MB_wrtn/s": 2, "Rd": 0, "Wr": 4, "Oa": 6, "Rs/s": 1, "Ot/s": 0}
+					]
+				},
+				{
+					"timestamp": "06/01/20 12:53:25",
+					"tape": [
+						{"tape_device": "st0", "r/s": 3, "w/s": 26, "MB_read/s": 0, "MB_wrtn/s": 0, "Rd": 0, "Wr": 0, "Oa": 0, "Rs/s": 6, "Ot/s": 0},
+						{"tape_device": "st1", "r/s": 0, "w/s": 0, "MB_read/s": 0, "MB_wrtn/s": 0, "Rd": 0, "Wr": 0, "Oa": 0, "Rs/s": 0, "Ot/s": 0}
+					]
+				},
+				{
+					"timestamp": "06/01/20 12:53:28",
+					"tape": [
+
+					]
+				}
+			]
+		}
+	]
+}}
diff -pruN 12.7.5-2/tests/expected0.sadf-g 12.7.7-0ubuntu2/tests/expected0.sadf-g
--- 12.7.5-2/tests/expected0.sadf-g	2023-05-06 16:26:53.000000000 +0000
+++ 12.7.7-0ubuntu2/tests/expected0.sadf-g	2024-05-31 11:12:33.000000000 +0000
@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
-<svg xmlns="http://www.w3.org/2000/svg" width="1060" height="680" fill="black" stroke="#808080" stroke-width="1">
+<svg xmlns="http://www.w3.org/2000/svg" width="1060" height="100" fill="black" stroke="#808080" stroke-width="1">
 <text x="0" y="30" text-anchor="start" stroke="#a52a2a">Linux 1.2.3-TEST (SYSSTAT.TEST) 	04/18/19 	_x86_64_	(9 CPU)
 </text>
 <text x= "0" y="60" text-anchor="start" stroke="#ff0000">No data!</text>
diff -pruN 12.7.5-2/tests/expected0.sadf-g-CPUoff 12.7.7-0ubuntu2/tests/expected0.sadf-g-CPUoff
--- 12.7.5-2/tests/expected0.sadf-g-CPUoff	1970-01-01 00:00:00.000000000 +0000
+++ 12.7.7-0ubuntu2/tests/expected0.sadf-g-CPUoff	2024-06-02 12:10:26.000000000 +0000
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<svg xmlns="http://www.w3.org/2000/svg" width="1060" height="100" fill="black" stroke="#808080" stroke-width="1">
+<text x="0" y="30" text-anchor="start" stroke="#a52a2a">Linux 1.2.3-TEST (SYSSTAT.TEST) 	04/18/19 	_x86_64_	(9 CPU)
+</text>
+<text x= "0" y="60" text-anchor="start" stroke="#ff0000">No data!</text>
+<!-- Actual canvas height: 60 -->
+</svg>
diff -pruN 12.7.5-2/tests/expected0.sadf-x 12.7.7-0ubuntu2/tests/expected0.sadf-x
--- 12.7.5-2/tests/expected0.sadf-x	2023-12-09 15:53:16.000000000 +0000
+++ 12.7.7-0ubuntu2/tests/expected0.sadf-x	2024-01-20 15:14:45.000000000 +0000
@@ -3,7 +3,7 @@
 xmlns="https://sysstat.github.io"
 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
 xsi:schemaLocation="https://sysstat.github.io https://sysstat.github.io/sysstat.xsd">
-	<sysdata-version>3.16</sysdata-version>
+	<sysdata-version>3.17</sysdata-version>
 	<host nodename="SYSSTAT.TEST">
 		<sysname>Linux</sysname>
 		<release>1.2.3-TEST</release>
diff -pruN 12.7.5-2/tests/expected1.pidstat-At-TALL-ALL-JSON 12.7.7-0ubuntu2/tests/expected1.pidstat-At-TALL-ALL-JSON
--- 12.7.5-2/tests/expected1.pidstat-At-TALL-ALL-JSON	1970-01-01 00:00:00.000000000 +0000
+++ 12.7.7-0ubuntu2/tests/expected1.pidstat-At-TALL-ALL-JSON	2024-12-22 14:01:28.000000000 +0000
@@ -0,0 +1,362 @@
+{"sysstat": {
+	"hosts": [
+		{
+			"nodename": "SYSSTAT.TEST",
+			"sysname": "Linux",
+			"release": "1.2.3-TEST",
+			"machine": "x86_64",
+			"number-of-cpus": 9,
+			"date": "06/01/20",
+			"statistics": [
+				{
+					"timestamp": "12:53:22",
+					"task-cpu-load": [
+						{"USER": "testusr", "TGID": "7900", "TID": "", "usr": 359.42, "system": 53.55, "guest": 0.00, "wait": 8.47, "cpu": 412.96, "cpu_nr": 2, "leader": "", "cmd": "gnome-shell"},
+						{"USER": "testusr", "TGID": "7900", "TID": "7900", "usr": 349.70, "system": 51.43, "guest": 0.00, "wait": 8.47, "cpu": 401.12, "cpu_nr": 2, "leader": "gnome-shell", "cmd": "gnome-shell"},
+						{"USER": "testusr", "TGID": "7900", "TID": "10334", "usr": 0.00, "system": 0.00, "guest": 0.00, "wait": 0.00, "cpu": 0.00, "cpu_nr": 5, "leader": "gnome-shell", "cmd": "dconf worker"},
+						{"USER": "root", "TGID": "8407", "TID": "", "usr": 0.35, "system": 0.03, "guest": 0.00, "wait": 0.00, "cpu": 0.38, "cpu_nr": 0, "leader": "", "cmd": "gnome-terminal-"},
+						{"USER": "root", "TGID": "8407", "TID": "8407", "usr": 0.35, "system": 0.03, "guest": 0.00, "wait": 0.00, "cpu": 0.38, "cpu_nr": 0, "leader": "gnome-terminal-", "cmd": "gnome-terminal-"},
+						{"USER": "testusr", "TGID": "8741", "TID": "", "usr": 0.00, "system": 0.00, "guest": 0.00, "wait": 0.00, "cpu": 0.00, "cpu_nr": 0, "leader": "", "cmd": "firefox"},
+						{"USER": "testusr", "TGID": "8741", "TID": "8741", "usr": 0.03, "system": 0.00, "guest": 0.00, "wait": 0.00, "cpu": 0.03, "cpu_nr": 0, "leader": "firefox", "cmd": "firefox"},
+						{"USER": "testusr", "TGID": "8741", "TID": "8785", "usr": 0.00, "system": 0.00, "guest": 0.00, "wait": 0.00, "cpu": 0.00, "cpu_nr": 3, "leader": "firefox", "cmd": "JS Helper"},
+						{"USER": "testusr", "TGID": "8741", "TID": "8789", "usr": 0.00, "system": 0.00, "guest": 0.00, "wait": 0.00, "cpu": 0.00, "cpu_nr": 2, "leader": "firefox", "cmd": "Link Monitor"},
+						{"USER": "testusr", "TGID": "8741", "TID": "8835", "usr": 0.00, "system": 0.00, "guest": 0.00, "wait": 0.00, "cpu": 0.00, "cpu_nr": 0, "leader": "firefox", "cmd": "ImgDecoder #1"},
+						{"USER": "testusr", "TGID": "8741", "TID": "9109", "usr": 0.00, "system": 0.00, "guest": 0.00, "wait": 0.00, "cpu": 0.00, "cpu_nr": 7, "leader": "firefox", "cmd": "DOM Worker"},
+						{"USER": "testusr", "TGID": "9009", "TID": "", "usr": 0.00, "system": 0.00, "guest": 0.00, "wait": 0.00, "cpu": 0.00, "cpu_nr": 3, "leader": "", "cmd": "WebExtensions"},
+						{"USER": "testusr", "TGID": "9009", "TID": "9009", "usr": 0.03, "system": 0.00, "guest": 0.00, "wait": 0.00, "cpu": 0.03, "cpu_nr": 3, "leader": "WebExtensions", "cmd": "WebExtensions"},
+						{"USER": "testusr", "TGID": "9009", "TID": "9029", "usr": 0.00, "system": 0.00, "guest": 0.00, "wait": 0.00, "cpu": 0.00, "cpu_nr": 2, "leader": "WebExtensions", "cmd": "Timer"},
+						{"USER": "testusr", "TGID": "21342", "TID": "", "usr": 0.00, "system": 0.00, "guest": 0.00, "wait": 0.00, "cpu": 0.00, "cpu_nr": 5, "leader": "", "cmd": "soffice.bin"},
+						{"USER": "testusr", "TGID": "21342", "TID": "21342", "usr": 0.00, "system": 0.00, "guest": 0.00, "wait": 0.00, "cpu": 0.00, "cpu_nr": 5, "leader": "soffice.bin", "cmd": "soffice.bin"},
+						{"USER": "testusr", "TGID": "21342", "TID": "21344", "usr": 0.00, "system": 0.00, "guest": 0.00, "wait": 0.00, "cpu": 0.00, "cpu_nr": 5, "leader": "soffice.bin", "cmd": "rtl_cache_wsupd"},
+						{"USER": "testusr", "TGID": "21342", "TID": "21350", "usr": 0.00, "system": 0.00, "guest": 0.00, "wait": 0.00, "cpu": 0.00, "cpu_nr": 4, "leader": "soffice.bin", "cmd": "gdbus"}
+					],
+					"child-cpu-load": [
+						{"USER": "testusr", "TGID": "7900", "TID": "", "usr-ms": 112090, "system-ms": 16710, "guest-ms": 0, "leader": "", "cmd": "gnome-shell"},
+						{"USER": "testusr", "TGID": "7900", "TID": "7900", "usr-ms": 109060, "system-ms": 16050, "guest-ms": 0, "leader": "gnome-shell", "cmd": "gnome-shell"},
+						{"USER": "testusr", "TGID": "7900", "TID": "10334", "usr-ms": 410, "system-ms": 120, "guest-ms": 0, "leader": "gnome-shell", "cmd": "dconf worker"},
+						{"USER": "root", "TGID": "8407", "TID": "", "usr-ms": 110, "system-ms": 10, "guest-ms": 0, "leader": "", "cmd": "gnome-terminal-"},
+						{"USER": "root", "TGID": "8407", "TID": "8407", "usr-ms": 110, "system-ms": 10, "guest-ms": 0, "leader": "gnome-terminal-", "cmd": "gnome-terminal-"},
+						{"USER": "testusr", "TGID": "8741", "TID": "", "usr-ms": 0, "system-ms": 0, "guest-ms": 0, "leader": "", "cmd": "firefox"},
+						{"USER": "testusr", "TGID": "8741", "TID": "8741", "usr-ms": 10, "system-ms": 0, "guest-ms": 0, "leader": "firefox", "cmd": "firefox"},
+						{"USER": "testusr", "TGID": "8741", "TID": "8785", "usr-ms": 0, "system-ms": 0, "guest-ms": 0, "leader": "firefox", "cmd": "JS Helper"},
+						{"USER": "testusr", "TGID": "8741", "TID": "8789", "usr-ms": 0, "system-ms": 0, "guest-ms": 0, "leader": "firefox", "cmd": "Link Monitor"},
+						{"USER": "testusr", "TGID": "8741", "TID": "8835", "usr-ms": 0, "system-ms": 0, "guest-ms": 0, "leader": "firefox", "cmd": "ImgDecoder #1"},
+						{"USER": "testusr", "TGID": "8741", "TID": "9109", "usr-ms": 0, "system-ms": 0, "guest-ms": 0, "leader": "firefox", "cmd": "DOM Worker"},
+						{"USER": "testusr", "TGID": "9009", "TID": "", "usr-ms": 0, "system-ms": 0, "guest-ms": 0, "leader": "", "cmd": "WebExtensions"},
+						{"USER": "testusr", "TGID": "9009", "TID": "9009", "usr-ms": 10, "system-ms": 0, "guest-ms": 0, "leader": "WebExtensions", "cmd": "WebExtensions"},
+						{"USER": "testusr", "TGID": "9009", "TID": "9029", "usr-ms": 0, "system-ms": 0, "guest-ms": 0, "leader": "WebExtensions", "cmd": "Timer"},
+						{"USER": "testusr", "TGID": "21342", "TID": "", "usr-ms": 0, "system-ms": 0, "guest-ms": 0, "leader": "", "cmd": "soffice.bin"},
+						{"USER": "testusr", "TGID": "21342", "TID": "21342", "usr-ms": 0, "system-ms": 0, "guest-ms": 0, "leader": "soffice.bin", "cmd": "soffice.bin"},
+						{"USER": "testusr", "TGID": "21342", "TID": "21344", "usr-ms": 0, "system-ms": 0, "guest-ms": 0, "leader": "soffice.bin", "cmd": "rtl_cache_wsupd"},
+						{"USER": "testusr", "TGID": "21342", "TID": "21350", "usr-ms": 0, "system-ms": 0, "guest-ms": 0, "leader": "soffice.bin", "cmd": "gdbus"}
+					],
+					"task-memory": [
+						{"USER": "testusr", "TGID": "7900", "TID": "", "minflt/s": 25095.93, "majflt/s": 1.48, "VSZ": 4453984, "RSS": 259044, "MEM": 3.18, "leader": "", "cmd": "gnome-shell"},
+						{"USER": "testusr", "TGID": "7900", "TID": "7900", "minflt/s": 23662.56, "majflt/s": 1.35, "VSZ": 4453984, "RSS": 259044, "MEM": 3.18, "leader": "gnome-shell", "cmd": "gnome-shell"},
+						{"USER": "testusr", "TGID": "7900", "TID": "10334", "minflt/s": 0.22, "majflt/s": 0.00, "VSZ": 2512656, "RSS": 291884, "MEM": 3.58, "leader": "gnome-shell", "cmd": "dconf worker"},
+						{"USER": "root", "TGID": "8407", "TID": "", "minflt/s": 0.16, "majflt/s": 0.00, "VSZ": 723868, "RSS": 42156, "MEM": 0.52, "leader": "", "cmd": "gnome-terminal-"},
+						{"USER": "root", "TGID": "8407", "TID": "8407", "minflt/s": 0.16, "majflt/s": 0.00, "VSZ": 723868, "RSS": 42156, "MEM": 0.52, "leader": "gnome-terminal-", "cmd": "gnome-terminal-"},
+						{"USER": "testusr", "TGID": "8741", "TID": "", "minflt/s": 0.00, "majflt/s": 0.00, "VSZ": 2535720, "RSS": 335804, "MEM": 4.12, "leader": "", "cmd": "firefox"},
+						{"USER": "testusr", "TGID": "8741", "TID": "8741", "minflt/s": 0.00, "majflt/s": 0.00, "VSZ": 2535720, "RSS": 335804, "MEM": 4.12, "leader": "firefox", "cmd": "firefox"},
+						{"USER": "testusr", "TGID": "8741", "TID": "8785", "minflt/s": 0.00, "majflt/s": 0.00, "VSZ": 2535720, "RSS": 335804, "MEM": 4.12, "leader": "firefox", "cmd": "JS Helper"},
+						{"USER": "testusr", "TGID": "8741", "TID": "8789", "minflt/s": 0.00, "majflt/s": 0.00, "VSZ": 2535720, "RSS": 335804, "MEM": 4.12, "leader": "firefox", "cmd": "Link Monitor"},
+						{"USER": "testusr", "TGID": "8741", "TID": "8835", "minflt/s": 0.00, "majflt/s": 0.00, "VSZ": 2535720, "RSS": 335804, "MEM": 4.12, "leader": "firefox", "cmd": "ImgDecoder #1"},
+						{"USER": "testusr", "TGID": "8741", "TID": "9109", "minflt/s": 0.00, "majflt/s": 0.00, "VSZ": 2535728, "RSS": 335804, "MEM": 4.12, "leader": "firefox", "cmd": "DOM Worker"},
+						{"USER": "testusr", "TGID": "9009", "TID": "", "minflt/s": 0.03, "majflt/s": 0.00, "VSZ": 1744508, "RSS": 105628, "MEM": 1.30, "leader": "", "cmd": "WebExtensions"},
+						{"USER": "testusr", "TGID": "9009", "TID": "9009", "minflt/s": 0.03, "majflt/s": 0.00, "VSZ": 1744508, "RSS": 105628, "MEM": 1.30, "leader": "WebExtensions", "cmd": "WebExtensions"},
+						{"USER": "testusr", "TGID": "9009", "TID": "9029", "minflt/s": 0.00, "majflt/s": 0.00, "VSZ": 1744508, "RSS": 105628, "MEM": 1.30, "leader": "WebExtensions", "cmd": "Timer"},
+						{"USER": "testusr", "TGID": "21342", "TID": "", "minflt/s": 0.00, "majflt/s": 0.00, "VSZ": 1790688, "RSS": 439484, "MEM": 5.40, "leader": "", "cmd": "soffice.bin"},
+						{"USER": "testusr", "TGID": "21342", "TID": "21342", "minflt/s": 0.00, "majflt/s": 0.00, "VSZ": 1790688, "RSS": 439484, "MEM": 5.40, "leader": "soffice.bin", "cmd": "soffice.bin"},
+						{"USER": "testusr", "TGID": "21342", "TID": "21344", "minflt/s": 0.00, "majflt/s": 0.00, "VSZ": 1790688, "RSS": 439484, "MEM": 5.40, "leader": "soffice.bin", "cmd": "rtl_cache_wsupd"},
+						{"USER": "testusr", "TGID": "21342", "TID": "21350", "minflt/s": 0.00, "majflt/s": 0.00, "VSZ": 1790688, "RSS": 439484, "MEM": 5.40, "leader": "soffice.bin", "cmd": "gdbus"}
+					],
+					"child-memory": [
+						{"USER": "testusr", "TGID": "7900", "TID": "", "minflt-nr": 785212, "majflt-nr": 49, "leader": "", "cmd": "gnome-shell"},
+						{"USER": "testusr", "TGID": "7900", "TID": "7900", "minflt-nr": 740534, "majflt-nr": 45, "leader": "gnome-shell", "cmd": "gnome-shell"},
+						{"USER": "testusr", "TGID": "7900", "TID": "10334", "minflt-nr": 16402, "majflt-nr": 3, "leader": "gnome-shell", "cmd": "dconf worker"},
+						{"USER": "root", "TGID": "8407", "TID": "", "minflt-nr": 5, "majflt-nr": 0, "leader": "", "cmd": "gnome-terminal-"},
+						{"USER": "root", "TGID": "8407", "TID": "8407", "minflt-nr": 5, "majflt-nr": 0, "leader": "gnome-terminal-", "cmd": "gnome-terminal-"},
+						{"USER": "testusr", "TGID": "8741", "TID": "", "minflt-nr": 0, "majflt-nr": 0, "leader": "", "cmd": "firefox"},
+						{"USER": "testusr", "TGID": "8741", "TID": "8741", "minflt-nr": 0, "majflt-nr": 0, "leader": "firefox", "cmd": "firefox"},
+						{"USER": "testusr", "TGID": "8741", "TID": "8785", "minflt-nr": 0, "majflt-nr": 0, "leader": "firefox", "cmd": "JS Helper"},
+						{"USER": "testusr", "TGID": "8741", "TID": "8789", "minflt-nr": 0, "majflt-nr": 0, "leader": "firefox", "cmd": "Link Monitor"},
+						{"USER": "testusr", "TGID": "8741", "TID": "8835", "minflt-nr": 0, "majflt-nr": 0, "leader": "firefox", "cmd": "ImgDecoder #1"},
+						{"USER": "testusr", "TGID": "8741", "TID": "9109", "minflt-nr": 0, "majflt-nr": 0, "leader": "firefox", "cmd": "DOM Worker"},
+						{"USER": "testusr", "TGID": "9009", "TID": "", "minflt-nr": 1, "majflt-nr": 0, "leader": "", "cmd": "WebExtensions"},
+						{"USER": "testusr", "TGID": "9009", "TID": "9009", "minflt-nr": 1, "majflt-nr": 0, "leader": "WebExtensions", "cmd": "WebExtensions"},
+						{"USER": "testusr", "TGID": "9009", "TID": "9029", "minflt-nr": 0, "majflt-nr": 0, "leader": "WebExtensions", "cmd": "Timer"},
+						{"USER": "testusr", "TGID": "21342", "TID": "", "minflt-nr": 0, "majflt-nr": 0, "leader": "", "cmd": "soffice.bin"},
+						{"USER": "testusr", "TGID": "21342", "TID": "21342", "minflt-nr": 0, "majflt-nr": 0, "leader": "soffice.bin", "cmd": "soffice.bin"},
+						{"USER": "testusr", "TGID": "21342", "TID": "21344", "minflt-nr": 0, "majflt-nr": 0, "leader": "soffice.bin", "cmd": "rtl_cache_wsupd"},
+						{"USER": "testusr", "TGID": "21342", "TID": "21350", "minflt-nr": 0, "majflt-nr": 0, "leader": "soffice.bin", "cmd": "gdbus"}
+					],
+					"stack": [
+						{"USER": "testusr", "TGID": "7900", "TID": "", "StkSize": 128, "StkRef": 108, "leader": "", "cmd": "gnome-shell"},
+						{"USER": "testusr", "TGID": "7900", "TID": "7900", "StkSize": 128, "StkRef": 108, "leader": "gnome-shell", "cmd": "gnome-shell"},
+						{"USER": "testusr", "TGID": "7900", "TID": "10334", "StkSize": 128, "StkRef": 108, "leader": "gnome-shell", "cmd": "dconf worker"},
+						{"USER": "root", "TGID": "8407", "TID": "", "StkSize": 132, "StkRef": 120, "leader": "", "cmd": "gnome-terminal-"},
+						{"USER": "root", "TGID": "8407", "TID": "8407", "StkSize": 132, "StkRef": 120, "leader": "gnome-terminal-", "cmd": "gnome-terminal-"},
+						{"USER": "testusr", "TGID": "8741", "TID": "", "StkSize": 132, "StkRef": 52, "leader": "", "cmd": "firefox"},
+						{"USER": "testusr", "TGID": "8741", "TID": "8741", "StkSize": 132, "StkRef": 52, "leader": "firefox", "cmd": "firefox"},
+						{"USER": "testusr", "TGID": "8741", "TID": "8785", "StkSize": 132, "StkRef": 52, "leader": "firefox", "cmd": "JS Helper"},
+						{"USER": "testusr", "TGID": "8741", "TID": "8789", "StkSize": 132, "StkRef": 52, "leader": "firefox", "cmd": "Link Monitor"},
+						{"USER": "testusr", "TGID": "8741", "TID": "8835", "StkSize": 132, "StkRef": 52, "leader": "firefox", "cmd": "ImgDecoder #1"},
+						{"USER": "testusr", "TGID": "8741", "TID": "9109", "StkSize": 132, "StkRef": 52, "leader": "firefox", "cmd": "DOM Worker"},
+						{"USER": "testusr", "TGID": "9009", "TID": "", "StkSize": 132, "StkRef": 20, "leader": "", "cmd": "WebExtensions"},
+						{"USER": "testusr", "TGID": "9009", "TID": "9009", "StkSize": 132, "StkRef": 20, "leader": "WebExtensions", "cmd": "WebExtensions"},
+						{"USER": "testusr", "TGID": "9009", "TID": "9029", "StkSize": 132, "StkRef": 20, "leader": "WebExtensions", "cmd": "Timer"},
+						{"USER": "testusr", "TGID": "21342", "TID": "", "StkSize": 132, "StkRef": 36, "leader": "", "cmd": "soffice.bin"},
+						{"USER": "testusr", "TGID": "21342", "TID": "21342", "StkSize": 132, "StkRef": 36, "leader": "soffice.bin", "cmd": "soffice.bin"},
+						{"USER": "testusr", "TGID": "21342", "TID": "21344", "StkSize": 132, "StkRef": 36, "leader": "soffice.bin", "cmd": "rtl_cache_wsupd"},
+						{"USER": "testusr", "TGID": "21342", "TID": "21350", "StkSize": 132, "StkRef": 36, "leader": "soffice.bin", "cmd": "gdbus"}
+					],
+					"io": [
+						{"USER": "testusr", "TGID": "7900", "TID": "", "kB_rd/s": 411.81, "kB_wr/s": 2.82, "kB_ccwr/s": 0.00, "iodelay": 253, "leader": "", "cmd": "gnome-shell"},
+						{"USER": "testusr", "TGID": "7900", "TID": "7900", "kB_rd/s": 195.70, "kB_wr/s": 1.15, "kB_ccwr/s": 0.00, "iodelay": 253, "leader": "gnome-shell", "cmd": "gnome-shell"},
+						{"USER": "testusr", "TGID": "7900", "TID": "10334", "kB_rd/s": 0.01, "kB_wr/s": 0.00, "kB_ccwr/s": 0.00, "iodelay": 0, "leader": "gnome-shell", "cmd": "dconf worker"},
+						{"USER": "root", "TGID": "8407", "TID": "", "kB_rd/s": 0.00, "kB_wr/s": 0.00, "kB_ccwr/s": 0.00, "iodelay": 0, "leader": "", "cmd": "gnome-terminal-"},
+						{"USER": "root", "TGID": "8407", "TID": "8407", "kB_rd/s": 0.00, "kB_wr/s": 0.00, "kB_ccwr/s": 0.00, "iodelay": 0, "leader": "gnome-terminal-", "cmd": "gnome-terminal-"},
+						{"USER": "testusr", "TGID": "8741", "TID": "", "kB_rd/s": 0.00, "kB_wr/s": 0.00, "kB_ccwr/s": 0.00, "iodelay": 0, "leader": "", "cmd": "firefox"},
+						{"USER": "testusr", "TGID": "8741", "TID": "8741", "kB_rd/s": 0.00, "kB_wr/s": 0.00, "kB_ccwr/s": 0.00, "iodelay": 0, "leader": "firefox", "cmd": "firefox"},
+						{"USER": "testusr", "TGID": "8741", "TID": "8785", "kB_rd/s": 0.00, "kB_wr/s": 0.00, "kB_ccwr/s": 0.00, "iodelay": 0, "leader": "firefox", "cmd": "JS Helper"},
+						{"USER": "testusr", "TGID": "8741", "TID": "8789", "kB_rd/s": 0.00, "kB_wr/s": 0.00, "kB_ccwr/s": 0.00, "iodelay": 0, "leader": "firefox", "cmd": "Link Monitor"},
+						{"USER": "testusr", "TGID": "8741", "TID": "8835", "kB_rd/s": 0.00, "kB_wr/s": 0.00, "kB_ccwr/s": 0.00, "iodelay": 0, "leader": "firefox", "cmd": "ImgDecoder #1"},
+						{"USER": "testusr", "TGID": "8741", "TID": "9109", "kB_rd/s": 0.00, "kB_wr/s": 0.00, "kB_ccwr/s": 0.00, "iodelay": 0, "leader": "firefox", "cmd": "DOM Worker"},
+						{"USER": "testusr", "TGID": "9009", "TID": "", "kB_rd/s": 0.00, "kB_wr/s": 0.00, "kB_ccwr/s": 0.00, "iodelay": 0, "leader": "", "cmd": "WebExtensions"},
+						{"USER": "testusr", "TGID": "9009", "TID": "9009", "kB_rd/s": 0.00, "kB_wr/s": 0.00, "kB_ccwr/s": 0.00, "iodelay": 0, "leader": "WebExtensions", "cmd": "WebExtensions"},
+						{"USER": "testusr", "TGID": "9009", "TID": "9029", "kB_rd/s": 0.00, "kB_wr/s": 0.00, "kB_ccwr/s": 0.00, "iodelay": 0, "leader": "WebExtensions", "cmd": "Timer"},
+						{"USER": "testusr", "TGID": "21342", "TID": "", "kB_rd/s": 0.00, "kB_wr/s": 0.00, "kB_ccwr/s": 0.00, "iodelay": 0, "leader": "", "cmd": "soffice.bin"},
+						{"USER": "testusr", "TGID": "21342", "TID": "21342", "kB_rd/s": 0.00, "kB_wr/s": 0.00, "kB_ccwr/s": 0.00, "iodelay": 0, "leader": "soffice.bin", "cmd": "soffice.bin"},
+						{"USER": "testusr", "TGID": "21342", "TID": "21344", "kB_rd/s": 0.00, "kB_wr/s": 0.00, "kB_ccwr/s": 0.00, "iodelay": 0, "leader": "soffice.bin", "cmd": "rtl_cache_wsupd"},
+						{"USER": "testusr", "TGID": "21342", "TID": "21350", "kB_rd/s": 0.00, "kB_wr/s": 0.00, "kB_ccwr/s": 0.00, "iodelay": 0, "leader": "soffice.bin", "cmd": "gdbus"}
+					],
+					"context-switch": [
+						{"USER": "testusr", "TGID": "7900", "TID": "", "cswch/s": 5700.42, "nvcswch/s": 700.96, "leader": "", "cmd": "gnome-shell"},
+						{"USER": "testusr", "TGID": "7900", "TID": "7900", "cswch/s": 5700.45, "nvcswch/s": 700.96, "leader": "gnome-shell", "cmd": "gnome-shell"},
+						{"USER": "testusr", "TGID": "7900", "TID": "10334", "cswch/s": 0.29, "nvcswch/s": 0.00, "leader": "gnome-shell", "cmd": "dconf worker"},
+						{"USER": "root", "TGID": "8407", "TID": "", "cswch/s": 5.00, "nvcswch/s": 0.06, "leader": "", "cmd": "gnome-terminal-"},
+						{"USER": "root", "TGID": "8407", "TID": "8407", "cswch/s": 5.00, "nvcswch/s": 0.06, "leader": "gnome-terminal-", "cmd": "gnome-terminal-"},
+						{"USER": "testusr", "TGID": "8741", "TID": "", "cswch/s": 1.60, "nvcswch/s": 0.00, "leader": "", "cmd": "firefox"},
+						{"USER": "testusr", "TGID": "8741", "TID": "8741", "cswch/s": 1.60, "nvcswch/s": 0.00, "leader": "firefox", "cmd": "firefox"},
+						{"USER": "testusr", "TGID": "8741", "TID": "8785", "cswch/s": 0.00, "nvcswch/s": 0.00, "leader": "firefox", "cmd": "JS Helper"},
+						{"USER": "testusr", "TGID": "8741", "TID": "8789", "cswch/s": 0.00, "nvcswch/s": 0.00, "leader": "firefox", "cmd": "Link Monitor"},
+						{"USER": "testusr", "TGID": "8741", "TID": "8835", "cswch/s": 0.00, "nvcswch/s": 0.00, "leader": "firefox", "cmd": "ImgDecoder #1"},
+						{"USER": "testusr", "TGID": "8741", "TID": "9109", "cswch/s": 0.00, "nvcswch/s": 0.00, "leader": "firefox", "cmd": "DOM Worker"},
+						{"USER": "testusr", "TGID": "9009", "TID": "", "cswch/s": 0.19, "nvcswch/s": 0.00, "leader": "", "cmd": "WebExtensions"},
+						{"USER": "testusr", "TGID": "9009", "TID": "9009", "cswch/s": 0.19, "nvcswch/s": 0.00, "leader": "WebExtensions", "cmd": "WebExtensions"},
+						{"USER": "testusr", "TGID": "9009", "TID": "9029", "cswch/s": 0.32, "nvcswch/s": 0.00, "leader": "WebExtensions", "cmd": "Timer"},
+						{"USER": "testusr", "TGID": "21342", "TID": "", "cswch/s": 0.00, "nvcswch/s": 0.00, "leader": "", "cmd": "soffice.bin"},
+						{"USER": "testusr", "TGID": "21342", "TID": "21342", "cswch/s": 0.00, "nvcswch/s": 0.00, "leader": "soffice.bin", "cmd": "soffice.bin"},
+						{"USER": "testusr", "TGID": "21342", "TID": "21344", "cswch/s": 0.00, "nvcswch/s": 0.00, "leader": "soffice.bin", "cmd": "rtl_cache_wsupd"},
+						{"USER": "testusr", "TGID": "21342", "TID": "21350", "cswch/s": 0.00, "nvcswch/s": 0.00, "leader": "soffice.bin", "cmd": "gdbus"}
+					],
+					"kernel": [
+						{"USER": "testusr", "TGID": "7900", "TID": "", "threads": 18, "fd-nr": 5, "leader": "", "cmd": "gnome-shell"},
+						{"USER": "testusr", "TGID": "7900", "TID": "7900", "threads": 18, "fd-nr": 5, "leader": "gnome-shell", "cmd": "gnome-shell"},
+						{"USER": "testusr", "TGID": "7900", "TID": "10334", "threads": 67, "fd-nr": 5, "leader": "gnome-shell", "cmd": "dconf worker"},
+						{"USER": "root", "TGID": "8407", "TID": "", "threads": 4, "fd-nr": 5, "leader": "", "cmd": "gnome-terminal-"},
+						{"USER": "root", "TGID": "8407", "TID": "8407", "threads": 4, "fd-nr": 5, "leader": "gnome-terminal-", "cmd": "gnome-terminal-"},
+						{"USER": "testusr", "TGID": "8741", "TID": "", "threads": 67, "fd-nr": 5, "leader": "", "cmd": "firefox"},
+						{"USER": "testusr", "TGID": "8741", "TID": "8741", "threads": 67, "fd-nr": 5, "leader": "firefox", "cmd": "firefox"},
+						{"USER": "testusr", "TGID": "8741", "TID": "8785", "threads": 67, "fd-nr": 5, "leader": "firefox", "cmd": "JS Helper"},
+						{"USER": "testusr", "TGID": "8741", "TID": "8789", "threads": 67, "fd-nr": 5, "leader": "firefox", "cmd": "Link Monitor"},
+						{"USER": "testusr", "TGID": "8741", "TID": "8835", "threads": 67, "fd-nr": 5, "leader": "firefox", "cmd": "ImgDecoder #1"},
+						{"USER": "testusr", "TGID": "8741", "TID": "9109", "threads": 67, "fd-nr": 5, "leader": "firefox", "cmd": "DOM Worker"},
+						{"USER": "testusr", "TGID": "9009", "TID": "", "threads": 32, "fd-nr": 5, "leader": "", "cmd": "WebExtensions"},
+						{"USER": "testusr", "TGID": "9009", "TID": "9009", "threads": 32, "fd-nr": 5, "leader": "WebExtensions", "cmd": "WebExtensions"},
+						{"USER": "testusr", "TGID": "9009", "TID": "9029", "threads": 32, "fd-nr": 5, "leader": "WebExtensions", "cmd": "Timer"},
+						{"USER": "testusr", "TGID": "21342", "TID": "", "threads": 6, "fd-nr": 5, "leader": "", "cmd": "soffice.bin"},
+						{"USER": "testusr", "TGID": "21342", "TID": "21342", "threads": 6, "fd-nr": 5, "leader": "soffice.bin", "cmd": "soffice.bin"},
+						{"USER": "testusr", "TGID": "21342", "TID": "21344", "threads": 6, "fd-nr": 5, "leader": "soffice.bin", "cmd": "rtl_cache_wsupd"},
+						{"USER": "testusr", "TGID": "21342", "TID": "21350", "threads": 6, "fd-nr": 5, "leader": "soffice.bin", "cmd": "gdbus"}
+					],
+					"realtime": [
+						{"USER": "testusr", "TGID": "7900", "TID": "", "prio": 0, "policy": "NORMAL", "leader": "", "cmd": "gnome-shell"},
+						{"USER": "testusr", "TGID": "7900", "TID": "7900", "prio": 0, "policy": "NORMAL", "leader": "gnome-shell", "cmd": "gnome-shell"},
+						{"USER": "testusr", "TGID": "7900", "TID": "10334", "prio": 0, "policy": "NORMAL", "leader": "gnome-shell", "cmd": "dconf worker"},
+						{"USER": "root", "TGID": "8407", "TID": "", "prio": 0, "policy": "NORMAL", "leader": "", "cmd": "gnome-terminal-"},
+						{"USER": "root", "TGID": "8407", "TID": "8407", "prio": 0, "policy": "NORMAL", "leader": "gnome-terminal-", "cmd": "gnome-terminal-"},
+						{"USER": "testusr", "TGID": "8741", "TID": "", "prio": 0, "policy": "NORMAL", "leader": "", "cmd": "firefox"},
+						{"USER": "testusr", "TGID": "8741", "TID": "8741", "prio": 0, "policy": "NORMAL", "leader": "firefox", "cmd": "firefox"},
+						{"USER": "testusr", "TGID": "8741", "TID": "8785", "prio": 0, "policy": "NORMAL", "leader": "firefox", "cmd": "JS Helper"},
+						{"USER": "testusr", "TGID": "8741", "TID": "8789", "prio": 0, "policy": "NORMAL", "leader": "firefox", "cmd": "Link Monitor"},
+						{"USER": "testusr", "TGID": "8741", "TID": "8835", "prio": 0, "policy": "NORMAL", "leader": "firefox", "cmd": "ImgDecoder #1"},
+						{"USER": "testusr", "TGID": "8741", "TID": "9109", "prio": 0, "policy": "NORMAL", "leader": "firefox", "cmd": "DOM Worker"},
+						{"USER": "testusr", "TGID": "9009", "TID": "", "prio": 0, "policy": "NORMAL", "leader": "", "cmd": "WebExtensions"},
+						{"USER": "testusr", "TGID": "9009", "TID": "9009", "prio": 0, "policy": "NORMAL", "leader": "WebExtensions", "cmd": "WebExtensions"},
+						{"USER": "testusr", "TGID": "9009", "TID": "9029", "prio": 0, "policy": "NORMAL", "leader": "WebExtensions", "cmd": "Timer"},
+						{"USER": "testusr", "TGID": "21342", "TID": "", "prio": 0, "policy": "NORMAL", "leader": "", "cmd": "soffice.bin"},
+						{"USER": "testusr", "TGID": "21342", "TID": "21342", "prio": 0, "policy": "NORMAL", "leader": "soffice.bin", "cmd": "soffice.bin"},
+						{"USER": "testusr", "TGID": "21342", "TID": "21344", "prio": 0, "policy": "NORMAL", "leader": "soffice.bin", "cmd": "rtl_cache_wsupd"},
+						{"USER": "testusr", "TGID": "21342", "TID": "21350", "prio": 0, "policy": "NORMAL", "leader": "soffice.bin", "cmd": "gdbus"}
+					]
+				},
+				{
+					"timestamp": "12:53:24",
+					"task-cpu-load": [
+						{"USER": "testusr", "TGID": "7900", "TID": "", "usr": 0.67, "system": 0.16, "guest": 0.00, "wait": 0.06, "cpu": 0.83, "cpu_nr": 7, "leader": "", "cmd": "gnome-shell"},
+						{"USER": "testusr", "TGID": "7900", "TID": "7900", "usr": 0.64, "system": 0.13, "guest": 0.00, "wait": 0.06, "cpu": 0.77, "cpu_nr": 7, "leader": "gnome-shell", "cmd": "gnome-shell"},
+						{"USER": "testusr", "TGID": "7900", "TID": "10334", "usr": 0.00, "system": 0.00, "guest": 0.00, "wait": 0.00, "cpu": 0.00, "cpu_nr": 5, "leader": "gnome-shell", "cmd": "dconf worker"},
+						{"USER": "root", "TGID": "8407", "TID": "", "usr": 0.19, "system": 0.00, "guest": 0.00, "wait": 0.00, "cpu": 0.19, "cpu_nr": 3, "leader": "", "cmd": "gnome-terminal-"},
+						{"USER": "root", "TGID": "8407", "TID": "8407", "usr": 0.19, "system": 0.00, "guest": 0.00, "wait": 0.00, "cpu": 0.19, "cpu_nr": 3, "leader": "gnome-terminal-", "cmd": "gnome-terminal-"},
+						{"USER": "testusr", "TGID": "8741", "TID": "", "usr": 0.13, "system": 0.03, "guest": 0.00, "wait": 0.03, "cpu": 0.16, "cpu_nr": 5, "leader": "", "cmd": "firefox"},
+						{"USER": "testusr", "TGID": "8741", "TID": "8741", "usr": 0.06, "system": 0.00, "guest": 0.00, "wait": 0.03, "cpu": 0.06, "cpu_nr": 5, "leader": "firefox", "cmd": "firefox"},
+						{"USER": "testusr", "TGID": "8741", "TID": "8785", "usr": 0.00, "system": 0.00, "guest": 0.00, "wait": 0.00, "cpu": 0.00, "cpu_nr": 3, "leader": "firefox", "cmd": "JS Helper"},
+						{"USER": "testusr", "TGID": "8741", "TID": "8789", "usr": 0.00, "system": 0.00, "guest": 0.00, "wait": 0.00, "cpu": 0.00, "cpu_nr": 2, "leader": "firefox", "cmd": "Link Monitor"},
+						{"USER": "testusr", "TGID": "8741", "TID": "8835", "usr": 0.00, "system": 0.00, "guest": 0.00, "wait": 0.00, "cpu": 0.00, "cpu_nr": 0, "leader": "firefox", "cmd": "ImgDecoder #1"},
+						{"USER": "testusr", "TGID": "8741", "TID": "9109", "usr": 0.00, "system": 0.00, "guest": 0.00, "wait": 0.00, "cpu": 0.00, "cpu_nr": 7, "leader": "firefox", "cmd": "DOM Worker"},
+						{"USER": "testusr", "TGID": "21342", "TID": "", "usr": 0.00, "system": 0.00, "guest": 0.00, "wait": 0.00, "cpu": 0.00, "cpu_nr": 5, "leader": "", "cmd": "soffice.bin"},
+						{"USER": "testusr", "TGID": "21342", "TID": "8364", "usr": 0.00, "system": 0.00, "guest": 0.00, "wait": 0.00, "cpu": 0.00, "cpu_nr": 0, "leader": "soffice.bin", "cmd": "dconf worker"},
+						{"USER": "testusr", "TGID": "21342", "TID": "8365", "usr": 0.06, "system": 0.00, "guest": 0.00, "wait": 0.00, "cpu": 0.06, "cpu_nr": 7, "leader": "soffice.bin", "cmd": "evolution-addre"},
+						{"USER": "testusr", "TGID": "21342", "TID": "21342", "usr": 0.00, "system": 0.00, "guest": 0.00, "wait": 0.00, "cpu": 0.00, "cpu_nr": 5, "leader": "soffice.bin", "cmd": "soffice.bin"},
+						{"USER": "testusr", "TGID": "21342", "TID": "21350", "usr": 0.00, "system": 0.00, "guest": 0.00, "wait": 0.00, "cpu": 0.00, "cpu_nr": 4, "leader": "soffice.bin", "cmd": "gdbus"}
+					],
+					"child-cpu-load": [
+						{"USER": "testusr", "TGID": "7900", "TID": "", "usr-ms": 210, "system-ms": 50, "guest-ms": 0, "leader": "", "cmd": "gnome-shell"},
+						{"USER": "testusr", "TGID": "7900", "TID": "7900", "usr-ms": 200, "system-ms": 40, "guest-ms": 0, "leader": "gnome-shell", "cmd": "gnome-shell"},
+						{"USER": "testusr", "TGID": "7900", "TID": "10334", "usr-ms": 0, "system-ms": 0, "guest-ms": 0, "leader": "gnome-shell", "cmd": "dconf worker"},
+						{"USER": "root", "TGID": "8407", "TID": "", "usr-ms": 60, "system-ms": 0, "guest-ms": 0, "leader": "", "cmd": "gnome-terminal-"},
+						{"USER": "root", "TGID": "8407", "TID": "8407", "usr-ms": 60, "system-ms": 0, "guest-ms": 0, "leader": "gnome-terminal-", "cmd": "gnome-terminal-"},
+						{"USER": "testusr", "TGID": "8741", "TID": "", "usr-ms": 40, "system-ms": 10, "guest-ms": 0, "leader": "", "cmd": "firefox"},
+						{"USER": "testusr", "TGID": "8741", "TID": "8741", "usr-ms": 20, "system-ms": 0, "guest-ms": 0, "leader": "firefox", "cmd": "firefox"},
+						{"USER": "testusr", "TGID": "8741", "TID": "8785", "usr-ms": 0, "system-ms": 0, "guest-ms": 0, "leader": "firefox", "cmd": "JS Helper"},
+						{"USER": "testusr", "TGID": "8741", "TID": "8789", "usr-ms": 0, "system-ms": 0, "guest-ms": 0, "leader": "firefox", "cmd": "Link Monitor"},
+						{"USER": "testusr", "TGID": "8741", "TID": "8835", "usr-ms": 0, "system-ms": 0, "guest-ms": 0, "leader": "firefox", "cmd": "ImgDecoder #1"},
+						{"USER": "testusr", "TGID": "8741", "TID": "9109", "usr-ms": 0, "system-ms": 0, "guest-ms": 0, "leader": "firefox", "cmd": "DOM Worker"},
+						{"USER": "testusr", "TGID": "21342", "TID": "", "usr-ms": 0, "system-ms": 0, "guest-ms": 0, "leader": "", "cmd": "soffice.bin"},
+						{"USER": "testusr", "TGID": "21342", "TID": "8364", "usr-ms": 0, "system-ms": 0, "guest-ms": 0, "leader": "soffice.bin", "cmd": "dconf worker"},
+						{"USER": "testusr", "TGID": "21342", "TID": "8365", "usr-ms": 20, "system-ms": 0, "guest-ms": 0, "leader": "soffice.bin", "cmd": "evolution-addre"},
+						{"USER": "testusr", "TGID": "21342", "TID": "21342", "usr-ms": 0, "system-ms": 0, "guest-ms": 0, "leader": "soffice.bin", "cmd": "soffice.bin"},
+						{"USER": "testusr", "TGID": "21342", "TID": "21350", "usr-ms": 0, "system-ms": 0, "guest-ms": 0, "leader": "soffice.bin", "cmd": "gdbus"}
+					],
+					"task-memory": [
+						{"USER": "testusr", "TGID": "7900", "TID": "", "minflt/s": 169.05, "majflt/s": 0.00, "VSZ": 4449368, "RSS": 259096, "MEM": 3.18, "leader": "", "cmd": "gnome-shell"},
+						{"USER": "testusr", "TGID": "7900", "TID": "7900", "minflt/s": 169.01, "majflt/s": 0.00, "VSZ": 4449368, "RSS": 259096, "MEM": 3.18, "leader": "gnome-shell", "cmd": "gnome-shell"},
+						{"USER": "testusr", "TGID": "7900", "TID": "10334", "minflt/s": 0.00, "majflt/s": 0.00, "VSZ": 2512656, "RSS": 291884, "MEM": 3.58, "leader": "gnome-shell", "cmd": "dconf worker"},
+						{"USER": "root", "TGID": "8407", "TID": "", "minflt/s": 0.13, "majflt/s": 0.00, "VSZ": 723868, "RSS": 42156, "MEM": 0.52, "leader": "", "cmd": "gnome-terminal-"},
+						{"USER": "root", "TGID": "8407", "TID": "8407", "minflt/s": 0.13, "majflt/s": 0.00, "VSZ": 723868, "RSS": 42156, "MEM": 0.52, "leader": "gnome-terminal-", "cmd": "gnome-terminal-"},
+						{"USER": "testusr", "TGID": "8741", "TID": "", "minflt/s": 0.16, "majflt/s": 0.00, "VSZ": 2535720, "RSS": 335804, "MEM": 4.12, "leader": "", "cmd": "firefox"},
+						{"USER": "testusr", "TGID": "8741", "TID": "8741", "minflt/s": 0.16, "majflt/s": 0.00, "VSZ": 2535720, "RSS": 335804, "MEM": 4.12, "leader": "firefox", "cmd": "firefox"},
+						{"USER": "testusr", "TGID": "8741", "TID": "8785", "minflt/s": 0.00, "majflt/s": 0.00, "VSZ": 2535720, "RSS": 335804, "MEM": 4.12, "leader": "firefox", "cmd": "JS Helper"},
+						{"USER": "testusr", "TGID": "8741", "TID": "8789", "minflt/s": 0.00, "majflt/s": 0.00, "VSZ": 2535720, "RSS": 335804, "MEM": 4.12, "leader": "firefox", "cmd": "Link Monitor"},
+						{"USER": "testusr", "TGID": "8741", "TID": "8835", "minflt/s": 0.00, "majflt/s": 0.00, "VSZ": 2535720, "RSS": 335804, "MEM": 4.12, "leader": "firefox", "cmd": "ImgDecoder #1"},
+						{"USER": "testusr", "TGID": "8741", "TID": "9109", "minflt/s": 0.00, "majflt/s": 0.00, "VSZ": 2535728, "RSS": 335804, "MEM": 4.12, "leader": "firefox", "cmd": "DOM Worker"},
+						{"USER": "testusr", "TGID": "21342", "TID": "", "minflt/s": 0.00, "majflt/s": 0.00, "VSZ": 1790688, "RSS": 439484, "MEM": 5.40, "leader": "", "cmd": "soffice.bin"},
+						{"USER": "testusr", "TGID": "21342", "TID": "8364", "minflt/s": 0.42, "majflt/s": 0.00, "VSZ": 1264684, "RSS": 46212, "MEM": 0.57, "leader": "soffice.bin", "cmd": "dconf worker"},
+						{"USER": "testusr", "TGID": "21342", "TID": "8365", "minflt/s": 8.90, "majflt/s": 0.00, "VSZ": 1264684, "RSS": 46212, "MEM": 0.57, "leader": "soffice.bin", "cmd": "evolution-addre"},
+						{"USER": "testusr", "TGID": "21342", "TID": "21342", "minflt/s": 0.00, "majflt/s": 0.00, "VSZ": 1790688, "RSS": 439484, "MEM": 5.40, "leader": "soffice.bin", "cmd": "soffice.bin"},
+						{"USER": "testusr", "TGID": "21342", "TID": "21350", "minflt/s": 0.00, "majflt/s": 0.00, "VSZ": 1790688, "RSS": 439484, "MEM": 5.40, "leader": "soffice.bin", "cmd": "gdbus"}
+					],
+					"child-memory": [
+						{"USER": "testusr", "TGID": "7900", "TID": "", "minflt-nr": 5281, "majflt-nr": 0, "leader": "", "cmd": "gnome-shell"},
+						{"USER": "testusr", "TGID": "7900", "TID": "7900", "minflt-nr": 5280, "majflt-nr": 0, "leader": "gnome-shell", "cmd": "gnome-shell"},
+						{"USER": "testusr", "TGID": "7900", "TID": "10334", "minflt-nr": 0, "majflt-nr": 0, "leader": "gnome-shell", "cmd": "dconf worker"},
+						{"USER": "root", "TGID": "8407", "TID": "", "minflt-nr": 4, "majflt-nr": 0, "leader": "", "cmd": "gnome-terminal-"},
+						{"USER": "root", "TGID": "8407", "TID": "8407", "minflt-nr": 4, "majflt-nr": 0, "leader": "gnome-terminal-", "cmd": "gnome-terminal-"},
+						{"USER": "testusr", "TGID": "8741", "TID": "", "minflt-nr": 5, "majflt-nr": 0, "leader": "", "cmd": "firefox"},
+						{"USER": "testusr", "TGID": "8741", "TID": "8741", "minflt-nr": 5, "majflt-nr": 0, "leader": "firefox", "cmd": "firefox"},
+						{"USER": "testusr", "TGID": "8741", "TID": "8785", "minflt-nr": 0, "majflt-nr": 0, "leader": "firefox", "cmd": "JS Helper"},
+						{"USER": "testusr", "TGID": "8741", "TID": "8789", "minflt-nr": 0, "majflt-nr": 0, "leader": "firefox", "cmd": "Link Monitor"},
+						{"USER": "testusr", "TGID": "8741", "TID": "8835", "minflt-nr": 0, "majflt-nr": 0, "leader": "firefox", "cmd": "ImgDecoder #1"},
+						{"USER": "testusr", "TGID": "8741", "TID": "9109", "minflt-nr": 0, "majflt-nr": 0, "leader": "firefox", "cmd": "DOM Worker"},
+						{"USER": "testusr", "TGID": "21342", "TID": "", "minflt-nr": 0, "majflt-nr": 0, "leader": "", "cmd": "soffice.bin"},
+						{"USER": "testusr", "TGID": "21342", "TID": "8364", "minflt-nr": 13, "majflt-nr": 0, "leader": "soffice.bin", "cmd": "dconf worker"},
+						{"USER": "testusr", "TGID": "21342", "TID": "8365", "minflt-nr": 278, "majflt-nr": 0, "leader": "soffice.bin", "cmd": "evolution-addre"},
+						{"USER": "testusr", "TGID": "21342", "TID": "21342", "minflt-nr": 0, "majflt-nr": 0, "leader": "soffice.bin", "cmd": "soffice.bin"},
+						{"USER": "testusr", "TGID": "21342", "TID": "21350", "minflt-nr": 0, "majflt-nr": 0, "leader": "soffice.bin", "cmd": "gdbus"}
+					],
+					"stack": [
+						{"USER": "testusr", "TGID": "7900", "TID": "", "StkSize": 128, "StkRef": 108, "leader": "", "cmd": "gnome-shell"},
+						{"USER": "testusr", "TGID": "7900", "TID": "7900", "StkSize": 128, "StkRef": 108, "leader": "gnome-shell", "cmd": "gnome-shell"},
+						{"USER": "testusr", "TGID": "7900", "TID": "10334", "StkSize": 128, "StkRef": 108, "leader": "gnome-shell", "cmd": "dconf worker"},
+						{"USER": "root", "TGID": "8407", "TID": "", "StkSize": 132, "StkRef": 120, "leader": "", "cmd": "gnome-terminal-"},
+						{"USER": "root", "TGID": "8407", "TID": "8407", "StkSize": 132, "StkRef": 120, "leader": "gnome-terminal-", "cmd": "gnome-terminal-"},
+						{"USER": "testusr", "TGID": "8741", "TID": "", "StkSize": 132, "StkRef": 52, "leader": "", "cmd": "firefox"},
+						{"USER": "testusr", "TGID": "8741", "TID": "8741", "StkSize": 132, "StkRef": 52, "leader": "firefox", "cmd": "firefox"},
+						{"USER": "testusr", "TGID": "8741", "TID": "8785", "StkSize": 132, "StkRef": 52, "leader": "firefox", "cmd": "JS Helper"},
+						{"USER": "testusr", "TGID": "8741", "TID": "8789", "StkSize": 132, "StkRef": 52, "leader": "firefox", "cmd": "Link Monitor"},
+						{"USER": "testusr", "TGID": "8741", "TID": "8835", "StkSize": 132, "StkRef": 52, "leader": "firefox", "cmd": "ImgDecoder #1"},
+						{"USER": "testusr", "TGID": "8741", "TID": "9109", "StkSize": 132, "StkRef": 52, "leader": "firefox", "cmd": "DOM Worker"},
+						{"USER": "testusr", "TGID": "21342", "TID": "", "StkSize": 132, "StkRef": 36, "leader": "", "cmd": "soffice.bin"},
+						{"USER": "testusr", "TGID": "21342", "TID": "8364", "StkSize": 132, "StkRef": 36, "leader": "soffice.bin", "cmd": "dconf worker"},
+						{"USER": "testusr", "TGID": "21342", "TID": "8365", "StkSize": 132, "StkRef": 36, "leader": "soffice.bin", "cmd": "evolution-addre"},
+						{"USER": "testusr", "TGID": "21342", "TID": "21342", "StkSize": 132, "StkRef": 36, "leader": "soffice.bin", "cmd": "soffice.bin"},
+						{"USER": "testusr", "TGID": "21342", "TID": "21350", "StkSize": 132, "StkRef": 36, "leader": "soffice.bin", "cmd": "gdbus"}
+					],
+					"io": [
+						{"USER": "testusr", "TGID": "7900", "TID": "", "kB_rd/s": 0.00, "kB_wr/s": 0.00, "kB_ccwr/s": 0.00, "iodelay": 0, "leader": "", "cmd": "gnome-shell"},
+						{"USER": "testusr", "TGID": "7900", "TID": "7900", "kB_rd/s": 0.00, "kB_wr/s": 0.00, "kB_ccwr/s": 0.00, "iodelay": 0, "leader": "gnome-shell", "cmd": "gnome-shell"},
+						{"USER": "testusr", "TGID": "7900", "TID": "10334", "kB_rd/s": 0.00, "kB_wr/s": 0.00, "kB_ccwr/s": 0.00, "iodelay": 0, "leader": "gnome-shell", "cmd": "dconf worker"},
+						{"USER": "root", "TGID": "8407", "TID": "", "kB_rd/s": 0.00, "kB_wr/s": 0.00, "kB_ccwr/s": 0.00, "iodelay": 0, "leader": "", "cmd": "gnome-terminal-"},
+						{"USER": "root", "TGID": "8407", "TID": "8407", "kB_rd/s": 0.00, "kB_wr/s": 0.00, "kB_ccwr/s": 0.00, "iodelay": 0, "leader": "gnome-terminal-", "cmd": "gnome-terminal-"},
+						{"USER": "testusr", "TGID": "8741", "TID": "", "kB_rd/s": 0.00, "kB_wr/s": 0.00, "kB_ccwr/s": 0.00, "iodelay": 0, "leader": "", "cmd": "firefox"},
+						{"USER": "testusr", "TGID": "8741", "TID": "8741", "kB_rd/s": 0.00, "kB_wr/s": 0.00, "kB_ccwr/s": 0.00, "iodelay": 0, "leader": "firefox", "cmd": "firefox"},
+						{"USER": "testusr", "TGID": "8741", "TID": "8785", "kB_rd/s": 0.00, "kB_wr/s": 0.00, "kB_ccwr/s": 0.00, "iodelay": 0, "leader": "firefox", "cmd": "JS Helper"},
+						{"USER": "testusr", "TGID": "8741", "TID": "8789", "kB_rd/s": 0.00, "kB_wr/s": 0.00, "kB_ccwr/s": 0.00, "iodelay": 0, "leader": "firefox", "cmd": "Link Monitor"},
+						{"USER": "testusr", "TGID": "8741", "TID": "8835", "kB_rd/s": 0.00, "kB_wr/s": 0.00, "kB_ccwr/s": 0.00, "iodelay": 0, "leader": "firefox", "cmd": "ImgDecoder #1"},
+						{"USER": "testusr", "TGID": "8741", "TID": "9109", "kB_rd/s": 0.00, "kB_wr/s": 0.00, "kB_ccwr/s": 0.00, "iodelay": 0, "leader": "firefox", "cmd": "DOM Worker"},
+						{"USER": "testusr", "TGID": "21342", "TID": "", "kB_rd/s": 0.00, "kB_wr/s": 0.00, "kB_ccwr/s": 0.00, "iodelay": 0, "leader": "", "cmd": "soffice.bin"},
+						{"USER": "testusr", "TGID": "21342", "TID": "8364", "kB_rd/s": 0.13, "kB_wr/s": 0.01, "kB_ccwr/s": 0.00, "iodelay": 0, "leader": "soffice.bin", "cmd": "dconf worker"},
+						{"USER": "testusr", "TGID": "21342", "TID": "8365", "kB_rd/s": 0.27, "kB_wr/s": 0.14, "kB_ccwr/s": 0.00, "iodelay": 0, "leader": "soffice.bin", "cmd": "evolution-addre"},
+						{"USER": "testusr", "TGID": "21342", "TID": "21342", "kB_rd/s": 0.00, "kB_wr/s": 0.00, "kB_ccwr/s": 0.00, "iodelay": 0, "leader": "soffice.bin", "cmd": "soffice.bin"},
+						{"USER": "testusr", "TGID": "21342", "TID": "21350", "kB_rd/s": 0.00, "kB_wr/s": 0.00, "kB_ccwr/s": 0.00, "iodelay": 0, "leader": "soffice.bin", "cmd": "gdbus"}
+					],
+					"context-switch": [
+						{"USER": "testusr", "TGID": "7900", "TID": "", "cswch/s": 12.32, "nvcswch/s": 5.83, "leader": "", "cmd": "gnome-shell"},
+						{"USER": "testusr", "TGID": "7900", "TID": "7900", "cswch/s": 12.29, "nvcswch/s": 5.83, "leader": "gnome-shell", "cmd": "gnome-shell"},
+						{"USER": "testusr", "TGID": "7900", "TID": "10334", "cswch/s": 0.00, "nvcswch/s": 0.00, "leader": "gnome-shell", "cmd": "dconf worker"},
+						{"USER": "root", "TGID": "8407", "TID": "", "cswch/s": 2.34, "nvcswch/s": 0.00, "leader": "", "cmd": "gnome-terminal-"},
+						{"USER": "root", "TGID": "8407", "TID": "8407", "cswch/s": 2.34, "nvcswch/s": 0.00, "leader": "gnome-terminal-", "cmd": "gnome-terminal-"},
+						{"USER": "testusr", "TGID": "8741", "TID": "", "cswch/s": 7.68, "nvcswch/s": 0.00, "leader": "", "cmd": "firefox"},
+						{"USER": "testusr", "TGID": "8741", "TID": "8741", "cswch/s": 7.68, "nvcswch/s": 0.00, "leader": "firefox", "cmd": "firefox"},
+						{"USER": "testusr", "TGID": "8741", "TID": "8785", "cswch/s": 0.00, "nvcswch/s": 0.00, "leader": "firefox", "cmd": "JS Helper"},
+						{"USER": "testusr", "TGID": "8741", "TID": "8789", "cswch/s": 0.00, "nvcswch/s": 0.00, "leader": "firefox", "cmd": "Link Monitor"},
+						{"USER": "testusr", "TGID": "8741", "TID": "8835", "cswch/s": 0.00, "nvcswch/s": 0.00, "leader": "firefox", "cmd": "ImgDecoder #1"},
+						{"USER": "testusr", "TGID": "8741", "TID": "9109", "cswch/s": 0.00, "nvcswch/s": 0.00, "leader": "firefox", "cmd": "DOM Worker"},
+						{"USER": "testusr", "TGID": "21342", "TID": "", "cswch/s": 0.00, "nvcswch/s": 0.00, "leader": "", "cmd": "soffice.bin"},
+						{"USER": "testusr", "TGID": "21342", "TID": "8364", "cswch/s": 0.51, "nvcswch/s": 0.00, "leader": "soffice.bin", "cmd": "dconf worker"},
+						{"USER": "testusr", "TGID": "21342", "TID": "8365", "cswch/s": 0.45, "nvcswch/s": 0.03, "leader": "soffice.bin", "cmd": "evolution-addre"},
+						{"USER": "testusr", "TGID": "21342", "TID": "21342", "cswch/s": 0.00, "nvcswch/s": 0.00, "leader": "soffice.bin", "cmd": "soffice.bin"},
+						{"USER": "testusr", "TGID": "21342", "TID": "21350", "cswch/s": 0.00, "nvcswch/s": 0.00, "leader": "soffice.bin", "cmd": "gdbus"}
+					],
+					"kernel": [
+						{"USER": "testusr", "TGID": "7900", "TID": "", "threads": 18, "fd-nr": 5, "leader": "", "cmd": "gnome-shell"},
+						{"USER": "testusr", "TGID": "7900", "TID": "7900", "threads": 18, "fd-nr": 5, "leader": "gnome-shell", "cmd": "gnome-shell"},
+						{"USER": "testusr", "TGID": "7900", "TID": "10334", "threads": 67, "fd-nr": 5, "leader": "gnome-shell", "cmd": "dconf worker"},
+						{"USER": "root", "TGID": "8407", "TID": "", "threads": 4, "fd-nr": 5, "leader": "", "cmd": "gnome-terminal-"},
+						{"USER": "root", "TGID": "8407", "TID": "8407", "threads": 4, "fd-nr": 5, "leader": "gnome-terminal-", "cmd": "gnome-terminal-"},
+						{"USER": "testusr", "TGID": "8741", "TID": "", "threads": 67, "fd-nr": 5, "leader": "", "cmd": "firefox"},
+						{"USER": "testusr", "TGID": "8741", "TID": "8741", "threads": 67, "fd-nr": 5, "leader": "firefox", "cmd": "firefox"},
+						{"USER": "testusr", "TGID": "8741", "TID": "8785", "threads": 67, "fd-nr": 5, "leader": "firefox", "cmd": "JS Helper"},
+						{"USER": "testusr", "TGID": "8741", "TID": "8789", "threads": 67, "fd-nr": 5, "leader": "firefox", "cmd": "Link Monitor"},
+						{"USER": "testusr", "TGID": "8741", "TID": "8835", "threads": 67, "fd-nr": 5, "leader": "firefox", "cmd": "ImgDecoder #1"},
+						{"USER": "testusr", "TGID": "8741", "TID": "9109", "threads": 67, "fd-nr": 5, "leader": "firefox", "cmd": "DOM Worker"},
+						{"USER": "testusr", "TGID": "21342", "TID": "", "threads": 6, "fd-nr": 5, "leader": "", "cmd": "soffice.bin"},
+						{"USER": "testusr", "TGID": "21342", "TID": "8364", "threads": 5, "fd-nr": 5, "leader": "soffice.bin", "cmd": "dconf worker"},
+						{"USER": "testusr", "TGID": "21342", "TID": "8365", "threads": 5, "fd-nr": 5, "leader": "soffice.bin", "cmd": "evolution-addre"},
+						{"USER": "testusr", "TGID": "21342", "TID": "21342", "threads": 6, "fd-nr": 5, "leader": "soffice.bin", "cmd": "soffice.bin"},
+						{"USER": "testusr", "TGID": "21342", "TID": "21350", "threads": 6, "fd-nr": 5, "leader": "soffice.bin", "cmd": "gdbus"}
+					],
+					"realtime": [
+						{"USER": "testusr", "TGID": "7900", "TID": "", "prio": 0, "policy": "NORMAL", "leader": "", "cmd": "gnome-shell"},
+						{"USER": "testusr", "TGID": "7900", "TID": "7900", "prio": 0, "policy": "NORMAL", "leader": "gnome-shell", "cmd": "gnome-shell"},
+						{"USER": "testusr", "TGID": "7900", "TID": "10334", "prio": 0, "policy": "NORMAL", "leader": "gnome-shell", "cmd": "dconf worker"},
+						{"USER": "root", "TGID": "8407", "TID": "", "prio": 0, "policy": "NORMAL", "leader": "", "cmd": "gnome-terminal-"},
+						{"USER": "root", "TGID": "8407", "TID": "8407", "prio": 0, "policy": "NORMAL", "leader": "gnome-terminal-", "cmd": "gnome-terminal-"},
+						{"USER": "testusr", "TGID": "8741", "TID": "", "prio": 0, "policy": "NORMAL", "leader": "", "cmd": "firefox"},
+						{"USER": "testusr", "TGID": "8741", "TID": "8741", "prio": 0, "policy": "NORMAL", "leader": "firefox", "cmd": "firefox"},
+						{"USER": "testusr", "TGID": "8741", "TID": "8785", "prio": 0, "policy": "NORMAL", "leader": "firefox", "cmd": "JS Helper"},
+						{"USER": "testusr", "TGID": "8741", "TID": "8789", "prio": 0, "policy": "NORMAL", "leader": "firefox", "cmd": "Link Monitor"},
+						{"USER": "testusr", "TGID": "8741", "TID": "8835", "prio": 0, "policy": "NORMAL", "leader": "firefox", "cmd": "ImgDecoder #1"},
+						{"USER": "testusr", "TGID": "8741", "TID": "9109", "prio": 0, "policy": "NORMAL", "leader": "firefox", "cmd": "DOM Worker"},
+						{"USER": "testusr", "TGID": "21342", "TID": "", "prio": 0, "policy": "NORMAL", "leader": "", "cmd": "soffice.bin"},
+						{"USER": "testusr", "TGID": "21342", "TID": "8364", "prio": 0, "policy": "NORMAL", "leader": "soffice.bin", "cmd": "dconf worker"},
+						{"USER": "testusr", "TGID": "21342", "TID": "8365", "prio": 0, "policy": "NORMAL", "leader": "soffice.bin", "cmd": "evolution-addre"},
+						{"USER": "testusr", "TGID": "21342", "TID": "21342", "prio": 0, "policy": "NORMAL", "leader": "soffice.bin", "cmd": "soffice.bin"},
+						{"USER": "testusr", "TGID": "21342", "TID": "21350", "prio": 0, "policy": "NORMAL", "leader": "soffice.bin", "cmd": "gdbus"}
+					]
+				}
+			]
+		}
+	]
+}}
diff -pruN 12.7.5-2/tests/expected1.pidstat-At-TTASK-JSON 12.7.7-0ubuntu2/tests/expected1.pidstat-At-TTASK-JSON
--- 12.7.5-2/tests/expected1.pidstat-At-TTASK-JSON	1970-01-01 00:00:00.000000000 +0000
+++ 12.7.7-0ubuntu2/tests/expected1.pidstat-At-TTASK-JSON	2024-12-22 14:01:28.000000000 +0000
@@ -0,0 +1,281 @@
+{"sysstat": {
+	"hosts": [
+		{
+			"nodename": "SYSSTAT.TEST",
+			"sysname": "Linux",
+			"release": "1.2.3-TEST",
+			"machine": "x86_64",
+			"number-of-cpus": 9,
+			"date": "06/01/20",
+			"statistics": [
+				{
+					"timestamp": "12:53:22",
+					"task-cpu-load": [
+						{"UID": "1000", "TGID": "7900", "TID": "", "usr": 359.42, "system": 53.55, "guest": 0.00, "wait": 8.47, "cpu": 412.96, "cpu_nr": 2, "leader": "", "cmd": "gnome-shell"},
+						{"UID": "1000", "TGID": "7900", "TID": "7900", "usr": 349.70, "system": 51.43, "guest": 0.00, "wait": 8.47, "cpu": 401.12, "cpu_nr": 2, "leader": "gnome-shell", "cmd": "gnome-shell"},
+						{"UID": "0", "TGID": "8407", "TID": "", "usr": 0.35, "system": 0.03, "guest": 0.00, "wait": 0.00, "cpu": 0.38, "cpu_nr": 0, "leader": "", "cmd": "gnome-terminal-"},
+						{"UID": "0", "TGID": "8407", "TID": "8407", "usr": 0.35, "system": 0.03, "guest": 0.00, "wait": 0.00, "cpu": 0.38, "cpu_nr": 0, "leader": "gnome-terminal-", "cmd": "gnome-terminal-"},
+						{"UID": "1000", "TGID": "8741", "TID": "8741", "usr": 0.03, "system": 0.00, "guest": 0.00, "wait": 0.00, "cpu": 0.03, "cpu_nr": 0, "leader": "firefox", "cmd": "firefox"},
+						{"UID": "1000", "TGID": "9009", "TID": "9009", "usr": 0.03, "system": 0.00, "guest": 0.00, "wait": 0.00, "cpu": 0.03, "cpu_nr": 3, "leader": "WebExtensions", "cmd": "WebExtensions"}
+					],
+					"task-memory": [
+						{"UID": "1000", "TGID": "7900", "TID": "", "minflt/s": 25095.93, "majflt/s": 1.48, "VSZ": 4453984, "RSS": 259044, "MEM": 3.18, "leader": "", "cmd": "gnome-shell"},
+						{"UID": "1000", "TGID": "7900", "TID": "7900", "minflt/s": 23662.56, "majflt/s": 1.35, "VSZ": 4453984, "RSS": 259044, "MEM": 3.18, "leader": "gnome-shell", "cmd": "gnome-shell"},
+						{"UID": "1000", "TGID": "7900", "TID": "10334", "minflt/s": 0.22, "majflt/s": 0.00, "VSZ": 2512656, "RSS": 291884, "MEM": 3.58, "leader": "gnome-shell", "cmd": "dconf worker"},
+						{"UID": "0", "TGID": "8407", "TID": "", "minflt/s": 0.16, "majflt/s": 0.00, "VSZ": 723868, "RSS": 42156, "MEM": 0.52, "leader": "", "cmd": "gnome-terminal-"},
+						{"UID": "0", "TGID": "8407", "TID": "8407", "minflt/s": 0.16, "majflt/s": 0.00, "VSZ": 723868, "RSS": 42156, "MEM": 0.52, "leader": "gnome-terminal-", "cmd": "gnome-terminal-"},
+						{"UID": "1000", "TGID": "8741", "TID": "", "minflt/s": 0.00, "majflt/s": 0.00, "VSZ": 2535720, "RSS": 335804, "MEM": 4.12, "leader": "", "cmd": "firefox"},
+						{"UID": "1000", "TGID": "8741", "TID": "8741", "minflt/s": 0.00, "majflt/s": 0.00, "VSZ": 2535720, "RSS": 335804, "MEM": 4.12, "leader": "firefox", "cmd": "firefox"},
+						{"UID": "1000", "TGID": "8741", "TID": "8785", "minflt/s": 0.00, "majflt/s": 0.00, "VSZ": 2535720, "RSS": 335804, "MEM": 4.12, "leader": "firefox", "cmd": "JS Helper"},
+						{"UID": "1000", "TGID": "8741", "TID": "8789", "minflt/s": 0.00, "majflt/s": 0.00, "VSZ": 2535720, "RSS": 335804, "MEM": 4.12, "leader": "firefox", "cmd": "Link Monitor"},
+						{"UID": "1000", "TGID": "8741", "TID": "8835", "minflt/s": 0.00, "majflt/s": 0.00, "VSZ": 2535720, "RSS": 335804, "MEM": 4.12, "leader": "firefox", "cmd": "ImgDecoder #1"},
+						{"UID": "1000", "TGID": "9009", "TID": "", "minflt/s": 0.03, "majflt/s": 0.00, "VSZ": 1744508, "RSS": 105628, "MEM": 1.30, "leader": "", "cmd": "WebExtensions"},
+						{"UID": "1000", "TGID": "9009", "TID": "9009", "minflt/s": 0.03, "majflt/s": 0.00, "VSZ": 1744508, "RSS": 105628, "MEM": 1.30, "leader": "WebExtensions", "cmd": "WebExtensions"}
+					],
+					"stack": [
+						{"UID": "1000", "TGID": "7900", "TID": "", "StkSize": 128, "StkRef": 108, "leader": "", "cmd": "gnome-shell"},
+						{"UID": "1000", "TGID": "7900", "TID": "7900", "StkSize": 128, "StkRef": 108, "leader": "gnome-shell", "cmd": "gnome-shell"},
+						{"UID": "1000", "TGID": "7900", "TID": "10334", "StkSize": 128, "StkRef": 108, "leader": "gnome-shell", "cmd": "dconf worker"}
+					],
+					"io": [
+						{"UID": "1000", "TGID": "7900", "TID": "", "kB_rd/s": 411.81, "kB_wr/s": 2.82, "kB_ccwr/s": 0.00, "iodelay": 253, "leader": "", "cmd": "gnome-shell"},
+						{"UID": "1000", "TGID": "7900", "TID": "7900", "kB_rd/s": 195.70, "kB_wr/s": 1.15, "kB_ccwr/s": 0.00, "iodelay": 253, "leader": "gnome-shell", "cmd": "gnome-shell"},
+						{"UID": "1000", "TGID": "7900", "TID": "10334", "kB_rd/s": 0.01, "kB_wr/s": 0.00, "kB_ccwr/s": 0.00, "iodelay": 0, "leader": "gnome-shell", "cmd": "dconf worker"}
+					],
+					"context-switch": [
+						{"UID": "1000", "TGID": "7900", "TID": "", "cswch/s": 5700.42, "nvcswch/s": 700.96, "leader": "", "cmd": "gnome-shell"},
+						{"UID": "1000", "TGID": "7900", "TID": "7900", "cswch/s": 5700.45, "nvcswch/s": 700.96, "leader": "gnome-shell", "cmd": "gnome-shell"},
+						{"UID": "1000", "TGID": "7900", "TID": "10334", "cswch/s": 0.29, "nvcswch/s": 0.00, "leader": "gnome-shell", "cmd": "dconf worker"},
+						{"UID": "0", "TGID": "8407", "TID": "", "cswch/s": 5.00, "nvcswch/s": 0.06, "leader": "", "cmd": "gnome-terminal-"},
+						{"UID": "0", "TGID": "8407", "TID": "8407", "cswch/s": 5.00, "nvcswch/s": 0.06, "leader": "gnome-terminal-", "cmd": "gnome-terminal-"},
+						{"UID": "1000", "TGID": "8741", "TID": "", "cswch/s": 1.60, "nvcswch/s": 0.00, "leader": "", "cmd": "firefox"},
+						{"UID": "1000", "TGID": "8741", "TID": "8741", "cswch/s": 1.60, "nvcswch/s": 0.00, "leader": "firefox", "cmd": "firefox"},
+						{"UID": "1000", "TGID": "9009", "TID": "", "cswch/s": 0.19, "nvcswch/s": 0.00, "leader": "", "cmd": "WebExtensions"},
+						{"UID": "1000", "TGID": "9009", "TID": "9009", "cswch/s": 0.19, "nvcswch/s": 0.00, "leader": "WebExtensions", "cmd": "WebExtensions"},
+						{"UID": "1000", "TGID": "9009", "TID": "9029", "cswch/s": 0.32, "nvcswch/s": 0.00, "leader": "WebExtensions", "cmd": "Timer"}
+					],
+					"kernel": [
+						{"UID": "1000", "TGID": "7900", "TID": "", "threads": 18, "fd-nr": 5, "leader": "", "cmd": "gnome-shell"},
+						{"UID": "1000", "TGID": "7900", "TID": "7900", "threads": 18, "fd-nr": 5, "leader": "gnome-shell", "cmd": "gnome-shell"},
+						{"UID": "1000", "TGID": "7900", "TID": "10334", "threads": 67, "fd-nr": 5, "leader": "gnome-shell", "cmd": "dconf worker"}
+					],
+					"realtime": [
+
+					]
+				},
+				{
+					"timestamp": "12:53:24",
+					"task-cpu-load": [
+						{"UID": "1000", "TGID": "7900", "TID": "", "usr": 0.67, "system": 0.16, "guest": 0.00, "wait": 0.06, "cpu": 0.83, "cpu_nr": 7, "leader": "", "cmd": "gnome-shell"},
+						{"UID": "1000", "TGID": "7900", "TID": "7900", "usr": 0.64, "system": 0.13, "guest": 0.00, "wait": 0.06, "cpu": 0.77, "cpu_nr": 7, "leader": "gnome-shell", "cmd": "gnome-shell"},
+						{"UID": "0", "TGID": "8407", "TID": "", "usr": 0.19, "system": 0.00, "guest": 0.00, "wait": 0.00, "cpu": 0.19, "cpu_nr": 3, "leader": "", "cmd": "gnome-terminal-"},
+						{"UID": "0", "TGID": "8407", "TID": "8407", "usr": 0.19, "system": 0.00, "guest": 0.00, "wait": 0.00, "cpu": 0.19, "cpu_nr": 3, "leader": "gnome-terminal-", "cmd": "gnome-terminal-"},
+						{"UID": "1000", "TGID": "8741", "TID": "", "usr": 0.13, "system": 0.03, "guest": 0.00, "wait": 0.03, "cpu": 0.16, "cpu_nr": 5, "leader": "", "cmd": "firefox"},
+						{"UID": "1000", "TGID": "8741", "TID": "8741", "usr": 0.06, "system": 0.00, "guest": 0.00, "wait": 0.03, "cpu": 0.06, "cpu_nr": 5, "leader": "firefox", "cmd": "firefox"},
+						{"UID": "1000", "TGID": "21342", "TID": "8365", "usr": 0.06, "system": 0.00, "guest": 0.00, "wait": 0.00, "cpu": 0.06, "cpu_nr": 7, "leader": "soffice.bin", "cmd": "evolution-addre"}
+					],
+					"task-memory": [
+						{"UID": "1000", "TGID": "7900", "TID": "", "minflt/s": 169.05, "majflt/s": 0.00, "VSZ": 4449368, "RSS": 259096, "MEM": 3.18, "leader": "", "cmd": "gnome-shell"},
+						{"UID": "1000", "TGID": "7900", "TID": "7900", "minflt/s": 169.01, "majflt/s": 0.00, "VSZ": 4449368, "RSS": 259096, "MEM": 3.18, "leader": "gnome-shell", "cmd": "gnome-shell"},
+						{"UID": "0", "TGID": "8407", "TID": "", "minflt/s": 0.13, "majflt/s": 0.00, "VSZ": 723868, "RSS": 42156, "MEM": 0.52, "leader": "", "cmd": "gnome-terminal-"},
+						{"UID": "0", "TGID": "8407", "TID": "8407", "minflt/s": 0.13, "majflt/s": 0.00, "VSZ": 723868, "RSS": 42156, "MEM": 0.52, "leader": "gnome-terminal-", "cmd": "gnome-terminal-"},
+						{"UID": "1000", "TGID": "8741", "TID": "", "minflt/s": 0.16, "majflt/s": 0.00, "VSZ": 2535720, "RSS": 335804, "MEM": 4.12, "leader": "", "cmd": "firefox"},
+						{"UID": "1000", "TGID": "8741", "TID": "8741", "minflt/s": 0.16, "majflt/s": 0.00, "VSZ": 2535720, "RSS": 335804, "MEM": 4.12, "leader": "firefox", "cmd": "firefox"},
+						{"UID": "1000", "TGID": "21342", "TID": "8364", "minflt/s": 0.42, "majflt/s": 0.00, "VSZ": 1264684, "RSS": 46212, "MEM": 0.57, "leader": "soffice.bin", "cmd": "dconf worker"},
+						{"UID": "1000", "TGID": "21342", "TID": "8365", "minflt/s": 8.90, "majflt/s": 0.00, "VSZ": 1264684, "RSS": 46212, "MEM": 0.57, "leader": "soffice.bin", "cmd": "evolution-addre"}
+					],
+					"stack": [
+						{"UID": "1000", "TGID": "21342", "TID": "8364", "StkSize": 132, "StkRef": 36, "leader": "soffice.bin", "cmd": "dconf worker"},
+						{"UID": "1000", "TGID": "21342", "TID": "8365", "StkSize": 132, "StkRef": 36, "leader": "soffice.bin", "cmd": "evolution-addre"}
+					],
+					"io": [
+						{"UID": "1000", "TGID": "7900", "TID": "10334", "kB_rd/s": 0.00, "kB_wr/s": 0.00, "kB_ccwr/s": 0.00, "iodelay": 0, "leader": "gnome-shell", "cmd": "dconf worker"},
+						{"UID": "1000", "TGID": "21342", "TID": "8364", "kB_rd/s": 0.13, "kB_wr/s": 0.01, "kB_ccwr/s": 0.00, "iodelay": 0, "leader": "soffice.bin", "cmd": "dconf worker"},
+						{"UID": "1000", "TGID": "21342", "TID": "8365", "kB_rd/s": 0.27, "kB_wr/s": 0.14, "kB_ccwr/s": 0.00, "iodelay": 0, "leader": "soffice.bin", "cmd": "evolution-addre"}
+					],
+					"context-switch": [
+						{"UID": "1000", "TGID": "7900", "TID": "", "cswch/s": 12.32, "nvcswch/s": 5.83, "leader": "", "cmd": "gnome-shell"},
+						{"UID": "1000", "TGID": "7900", "TID": "7900", "cswch/s": 12.29, "nvcswch/s": 5.83, "leader": "gnome-shell", "cmd": "gnome-shell"},
+						{"UID": "0", "TGID": "8407", "TID": "", "cswch/s": 2.34, "nvcswch/s": 0.00, "leader": "", "cmd": "gnome-terminal-"},
+						{"UID": "0", "TGID": "8407", "TID": "8407", "cswch/s": 2.34, "nvcswch/s": 0.00, "leader": "gnome-terminal-", "cmd": "gnome-terminal-"},
+						{"UID": "1000", "TGID": "8741", "TID": "", "cswch/s": 7.68, "nvcswch/s": 0.00, "leader": "", "cmd": "firefox"},
+						{"UID": "1000", "TGID": "8741", "TID": "8741", "cswch/s": 7.68, "nvcswch/s": 0.00, "leader": "firefox", "cmd": "firefox"},
+						{"UID": "1000", "TGID": "21342", "TID": "8364", "cswch/s": 0.51, "nvcswch/s": 0.00, "leader": "soffice.bin", "cmd": "dconf worker"},
+						{"UID": "1000", "TGID": "21342", "TID": "8365", "cswch/s": 0.45, "nvcswch/s": 0.03, "leader": "soffice.bin", "cmd": "evolution-addre"}
+					],
+					"kernel": [
+						{"UID": "1000", "TGID": "21342", "TID": "8364", "threads": 5, "fd-nr": 5, "leader": "soffice.bin", "cmd": "dconf worker"},
+						{"UID": "1000", "TGID": "21342", "TID": "8365", "threads": 5, "fd-nr": 5, "leader": "soffice.bin", "cmd": "evolution-addre"}
+					],
+					"realtime": [
+
+					]
+				},
+				{
+					"timestamp": "12:53:26",
+					"task-cpu-load": [
+						{"UID": "1000", "TGID": "7900", "TID": "", "usr": 0.88, "system": 0.23, "guest": 0.00, "wait": 0.00, "cpu": 1.12, "cpu_nr": 0, "leader": "", "cmd": "gnome-shell"},
+						{"UID": "1000", "TGID": "7900", "TID": "7900", "usr": 0.83, "system": 0.23, "guest": 0.00, "wait": 0.00, "cpu": 1.06, "cpu_nr": 0, "leader": "gnome-shell", "cmd": "gnome-shell"},
+						{"UID": "0", "TGID": "8407", "TID": "", "usr": 0.05, "system": 0.03, "guest": 0.00, "wait": 0.03, "cpu": 0.08, "cpu_nr": 4, "leader": "", "cmd": "gnome-terminal-"},
+						{"UID": "0", "TGID": "8407", "TID": "8407", "usr": 0.05, "system": 0.03, "guest": 0.00, "wait": 0.03, "cpu": 0.08, "cpu_nr": 4, "leader": "gnome-terminal-", "cmd": "gnome-terminal-"},
+						{"UID": "1000", "TGID": "8741", "TID": "8785", "usr": 0.00, "system": 479136209706741632.00, "guest": 0.00, "wait": 0.00, "cpu": 479136209706741632.00, "cpu_nr": 5, "leader": "firefox", "cmd": "disk_cache:0"},
+						{"UID": "1000", "TGID": "9009", "TID": "", "usr": 11.74, "system": 5.77, "guest": 0.00, "wait": 1.56, "cpu": 17.51, "cpu_nr": 3, "leader": "", "cmd": "WebExtensions"},
+						{"UID": "1000", "TGID": "9009", "TID": "9009", "usr": 8.91, "system": 2.62, "guest": 0.00, "wait": 1.56, "cpu": 11.53, "cpu_nr": 3, "leader": "WebExtensions", "cmd": "WebExtensions"}
+					],
+					"task-memory": [
+						{"UID": "1000", "TGID": "7900", "TID": "", "minflt/s": 318.81, "majflt/s": 0.00, "VSZ": 4451936, "RSS": 259076, "MEM": 3.18, "leader": "", "cmd": "gnome-shell"},
+						{"UID": "1000", "TGID": "7900", "TID": "7900", "minflt/s": 318.81, "majflt/s": 0.00, "VSZ": 4451936, "RSS": 259076, "MEM": 3.18, "leader": "gnome-shell", "cmd": "gnome-shell"},
+						{"UID": "1000", "TGID": "8741", "TID": "8785", "minflt/s": 479136209706741376.00, "majflt/s": 479136209706741632.00, "VSZ": 1432632, "RSS": 51352, "MEM": 0.63, "leader": "firefox", "cmd": "disk_cache:0"},
+						{"UID": "1000", "TGID": "8741", "TID": "9109", "minflt/s": 0.00, "majflt/s": 0.00, "VSZ": 2535720, "RSS": 335804, "MEM": 4.12, "leader": "firefox", "cmd": "DOM Worker"},
+						{"UID": "1000", "TGID": "9009", "TID": "", "minflt/s": 643.64, "majflt/s": 0.36, "VSZ": 1744508, "RSS": 105628, "MEM": 1.30, "leader": "", "cmd": "WebExtensions"},
+						{"UID": "1000", "TGID": "9009", "TID": "9009", "minflt/s": 497.95, "majflt/s": 0.26, "VSZ": 1744508, "RSS": 105628, "MEM": 1.30, "leader": "WebExtensions", "cmd": "WebExtensions"},
+						{"UID": "1000", "TGID": "9009", "TID": "9033", "minflt/s": 0.03, "majflt/s": 0.00, "VSZ": 1744508, "RSS": 105628, "MEM": 1.30, "leader": "WebExtensions", "cmd": "ImageIO"}
+					],
+					"stack": [
+						{"UID": "1000", "TGID": "9009", "TID": "", "StkSize": 132, "StkRef": 20, "leader": "", "cmd": "WebExtensions"},
+						{"UID": "1000", "TGID": "9009", "TID": "9009", "StkSize": 132, "StkRef": 20, "leader": "WebExtensions", "cmd": "WebExtensions"},
+						{"UID": "1000", "TGID": "9009", "TID": "9033", "StkSize": 132, "StkRef": 20, "leader": "WebExtensions", "cmd": "ImageIO"}
+					],
+					"io": [
+						{"UID": "1000", "TGID": "8741", "TID": "8785", "kB_rd/s": 467906454791736.25, "kB_wr/s": 0.05, "kB_ccwr/s": 0.00, "iodelay": 18446744073709551611, "leader": "firefox", "cmd": "disk_cache:0"},
+						{"UID": "1000", "TGID": "9009", "TID": "", "kB_rd/s": 30.65, "kB_wr/s": 0.00, "kB_ccwr/s": 0.00, "iodelay": 69, "leader": "", "cmd": "WebExtensions"},
+						{"UID": "1000", "TGID": "9009", "TID": "9009", "kB_rd/s": 24.52, "kB_wr/s": 0.00, "kB_ccwr/s": 0.00, "iodelay": 69, "leader": "WebExtensions", "cmd": "WebExtensions"},
+						{"UID": "1000", "TGID": "21342", "TID": "8364", "kB_rd/s": 0.05, "kB_wr/s": 0.00, "kB_ccwr/s": 0.00, "iodelay": 0, "leader": "soffice.bin", "cmd": "dconf worker"}
+					],
+					"context-switch": [
+						{"UID": "1000", "TGID": "7900", "TID": "", "cswch/s": 11.71, "nvcswch/s": 6.81, "leader": "", "cmd": "gnome-shell"},
+						{"UID": "1000", "TGID": "7900", "TID": "7900", "cswch/s": 11.71, "nvcswch/s": 6.81, "leader": "gnome-shell", "cmd": "gnome-shell"},
+						{"UID": "0", "TGID": "8407", "TID": "", "cswch/s": 1.22, "nvcswch/s": 0.00, "leader": "", "cmd": "gnome-terminal-"},
+						{"UID": "0", "TGID": "8407", "TID": "8407", "cswch/s": 1.22, "nvcswch/s": 0.00, "leader": "gnome-terminal-", "cmd": "gnome-terminal-"},
+						{"UID": "1000", "TGID": "8741", "TID": "8785", "cswch/s": 479136209706741632.00, "nvcswch/s": 479136209706741632.00, "leader": "firefox", "cmd": "disk_cache:0"},
+						{"UID": "1000", "TGID": "9009", "TID": "", "cswch/s": 629.38, "nvcswch/s": 11.90, "leader": "", "cmd": "WebExtensions"},
+						{"UID": "1000", "TGID": "9009", "TID": "9009", "cswch/s": 629.38, "nvcswch/s": 11.90, "leader": "WebExtensions", "cmd": "WebExtensions"},
+						{"UID": "1000", "TGID": "9009", "TID": "9033", "cswch/s": 0.03, "nvcswch/s": 0.00, "leader": "WebExtensions", "cmd": "ImageIO"}
+					],
+					"kernel": [
+						{"UID": "1000", "TGID": "8741", "TID": "8785", "threads": 5, "fd-nr": 5, "leader": "firefox", "cmd": "disk_cache:0"},
+						{"UID": "1000", "TGID": "8741", "TID": "8789", "threads": 66, "fd-nr": 5, "leader": "firefox", "cmd": "Link Monitor"},
+						{"UID": "1000", "TGID": "8741", "TID": "8835", "threads": 66, "fd-nr": 5, "leader": "firefox", "cmd": "ImgDecoder #1"},
+						{"UID": "1000", "TGID": "8741", "TID": "9109", "threads": 66, "fd-nr": 5, "leader": "firefox", "cmd": "DOM Worker"},
+						{"UID": "1000", "TGID": "9009", "TID": "", "threads": 32, "fd-nr": 5, "leader": "", "cmd": "WebExtensions"},
+						{"UID": "1000", "TGID": "9009", "TID": "9009", "threads": 32, "fd-nr": 5, "leader": "WebExtensions", "cmd": "WebExtensions"},
+						{"UID": "1000", "TGID": "9009", "TID": "9033", "threads": 32, "fd-nr": 5, "leader": "WebExtensions", "cmd": "ImageIO"}
+					],
+					"realtime": [
+						{"UID": "1000", "TGID": "8741", "TID": "8785", "prio": 0, "policy": "IDLE", "leader": "firefox", "cmd": "disk_cache:0"}
+					]
+				},
+				{
+					"timestamp": "12:53:28",
+					"task-cpu-load": [
+						{"UID": "1000", "TGID": "7900", "TID": "", "usr": 3.31, "system": 0.71, "guest": 0.00, "wait": 0.09, "cpu": 4.02, "cpu_nr": 5, "leader": "", "cmd": "gnome-shell"},
+						{"UID": "1000", "TGID": "7900", "TID": "7900", "usr": 3.08, "system": 0.67, "guest": 0.00, "wait": 0.09, "cpu": 3.75, "cpu_nr": 5, "leader": "gnome-shell", "cmd": "gnome-shell"},
+						{"UID": "0", "TGID": "8407", "TID": "", "usr": 0.04, "system": 0.00, "guest": 0.00, "wait": 0.00, "cpu": 0.04, "cpu_nr": 3, "leader": "", "cmd": "gnome-terminal-"},
+						{"UID": "0", "TGID": "8407", "TID": "8407", "usr": 0.04, "system": 0.00, "guest": 0.00, "wait": 0.00, "cpu": 0.04, "cpu_nr": 3, "leader": "gnome-terminal-", "cmd": "gnome-terminal-"},
+						{"UID": "1000", "TGID": "9009", "TID": "", "usr": 0.04, "system": 0.04, "guest": 0.00, "wait": 0.00, "cpu": 0.09, "cpu_nr": 1, "leader": "", "cmd": "WebExtensions"},
+						{"UID": "1000", "TGID": "9009", "TID": "9009", "usr": 0.04, "system": 0.04, "guest": 0.00, "wait": 0.00, "cpu": 0.09, "cpu_nr": 1, "leader": "WebExtensions", "cmd": "WebExtensions"}
+					],
+					"task-memory": [
+						{"UID": "1000", "TGID": "7900", "TID": "", "minflt/s": 736.85, "majflt/s": 0.00, "VSZ": 4448816, "RSS": 259144, "MEM": 3.18, "leader": "", "cmd": "gnome-shell"},
+						{"UID": "1000", "TGID": "7900", "TID": "7900", "minflt/s": 743.28, "majflt/s": 0.00, "VSZ": 4450840, "RSS": 259144, "MEM": 3.18, "leader": "gnome-shell", "cmd": "gnome-shell"},
+						{"UID": "1000", "TGID": "8741", "TID": "8789", "minflt/s": 0.00, "majflt/s": 0.00, "VSZ": 2524288, "RSS": 330644, "MEM": 4.06, "leader": "firefox", "cmd": "Link Monitor"},
+						{"UID": "1000", "TGID": "8741", "TID": "8835", "minflt/s": 0.00, "majflt/s": 0.00, "VSZ": 2524288, "RSS": 330644, "MEM": 4.06, "leader": "firefox", "cmd": "ImgDecoder #1"},
+						{"UID": "1000", "TGID": "8741", "TID": "9109", "minflt/s": 0.00, "majflt/s": 0.00, "VSZ": 2524288, "RSS": 330644, "MEM": 4.06, "leader": "firefox", "cmd": "DOM Worker"},
+						{"UID": "1000", "TGID": "9009", "TID": "", "minflt/s": 5.09, "majflt/s": 0.00, "VSZ": 1744508, "RSS": 106108, "MEM": 1.30, "leader": "", "cmd": "WebExtensions"},
+						{"UID": "1000", "TGID": "9009", "TID": "9009", "minflt/s": 5.09, "majflt/s": 0.00, "VSZ": 1744508, "RSS": 106108, "MEM": 1.30, "leader": "WebExtensions", "cmd": "WebExtensions"},
+						{"UID": "1000", "TGID": "9009", "TID": "9033", "minflt/s": 0.00, "majflt/s": 0.00, "VSZ": 1744508, "RSS": 106108, "MEM": 1.30, "leader": "WebExtensions", "cmd": "ImageIO"},
+						{"UID": "1000", "TGID": "21342", "TID": "21344", "minflt/s": 0.40, "majflt/s": 0.00, "VSZ": 1790688, "RSS": 439484, "MEM": 5.40, "leader": "soffice.bin", "cmd": "rtl_cache_wsupd"}
+					],
+					"stack": [
+						{"UID": "1000", "TGID": "21342", "TID": "21344", "StkSize": 132, "StkRef": 36, "leader": "soffice.bin", "cmd": "rtl_cache_wsupd"}
+					],
+					"io": [
+						{"UID": "1000", "TGID": "8741", "TID": "8785", "kB_rd/s": 0.00, "kB_wr/s": 0.00, "kB_ccwr/s": 0.00, "iodelay": 0, "leader": "firefox", "cmd": "disk_cache:0"},
+						{"UID": "1000", "TGID": "21342", "TID": "8364", "kB_rd/s": 0.00, "kB_wr/s": 0.00, "kB_ccwr/s": 0.00, "iodelay": 0, "leader": "soffice.bin", "cmd": "dconf worker"}
+					],
+					"context-switch": [
+						{"UID": "1000", "TGID": "7900", "TID": "", "cswch/s": 43.77, "nvcswch/s": 17.87, "leader": "", "cmd": "gnome-shell"},
+						{"UID": "1000", "TGID": "7900", "TID": "7900", "cswch/s": 43.77, "nvcswch/s": 17.87, "leader": "gnome-shell", "cmd": "gnome-shell"},
+						{"UID": "0", "TGID": "8407", "TID": "", "cswch/s": 2.28, "nvcswch/s": 0.00, "leader": "", "cmd": "gnome-terminal-"},
+						{"UID": "0", "TGID": "8407", "TID": "8407", "cswch/s": 2.28, "nvcswch/s": 0.00, "leader": "gnome-terminal-", "cmd": "gnome-terminal-"},
+						{"UID": "1000", "TGID": "9009", "TID": "", "cswch/s": 2.81, "nvcswch/s": 0.04, "leader": "", "cmd": "WebExtensions"},
+						{"UID": "1000", "TGID": "9009", "TID": "9009", "cswch/s": 2.81, "nvcswch/s": 0.04, "leader": "WebExtensions", "cmd": "WebExtensions"},
+						{"UID": "1000", "TGID": "21342", "TID": "21344", "cswch/s": 9.65, "nvcswch/s": 0.00, "leader": "soffice.bin", "cmd": "rtl_cache_wsupd"}
+					],
+					"kernel": [
+						{"UID": "1000", "TGID": "8741", "TID": "8789", "threads": 69, "fd-nr": 5, "leader": "firefox", "cmd": "Link Monitor"},
+						{"UID": "1000", "TGID": "8741", "TID": "8835", "threads": 69, "fd-nr": 5, "leader": "firefox", "cmd": "ImgDecoder #1"},
+						{"UID": "1000", "TGID": "8741", "TID": "9109", "threads": 69, "fd-nr": 5, "leader": "firefox", "cmd": "DOM Worker"},
+						{"UID": "1000", "TGID": "21342", "TID": "21344", "threads": 6, "fd-nr": 5, "leader": "soffice.bin", "cmd": "rtl_cache_wsupd"}
+					],
+					"realtime": [
+
+					]
+				},
+				{
+					"timestamp": "12:53:30",
+					"task-cpu-load": [
+						{"UID": "0", "TGID": "8407", "TID": "", "usr": 0.00, "system": 0.00, "guest": 0.00, "wait": 0.00, "cpu": 0.00, "cpu_nr": 2, "leader": "", "cmd": "gnome-terminal-"},
+						{"UID": "0", "TGID": "8407", "TID": "8407", "usr": 0.00, "system": 0.00, "guest": 0.00, "wait": 0.00, "cpu": 0.00, "cpu_nr": 2, "leader": "gnome-terminal-", "cmd": "gnome-terminal-"}
+					],
+					"task-memory": [
+						{"UID": "1000", "TGID": "8741", "TID": "8789", "minflt/s": 0.00, "majflt/s": 0.00, "VSZ": 2524532, "RSS": 339528, "MEM": 4.17, "leader": "firefox", "cmd": "Link Monitor"},
+						{"UID": "1000", "TGID": "8741", "TID": "8835", "minflt/s": 0.00, "majflt/s": 0.00, "VSZ": 2524532, "RSS": 339528, "MEM": 4.17, "leader": "firefox", "cmd": "ImgDecoder #1"},
+						{"UID": "1000", "TGID": "8741", "TID": "9109", "minflt/s": 0.00, "majflt/s": 0.00, "VSZ": 2524532, "RSS": 339528, "MEM": 4.17, "leader": "firefox", "cmd": "DOM Worker"}
+					],
+					"stack": [
+
+					],
+					"io": [
+						{"UID": "1000", "TGID": "8741", "TID": "8785", "kB_rd/s": 0.00, "kB_wr/s": 0.00, "kB_ccwr/s": 0.00, "iodelay": 0, "leader": "firefox", "cmd": "disk_cache:0"}
+					],
+					"context-switch": [
+						{"UID": "0", "TGID": "8407", "TID": "", "cswch/s": 0.00, "nvcswch/s": 0.00, "leader": "", "cmd": "gnome-terminal-"},
+						{"UID": "0", "TGID": "8407", "TID": "8407", "cswch/s": 0.00, "nvcswch/s": 0.00, "leader": "gnome-terminal-", "cmd": "gnome-terminal-"},
+						{"UID": "1000", "TGID": "8741", "TID": "8835", "cswch/s": 0.00, "nvcswch/s": 0.00, "leader": "firefox", "cmd": "ImgDecoder #1"}
+					],
+					"kernel": [
+						{"UID": "1000", "TGID": "8741", "TID": "8789", "threads": 70, "fd-nr": 5, "leader": "firefox", "cmd": "Link Monitor"},
+						{"UID": "1000", "TGID": "8741", "TID": "8835", "threads": 70, "fd-nr": 5, "leader": "firefox", "cmd": "ImgDecoder #1"},
+						{"UID": "1000", "TGID": "8741", "TID": "9109", "threads": 70, "fd-nr": 5, "leader": "firefox", "cmd": "DOM Worker"}
+					],
+					"realtime": [
+
+					]
+				},
+				{
+					"timestamp": "12:53:32",
+					"task-cpu-load": [
+						{"UID": "0", "TGID": "8407", "TID": "", "usr": 0.06, "system": 0.00, "guest": 0.00, "wait": 0.00, "cpu": 0.06, "cpu_nr": 4, "leader": "", "cmd": "gnome-terminal-"},
+						{"UID": "0", "TGID": "8407", "TID": "8407", "usr": 0.06, "system": 0.00, "guest": 0.00, "wait": 0.00, "cpu": 0.06, "cpu_nr": 4, "leader": "gnome-terminal-", "cmd": "gnome-terminal-"}
+					],
+					"task-memory": [
+						{"UID": "0", "TGID": "8407", "TID": "", "minflt/s": 0.03, "majflt/s": 0.00, "VSZ": 723868, "RSS": 42156, "MEM": 0.52, "leader": "", "cmd": "gnome-terminal-"},
+						{"UID": "0", "TGID": "8407", "TID": "8407", "minflt/s": 0.03, "majflt/s": 0.00, "VSZ": 723868, "RSS": 42156, "MEM": 0.52, "leader": "gnome-terminal-", "cmd": "gnome-terminal-"},
+						{"UID": "1000", "TGID": "8741", "TID": "8789", "minflt/s": 0.00, "majflt/s": 0.00, "VSZ": 2534716, "RSS": 342460, "MEM": 4.20, "leader": "firefox", "cmd": "Link Monitor"},
+						{"UID": "1000", "TGID": "8741", "TID": "8835", "minflt/s": 0.00, "majflt/s": 0.00, "VSZ": 2534716, "RSS": 342460, "MEM": 4.20, "leader": "firefox", "cmd": "ImgDecoder #1"},
+						{"UID": "1000", "TGID": "8741", "TID": "9109", "minflt/s": 0.00, "majflt/s": 0.00, "VSZ": 2534716, "RSS": 342460, "MEM": 4.20, "leader": "firefox", "cmd": "DOM Worker"}
+					],
+					"stack": [
+
+					],
+					"io": [
+						{"UID": "1000", "TGID": "8741", "TID": "8785", "kB_rd/s": 0.00, "kB_wr/s": 0.00, "kB_ccwr/s": 0.00, "iodelay": 0, "leader": "firefox", "cmd": "disk_cache:0"}
+					],
+					"context-switch": [
+						{"UID": "0", "TGID": "8407", "TID": "", "cswch/s": 2.34, "nvcswch/s": 0.00, "leader": "", "cmd": "gnome-terminal-"},
+						{"UID": "0", "TGID": "8407", "TID": "8407", "cswch/s": 2.31, "nvcswch/s": 0.00, "leader": "gnome-terminal-", "cmd": "gnome-terminal-"}
+					],
+					"kernel": [
+						{"UID": "1000", "TGID": "8741", "TID": "8789", "threads": 71, "fd-nr": 5, "leader": "firefox", "cmd": "Link Monitor"},
+						{"UID": "1000", "TGID": "8741", "TID": "8835", "threads": 71, "fd-nr": 5, "leader": "firefox", "cmd": "ImgDecoder #1"},
+						{"UID": "1000", "TGID": "8741", "TID": "9109", "threads": 71, "fd-nr": 5, "leader": "firefox", "cmd": "DOM Worker"}
+					],
+					"realtime": [
+
+					]
+				}
+			]
+		}
+	]
+}}
diff -pruN 12.7.5-2/tests/expected1.pidstat-C-JSON 12.7.7-0ubuntu2/tests/expected1.pidstat-C-JSON
--- 12.7.5-2/tests/expected1.pidstat-C-JSON	1970-01-01 00:00:00.000000000 +0000
+++ 12.7.7-0ubuntu2/tests/expected1.pidstat-C-JSON	2024-12-22 14:01:28.000000000 +0000
@@ -0,0 +1,50 @@
+{"sysstat": {
+	"hosts": [
+		{
+			"nodename": "SYSSTAT.TEST",
+			"sysname": "Linux",
+			"release": "1.2.3-TEST",
+			"machine": "x86_64",
+			"number-of-cpus": 9,
+			"date": "06/01/20",
+			"statistics": [
+				{
+					"timestamp": "1591016002",
+					"task-cpu-load": [
+
+					]
+				},
+				{
+					"timestamp": "1591016004",
+					"task-cpu-load": [
+						{"UID": "1000", "PID": "8741", "usr": 0.13, "system": 0.03, "guest": 0.00, "wait": 0.03, "cpu": 0.16, "cpu_nr": 5, "cmd": "firefox"}
+					]
+				},
+				{
+					"timestamp": "1591016006",
+					"task-cpu-load": [
+
+					]
+				},
+				{
+					"timestamp": "1591016008",
+					"task-cpu-load": [
+
+					]
+				},
+				{
+					"timestamp": "1591016010",
+					"task-cpu-load": [
+
+					]
+				},
+				{
+					"timestamp": "1591016012",
+					"task-cpu-load": [
+
+					]
+				}
+			]
+		}
+	]
+}}
diff -pruN 12.7.5-2/tests/expected1.sadf-x 12.7.7-0ubuntu2/tests/expected1.sadf-x
--- 12.7.5-2/tests/expected1.sadf-x	2023-12-09 15:53:16.000000000 +0000
+++ 12.7.7-0ubuntu2/tests/expected1.sadf-x	2024-01-20 15:11:16.000000000 +0000
@@ -3,7 +3,7 @@
 xmlns="https://sysstat.github.io"
 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
 xsi:schemaLocation="https://sysstat.github.io https://sysstat.github.io/sysstat.xsd">
-	<sysdata-version>3.16</sysdata-version>
+	<sysdata-version>3.17</sysdata-version>
 	<host nodename="SYSSTAT.TEST">
 		<sysname>Linux</sysname>
 		<release>1.2.3-TEST</release>
diff -pruN 12.7.5-2/tests/expected1.sar-CPUoffon 12.7.7-0ubuntu2/tests/expected1.sar-CPUoffon
--- 12.7.5-2/tests/expected1.sar-CPUoffon	1970-01-01 00:00:00.000000000 +0000
+++ 12.7.7-0ubuntu2/tests/expected1.sar-CPUoffon	2024-06-03 10:04:07.000000000 +0000
@@ -0,0 +1,333 @@
+Linux 1.2.3-TEST (SYSSTAT.TEST) 	04/18/19 	_x86_64_	(9 CPU)
+
+13:20:19        CPU      %usr     %nice      %sys   %iowait    %steal      %irq     %soft    %guest    %gnice     %idle
+13:20:29          0      1.25      0.00      1.51      0.35      0.00      0.19      0.58      0.00      0.00     96.12
+13:20:39          0      2.19     52.01      1.46      0.00      0.00      0.36      0.39      0.00      0.00     43.59
+
+Summary:        CPU      %usr     %nice      %sys   %iowait    %steal      %irq     %soft    %guest    %gnice     %idle
+Minimum:          0      1.25      0.00      1.46      0.00      0.00      0.19      0.39      0.00      0.00     43.59
+Maximum:          0      2.19     52.01      1.51      0.35      0.00      0.36      0.58      0.00      0.00     96.12
+Average:          0      1.77     28.70      1.48      0.16      0.00      0.29      0.47      0.00      0.00     67.13
+Average:          6      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.00    100.00
+
+13:20:19         INTR      CPU0
+13:20:29          sum   3118.50
+13:20:29            0      0.00
+13:20:29            8      0.00
+13:20:29            9      0.00
+13:20:29           16      0.00
+13:20:29           17      0.00
+13:20:29           18      0.00
+13:20:29           19      0.00
+13:20:29           23      0.00
+13:20:29           24      0.00
+13:20:29           25      0.00
+13:20:29           26      0.00
+13:20:29           27      0.00
+13:20:29           28      0.00
+13:20:29           29      0.00
+13:20:29           30      0.00
+13:20:29           31      0.00
+13:20:29           32      0.00
+13:20:29           33      0.00
+13:20:29           34      0.00
+13:20:29           35      0.00
+13:20:29           36      0.00
+13:20:29          NMI      0.00
+13:20:29          LOC   2967.32
+13:20:29          SPU      0.00
+13:20:29          PMI      0.00
+13:20:29          IWI      0.00
+13:20:29          RTR      0.00
+13:20:29          RES    130.12
+13:20:29          CAL      5.35
+13:20:29          TLB     15.72
+13:20:29          TRM      0.00
+13:20:29          THR      0.00
+13:20:29          DFR      0.00
+13:20:29          MCE      0.00
+13:20:29          MCP      0.00
+13:20:29          HYP      0.00
+13:20:29          HRE      0.00
+13:20:29          HVS      0.00
+13:20:29          ERR      0.00
+13:20:29          MIS      0.00
+13:20:29          PIN      0.00
+13:20:29          NPI      0.00
+13:20:29          PIW      0.00
+
+13:20:29         INTR      CPU0
+13:20:39          sum   3441.25
+13:20:39            0      0.00
+13:20:39            8      0.00
+13:20:39            9      0.00
+13:20:39           16      0.00
+13:20:39           17      0.00
+13:20:39           18      0.00
+13:20:39           19      0.00
+13:20:39           23      0.00
+13:20:39           24      0.00
+13:20:39           25      0.00
+13:20:39           26      0.00
+13:20:39           27      0.00
+13:20:39           28      0.00
+13:20:39           29      0.00
+13:20:39           30      0.00
+13:20:39           31      0.00
+13:20:39           32      0.00
+13:20:39           33      0.00
+13:20:39           34      0.00
+13:20:39           35      0.00
+13:20:39           36      0.00
+13:20:39          NMI      0.05
+13:20:39          LOC   3240.78
+13:20:39          SPU      0.00
+13:20:39          PMI      0.05
+13:20:39          IWI      0.00
+13:20:39          RTR      0.00
+13:20:39          RES     80.21
+13:20:39          CAL     42.18
+13:20:39          TLB     77.97
+13:20:39          TRM      0.00
+13:20:39          THR      0.00
+13:20:39          DFR      0.00
+13:20:39          MCE      0.00
+13:20:39          MCP      0.00
+13:20:39          HYP      0.00
+13:20:39          HRE      0.00
+13:20:39          HVS      0.00
+13:20:39          ERR      0.00
+13:20:39          MIS      0.00
+13:20:39          PIN      0.00
+13:20:39          NPI      0.00
+13:20:39          PIW      0.00
+
+Summary:         INTR      CPU0      CPU6
+Minimum:          sum   3118.50
+Maximum:          sum   3441.25
+Average:          sum   3296.67      0.00
+
+Summary:         INTR      CPU0      CPU6
+Minimum:            0      0.00
+Maximum:            0      0.00
+Average:            0      0.00      0.00
+
+Summary:         INTR      CPU0      CPU6
+Minimum:            8      0.00
+Maximum:            8      0.00
+Average:            8      0.00      0.00
+
+Summary:         INTR      CPU0      CPU6
+Minimum:            9      0.00
+Maximum:            9      0.00
+Average:            9      0.00      0.00
+
+Summary:         INTR      CPU0      CPU6
+Minimum:           16      0.00
+Maximum:           16      0.00
+Average:           16      0.00      0.00
+
+Summary:         INTR      CPU0      CPU6
+Minimum:           17      0.00
+Maximum:           17      0.00
+Average:           17      0.00      0.00
+
+Summary:         INTR      CPU0      CPU6
+Minimum:           18      0.00
+Maximum:           18      0.00
+Average:           18      0.00      0.00
+
+Summary:         INTR      CPU0      CPU6
+Minimum:           19      0.00
+Maximum:           19      0.00
+Average:           19      0.00      0.00
+
+Summary:         INTR      CPU0      CPU6
+Minimum:           23      0.00
+Maximum:           23      0.00
+Average:           23      0.00      0.00
+
+Summary:         INTR      CPU0      CPU6
+Minimum:           24      0.00
+Maximum:           24      0.00
+Average:           24      0.00      0.00
+
+Summary:         INTR      CPU0      CPU6
+Minimum:           25      0.00
+Maximum:           25      0.00
+Average:           25      0.00      0.00
+
+Summary:         INTR      CPU0      CPU6
+Minimum:           26      0.00
+Maximum:           26      0.00
+Average:           26      0.00      0.00
+
+Summary:         INTR      CPU0      CPU6
+Minimum:           27      0.00
+Maximum:           27      0.00
+Average:           27      0.00      0.00
+
+Summary:         INTR      CPU0      CPU6
+Minimum:           28      0.00
+Maximum:           28      0.00
+Average:           28      0.00      0.00
+
+Summary:         INTR      CPU0      CPU6
+Minimum:           29      0.00
+Maximum:           29      0.00
+Average:           29      0.00      0.00
+
+Summary:         INTR      CPU0      CPU6
+Minimum:           30      0.00
+Maximum:           30      0.00
+Average:           30      0.00      0.00
+
+Summary:         INTR      CPU0      CPU6
+Minimum:           31      0.00
+Maximum:           31      0.00
+Average:           31      0.00      0.00
+
+Summary:         INTR      CPU0      CPU6
+Minimum:           32      0.00
+Maximum:           32      0.00
+Average:           32      0.00      0.00
+
+Summary:         INTR      CPU0      CPU6
+Minimum:           33      0.00
+Maximum:           33      0.00
+Average:           33      0.00      0.00
+
+Summary:         INTR      CPU0      CPU6
+Minimum:           34      0.00
+Maximum:           34      0.00
+Average:           34      0.00      0.00
+
+Summary:         INTR      CPU0      CPU6
+Minimum:           35      0.00
+Maximum:           35      0.00
+Average:           35      0.00      0.00
+
+Summary:         INTR      CPU0      CPU6
+Minimum:           36      0.00
+Maximum:           36      0.00
+Average:           36      0.00      0.00
+
+Summary:         INTR      CPU0      CPU6
+Minimum:          NMI      0.00
+Maximum:          NMI      0.05
+Average:          NMI      0.03      0.00
+
+Summary:         INTR      CPU0      CPU6
+Minimum:          LOC   2967.32
+Maximum:          LOC   3240.78
+Average:          LOC   3118.28      0.00
+
+Summary:         INTR      CPU0      CPU6
+Minimum:          SPU      0.00
+Maximum:          SPU      0.00
+Average:          SPU      0.00      0.00
+
+Summary:         INTR      CPU0      CPU6
+Minimum:          PMI      0.00
+Maximum:          PMI      0.05
+Average:          PMI      0.03      0.00
+
+Summary:         INTR      CPU0      CPU6
+Minimum:          IWI      0.00
+Maximum:          IWI      0.00
+Average:          IWI      0.00      0.00
+
+Summary:         INTR      CPU0      CPU6
+Minimum:          RTR      0.00
+Maximum:          RTR      0.00
+Average:          RTR      0.00      0.00
+
+Summary:         INTR      CPU0      CPU6
+Minimum:          RES     80.21
+Maximum:          RES    130.12
+Average:          RES    102.57      0.00
+
+Summary:         INTR      CPU0      CPU6
+Minimum:          CAL      5.35
+Maximum:          CAL     42.18
+Average:          CAL     25.68      0.00
+
+Summary:         INTR      CPU0      CPU6
+Minimum:          TLB     15.72
+Maximum:          TLB     77.97
+Average:          TLB     50.09      0.00
+
+Summary:         INTR      CPU0      CPU6
+Minimum:          TRM      0.00
+Maximum:          TRM      0.00
+Average:          TRM      0.00      0.00
+
+Summary:         INTR      CPU0      CPU6
+Minimum:          THR      0.00
+Maximum:          THR      0.00
+Average:          THR      0.00      0.00
+
+Summary:         INTR      CPU0      CPU6
+Minimum:          DFR      0.00
+Maximum:          DFR      0.00
+Average:          DFR      0.00      0.00
+
+Summary:         INTR      CPU0      CPU6
+Minimum:          MCE      0.00
+Maximum:          MCE      0.00
+Average:          MCE      0.00      0.00
+
+Summary:         INTR      CPU0      CPU6
+Minimum:          MCP      0.00
+Maximum:          MCP      0.00
+Average:          MCP      0.00      0.00
+
+Summary:         INTR      CPU0      CPU6
+Minimum:          HYP      0.00
+Maximum:          HYP      0.00
+Average:          HYP      0.00      0.00
+
+Summary:         INTR      CPU0      CPU6
+Minimum:          HRE      0.00
+Maximum:          HRE      0.00
+Average:          HRE      0.00      0.00
+
+Summary:         INTR      CPU0      CPU6
+Minimum:          HVS      0.00
+Maximum:          HVS      0.00
+Average:          HVS      0.00      0.00
+
+Summary:         INTR      CPU0      CPU6
+Minimum:          ERR      0.00
+Maximum:          ERR      0.00
+Average:          ERR      0.00      0.00
+
+Summary:         INTR      CPU0      CPU6
+Minimum:          MIS      0.00
+Maximum:          MIS      0.00
+Average:          MIS      0.00      0.00
+
+Summary:         INTR      CPU0      CPU6
+Minimum:          PIN      0.00
+Maximum:          PIN      0.00
+Average:          PIN      0.00      0.00
+
+Summary:         INTR      CPU0      CPU6
+Minimum:          NPI      0.00
+Maximum:          NPI      0.00
+Average:          NPI      0.00      0.00
+
+Summary:         INTR      CPU0      CPU6
+Minimum:          PIW      0.00
+Maximum:          PIW      0.00
+Average:          PIW      0.00      0.00
+
+13:20:19        CPU   total/s   dropd/s squeezd/s  rx_rps/s flw_lim/s   blg_len
+13:20:29          0      0.00      0.00      0.00      0.00      0.00         0
+13:20:39          0      0.00      0.00      0.00      0.00      0.00         0
+
+Summary:        CPU   total/s   dropd/s squeezd/s  rx_rps/s flw_lim/s   blg_len
+Minimum:          0      0.00      0.00      0.00      0.00      0.00         0
+Maximum:          0      0.00      0.00      0.00      0.00      0.00         0
+Average:          0      0.00      0.00      0.00      0.00      0.00         0
+Average:          6      0.00      0.00      0.00      0.00      0.00         0
diff -pruN 12.7.5-2/tests/expected2.sadf-g 12.7.7-0ubuntu2/tests/expected2.sadf-g
--- 12.7.5-2/tests/expected2.sadf-g	2023-12-09 15:53:16.000000000 +0000
+++ 12.7.7-0ubuntu2/tests/expected2.sadf-g	2024-05-31 11:12:33.000000000 +0000
@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
-<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="6360" height="36430" fill="black" stroke="#000000" stroke-width="1">
+<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="6360" height="24650" fill="black" stroke="#000000" stroke-width="1">
 <text x="0" y="30" text-anchor="start" stroke="#000000">Linux 1.2.3-TEST (SYSSTAT.TEST) 	04/18/19 	_x86_64_	(9 CPU)
 </text>
 <a xlink:href="#g1-0" xlink:title="A_CPU">
@@ -1369,20 +1369,20 @@
 <tspan x="2915" y="25" style="fill: #000000; stroke: none; font-size: 12px">(Min, Max values)</tspan>
 </text>
 <polyline points="2190,50 2190,250 2910,250" style="fill: #ffffff; stroke: #000000; stroke-width: 2"/>
-<text x="2915" y="50" style="fill: #696969; stroke: none; font-size: 12px">MBbuffers x10 (2540.74, 2540.74)</text>
-<text x="2915" y="65" style="fill: #bebebe; stroke: none; font-size: 12px">MBcached (2755.46, 2755.46)</text>
-<text x="2915" y="80" style="fill: #000000; stroke: none; font-size: 12px">MBcommit (11814.31, 11814.31)</text>
+<text x="2915" y="50" style="fill: #696969; stroke: none; font-size: 12px">MBbuffers x100 (25407.42, 25407.42)</text>
+<text x="2915" y="65" style="fill: #bebebe; stroke: none; font-size: 12px">MBcached x10 (27554.65, 27554.65)</text>
+<text x="2915" y="80" style="fill: #000000; stroke: none; font-size: 12px">MBcommit (11814.31, 29392.43)</text>
 <text x="3165" y="250" style="fill: #000000; text-anchor: end; stroke: none; font-size: 14px">SYSSTAT.TEST
 <tspan x="3165" y="264" style="fill: #000000; text-anchor: end; stroke: none; font-size: 14px">04/18/19</tspan>
 </text>
 <g transform="translate(2190,250)">
 <text x="0" y="0" style="fill: #000000; stroke: none; font-size: 12px; text-anchor: end">0.</text>
-<polyline points="0,3000.00 720,3000.00" style="vector-effect: non-scaling-stroke; stroke: #bebebe" transform="scale(1,-0.016929)"/>
-<text x="0" y="-50" style="fill: #000000; stroke: none; font-size: 12px; text-anchor: end">3000.</text>
-<polyline points="0,6000.00 720,6000.00" style="vector-effect: non-scaling-stroke; stroke: #bebebe" transform="scale(1,-0.016929)"/>
-<text x="0" y="-101" style="fill: #000000; stroke: none; font-size: 12px; text-anchor: end">6000.</text>
-<polyline points="0,9000.00 720,9000.00" style="vector-effect: non-scaling-stroke; stroke: #bebebe" transform="scale(1,-0.016929)"/>
-<text x="0" y="-152" style="fill: #000000; stroke: none; font-size: 12px; text-anchor: end">9000.</text>
+<polyline points="0,9000.00 720,9000.00" style="vector-effect: non-scaling-stroke; stroke: #bebebe" transform="scale(1,-0.006804)"/>
+<text x="0" y="-61" style="fill: #000000; stroke: none; font-size: 12px; text-anchor: end">9000.</text>
+<polyline points="0,18000.00 720,18000.00" style="vector-effect: non-scaling-stroke; stroke: #bebebe" transform="scale(1,-0.006804)"/>
+<text x="0" y="-122" style="fill: #000000; stroke: none; font-size: 12px; text-anchor: end">18000.</text>
+<polyline points="0,27000.00 720,27000.00" style="vector-effect: non-scaling-stroke; stroke: #bebebe" transform="scale(1,-0.006804)"/>
+<text x="0" y="-183" style="fill: #000000; stroke: none; font-size: 12px; text-anchor: end">27000.</text>
 <polyline points="0,0 0,-200" style="vector-effect: non-scaling-stroke; stroke: #bebebe" transform="scale(0.008333,1)"/>
 <text x="-15" y="15" style="fill: #000000; stroke: none; font-size: 14px; text-anchor: start"> 0:00</text>
 <polyline points="7200,0 7200,-200" style="vector-effect: non-scaling-stroke; stroke: #bebebe" transform="scale(0.008333,1)"/>
@@ -1410,29 +1410,29 @@
 <polyline points="86400,0 86400,-200" style="vector-effect: non-scaling-stroke; stroke: #bebebe" transform="scale(0.008333,1)"/>
 <text x="705" y="15" style="fill: #000000; stroke: none; font-size: 14px; text-anchor: start"> 0:00</text>
 <text x="-10" y="30" style="fill: #000000; stroke: none; font-size: 12px; text-anchor: end">GMT</text>
-<path d=" M48019,254.07 L48029,254.07 L48039,254.07 L48049,254.07 M50075,254.07" style="vector-effect: non-scaling-stroke; stroke: #696969; stroke-width: 1; fill-opacity: 0" transform="scale(0.008333,-0.169286)"/>
-<path d=" M48019,2755.46 L48029,2755.46 L48039,2755.46 L48049,2755.46 M50075,2755.46" style="vector-effect: non-scaling-stroke; stroke: #bebebe; stroke-width: 1; fill-opacity: 0" transform="scale(0.008333,-0.016929)"/>
-<path d=" M48019,11814.31 L48029,11814.31 L48039,11814.31 L48049,11814.31 M50075,11814.31" style="vector-effect: non-scaling-stroke; stroke: #000000; stroke-width: 1; fill-opacity: 0" transform="scale(0.008333,-0.016929)"/>
+<path d=" M48019,254.07 L48029,254.07 L48039,254.07 L48049,254.07 M50075,254.07" style="vector-effect: non-scaling-stroke; stroke: #696969; stroke-width: 1; fill-opacity: 0" transform="scale(0.008333,-0.680447)"/>
+<path d=" M48019,2755.46 L48029,2755.46 L48039,2755.46 L48049,2755.46 M50075,2755.46" style="vector-effect: non-scaling-stroke; stroke: #bebebe; stroke-width: 1; fill-opacity: 0" transform="scale(0.008333,-0.068045)"/>
+<path d=" M48019,11814.31 L48029,29392.43 L48039,11814.31 L48049,11814.31 M50075,11814.31" style="vector-effect: non-scaling-stroke; stroke: #000000; stroke-width: 1; fill-opacity: 0" transform="scale(0.008333,-0.006804)"/>
 </g>
 <rect x="3180" y="0" height="300" width="1050" fill="#ffffff"/>
 <text x="3180" y="20" style="fill: #000000; stroke: none">Memory utilization (4)
 <tspan x="3975" y="25" style="fill: #000000; stroke: none; font-size: 12px">(Min, Max values)</tspan>
 </text>
 <polyline points="3250,50 3250,250 3970,250" style="fill: #ffffff; stroke: #000000; stroke-width: 2"/>
-<text x="3975" y="50" style="fill: #696969; stroke: none; font-size: 12px">%commit (48.54, 48.54)</text>
+<text x="3975" y="50" style="fill: #696969; stroke: none; font-size: 12px">%commit (48.54, 120.77)</text>
 <text x="4225" y="250" style="fill: #000000; text-anchor: end; stroke: none; font-size: 14px">SYSSTAT.TEST
 <tspan x="4225" y="264" style="fill: #000000; text-anchor: end; stroke: none; font-size: 14px">04/18/19</tspan>
 </text>
 <g transform="translate(3250,250)">
 <text x="0" y="0" style="fill: #000000; stroke: none; font-size: 12px; text-anchor: end">0.</text>
-<polyline points="0,25.00 720,25.00" style="vector-effect: non-scaling-stroke; stroke: #bebebe" transform="scale(1,-2.000000)"/>
-<text x="0" y="-50" style="fill: #000000; stroke: none; font-size: 12px; text-anchor: end">25.</text>
-<polyline points="0,50.00 720,50.00" style="vector-effect: non-scaling-stroke; stroke: #bebebe" transform="scale(1,-2.000000)"/>
-<text x="0" y="-100" style="fill: #000000; stroke: none; font-size: 12px; text-anchor: end">50.</text>
-<polyline points="0,75.00 720,75.00" style="vector-effect: non-scaling-stroke; stroke: #bebebe" transform="scale(1,-2.000000)"/>
-<text x="0" y="-150" style="fill: #000000; stroke: none; font-size: 12px; text-anchor: end">75.</text>
-<polyline points="0,100.00 720,100.00" style="vector-effect: non-scaling-stroke; stroke: #bebebe" transform="scale(1,-2.000000)"/>
-<text x="0" y="-200" style="fill: #000000; stroke: none; font-size: 12px; text-anchor: end">100.</text>
+<polyline points="0,25.00 720,25.00" style="vector-effect: non-scaling-stroke; stroke: #bebebe" transform="scale(1,-1.656076)"/>
+<text x="0" y="-41" style="fill: #000000; stroke: none; font-size: 12px; text-anchor: end">25.</text>
+<polyline points="0,50.00 720,50.00" style="vector-effect: non-scaling-stroke; stroke: #bebebe" transform="scale(1,-1.656076)"/>
+<text x="0" y="-82" style="fill: #000000; stroke: none; font-size: 12px; text-anchor: end">50.</text>
+<polyline points="0,75.00 720,75.00" style="vector-effect: non-scaling-stroke; stroke: #bebebe" transform="scale(1,-1.656076)"/>
+<text x="0" y="-124" style="fill: #000000; stroke: none; font-size: 12px; text-anchor: end">75.</text>
+<polyline points="0,100.00 720,100.00" style="vector-effect: non-scaling-stroke; stroke: #bebebe" transform="scale(1,-1.656076)"/>
+<text x="0" y="-165" style="fill: #000000; stroke: none; font-size: 12px; text-anchor: end">100.</text>
 <polyline points="0,0 0,-200" style="vector-effect: non-scaling-stroke; stroke: #bebebe" transform="scale(0.008333,1)"/>
 <text x="-15" y="15" style="fill: #000000; stroke: none; font-size: 14px; text-anchor: start"> 0:00</text>
 <polyline points="7200,0 7200,-200" style="vector-effect: non-scaling-stroke; stroke: #bebebe" transform="scale(0.008333,1)"/>
@@ -1460,8 +1460,8 @@
 <polyline points="86400,0 86400,-200" style="vector-effect: non-scaling-stroke; stroke: #bebebe" transform="scale(0.008333,1)"/>
 <text x="705" y="15" style="fill: #000000; stroke: none; font-size: 14px; text-anchor: start"> 0:00</text>
 <text x="-10" y="30" style="fill: #000000; stroke: none; font-size: 12px; text-anchor: end">GMT</text>
-<g style="fill: #696969; stroke: none" transform="scale(0.008333,-2.000000)">
-<rect x="47988" y="0.00" height="48.54" width="31"/><rect x="47998" y="0.00" height="48.54" width="31"/><rect x="48000" y="0.00" height="48.54" width="39"/><rect x="48027" y="0.00" height="48.54" width="22"/><rect x="50044" y="0.00" height="48.54" width="31"/>
+<g style="fill: #696969; stroke: none" transform="scale(0.008333,-1.656076)">
+<rect x="47988" y="0.00" height="48.54" width="31"/><rect x="47998" y="0.00" height="120.77" width="31"/><rect x="48000" y="0.00" height="48.54" width="39"/><rect x="48027" y="0.00" height="48.54" width="22"/><rect x="50044" y="0.00" height="48.54" width="31"/>
 </g>
 </g>
 <rect x="4240" y="0" height="300" width="1050" fill="#ffffff"/>
diff -pruN 12.7.5-2/tests/expected2.sar-all 12.7.7-0ubuntu2/tests/expected2.sar-all
--- 12.7.5-2/tests/expected2.sar-all	2023-12-09 15:53:16.000000000 +0000
+++ 12.7.7-0ubuntu2/tests/expected2.sar-all	2024-05-28 08:18:43.000000000 +0000
@@ -308,10 +308,10 @@ Average:         0.00      0.00      0.0
 
 13:20:09    kbmemfree   kbavail kbmemused  %memused kbbuffers  kbcached  kbcommit   %commit  kbactive   kbinact   kbdirty  kbanonpg    kbslab  kbkstack   kbpgtbl  kbvmused
 13:20:19      1437740   4389516   3179712     39.04    260172   2821596  12097852     48.54   4042384   1772396       396   2733164    445740     15328     73760         0
-13:20:29      1437740   4389516   3179712     39.04    260172   2821596  12097852     48.54   4042384   1772396       396   2733164    445740     15328     73760         0
+13:20:29      1437740   4389516   3179712     39.04    260172   2821596  30097852    120.77   4042384   1772396       396   2733164    445740     15328     73760         0
 13:20:39      1437740   4389516   3179712     39.04    260172   2821596  12097852     48.54   4042384   1772396       396   2733164    445740     15328     73760         0
 13:20:49      1437740   4389516   3179712     39.04    260172   2821596  12097852     48.54   4042384   1772396       396   2733164    445740     15328     73760         0
-Average:      1437740   4389516   3179712     39.04    260172   2821596  12097852     48.54   4042384   1772396       396   2733164    445740     15328     73760         0
+Average:      1437740   4389516   3179712     39.04    260172   2821596  16597852     66.60   4042384   1772396       396   2733164    445740     15328     73760         0
 
 13:20:09    kbswpfree kbswpused  %swpused  kbswpcad   %swpcad
 13:20:19     16777212         0      0.00         0      0.00
@@ -570,7 +570,7 @@ Average:         0.00      0.00      0.0
 13:20:49         0.00      0.00      0.00      0.00
 Average:         0.00      0.00      0.00      0.00
 
-13:20:09     atmptf/s  estres/s retrans/s isegerr/s   orsts/s
+13:20:09     atmptf/s  estres/s retrseg/s isegerr/s   orsts/s
 13:20:19         0.00      0.00      0.00      0.00      0.00
 13:20:29         0.00      0.00      0.00      0.00      0.00
 13:20:39         0.00      0.00      0.00      0.00      0.00
@@ -1067,7 +1067,7 @@ Average:         0.00      0.00      0.0
 13:54:35         0.00      0.00      0.00      0.00
 Average:         0.00      0.00      0.00      0.00
 
-13:54:15     atmptf/s  estres/s retrans/s isegerr/s   orsts/s
+13:54:15     atmptf/s  estres/s retrseg/s isegerr/s   orsts/s
 13:54:35         0.00      0.00      0.00      0.00      0.00
 Average:         0.00      0.00      0.00      0.00      0.00
 
diff -pruN 12.7.5-2/tests/expected2.sar-xall 12.7.7-0ubuntu2/tests/expected2.sar-xall
--- 12.7.5-2/tests/expected2.sar-xall	2023-12-09 15:53:16.000000000 +0000
+++ 12.7.7-0ubuntu2/tests/expected2.sar-xall	2024-05-28 08:19:20.000000000 +0000
@@ -538,14 +538,14 @@ Average:         0.00      0.00      0.0
 
 13:20:09    kbmemfree   kbavail kbmemused  %memused kbbuffers  kbcached  kbcommit   %commit  kbactive   kbinact   kbdirty  kbanonpg    kbslab  kbkstack   kbpgtbl  kbvmused
 13:20:19      1437740   4389516   3179712     39.04    260172   2821596  12097852     48.54   4042384   1772396       396   2733164    445740     15328     73760         0
-13:20:29      1437740   4389516   3179712     39.04    260172   2821596  12097852     48.54   4042384   1772396       396   2733164    445740     15328     73760         0
+13:20:29      1437740   4389516   3179712     39.04    260172   2821596  30097852    120.77   4042384   1772396       396   2733164    445740     15328     73760         0
 13:20:39      1437740   4389516   3179712     39.04    260172   2821596  12097852     48.54   4042384   1772396       396   2733164    445740     15328     73760         0
 13:20:49      1437740   4389516   3179712     39.04    260172   2821596  12097852     48.54   4042384   1772396       396   2733164    445740     15328     73760         0
 
 Summary:    kbmemfree   kbavail kbmemused  %memused kbbuffers  kbcached  kbcommit   %commit  kbactive   kbinact   kbdirty  kbanonpg    kbslab  kbkstack   kbpgtbl  kbvmused
 Minimum:      1437740   4389516   3179712     39.04    260172   2821596  12097852     48.54   4042384   1772396       396   2733164    445740     15328     73760         0
-Maximum:      1437740   4389516   3179712     39.04    260172   2821596  12097852     48.54   4042384   1772396       396   2733164    445740     15328     73760         0
-Average:      1437740   4389516   3179712     39.04    260172   2821596  12097852     48.54   4042384   1772396       396   2733164    445740     15328     73760         0
+Maximum:      1437740   4389516   3179712     39.04    260172   2821596  30097852    120.77   4042384   1772396       396   2733164    445740     15328     73760         0
+Average:      1437740   4389516   3179712     39.04    260172   2821596  16597852     66.60   4042384   1772396       396   2733164    445740     15328     73760         0
 
 13:20:09    kbswpfree kbswpused  %swpused  kbswpcad   %swpcad
 13:20:19     16777212         0      0.00         0      0.00
@@ -996,13 +996,13 @@ Minimum:         0.00      0.00      0.0
 Maximum:         0.00      0.00      0.00      0.00
 Average:         0.00      0.00      0.00      0.00
 
-13:20:09     atmptf/s  estres/s retrans/s isegerr/s   orsts/s
+13:20:09     atmptf/s  estres/s retrseg/s isegerr/s   orsts/s
 13:20:19         0.00      0.00      0.00      0.00      0.00
 13:20:29         0.00      0.00      0.00      0.00      0.00
 13:20:39         0.00      0.00      0.00      0.00      0.00
 13:20:49         0.00      0.00      0.00      0.00      0.00
 
-Summary:     atmptf/s  estres/s retrans/s isegerr/s   orsts/s
+Summary:     atmptf/s  estres/s retrseg/s isegerr/s   orsts/s
 Minimum:         0.00      0.00      0.00      0.00      0.00
 Maximum:         0.00      0.00      0.00      0.00      0.00
 Average:         0.00      0.00      0.00      0.00      0.00
@@ -2075,10 +2075,10 @@ Minimum:         0.00      0.00      0.0
 Maximum:         0.00      0.00      0.00      0.00
 Average:         0.00      0.00      0.00      0.00
 
-13:54:15     atmptf/s  estres/s retrans/s isegerr/s   orsts/s
+13:54:15     atmptf/s  estres/s retrseg/s isegerr/s   orsts/s
 13:54:35         0.00      0.00      0.00      0.00      0.00
 
-Summary:     atmptf/s  estres/s retrans/s isegerr/s   orsts/s
+Summary:     atmptf/s  estres/s retrseg/s isegerr/s   orsts/s
 Minimum:         0.00      0.00      0.00      0.00      0.00
 Maximum:         0.00      0.00      0.00      0.00      0.00
 Average:         0.00      0.00      0.00      0.00      0.00
diff -pruN 12.7.5-2/tests/expected2.sar32-A 12.7.7-0ubuntu2/tests/expected2.sar32-A
--- 12.7.5-2/tests/expected2.sar32-A	2023-12-09 15:53:16.000000000 +0000
+++ 12.7.7-0ubuntu2/tests/expected2.sar32-A	2024-05-28 08:27:50.000000000 +0000
@@ -189,8 +189,8 @@ Average:        38.76     27.06      6.8
 
 13:20:09    kbmemfree   kbavail kbmemused  %memused kbbuffers  kbcached  kbcommit   %commit  kbactive   kbinact   kbdirty  kbanonpg    kbslab  kbkstack   kbpgtbl  kbvmused
 13:20:19      1437740   4389516   3179712     39.04    260172   2821596  12097852     48.54   4042384   1772396       396   2733164    445740     15328     73760         0
-13:20:29      1437740   4389516   3179712     39.04    260172   2821596  12097852     48.54   4042384   1772396       396   2733164    445740     15328     73760         0
-Average:      1437740   4389516   3179712     39.04    260172   2821596  12097852     48.54   4042384   1772396       396   2733164    445740     15328     73760         0
+13:20:29      1437740   4389516   3179712     39.04    260172   2821596  30097852    120.77   4042384   1772396       396   2733164    445740     15328     73760         0
+Average:      1437740   4389516   3179712     39.04    260172   2821596  21097852     84.65   4042384   1772396       396   2733164    445740     15328     73760         0
 
 13:20:09    kbswpfree kbswpused  %swpused  kbswpcad   %swpcad
 13:20:19     16777212         0      0.00         0      0.00
@@ -353,7 +353,7 @@ Average:         0.00      0.00      0.0
 13:20:29         0.00      0.00      0.00      0.00
 Average:         0.00      0.00      0.00      0.00
 
-13:20:09     atmptf/s  estres/s retrans/s isegerr/s   orsts/s
+13:20:09     atmptf/s  estres/s retrseg/s isegerr/s   orsts/s
 13:20:19         0.00      0.00      0.00      0.00      0.00
 13:20:29         0.00      0.00      0.00      0.00      0.00
 Average:         0.00      0.00      0.00      0.00      0.00
@@ -776,7 +776,7 @@ Average:         0.00      0.00      0.0
 13:54:35         0.00      0.00      0.00      0.00
 Average:         0.00      0.00      0.00      0.00
 
-13:54:15     atmptf/s  estres/s retrans/s isegerr/s   orsts/s
+13:54:15     atmptf/s  estres/s retrseg/s isegerr/s   orsts/s
 13:54:35         0.00      0.00      0.00      0.00      0.00
 Average:         0.00      0.00      0.00      0.00      0.00
 
diff -pruN 12.7.5-2/tests/expected3.sar-all 12.7.7-0ubuntu2/tests/expected3.sar-all
--- 12.7.5-2/tests/expected3.sar-all	2023-11-10 17:48:37.000000000 +0000
+++ 12.7.7-0ubuntu2/tests/expected3.sar-all	2024-05-28 08:18:29.000000000 +0000
@@ -82,10 +82,10 @@ Average:         0.00      0.00      0.0
 
 13:20:09    kbmemfree   kbavail kbmemused  %memused kbbuffers  kbcached  kbcommit   %commit  kbactive   kbinact   kbdirty  kbanonpg    kbslab  kbkstack   kbpgtbl  kbvmused
 13:20:19      1437740   4389516   3179712     39.04    260172   2821596  12097852     48.54   4042384   1772396       396   2733164    445740     15328     73760         0
-13:20:29      1437740   4389516   3179712     39.04    260172   2821596  12097852     48.54   4042384   1772396       396   2733164    445740     15328     73760         0
+13:20:29      1437740   4389516   3179712     39.04    260172   2821596  30097852    120.77   4042384   1772396       396   2733164    445740     15328     73760         0
 13:20:39      1437740   4389516   3179712     39.04    260172   2821596  12097852     48.54   4042384   1772396       396   2733164    445740     15328     73760         0
 13:20:49      1437740   4389516   3179712     39.04    260172   2821596  12097852     48.54   4042384   1772396       396   2733164    445740     15328     73760         0
-Average:      1437740   4389516   3179712     39.04    260172   2821596  12097852     48.54   4042384   1772396       396   2733164    445740     15328     73760         0
+Average:      1437740   4389516   3179712     39.04    260172   2821596  16597852     66.60   4042384   1772396       396   2733164    445740     15328     73760         0
 
 13:20:09    kbswpfree kbswpused  %swpused  kbswpcad   %swpcad
 13:20:19     16777212         0      0.00         0      0.00
@@ -344,7 +344,7 @@ Average:         0.00      0.00      0.0
 13:20:49         0.00      0.00      0.00      0.00
 Average:         0.00      0.00      0.00      0.00
 
-13:20:09     atmptf/s  estres/s retrans/s isegerr/s   orsts/s
+13:20:09     atmptf/s  estres/s retrseg/s isegerr/s   orsts/s
 13:20:19         0.00      0.00      0.00      0.00      0.00
 13:20:29         0.00      0.00      0.00      0.00      0.00
 13:20:39         0.00      0.00      0.00      0.00      0.00
diff -pruN 12.7.5-2/tests/root.README 12.7.7-0ubuntu2/tests/root.README
--- 12.7.5-2/tests/root.README	2023-05-06 16:26:53.000000000 +0000
+++ 12.7.7-0ubuntu2/tests/root.README	2024-06-03 09:57:18.000000000 +0000
@@ -96,6 +96,9 @@ CPU#6: online
 /proc/diskstats
 sdc: flush I/Os stats
 
+/proc/net/dev
+virbr0-nic: registered again
+
 CIFS SMB1 and SMB2 statistics available
 
 PID:
diff -pruN 12.7.5-2/tests/root3/proc/meminfo 12.7.7-0ubuntu2/tests/root3/proc/meminfo
--- 12.7.5-2/tests/root3/proc/meminfo	2022-06-19 09:21:00.000000000 +0000
+++ 12.7.7-0ubuntu2/tests/root3/proc/meminfo	2024-05-28 08:17:21.000000000 +0000
@@ -29,7 +29,7 @@ NFS_Unstable:          0 kB
 Bounce:                0 kB
 WritebackTmp:          0 kB
 CommitLimit:    20849692 kB
-Committed_AS:   12097852 kB
+Committed_AS:   30097852 kB
 VmallocTotal:   34359738367 kB
 VmallocUsed:           0 kB
 VmallocChunk:          0 kB
diff -pruN 12.7.5-2/version.in 12.7.7-0ubuntu2/version.in
--- 12.7.5-2/version.in	2023-05-06 16:26:53.000000000 +0000
+++ 12.7.7-0ubuntu2/version.in	2025-02-02 07:33:59.000000000 +0000
@@ -1,6 +1,6 @@
 /*
  * sysstat: System performance tools for Linux
- * (C) 1999-2023 by Sebastien Godard (sysstat <at> orange.fr)
+ * (C) 1999-2025 by Sebastien Godard (sysstat <at> orange.fr)
  */
 
 #ifndef _VERSION_H
diff -pruN 12.7.5-2/xml/sysstat-3.16.dtd 12.7.7-0ubuntu2/xml/sysstat-3.16.dtd
--- 12.7.5-2/xml/sysstat-3.16.dtd	2023-12-09 15:53:16.000000000 +0000
+++ 12.7.7-0ubuntu2/xml/sysstat-3.16.dtd	1970-01-01 00:00:00.000000000 +0000
@@ -1,672 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--DTD v3.16 for sysstat. See sadf.h -->
-
-<!ELEMENT sysstat (sysdata-version, host)>
-<!ATTLIST sysstat
-	xmlns CDATA #REQUIRED
-	xmlns:xsi CDATA #REQUIRED
-	xsi:schemaLocation CDATA #REQUIRED
->
-
-<!ELEMENT sysdata-version (#PCDATA)>
-
-<!ENTITY % TIMESTAMP_ELEMENTS "cpu-load|process-and-context-switch|interrupts|swap-pages|paging|io|memory|hugepages|kernel|queue|serial|disk|network|power-management|filesystems|psi">
-<!ENTITY % HOST_ELEMENTS "sysname|release|machine|number-of-cpus|file-date|file-utc-time|timezone|statistics|restarts|comments">
-
-<!ELEMENT host (%HOST_ELEMENTS;)+>
-<!ATTLIST host
-	nodename CDATA #REQUIRED
->
-
-<!ELEMENT sysname (#PCDATA)>
-
-<!ELEMENT release (#PCDATA)>
-
-<!ELEMENT machine (#PCDATA)>
-
-<!ELEMENT number-of-cpus (#PCDATA)>
-
-<!ELEMENT file-date (#PCDATA)>
-
-<!ELEMENT timezone (#PCDATA)>
-
-<!ELEMENT file-utc-time (#PCDATA)>
-
-<!ELEMENT statistics (timestamp*)>
-
-<!ELEMENT timestamp (%TIMESTAMP_ELEMENTS;)+>
-<!ATTLIST timestamp
-	date CDATA #REQUIRED
-	time CDATA #REQUIRED
-	utc CDATA #IMPLIED
-	tz CDATA #IMPLIED
-	interval CDATA #REQUIRED
->
-
-<!ELEMENT restarts (boot*)>
-
-<!ELEMENT boot EMPTY>
-<!ATTLIST boot
-	date CDATA #REQUIRED
-	time CDATA #REQUIRED
-	utc CDATA #IMPLIED
-	tz CDATA #IMPLIED
-	cpu_count CDATA #REQUIRED
->
-
-<!ELEMENT comments (comment*)>
-
-<!ELEMENT comment EMPTY>
-<!ATTLIST comment
-	date CDATA #REQUIRED
-	time CDATA #REQUIRED
-	utc CDATA #IMPLIED
-	tz CDATA #IMPLIED
-	com CDATA #REQUIRED
->
-
-<!ELEMENT cpu-load (cpu*)>
-
-<!ELEMENT cpu EMPTY>
-<!ATTLIST cpu
-	number CDATA #REQUIRED
-	user CDATA #IMPLIED
-	usr CDATA #IMPLIED
-	nice CDATA #REQUIRED
-	system CDATA #IMPLIED
-	sys CDATA #IMPLIED
-	iowait CDATA #REQUIRED
-	steal CDATA #REQUIRED
-	irq CDATA #IMPLIED
-	soft CDATA #IMPLIED
-	guest CDATA #IMPLIED
-	gnice CDATA #IMPLIED
-	idle CDATA #REQUIRED
->
-
-<!ELEMENT process-and-context-switch EMPTY>
-<!ATTLIST process-and-context-switch
-	per CDATA #REQUIRED
-	proc CDATA #REQUIRED
-	cswch CDATA #REQUIRED
->
-
-<!ELEMENT interrupts (int-global)>
-
-<!ELEMENT int-global (irq*)>
-<!ATTLIST int-global
-	per CDATA #REQUIRED
->
-
-<!ELEMENT irq EMPTY>
-<!ATTLIST irq
-	intr CDATA #REQUIRED
-	cpu CDATA #IMPLIED
-	value CDATA #REQUIRED
->
-
-<!ELEMENT swap-pages EMPTY>
-<!ATTLIST swap-pages
-	per CDATA #REQUIRED
-	pswpin CDATA #REQUIRED
-	pswpout CDATA #REQUIRED
->
-
-<!ELEMENT paging EMPTY>
-<!ATTLIST paging
-	per CDATA #REQUIRED
-	pgpgin CDATA #REQUIRED
-	pgpgout CDATA #REQUIRED
-	fault CDATA #REQUIRED
-	majflt CDATA #REQUIRED
-	pgfree CDATA #REQUIRED
-	pgscank CDATA #REQUIRED
-	pgscand CDATA #REQUIRED
-	pgsteal CDATA #REQUIRED
-	vmeff-percent CDATA #IMPLIED
-	pgprom CDATA #IMPLIED
-	pgdem CDATA #IMPLIED
->
-
-<!ELEMENT io (tps, io-reads, io-writes, io-discard?)>
-<!ATTLIST io
-	per CDATA #REQUIRED
->
-
-<!ELEMENT tps (#PCDATA)>
-
-<!ELEMENT io-reads EMPTY>
-<!ATTLIST io-reads
-	rtps CDATA #REQUIRED
-	bread CDATA #REQUIRED
->
-
-<!ELEMENT io-writes EMPTY>
-<!ATTLIST io-writes
-	wtps CDATA #REQUIRED
-	bwrtn CDATA #REQUIRED
->
-
-<!ELEMENT io-discard EMPTY>
-<!ATTLIST io-discard
-	dtps CDATA #IMPLIED
-	bdscd CDATA #IMPLIED
->
-
-<!ELEMENT memory (memfree?, avail?, memused?, memused-percent?, buffers?, cached?, commit?, commit-percent?, active?, inactive?, dirty?, anonpg?, slab?, kstack?, pgtbl?, vmused?, swpfree?, swpused?, swpused-percent?, swpcad?, swpcad-percent?, frmpg?, bufpg?, campg?)>
-<!ATTLIST memory
-	per CDATA #IMPLIED
-	unit CDATA #REQUIRED
->
-
-<!ELEMENT memfree (#PCDATA)>
-
-<!ELEMENT avail (#PCDATA)>
-
-<!ELEMENT memused (#PCDATA)>
-
-<!ELEMENT memused-percent (#PCDATA)>
-
-<!ELEMENT buffers (#PCDATA)>
-
-<!ELEMENT cached (#PCDATA)>
-
-<!ELEMENT commit (#PCDATA)>
-
-<!ELEMENT commit-percent (#PCDATA)>
-
-<!ELEMENT active (#PCDATA)>
-
-<!ELEMENT inactive (#PCDATA)>
-
-<!ELEMENT dirty (#PCDATA)>
-
-<!ELEMENT anonpg (#PCDATA)>
-
-<!ELEMENT slab (#PCDATA)>
-
-<!ELEMENT kstack (#PCDATA)>
-
-<!ELEMENT pgtbl (#PCDATA)>
-
-<!ELEMENT vmused (#PCDATA)>
-
-<!ELEMENT swpfree (#PCDATA)>
-
-<!ELEMENT swpused (#PCDATA)>
-
-<!ELEMENT swpused-percent (#PCDATA)>
-
-<!ELEMENT swpcad (#PCDATA)>
-
-<!ELEMENT swpcad-percent (#PCDATA)>
-
-<!ELEMENT frmpg (#PCDATA)>
-
-<!ELEMENT bufpg (#PCDATA)>
-
-<!ELEMENT campg (#PCDATA)>
-
-<!ELEMENT hugepages (hugfree, hugused, hugused-percent, hugrsvd?, hugsurp?)>
-<!ATTLIST hugepages
-	unit CDATA #REQUIRED
->
-
-<!ELEMENT hugfree (#PCDATA)>
-
-<!ELEMENT hugused (#PCDATA)>
-
-<!ELEMENT hugused-percent (#PCDATA)>
-
-<!ELEMENT hugrsvd (#PCDATA)>
-
-<!ELEMENT hugsurp (#PCDATA)>
-
-<!ELEMENT kernel EMPTY>
-<!ATTLIST kernel
-	dentunusd CDATA #REQUIRED
-	file-nr CDATA #REQUIRED
-	inode-nr CDATA #REQUIRED
-	pty-nr CDATA #REQUIRED
->
-
-<!ELEMENT queue EMPTY>
-<!ATTLIST queue
-	runq-sz CDATA #REQUIRED
-	plist-sz CDATA #REQUIRED
-	ldavg-1 CDATA #REQUIRED
-	ldavg-5 CDATA #REQUIRED
-	ldavg-15 CDATA #REQUIRED
-	blocked CDATA #REQUIRED
->
-
-<!ELEMENT serial (tty+)>
-<!ATTLIST serial
-	per CDATA #REQUIRED
->
-
-<!ELEMENT tty EMPTY>
-<!ATTLIST tty
-	line CDATA #REQUIRED
-	rcvin CDATA #REQUIRED
-	xmtin CDATA #REQUIRED
-	framerr CDATA #REQUIRED
-	prtyerr CDATA #REQUIRED
-	brk CDATA #REQUIRED
-	ovrun CDATA #REQUIRED
->
-
-<!ELEMENT disk (disk-device+)>
-<!ATTLIST disk
-	per CDATA #REQUIRED
->
-
-<!ELEMENT disk-device EMPTY>
-<!ATTLIST disk-device
-	dev CDATA #REQUIRED
-	tps CDATA #REQUIRED
-	rd_sec CDATA #IMPLIED
-	wr_sec CDATA #IMPLIED
-	dc_sec CDATA #IMPLIED
-	rkB CDATA #REQUIRED
-	wkB CDATA #REQUIRED
-	dkB CDATA #IMPLIED
-	avgrq-sz CDATA #IMPLIED
-	areq-sz CDATA #REQUIRED
-	avgqu-sz CDATA #IMPLIED
-	aqu-sz CDATA #REQUIRED
-	await CDATA #REQUIRED
-	svctm CDATA #IMPLIED
-	util-percent CDATA #REQUIRED
->
-
-<!ELEMENT network (net-dev*, net-edev*, net-nfs?, net-nfsd?, net-sock?, net-ip?, net-eip?, net-icmp?, net-eicmp?, net-tcp?, net-etcp?, net-udp?, net-sock6?, net-ip6?, net-eip6?, net-icmp6?, net-eicmp6?, net-udp6?, fchost*, softnet*)>
-<!ATTLIST network
-	per CDATA #REQUIRED
->
-
-<!ELEMENT net-dev EMPTY>
-<!ATTLIST net-dev
-	iface CDATA #REQUIRED
-	rxpck CDATA #REQUIRED
-	txpck CDATA #REQUIRED
-	rxkB CDATA #REQUIRED
-	txkB CDATA #REQUIRED
-	rxcmp CDATA #REQUIRED
-	txcmp CDATA #REQUIRED
-	rxmcst CDATA #REQUIRED
-	ifutil-percent CDATA #REQUIRED
->
-
-<!ELEMENT net-edev EMPTY>
-<!ATTLIST net-edev
-	iface CDATA #REQUIRED
-	rxerr CDATA #REQUIRED
-	txerr CDATA #REQUIRED
-	coll CDATA #REQUIRED
-	rxdrop CDATA #REQUIRED
-	txdrop CDATA #REQUIRED
-	txcarr CDATA #REQUIRED
-	rxfram CDATA #REQUIRED
-	rxfifo CDATA #REQUIRED
-	txfifo CDATA #REQUIRED
->
-
-<!ELEMENT net-nfs EMPTY>
-<!ATTLIST net-nfs
-	call CDATA #REQUIRED
-	retrans CDATA #REQUIRED
-	read CDATA #REQUIRED
-	write CDATA #REQUIRED
-	access CDATA #REQUIRED
-	getatt CDATA #REQUIRED
->
-
-<!ELEMENT net-nfsd EMPTY>
-<!ATTLIST net-nfsd
-	scall CDATA #REQUIRED
-	badcall CDATA #REQUIRED
-	packet CDATA #REQUIRED
-	udp CDATA #REQUIRED
-	tcp CDATA #REQUIRED
-	hit CDATA #REQUIRED
-	miss CDATA #REQUIRED
-	sread CDATA #REQUIRED
-	swrite CDATA #REQUIRED
-	saccess CDATA #REQUIRED
-	sgetatt CDATA #REQUIRED
->
-
-<!ELEMENT net-sock EMPTY>
-<!ATTLIST net-sock
-	totsck CDATA #REQUIRED
-	tcpsck CDATA #REQUIRED
-	udpsck CDATA #REQUIRED
-	rawsck CDATA #REQUIRED
-	ip-frag CDATA #REQUIRED
-	tcp-tw CDATA #REQUIRED
->
-
-<!ELEMENT net-ip EMPTY>
-<!ATTLIST net-ip
-	irec CDATA #REQUIRED
-	fwddgm CDATA #REQUIRED
-	idel CDATA #REQUIRED
-	orq CDATA #REQUIRED
-	asmrq CDATA #REQUIRED
-	asmok CDATA #REQUIRED
-	fragok CDATA #REQUIRED
-	fragcrt CDATA #REQUIRED
->
-
-<!ELEMENT net-eip EMPTY>
-<!ATTLIST net-eip
-	ihdrerr CDATA #REQUIRED
-	iadrerr CDATA #REQUIRED
-	iukwnpr CDATA #REQUIRED
-	idisc CDATA #REQUIRED
-	odisc CDATA #REQUIRED
-	onort CDATA #REQUIRED
-	asmf CDATA #REQUIRED
-	fragf CDATA #REQUIRED
->
-
-<!ELEMENT net-icmp EMPTY>
-<!ATTLIST net-icmp
-	imsg CDATA #REQUIRED
-	omsg CDATA #REQUIRED
-	iech CDATA #REQUIRED
-	iechr CDATA #REQUIRED
-	oech CDATA #REQUIRED
-	oechr CDATA #REQUIRED
-	itm CDATA #REQUIRED
-	itmr CDATA #REQUIRED
-	otm CDATA #REQUIRED
-	otmr CDATA #REQUIRED
-	iadrmk CDATA #REQUIRED
-	iadrmkr CDATA #REQUIRED
-	oadrmk CDATA #REQUIRED
-	oadrmkr CDATA #REQUIRED
->
-
-<!ELEMENT net-eicmp EMPTY>
-<!ATTLIST net-eicmp
-	ierr CDATA #REQUIRED
-	oerr CDATA #REQUIRED
-	idstunr CDATA #REQUIRED
-	odstunr CDATA #REQUIRED
-	itmex CDATA #REQUIRED
-	otmex CDATA #REQUIRED
-	iparmpb CDATA #REQUIRED
-	oparmpb CDATA #REQUIRED
-	isrcq CDATA #REQUIRED
-	osrcq CDATA #REQUIRED
-	iredir CDATA #REQUIRED
-	oredir CDATA #REQUIRED
->
-
-<!ELEMENT net-tcp EMPTY>
-<!ATTLIST net-tcp
-	active CDATA #REQUIRED
-	passive CDATA #REQUIRED
-	iseg CDATA #REQUIRED
-	oseg CDATA #REQUIRED
->
-
-<!ELEMENT net-etcp EMPTY>
-<!ATTLIST net-etcp
-	atmptf CDATA #REQUIRED
-	estres CDATA #REQUIRED
-	retrans CDATA #REQUIRED
-	isegerr CDATA #REQUIRED
-	orsts CDATA #REQUIRED
->
-
-<!ELEMENT net-udp EMPTY>
-<!ATTLIST net-udp
-	idgm CDATA #REQUIRED
-	odgm CDATA #REQUIRED
-	noport CDATA #REQUIRED
-	idgmerr CDATA #REQUIRED
->
-
-<!ELEMENT net-sock6 EMPTY>
-<!ATTLIST net-sock6
-	tcp6sck CDATA #REQUIRED
-	udp6sck CDATA #REQUIRED
-	raw6sck CDATA #REQUIRED
-	ip6-frag CDATA #REQUIRED
->
-
-<!ELEMENT net-ip6 EMPTY>
-<!ATTLIST net-ip6
-	irec6 CDATA #REQUIRED
-	fwddgm6 CDATA #REQUIRED
-	idel6 CDATA #REQUIRED
-	orq6 CDATA #REQUIRED
-	asmrq6 CDATA #REQUIRED
-	asmok6 CDATA #REQUIRED
-	imcpck6 CDATA #REQUIRED
-	omcpck6 CDATA #REQUIRED
-	fragok6 CDATA #REQUIRED
-	fragcr6 CDATA #REQUIRED
->
-
-<!ELEMENT net-eip6 EMPTY>
-<!ATTLIST net-eip6
-	ihdrer6 CDATA #REQUIRED
-	iadrer6 CDATA #REQUIRED
-	iukwnp6 CDATA #REQUIRED
-	i2big6 CDATA #REQUIRED
-	idisc6 CDATA #REQUIRED
-	odisc6 CDATA #REQUIRED
-	inort6 CDATA #REQUIRED
-	onort6 CDATA #REQUIRED
-	asmf6 CDATA #REQUIRED
-	fragf6 CDATA #REQUIRED
-	itrpck6 CDATA #REQUIRED
->
-
-<!ELEMENT net-icmp6 EMPTY>
-<!ATTLIST net-icmp6
-	imsg6 CDATA #REQUIRED
-	omsg6 CDATA #REQUIRED
-	iech6 CDATA #REQUIRED
-	iechr6 CDATA #REQUIRED
-	oechr6 CDATA #REQUIRED
-	igmbq6 CDATA #REQUIRED
-	igmbr6 CDATA #REQUIRED
-	ogmbr6 CDATA #REQUIRED
-	igmbrd6 CDATA #REQUIRED
-	ogmbrd6 CDATA #REQUIRED
-	irtsol6 CDATA #REQUIRED
-	ortsol6 CDATA #REQUIRED
-	irtad6 CDATA #REQUIRED
-	inbsol6 CDATA #REQUIRED
-	onbsol6 CDATA #REQUIRED
-	inbad6 CDATA #REQUIRED
-	onbad6 CDATA #REQUIRED
->
-
-<!ELEMENT net-eicmp6 EMPTY>
-<!ATTLIST net-eicmp6
-	ierr6 CDATA #REQUIRED
-	idtunr6 CDATA #REQUIRED
-	odtunr6 CDATA #REQUIRED
-	itmex6 CDATA #REQUIRED
-	otmex6 CDATA #REQUIRED
-	iprmpb6 CDATA #REQUIRED
-	oprmpb6 CDATA #REQUIRED
-	iredir6 CDATA #REQUIRED
-	oredir6 CDATA #REQUIRED
-	ipck2b6 CDATA #REQUIRED
-	opck2b6 CDATA #REQUIRED
->
-
-<!ELEMENT net-udp6 EMPTY>
-<!ATTLIST net-udp6
-	idgm6 CDATA #REQUIRED
-	odgm6 CDATA #REQUIRED
-	noport6 CDATA #REQUIRED
-	idgmer6 CDATA #REQUIRED
->
-
-<!ELEMENT fchost EMPTY>
-<!ATTLIST fchost
-	name CDATA #REQUIRED
-	fch_rxf CDATA #REQUIRED
-	fch_txf CDATA #REQUIRED
-	fch_rxw CDATA #REQUIRED
-	fch_txw CDATA #REQUIRED
->
-
-<!ELEMENT softnet EMPTY>
-<!ATTLIST softnet
-	cpu CDATA #REQUIRED
-	total CDATA #REQUIRED
-	dropd CDATA #REQUIRED
-	squeezd CDATA #REQUIRED
-	rx_rps CDATA #REQUIRED
-	flw_lim CDATA #REQUIRED
-	blg_len CDATA #IMPLIED
->
-
-<!ELEMENT power-management (cpu-frequency?, fan-speed?, temperature?, voltage-input?, cpu-weighted-frequency?, battery?, usb-devices?)>
-
-<!ELEMENT cpu-frequency (cpufreq*)>
-<!ATTLIST cpu-frequency
-	unit CDATA #REQUIRED
->
-
-<!ELEMENT cpufreq EMPTY>
-<!ATTLIST cpufreq
-	number CDATA #REQUIRED
-	frequency CDATA #REQUIRED
->
-
-<!ELEMENT fan-speed (fan+)>
-<!ATTLIST fan-speed
-	unit CDATA #REQUIRED
->
-
-<!ELEMENT fan EMPTY>
-<!ATTLIST fan
-	number CDATA #REQUIRED
-	rpm CDATA #REQUIRED
-	drpm CDATA #REQUIRED
-	device CDATA #REQUIRED
->
-
-<!ELEMENT temperature (temp+)>
-<!ATTLIST temperature
-	unit CDATA #REQUIRED
->
-
-<!ELEMENT temp EMPTY>
-<!ATTLIST temp
-	number CDATA #REQUIRED
-	degC CDATA #REQUIRED
-	percent-temp CDATA #REQUIRED
-	device CDATA #REQUIRED
->
-
-<!ELEMENT voltage-input (in+)>
-<!ATTLIST voltage-input
-	unit CDATA #REQUIRED
->
-
-<!ELEMENT in EMPTY>
-<!ATTLIST in
-	number CDATA #REQUIRED
-	inV CDATA #REQUIRED
-	percent-in CDATA #REQUIRED
-	device CDATA #REQUIRED
->
-
-<!ELEMENT cpu-weighted-frequency (cpuwfreq+)>
-<!ATTLIST cpu-weighted-frequency
-	unit CDATA #REQUIRED
->
-
-<!ELEMENT cpuwfreq EMPTY>
-<!ATTLIST cpuwfreq
-	number CDATA #REQUIRED
-	weighted-frequency CDATA #REQUIRED
->
-
-<!ELEMENT battery (bat+)>
-<!ATTLIST battery
-	unit CDATA #REQUIRED
->
-
-<!ELEMENT bat EMPTY>
-<!ATTLIST bat
-	number CDATA #REQUIRED
-	percent-capacity CDATA #REQUIRED
-	variation CDATA #REQUIRED
-	status CDATA #REQUIRED
->
-
-<!ELEMENT usb-devices (usb+)>
-
-<!ELEMENT usb EMPTY>
-<!ATTLIST usb
-	bus_number CDATA #REQUIRED
-	idvendor CDATA #REQUIRED
-	idprod CDATA #REQUIRED
-	maxpower CDATA #REQUIRED
-	manufact CDATA #REQUIRED
-	product CDATA #REQUIRED
->
-
-<!ELEMENT filesystems (filesystem+)>
-
-<!ELEMENT filesystem EMPTY>
-<!ATTLIST filesystem
-	fsname CDATA #IMPLIED
-	mountp CDATA #IMPLIED
-	MBfsfree CDATA #REQUIRED
-	MBfsused CDATA #REQUIRED
-	fsused-percent CDATA #REQUIRED
-	ufsused-percent CDATA #REQUIRED
-	Ifree CDATA #REQUIRED
-	Iused CDATA #REQUIRED
-	Iused-percent CDATA #REQUIRED
->
-
-<!ELEMENT psi (psi-cpu?, psi-io?, psi-mem?)>
-<!ATTLIST psi
-	per CDATA #REQUIRED
->
-
-<!ELEMENT psi-cpu EMPTY>
-<!ATTLIST psi-cpu
-	some_avg10 CDATA #REQUIRED
-	some_avg60 CDATA #REQUIRED
-	some_avg300 CDATA #REQUIRED
-	some_avg CDATA #REQUIRED
->
-
-<!ELEMENT psi-io EMPTY>
-<!ATTLIST psi-io
-	some_avg10 CDATA #REQUIRED
-	some_avg60 CDATA #REQUIRED
-	some_avg300 CDATA #REQUIRED
-	some_avg CDATA #REQUIRED
-	full_avg10 CDATA #REQUIRED
-	full_avg60 CDATA #REQUIRED
-	full_avg300 CDATA #REQUIRED
-	full_avg CDATA #REQUIRED
->
-
-<!ELEMENT psi-mem EMPTY>
-<!ATTLIST psi-mem
-	some_avg10 CDATA #REQUIRED
-	some_avg60 CDATA #REQUIRED
-	some_avg300 CDATA #REQUIRED
-	some_avg CDATA #REQUIRED
-	full_avg10 CDATA #REQUIRED
-	full_avg60 CDATA #REQUIRED
-	full_avg300 CDATA #REQUIRED
-	full_avg CDATA #REQUIRED
->
diff -pruN 12.7.5-2/xml/sysstat-3.17.dtd 12.7.7-0ubuntu2/xml/sysstat-3.17.dtd
--- 12.7.5-2/xml/sysstat-3.17.dtd	1970-01-01 00:00:00.000000000 +0000
+++ 12.7.7-0ubuntu2/xml/sysstat-3.17.dtd	2024-01-20 15:51:57.000000000 +0000
@@ -0,0 +1,666 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--DTD v3.17 for sysstat. See sadf.h -->
+
+<!ELEMENT sysstat (sysdata-version, host)>
+<!ATTLIST sysstat
+	xmlns CDATA #REQUIRED
+	xmlns:xsi CDATA #REQUIRED
+	xsi:schemaLocation CDATA #REQUIRED
+>
+
+<!ELEMENT sysdata-version (#PCDATA)>
+
+<!ENTITY % TIMESTAMP_ELEMENTS "cpu-load|process-and-context-switch|interrupts|swap-pages|paging|io|memory|hugepages|kernel|queue|serial|disk|network|power-management|filesystems|psi">
+<!ENTITY % HOST_ELEMENTS "sysname|release|machine|number-of-cpus|file-date|file-utc-time|timezone|statistics|restarts|comments">
+
+<!ELEMENT host (%HOST_ELEMENTS;)+>
+<!ATTLIST host
+	nodename CDATA #REQUIRED
+>
+
+<!ELEMENT sysname (#PCDATA)>
+
+<!ELEMENT release (#PCDATA)>
+
+<!ELEMENT machine (#PCDATA)>
+
+<!ELEMENT number-of-cpus (#PCDATA)>
+
+<!ELEMENT file-date (#PCDATA)>
+
+<!ELEMENT timezone (#PCDATA)>
+
+<!ELEMENT file-utc-time (#PCDATA)>
+
+<!ELEMENT statistics (timestamp*)>
+
+<!ELEMENT timestamp (%TIMESTAMP_ELEMENTS;)+>
+<!ATTLIST timestamp
+	date CDATA #REQUIRED
+	time CDATA #REQUIRED
+	tz CDATA #REQUIRED
+	interval CDATA #REQUIRED
+>
+
+<!ELEMENT restarts (boot*)>
+
+<!ELEMENT boot EMPTY>
+<!ATTLIST boot
+	date CDATA #REQUIRED
+	time CDATA #REQUIRED
+	tz CDATA #REQUIRED
+	cpu_count CDATA #REQUIRED
+>
+
+<!ELEMENT comments (comment*)>
+
+<!ELEMENT comment EMPTY>
+<!ATTLIST comment
+	date CDATA #REQUIRED
+	time CDATA #REQUIRED
+	tz CDATA #REQUIRED
+	com CDATA #REQUIRED
+>
+
+<!ELEMENT cpu-load (cpu*)>
+
+<!ELEMENT cpu EMPTY>
+<!ATTLIST cpu
+	number CDATA #REQUIRED
+	user CDATA #IMPLIED
+	usr CDATA #IMPLIED
+	nice CDATA #REQUIRED
+	system CDATA #IMPLIED
+	sys CDATA #IMPLIED
+	iowait CDATA #REQUIRED
+	steal CDATA #REQUIRED
+	irq CDATA #IMPLIED
+	soft CDATA #IMPLIED
+	guest CDATA #IMPLIED
+	gnice CDATA #IMPLIED
+	idle CDATA #REQUIRED
+>
+
+<!ELEMENT process-and-context-switch EMPTY>
+<!ATTLIST process-and-context-switch
+	per CDATA #REQUIRED
+	proc CDATA #REQUIRED
+	cswch CDATA #REQUIRED
+>
+
+<!ELEMENT interrupts (int-global)>
+
+<!ELEMENT int-global (irq*)>
+<!ATTLIST int-global
+	per CDATA #REQUIRED
+>
+
+<!ELEMENT irq EMPTY>
+<!ATTLIST irq
+	intr CDATA #REQUIRED
+	cpu CDATA #REQUIRED
+	value CDATA #REQUIRED
+>
+
+<!ELEMENT swap-pages EMPTY>
+<!ATTLIST swap-pages
+	per CDATA #REQUIRED
+	pswpin CDATA #REQUIRED
+	pswpout CDATA #REQUIRED
+>
+
+<!ELEMENT paging EMPTY>
+<!ATTLIST paging
+	per CDATA #REQUIRED
+	pgpgin CDATA #REQUIRED
+	pgpgout CDATA #REQUIRED
+	fault CDATA #REQUIRED
+	majflt CDATA #REQUIRED
+	pgfree CDATA #REQUIRED
+	pgscank CDATA #REQUIRED
+	pgscand CDATA #REQUIRED
+	pgsteal CDATA #REQUIRED
+	pgprom CDATA #REQUIRED
+	pgdem CDATA #REQUIRED
+>
+
+<!ELEMENT io (tps, io-reads, io-writes, io-discard?)>
+<!ATTLIST io
+	per CDATA #REQUIRED
+>
+
+<!ELEMENT tps (#PCDATA)>
+
+<!ELEMENT io-reads EMPTY>
+<!ATTLIST io-reads
+	rtps CDATA #REQUIRED
+	bread CDATA #REQUIRED
+>
+
+<!ELEMENT io-writes EMPTY>
+<!ATTLIST io-writes
+	wtps CDATA #REQUIRED
+	bwrtn CDATA #REQUIRED
+>
+
+<!ELEMENT io-discard EMPTY>
+<!ATTLIST io-discard
+	dtps CDATA #REQUIRED
+	bdscd CDATA #REQUIRED
+>
+
+<!ELEMENT memory (memfree?, avail?, memused?, memused-percent?, buffers?, cached?, commit?, commit-percent?, active?, inactive?, dirty?, anonpg?, slab?, kstack?, pgtbl?, vmused?, swpfree?, swpused?, swpused-percent?, swpcad?, swpcad-percent?, frmpg?, bufpg?, campg?)>
+<!ATTLIST memory
+	unit CDATA #REQUIRED
+>
+
+<!ELEMENT memfree (#PCDATA)>
+
+<!ELEMENT avail (#PCDATA)>
+
+<!ELEMENT memused (#PCDATA)>
+
+<!ELEMENT memused-percent (#PCDATA)>
+
+<!ELEMENT buffers (#PCDATA)>
+
+<!ELEMENT cached (#PCDATA)>
+
+<!ELEMENT commit (#PCDATA)>
+
+<!ELEMENT commit-percent (#PCDATA)>
+
+<!ELEMENT active (#PCDATA)>
+
+<!ELEMENT inactive (#PCDATA)>
+
+<!ELEMENT dirty (#PCDATA)>
+
+<!ELEMENT anonpg (#PCDATA)>
+
+<!ELEMENT slab (#PCDATA)>
+
+<!ELEMENT kstack (#PCDATA)>
+
+<!ELEMENT pgtbl (#PCDATA)>
+
+<!ELEMENT vmused (#PCDATA)>
+
+<!ELEMENT swpfree (#PCDATA)>
+
+<!ELEMENT swpused (#PCDATA)>
+
+<!ELEMENT swpused-percent (#PCDATA)>
+
+<!ELEMENT swpcad (#PCDATA)>
+
+<!ELEMENT swpcad-percent (#PCDATA)>
+
+<!ELEMENT frmpg (#PCDATA)>
+
+<!ELEMENT bufpg (#PCDATA)>
+
+<!ELEMENT campg (#PCDATA)>
+
+<!ELEMENT hugepages (hugfree, hugused, hugused-percent, hugrsvd, hugsurp)>
+<!ATTLIST hugepages
+	unit CDATA #REQUIRED
+>
+
+<!ELEMENT hugfree (#PCDATA)>
+
+<!ELEMENT hugused (#PCDATA)>
+
+<!ELEMENT hugused-percent (#PCDATA)>
+
+<!ELEMENT hugrsvd (#PCDATA)>
+
+<!ELEMENT hugsurp (#PCDATA)>
+
+<!ELEMENT kernel EMPTY>
+<!ATTLIST kernel
+	dentunusd CDATA #REQUIRED
+	file-nr CDATA #REQUIRED
+	inode-nr CDATA #REQUIRED
+	pty-nr CDATA #REQUIRED
+>
+
+<!ELEMENT queue EMPTY>
+<!ATTLIST queue
+	runq-sz CDATA #REQUIRED
+	plist-sz CDATA #REQUIRED
+	ldavg-1 CDATA #REQUIRED
+	ldavg-5 CDATA #REQUIRED
+	ldavg-15 CDATA #REQUIRED
+	blocked CDATA #REQUIRED
+>
+
+<!ELEMENT serial (tty+)>
+<!ATTLIST serial
+	per CDATA #REQUIRED
+>
+
+<!ELEMENT tty EMPTY>
+<!ATTLIST tty
+	line CDATA #REQUIRED
+	rcvin CDATA #REQUIRED
+	xmtin CDATA #REQUIRED
+	framerr CDATA #REQUIRED
+	prtyerr CDATA #REQUIRED
+	brk CDATA #REQUIRED
+	ovrun CDATA #REQUIRED
+>
+
+<!ELEMENT disk (disk-device+)>
+<!ATTLIST disk
+	per CDATA #REQUIRED
+>
+
+<!ELEMENT disk-device EMPTY>
+<!ATTLIST disk-device
+	dev CDATA #REQUIRED
+	tps CDATA #REQUIRED
+	rd_sec CDATA #REQUIRED
+	wr_sec CDATA #REQUIRED
+	dc_sec CDATA #REQUIRED
+	rkB CDATA #REQUIRED
+	wkB CDATA #REQUIRED
+	dkB CDATA #REQUIRED
+	avgrq-sz CDATA #REQUIRED
+	areq-sz CDATA #REQUIRED
+	avgqu-sz CDATA #REQUIRED
+	aqu-sz CDATA #REQUIRED
+	await CDATA #REQUIRED
+	util-percent CDATA #REQUIRED
+>
+
+<!ELEMENT network (net-dev*, net-edev*, net-nfs?, net-nfsd?, net-sock?, net-ip?, net-eip?, net-icmp?, net-eicmp?, net-tcp?, net-etcp?, net-udp?, net-sock6?, net-ip6?, net-eip6?, net-icmp6?, net-eicmp6?, net-udp6?, fchost*, softnet*)>
+<!ATTLIST network
+	per CDATA #REQUIRED
+>
+
+<!ELEMENT net-dev EMPTY>
+<!ATTLIST net-dev
+	iface CDATA #REQUIRED
+	rxpck CDATA #REQUIRED
+	txpck CDATA #REQUIRED
+	rxkB CDATA #REQUIRED
+	txkB CDATA #REQUIRED
+	rxcmp CDATA #REQUIRED
+	txcmp CDATA #REQUIRED
+	rxmcst CDATA #REQUIRED
+	ifutil-percent CDATA #REQUIRED
+>
+
+<!ELEMENT net-edev EMPTY>
+<!ATTLIST net-edev
+	iface CDATA #REQUIRED
+	rxerr CDATA #REQUIRED
+	txerr CDATA #REQUIRED
+	coll CDATA #REQUIRED
+	rxdrop CDATA #REQUIRED
+	txdrop CDATA #REQUIRED
+	txcarr CDATA #REQUIRED
+	rxfram CDATA #REQUIRED
+	rxfifo CDATA #REQUIRED
+	txfifo CDATA #REQUIRED
+>
+
+<!ELEMENT net-nfs EMPTY>
+<!ATTLIST net-nfs
+	call CDATA #REQUIRED
+	retrans CDATA #REQUIRED
+	read CDATA #REQUIRED
+	write CDATA #REQUIRED
+	access CDATA #REQUIRED
+	getatt CDATA #REQUIRED
+>
+
+<!ELEMENT net-nfsd EMPTY>
+<!ATTLIST net-nfsd
+	scall CDATA #REQUIRED
+	badcall CDATA #REQUIRED
+	packet CDATA #REQUIRED
+	udp CDATA #REQUIRED
+	tcp CDATA #REQUIRED
+	hit CDATA #REQUIRED
+	miss CDATA #REQUIRED
+	sread CDATA #REQUIRED
+	swrite CDATA #REQUIRED
+	saccess CDATA #REQUIRED
+	sgetatt CDATA #REQUIRED
+>
+
+<!ELEMENT net-sock EMPTY>
+<!ATTLIST net-sock
+	totsck CDATA #REQUIRED
+	tcpsck CDATA #REQUIRED
+	udpsck CDATA #REQUIRED
+	rawsck CDATA #REQUIRED
+	ip-frag CDATA #REQUIRED
+	tcp-tw CDATA #REQUIRED
+>
+
+<!ELEMENT net-ip EMPTY>
+<!ATTLIST net-ip
+	irec CDATA #REQUIRED
+	fwddgm CDATA #REQUIRED
+	idel CDATA #REQUIRED
+	orq CDATA #REQUIRED
+	asmrq CDATA #REQUIRED
+	asmok CDATA #REQUIRED
+	fragok CDATA #REQUIRED
+	fragcrt CDATA #REQUIRED
+>
+
+<!ELEMENT net-eip EMPTY>
+<!ATTLIST net-eip
+	ihdrerr CDATA #REQUIRED
+	iadrerr CDATA #REQUIRED
+	iukwnpr CDATA #REQUIRED
+	idisc CDATA #REQUIRED
+	odisc CDATA #REQUIRED
+	onort CDATA #REQUIRED
+	asmf CDATA #REQUIRED
+	fragf CDATA #REQUIRED
+>
+
+<!ELEMENT net-icmp EMPTY>
+<!ATTLIST net-icmp
+	imsg CDATA #REQUIRED
+	omsg CDATA #REQUIRED
+	iech CDATA #REQUIRED
+	iechr CDATA #REQUIRED
+	oech CDATA #REQUIRED
+	oechr CDATA #REQUIRED
+	itm CDATA #REQUIRED
+	itmr CDATA #REQUIRED
+	otm CDATA #REQUIRED
+	otmr CDATA #REQUIRED
+	iadrmk CDATA #REQUIRED
+	iadrmkr CDATA #REQUIRED
+	oadrmk CDATA #REQUIRED
+	oadrmkr CDATA #REQUIRED
+>
+
+<!ELEMENT net-eicmp EMPTY>
+<!ATTLIST net-eicmp
+	ierr CDATA #REQUIRED
+	oerr CDATA #REQUIRED
+	idstunr CDATA #REQUIRED
+	odstunr CDATA #REQUIRED
+	itmex CDATA #REQUIRED
+	otmex CDATA #REQUIRED
+	iparmpb CDATA #REQUIRED
+	oparmpb CDATA #REQUIRED
+	isrcq CDATA #REQUIRED
+	osrcq CDATA #REQUIRED
+	iredir CDATA #REQUIRED
+	oredir CDATA #REQUIRED
+>
+
+<!ELEMENT net-tcp EMPTY>
+<!ATTLIST net-tcp
+	active CDATA #REQUIRED
+	passive CDATA #REQUIRED
+	iseg CDATA #REQUIRED
+	oseg CDATA #REQUIRED
+>
+
+<!ELEMENT net-etcp EMPTY>
+<!ATTLIST net-etcp
+	atmptf CDATA #REQUIRED
+	estres CDATA #REQUIRED
+	retrseg CDATA #REQUIRED
+	isegerr CDATA #REQUIRED
+	orsts CDATA #REQUIRED
+>
+
+<!ELEMENT net-udp EMPTY>
+<!ATTLIST net-udp
+	idgm CDATA #REQUIRED
+	odgm CDATA #REQUIRED
+	noport CDATA #REQUIRED
+	idgmerr CDATA #REQUIRED
+>
+
+<!ELEMENT net-sock6 EMPTY>
+<!ATTLIST net-sock6
+	tcp6sck CDATA #REQUIRED
+	udp6sck CDATA #REQUIRED
+	raw6sck CDATA #REQUIRED
+	ip6-frag CDATA #REQUIRED
+>
+
+<!ELEMENT net-ip6 EMPTY>
+<!ATTLIST net-ip6
+	irec6 CDATA #REQUIRED
+	fwddgm6 CDATA #REQUIRED
+	idel6 CDATA #REQUIRED
+	orq6 CDATA #REQUIRED
+	asmrq6 CDATA #REQUIRED
+	asmok6 CDATA #REQUIRED
+	imcpck6 CDATA #REQUIRED
+	omcpck6 CDATA #REQUIRED
+	fragok6 CDATA #REQUIRED
+	fragcr6 CDATA #REQUIRED
+>
+
+<!ELEMENT net-eip6 EMPTY>
+<!ATTLIST net-eip6
+	ihdrer6 CDATA #REQUIRED
+	iadrer6 CDATA #REQUIRED
+	iukwnp6 CDATA #REQUIRED
+	i2big6 CDATA #REQUIRED
+	idisc6 CDATA #REQUIRED
+	odisc6 CDATA #REQUIRED
+	inort6 CDATA #REQUIRED
+	onort6 CDATA #REQUIRED
+	asmf6 CDATA #REQUIRED
+	fragf6 CDATA #REQUIRED
+	itrpck6 CDATA #REQUIRED
+>
+
+<!ELEMENT net-icmp6 EMPTY>
+<!ATTLIST net-icmp6
+	imsg6 CDATA #REQUIRED
+	omsg6 CDATA #REQUIRED
+	iech6 CDATA #REQUIRED
+	iechr6 CDATA #REQUIRED
+	oechr6 CDATA #REQUIRED
+	igmbq6 CDATA #REQUIRED
+	igmbr6 CDATA #REQUIRED
+	ogmbr6 CDATA #REQUIRED
+	igmbrd6 CDATA #REQUIRED
+	ogmbrd6 CDATA #REQUIRED
+	irtsol6 CDATA #REQUIRED
+	ortsol6 CDATA #REQUIRED
+	irtad6 CDATA #REQUIRED
+	inbsol6 CDATA #REQUIRED
+	onbsol6 CDATA #REQUIRED
+	inbad6 CDATA #REQUIRED
+	onbad6 CDATA #REQUIRED
+>
+
+<!ELEMENT net-eicmp6 EMPTY>
+<!ATTLIST net-eicmp6
+	ierr6 CDATA #REQUIRED
+	idtunr6 CDATA #REQUIRED
+	odtunr6 CDATA #REQUIRED
+	itmex6 CDATA #REQUIRED
+	otmex6 CDATA #REQUIRED
+	iprmpb6 CDATA #REQUIRED
+	oprmpb6 CDATA #REQUIRED
+	iredir6 CDATA #REQUIRED
+	oredir6 CDATA #REQUIRED
+	ipck2b6 CDATA #REQUIRED
+	opck2b6 CDATA #REQUIRED
+>
+
+<!ELEMENT net-udp6 EMPTY>
+<!ATTLIST net-udp6
+	idgm6 CDATA #REQUIRED
+	odgm6 CDATA #REQUIRED
+	noport6 CDATA #REQUIRED
+	idgmer6 CDATA #REQUIRED
+>
+
+<!ELEMENT fchost EMPTY>
+<!ATTLIST fchost
+	name CDATA #REQUIRED
+	fch_rxf CDATA #REQUIRED
+	fch_txf CDATA #REQUIRED
+	fch_rxw CDATA #REQUIRED
+	fch_txw CDATA #REQUIRED
+>
+
+<!ELEMENT softnet EMPTY>
+<!ATTLIST softnet
+	cpu CDATA #REQUIRED
+	total CDATA #REQUIRED
+	dropd CDATA #REQUIRED
+	squeezd CDATA #REQUIRED
+	rx_rps CDATA #REQUIRED
+	flw_lim CDATA #REQUIRED
+	blg_len CDATA #REQUIRED
+>
+
+<!ELEMENT power-management (cpu-frequency?, fan-speed?, temperature?, voltage-input?, cpu-weighted-frequency?, battery?, usb-devices?)>
+
+<!ELEMENT cpu-frequency (cpufreq*)>
+<!ATTLIST cpu-frequency
+	unit CDATA #REQUIRED
+>
+
+<!ELEMENT cpufreq EMPTY>
+<!ATTLIST cpufreq
+	number CDATA #REQUIRED
+	frequency CDATA #REQUIRED
+>
+
+<!ELEMENT fan-speed (fan+)>
+<!ATTLIST fan-speed
+	unit CDATA #REQUIRED
+>
+
+<!ELEMENT fan EMPTY>
+<!ATTLIST fan
+	number CDATA #REQUIRED
+	rpm CDATA #REQUIRED
+	drpm CDATA #REQUIRED
+	device CDATA #REQUIRED
+>
+
+<!ELEMENT temperature (temp+)>
+<!ATTLIST temperature
+	unit CDATA #REQUIRED
+>
+
+<!ELEMENT temp EMPTY>
+<!ATTLIST temp
+	number CDATA #REQUIRED
+	degC CDATA #REQUIRED
+	percent-temp CDATA #REQUIRED
+	device CDATA #REQUIRED
+>
+
+<!ELEMENT voltage-input (in+)>
+<!ATTLIST voltage-input
+	unit CDATA #REQUIRED
+>
+
+<!ELEMENT in EMPTY>
+<!ATTLIST in
+	number CDATA #REQUIRED
+	inV CDATA #REQUIRED
+	percent-in CDATA #REQUIRED
+	device CDATA #REQUIRED
+>
+
+<!ELEMENT cpu-weighted-frequency (cpuwfreq+)>
+<!ATTLIST cpu-weighted-frequency
+	unit CDATA #REQUIRED
+>
+
+<!ELEMENT cpuwfreq EMPTY>
+<!ATTLIST cpuwfreq
+	number CDATA #REQUIRED
+	weighted-frequency CDATA #REQUIRED
+>
+
+<!ELEMENT battery (bat+)>
+<!ATTLIST battery
+	unit CDATA #REQUIRED
+>
+
+<!ELEMENT bat EMPTY>
+<!ATTLIST bat
+	number CDATA #REQUIRED
+	percent-capacity CDATA #REQUIRED
+	variation CDATA #REQUIRED
+	status CDATA #REQUIRED
+>
+
+<!ELEMENT usb-devices (usb+)>
+
+<!ELEMENT usb EMPTY>
+<!ATTLIST usb
+	bus_number CDATA #REQUIRED
+	idvendor CDATA #REQUIRED
+	idprod CDATA #REQUIRED
+	maxpower CDATA #REQUIRED
+	manufact CDATA #REQUIRED
+	product CDATA #REQUIRED
+>
+
+<!ELEMENT filesystems (filesystem+)>
+
+<!ELEMENT filesystem EMPTY>
+<!ATTLIST filesystem
+	fsname CDATA #IMPLIED
+	mountp CDATA #IMPLIED
+	MBfsfree CDATA #REQUIRED
+	MBfsused CDATA #REQUIRED
+	fsused-percent CDATA #REQUIRED
+	ufsused-percent CDATA #REQUIRED
+	Ifree CDATA #REQUIRED
+	Iused CDATA #REQUIRED
+	Iused-percent CDATA #REQUIRED
+>
+
+<!ELEMENT psi (psi-cpu?, psi-io?, psi-mem?)>
+<!ATTLIST psi
+	per CDATA #REQUIRED
+>
+
+<!ELEMENT psi-cpu EMPTY>
+<!ATTLIST psi-cpu
+	some_avg10 CDATA #REQUIRED
+	some_avg60 CDATA #REQUIRED
+	some_avg300 CDATA #REQUIRED
+	some_avg CDATA #REQUIRED
+>
+
+<!ELEMENT psi-io EMPTY>
+<!ATTLIST psi-io
+	some_avg10 CDATA #REQUIRED
+	some_avg60 CDATA #REQUIRED
+	some_avg300 CDATA #REQUIRED
+	some_avg CDATA #REQUIRED
+	full_avg10 CDATA #REQUIRED
+	full_avg60 CDATA #REQUIRED
+	full_avg300 CDATA #REQUIRED
+	full_avg CDATA #REQUIRED
+>
+
+<!ELEMENT psi-mem EMPTY>
+<!ATTLIST psi-mem
+	some_avg10 CDATA #REQUIRED
+	some_avg60 CDATA #REQUIRED
+	some_avg300 CDATA #REQUIRED
+	some_avg CDATA #REQUIRED
+	full_avg10 CDATA #REQUIRED
+	full_avg60 CDATA #REQUIRED
+	full_avg300 CDATA #REQUIRED
+	full_avg CDATA #REQUIRED
+>
diff -pruN 12.7.5-2/xml/sysstat.xsd 12.7.7-0ubuntu2/xml/sysstat.xsd
--- 12.7.5-2/xml/sysstat.xsd	2023-12-09 15:53:16.000000000 +0000
+++ 12.7.7-0ubuntu2/xml/sysstat.xsd	2024-01-27 16:48:38.000000000 +0000
@@ -1,7 +1,7 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns="https://sysstat.github.io" targetNamespace="https://sysstat.github.io" elementFormDefault="qualified">
 <xs:annotation>
-	<xs:appinfo>-- XML Schema v3.16 for sysstat. See sadf.h --</xs:appinfo>
+	<xs:appinfo>-- XML Schema v3.17 for sysstat. See sadf.h --</xs:appinfo>
 </xs:annotation>
 
 <xs:element name="sysstat" type="sysstat-type"></xs:element>
@@ -113,8 +113,7 @@
 	</xs:sequence>
 	<xs:attribute name="date" type="xs:date" use="required"></xs:attribute>
 	<xs:attribute name="time" type="xs:time" use="required"></xs:attribute>
-	<xs:attribute name="utc" type="xs:nonNegativeInteger"></xs:attribute>
-	<xs:attribute name="tz" type="xs:string"></xs:attribute>
+	<xs:attribute name="tz" type="xs:string" use="required"></xs:attribute>
 	<xs:attribute name="interval" type="xs:nonNegativeInteger" use="required"></xs:attribute>
 </xs:complexType>
 
@@ -122,8 +121,7 @@
 <xs:complexType name="boot-type">
 	<xs:attribute name="date" type="xs:date" use="required"></xs:attribute>
 	<xs:attribute name="time" type="xs:time" use="required"></xs:attribute>
-	<xs:attribute name="utc" type="xs:nonNegativeInteger"></xs:attribute>
-	<xs:attribute name="tz" type="xs:string"></xs:attribute>
+	<xs:attribute name="tz" type="xs:string" use="required"></xs:attribute>
 	<xs:attribute name="cpu_count" type="xs:nonNegativeInteger" use="required"></xs:attribute>
 </xs:complexType>
 
@@ -131,8 +129,7 @@
 <xs:complexType name="comment-type">
 	<xs:attribute name="date" type="xs:date" use="required"></xs:attribute>
 	<xs:attribute name="time" type="xs:time" use="required"></xs:attribute>
-	<xs:attribute name="utc" type="xs:nonNegativeInteger"></xs:attribute>
-	<xs:attribute name="tz" type="xs:string"></xs:attribute>
+	<xs:attribute name="tz" type="xs:string" use="required"></xs:attribute>
 	<xs:attribute name="com" type="xs:string" use="required"></xs:attribute>
 </xs:complexType>
 
@@ -203,7 +200,7 @@
 <xs:element name="irq" type="irq-type"></xs:element>
 <xs:complexType name="irq-type">
 	<xs:attribute name="intr" type="xs:string" use="required"></xs:attribute>
-	<xs:attribute name="cpu" type="xs:string"></xs:attribute>
+	<xs:attribute name="cpu" type="xs:string" use="required"></xs:attribute>
 	<xs:attribute name="value" type="hundredth-type" use="required"></xs:attribute>
 </xs:complexType>
 
@@ -225,9 +222,8 @@
 	<xs:attribute name="pgscank" type="hundredth-type" use="required"></xs:attribute>
 	<xs:attribute name="pgscand" type="hundredth-type" use="required"></xs:attribute>
 	<xs:attribute name="pgsteal" type="hundredth-type" use="required"></xs:attribute>
-	<xs:attribute name="vmeff-percent" type="hundredth-type"></xs:attribute>
-	<xs:attribute name="pgprom" type="hundredth-type"></xs:attribute>
-	<xs:attribute name="pgdem" type="hundredth-type"></xs:attribute>
+	<xs:attribute name="pgprom" type="hundredth-type" use="required"></xs:attribute>
+	<xs:attribute name="pgdem" type="hundredth-type" use="required"></xs:attribute>
 </xs:complexType>
 
 <xs:element name="io" type="io-type"></xs:element>
@@ -255,8 +251,8 @@
 
 <xs:element name="io-discard" type="io-discard-type"></xs:element>
 <xs:complexType name="io-discard-type">
-	<xs:attribute name="dtps" type="hundredth-type"></xs:attribute>
-	<xs:attribute name="bdscd" type="hundredth-type"></xs:attribute>
+	<xs:attribute name="dtps" type="hundredth-type" use="required"></xs:attribute>
+	<xs:attribute name="bdscd" type="hundredth-type" use="required"></xs:attribute>
 </xs:complexType>
 
 <xs:element name="tps" type="tps-type"></xs:element>
@@ -292,7 +288,6 @@
 		<xs:element name="bufpg" type="negative-hundredth-type" minOccurs="0" maxOccurs="1"></xs:element>
 		<xs:element name="campg" type="negative-hundredth-type" minOccurs="0" maxOccurs="1"></xs:element>
 	</xs:sequence>
-	<xs:attribute name="per" type="per-type"></xs:attribute>
 	<xs:attribute name="unit" type="unit-type" use="required"></xs:attribute>
 </xs:complexType>
 
@@ -308,8 +303,8 @@
 		<xs:element name="hugfree" type="xs:nonNegativeInteger"></xs:element>
 		<xs:element name="hugused" type="xs:nonNegativeInteger"></xs:element>
 		<xs:element name="hugused-percent" type="hundredth-type"></xs:element>
-		<xs:element name="hugrsvd" type="xs:nonNegativeInteger" minOccurs="0" maxOccurs="1"></xs:element>
-		<xs:element name="hugsurp" type="xs:nonNegativeInteger" minOccurs="0" maxOccurs="1"></xs:element>
+		<xs:element name="hugrsvd" type="xs:nonNegativeInteger"></xs:element>
+		<xs:element name="hugsurp" type="xs:nonNegativeInteger"></xs:element>
 	</xs:sequence>
 	<xs:attribute name="unit" type="unit-type" use="required"></xs:attribute>
 </xs:complexType>
@@ -363,18 +358,17 @@
 <xs:complexType name="disk-device-type">
 	<xs:attribute name="dev" type="xs:string" use="required"></xs:attribute>
 	<xs:attribute name="tps" type="hundredth-type" use="required"></xs:attribute>
-	<xs:attribute name="rd_sec" type="hundredth-type"></xs:attribute>
-	<xs:attribute name="wr_sec" type="hundredth-type"></xs:attribute>
-	<xs:attribute name="dc_sec" type="hundredth-type"></xs:attribute>
+	<xs:attribute name="rd_sec" type="hundredth-type" use="required"></xs:attribute>
+	<xs:attribute name="wr_sec" type="hundredth-type" use="required"></xs:attribute>
+	<xs:attribute name="dc_sec" type="hundredth-type" use="required"></xs:attribute>
 	<xs:attribute name="rkB" type="hundredth-type" use="required"></xs:attribute>
 	<xs:attribute name="wkB" type="hundredth-type" use="required"></xs:attribute>
-	<xs:attribute name="dkB" type="hundredth-type"></xs:attribute>
-	<xs:attribute name="avgrq-sz" type="hundredth-type"></xs:attribute>
+	<xs:attribute name="dkB" type="hundredth-type" use="required"></xs:attribute>
+	<xs:attribute name="avgrq-sz" type="hundredth-type" use="required"></xs:attribute>
 	<xs:attribute name="areq-sz" type="hundredth-type" use="required"></xs:attribute>
-	<xs:attribute name="avgqu-sz" type="hundredth-type"></xs:attribute>
+	<xs:attribute name="avgqu-sz" type="hundredth-type" use="required"></xs:attribute>
 	<xs:attribute name="aqu-sz" type="hundredth-type" use="required"></xs:attribute>
 	<xs:attribute name="await" type="hundredth-type" use="required"></xs:attribute>
-	<xs:attribute name="svctm" type="hundredth-type"></xs:attribute>
 	<xs:attribute name="util-percent" type="hundredth-type" use="required"></xs:attribute>
 </xs:complexType>
 
@@ -537,7 +531,7 @@
 <xs:complexType name="net-etcp-type">
 	<xs:attribute name="atmptf" type="hundredth-type" use="required"></xs:attribute>
 	<xs:attribute name="estres" type="hundredth-type" use="required"></xs:attribute>
-	<xs:attribute name="retrans" type="hundredth-type" use="required"></xs:attribute>
+	<xs:attribute name="retrseg" type="hundredth-type" use="required"></xs:attribute>
 	<xs:attribute name="isegerr" type="hundredth-type" use="required"></xs:attribute>
 	<xs:attribute name="orsts" type="hundredth-type" use="required"></xs:attribute>
 </xs:complexType>
@@ -648,7 +642,7 @@
 	<xs:attribute name="squeezd" type="hundredth-type" use="required"></xs:attribute>
 	<xs:attribute name="rx_rps" type="hundredth-type" use="required"></xs:attribute>
 	<xs:attribute name="flw_lim" type="hundredth-type" use="required"></xs:attribute>
-	<xs:attribute name="blg_len" type="xs:nonNegativeInteger"></xs:attribute>
+	<xs:attribute name="blg_len" type="xs:nonNegativeInteger" use="required"></xs:attribute>
 </xs:complexType>
 
 <xs:element name="power-management" type="power-management-type"></xs:element>
diff -pruN 12.7.5-2/xml_stats.c 12.7.7-0ubuntu2/xml_stats.c
--- 12.7.5-2/xml_stats.c	2023-11-12 08:03:55.000000000 +0000
+++ 12.7.7-0ubuntu2/xml_stats.c	2025-02-02 07:33:59.000000000 +0000
@@ -1,6 +1,6 @@
 /*
  * xml_stats.c: Functions used by sadf to display statistics in XML.
- * (C) 1999-2023 by Sebastien GODARD (sysstat <at> orange.fr)
+ * (C) 1999-2025 by Sebastien GODARD (sysstat <at> orange.fr)
  *
  ***************************************************************************
  * This program is free software; you can redistribute it and/or modify it *
@@ -158,8 +158,8 @@ __print_funct_t xml_print_cpu_stats(stru
 	for (i = 0; (i < a->nr_ini) && (i < a->bitmap->b_size + 1); i++) {
 
 		/* Should current CPU (including CPU "all") be displayed? */
-		if (!(a->bitmap->b_array[i >> 3] & (1 << (i & 0x07))) ||
-		    offline_cpu_bitmap[i >> 3] & (1 << (i & 0x07)))
+		if (!IS_CPU_SELECTED(a->bitmap->b_array, i) ||
+		    IS_CPU_OFFLINE(offline_cpu_bitmap, i))
 			/* Don't display CPU */
 			continue;
 
@@ -353,7 +353,7 @@ __print_funct_t xml_print_irq_stats(stru
 										  + i * a->msize);
 
 			/* Should current CPU (including CPU "all") be displayed? */
-			if (masked_cpu_bitmap[c >> 3] & (1 << (c & 0x07)))
+			if (IS_CPU_SET(masked_cpu_bitmap, c))
 				/* No */
 				continue;
 
@@ -1403,7 +1403,7 @@ __print_funct_t xml_print_net_etcp_stats
 	xprintf(tab, "<net-etcp "
 		"atmptf=\"%.2f\" "
 		"estres=\"%.2f\" "
-		"retrans=\"%.2f\" "
+		"retrseg=\"%.2f\" "
 		"isegerr=\"%.2f\" "
 		"orsts=\"%.2f\"/>",
 		S_VALUE(snetp->AttemptFails, snetc->AttemptFails,  itv),
@@ -1802,7 +1802,7 @@ __print_funct_t xml_print_pwr_cpufreq_st
 		spc = (struct stats_pwr_cpufreq *) ((char *) a->buf[curr] + i * a->msize);
 
 		/* Should current CPU (including CPU "all") be displayed? */
-		if (!(a->bitmap->b_array[i >> 3] & (1 << (i & 0x07))))
+		if (!IS_CPU_SELECTED(a->bitmap->b_array, i))
 			/* No */
 			continue;
 
@@ -2038,7 +2038,7 @@ __print_funct_t xml_print_pwr_wghfreq_st
 		spp = (struct stats_pwr_wghfreq *) ((char *) a->buf[!curr] + i * a->msize * a->nr2);
 
 		/* Should current CPU (including CPU "all") be displayed? */
-		if (!(a->bitmap->b_array[i >> 3] & (1 << (i & 0x07))))
+		if (!IS_CPU_SELECTED(a->bitmap->b_array, i))
 			/* No */
 			continue;
 
@@ -2299,8 +2299,8 @@ __print_funct_t xml_print_softnet_stats(
 	for (i = 0; (i < a->nr_ini) && (i < a->bitmap->b_size + 1); i++) {
 
 		/* Should current CPU (including CPU "all") be displayed? */
-		if (!(a->bitmap->b_array[i >> 3] & (1 << (i & 0x07))) ||
-		    offline_cpu_bitmap[i >> 3] & (1 << (i & 0x07)))
+		if (!IS_CPU_SELECTED(a->bitmap->b_array, i) ||
+		    IS_CPU_OFFLINE(offline_cpu_bitmap, i))
 			/* No */
 			continue;
 
diff -pruN 12.7.5-2/xml_stats.h 12.7.7-0ubuntu2/xml_stats.h
--- 12.7.5-2/xml_stats.h	2023-05-06 16:26:53.000000000 +0000
+++ 12.7.7-0ubuntu2/xml_stats.h	2025-02-02 07:33:59.000000000 +0000
@@ -1,6 +1,6 @@
 /*
  * xml_stats.h: Include file used to display system statistics in XML.
- * (C) 1999-2023 by Sebastien Godard (sysstat <at> orange.fr)
+ * (C) 1999-2025 by Sebastien Godard (sysstat <at> orange.fr)
  */
 
 #ifndef _XML_STATS_H
