commit
2943519758
@ -0,0 +1 @@
|
||||
SOURCES/rteval-3.5.tar.xz
|
@ -0,0 +1 @@
|
||||
3aee70e8cca181b05b522acab8a44d45fb876e28 SOURCES/rteval-3.5.tar.xz
|
@ -0,0 +1,165 @@
|
||||
From 149c119df7c7a8ddfd1abc7a127d536cc0674230 Mon Sep 17 00:00:00 2001
|
||||
From: John Kacur <jkacur@redhat.com>
|
||||
Date: Tue, 23 Aug 2022 14:57:37 -0400
|
||||
Subject: [PATCH 1/3] rteval: Fix "DMI WARNING" when not running as root
|
||||
|
||||
In some cases it is not necessary to run as root, for example when
|
||||
running -Z (--summarize) to summarize an existing report.
|
||||
|
||||
In such cases we do not want to see the message:
|
||||
** DMI WARNING ** Failed to open memory buffer (/dev/mem): Permission denied
|
||||
|
||||
The fix here is to surpresses that message.
|
||||
|
||||
In addition:
|
||||
- the unused "config" option to DMIinfo.__init__ is removed
|
||||
- A few strings are converted to f-strings
|
||||
- "with" is used to open the xsltfile
|
||||
|
||||
Signed-off-by: John Kacur <jkacur@redhat.com>
|
||||
---
|
||||
rteval/sysinfo/__init__.py | 6 ++---
|
||||
rteval/sysinfo/dmi.py | 45 +++++++++++++++++++-------------------
|
||||
2 files changed, 26 insertions(+), 25 deletions(-)
|
||||
|
||||
diff --git a/rteval/sysinfo/__init__.py b/rteval/sysinfo/__init__.py
|
||||
index 0436ebb350d9..a4359382f006 100644
|
||||
--- a/rteval/sysinfo/__init__.py
|
||||
+++ b/rteval/sysinfo/__init__.py
|
||||
@@ -42,7 +42,7 @@ class SystemInfo(KernelInfo, SystemServices, dmi.DMIinfo, CPUtopology,
|
||||
self.__logger = logger
|
||||
KernelInfo.__init__(self, logger=logger)
|
||||
SystemServices.__init__(self, logger=logger)
|
||||
- dmi.DMIinfo.__init__(self, config, logger=logger)
|
||||
+ dmi.DMIinfo.__init__(self, logger=logger)
|
||||
CPUtopology.__init__(self)
|
||||
OSInfo.__init__(self, logger=logger)
|
||||
cmdlineInfo.__init__(self, logger=logger)
|
||||
@@ -80,8 +80,8 @@ if __name__ == "__main__":
|
||||
cfg.installdir = "."
|
||||
si = SystemInfo(cfg, logger=l)
|
||||
|
||||
- print("\tRunning on %s" % si.get_base_os())
|
||||
- print("\tNUMA nodes: %d" % si.mem_get_numa_nodes())
|
||||
+ print(f"\tRunning on {si.get_base_os()}")
|
||||
+ print(f"\tNUMA nodes: {si.mem_get_numa_nodes()}")
|
||||
print("\tMemory available: %03.2f %s\n" % si.mem_get_size())
|
||||
|
||||
print("\tServices: ")
|
||||
diff --git a/rteval/sysinfo/dmi.py b/rteval/sysinfo/dmi.py
|
||||
index 80cf3c723b36..5965c128c093 100644
|
||||
--- a/rteval/sysinfo/dmi.py
|
||||
+++ b/rteval/sysinfo/dmi.py
|
||||
@@ -1,6 +1,4 @@
|
||||
#
|
||||
-# dmi.py - class to wrap DMI Table information
|
||||
-#
|
||||
# Copyright 2009 - 2013 Clark Williams <williams@redhat.com>
|
||||
# Copyright 2009 - 2013 David Sommerseth <davids@redhat.com>
|
||||
#
|
||||
@@ -24,6 +22,7 @@
|
||||
# including keys needed to generate an equivalently functional executable
|
||||
# are deemed to be part of the source code.
|
||||
#
|
||||
+""" dmi.py class to wrap DMI Table Information """
|
||||
|
||||
import sys
|
||||
import os
|
||||
@@ -52,16 +51,18 @@ def ProcessWarnings():
|
||||
if warnings is None:
|
||||
return
|
||||
|
||||
+ ignore1 = '/dev/mem: Permission denied'
|
||||
+ ignore2 = 'No SMBIOS nor DMI entry point found, sorry.'
|
||||
+ ignore3 = 'Failed to open memory buffer (/dev/mem): Permission denied'
|
||||
+ ignore = (ignore1, ignore2, ignore3)
|
||||
for warnline in warnings.split('\n'):
|
||||
# Ignore these warnings, as they are "valid" if not running as root
|
||||
- if warnline == '/dev/mem: Permission denied':
|
||||
- continue
|
||||
- if warnline == 'No SMBIOS nor DMI entry point found, sorry.':
|
||||
+ if warnline in ignore:
|
||||
continue
|
||||
|
||||
# All other warnings will be printed
|
||||
if len(warnline) > 0:
|
||||
- print("** DMI WARNING ** %s" % warnline)
|
||||
+ print(f"** DMI WARNING ** {warnline}")
|
||||
|
||||
dmidecode.clear_warnings()
|
||||
|
||||
@@ -69,8 +70,7 @@ def ProcessWarnings():
|
||||
class DMIinfo:
|
||||
'''class used to obtain DMI info via python-dmidecode'''
|
||||
|
||||
- # TODO: Remove unnecessary config
|
||||
- def __init__(self, config, logger):
|
||||
+ def __init__(self, logger):
|
||||
self.__version = '0.5'
|
||||
|
||||
if not dmidecode_loaded:
|
||||
@@ -83,22 +83,24 @@ class DMIinfo:
|
||||
|
||||
self.__xsltparser = self.__load_xslt('rteval_dmi.xsl')
|
||||
|
||||
- def __load_xslt(self, fname):
|
||||
- xsltfile = None
|
||||
+ @staticmethod
|
||||
+ def __load_xslt(fname):
|
||||
+ xsltf = None
|
||||
if os.path.exists(fname):
|
||||
- xsltfile = open(fname, "r")
|
||||
- elif rtevalConfig.default_config_search([fname], os.path.isfile):
|
||||
- xsltfile = open(rtevalConfig.default_config_search([fname], os.path.isfile), "r")
|
||||
-
|
||||
- if xsltfile:
|
||||
- xsltdoc = lxml.etree.parse(xsltfile)
|
||||
- ret = lxml.etree.XSLT(xsltdoc)
|
||||
- xsltfile.close()
|
||||
+ xsltf = fname
|
||||
+ else:
|
||||
+ xsltf = rtevalConfig.default_config_search([fname], os.path.isfile)
|
||||
+
|
||||
+ if xsltf:
|
||||
+ with open(xsltf, "r") as xsltfile:
|
||||
+ xsltdoc = lxml.etree.parse(xsltfile)
|
||||
+ ret = lxml.etree.XSLT(xsltdoc)
|
||||
return ret
|
||||
|
||||
raise RuntimeError(f'Could not locate XSLT template for DMI data ({fname})')
|
||||
|
||||
def MakeReport(self):
|
||||
+ """ Add DMI information to final report """
|
||||
rep_n = libxml2.newNode("DMIinfo")
|
||||
rep_n.newProp("version", self.__version)
|
||||
if self.__fake:
|
||||
@@ -113,7 +115,7 @@ class DMIinfo:
|
||||
return rep_n
|
||||
|
||||
def unit_test(rootdir):
|
||||
- """ unit_test for dmi.py, looks a little crufty! """
|
||||
+ """ unit_test for dmi.py """
|
||||
|
||||
class UnittestConfigDummy:
|
||||
def __init__(self, rootdir):
|
||||
@@ -132,15 +134,14 @@ def unit_test(rootdir):
|
||||
|
||||
log = Log()
|
||||
log.SetLogVerbosity(Log.DEBUG|Log.INFO)
|
||||
- cfg = UnittestConfigDummy(rootdir)
|
||||
- d = DMIinfo(cfg, log)
|
||||
+ d = DMIinfo(log)
|
||||
dx = d.MakeReport()
|
||||
x = libxml2.newDoc("1.0")
|
||||
x.setRootElement(dx)
|
||||
x.saveFormatFileEnc("-", "UTF-8", 1)
|
||||
return 0
|
||||
except Exception as e:
|
||||
- print("** EXCEPTION: %s" % str(e))
|
||||
+ print(f"** EXCEPTION: {str(e)}")
|
||||
return 1
|
||||
|
||||
if __name__ == '__main__':
|
||||
--
|
||||
2.37.3
|
||||
|
@ -0,0 +1,54 @@
|
||||
From eacf0f1e55fa0e7217133172808bfef2c59242fb Mon Sep 17 00:00:00 2001
|
||||
From: John Kacur <jkacur@redhat.com>
|
||||
Date: Thu, 2 Feb 2023 00:47:31 -0500
|
||||
Subject: [PATCH] rteval: Catch failures in python-dmidecode
|
||||
|
||||
python-dmidecode can generate incorrect xml,
|
||||
namely Attribute unit redefined
|
||||
|
||||
Although useful, the dmidecode is not critical to rteval reporting.
|
||||
|
||||
Therefore catch this, and first see if we can at least query the bios.
|
||||
If that works report the bios instead of all, and if that
|
||||
doesn't work, just continue without the dmidecode report.
|
||||
|
||||
Signed-off-by: John Kacur <jkacur@redhat.com>
|
||||
---
|
||||
rteval/sysinfo/dmi.py | 14 +++++++++++++-
|
||||
1 file changed, 13 insertions(+), 1 deletion(-)
|
||||
|
||||
diff --git a/rteval/sysinfo/dmi.py b/rteval/sysinfo/dmi.py
|
||||
index 83f347623b58..89a7faae06b1 100644
|
||||
--- a/rteval/sysinfo/dmi.py
|
||||
+++ b/rteval/sysinfo/dmi.py
|
||||
@@ -79,6 +79,7 @@ class DMIinfo:
|
||||
|
||||
def __init__(self, logger=None):
|
||||
self.__version = '0.6'
|
||||
+ self._log = logger
|
||||
|
||||
if not dmidecode_avail:
|
||||
logger.log(Log.DEBUG, "DMI info unavailable, ignoring DMI tables")
|
||||
@@ -115,7 +116,18 @@ class DMIinfo:
|
||||
rep_n.newProp("not_available", "1")
|
||||
else:
|
||||
self.__dmixml.SetResultType(dmidecode.DMIXML_DOC)
|
||||
- dmiqry = xmlout.convert_libxml2_to_lxml_doc(self.__dmixml.QuerySection('all'))
|
||||
+ try:
|
||||
+ dmiqry = xmlout.convert_libxml2_to_lxml_doc(self.__dmixml.QuerySection('all'))
|
||||
+ except Exception as ex1:
|
||||
+ self._log.log(Log.DEBUG, f'** EXCEPTION {str(ex1)}, will query BIOS only')
|
||||
+ try:
|
||||
+ # If we can't query 'all', at least query 'bios'
|
||||
+ dmiqry = xmlout.convert_libxml2_to_lxml_doc(self.__dmixml.QuerySection('bios'))
|
||||
+ except Exception as ex2:
|
||||
+ rep_n.addContent("No DMI tables available")
|
||||
+ rep_n.newProp("not_available", "1")
|
||||
+ self._log.log(Log.DEBUG, f'** EXCEPTION {str(ex2)}, dmi info will not be reported')
|
||||
+ return rep_n
|
||||
resdoc = self.__xsltparser(dmiqry)
|
||||
dmi_n = xmlout.convert_lxml_to_libxml2_nodes(resdoc.getroot())
|
||||
rep_n.addChild(dmi_n)
|
||||
--
|
||||
2.39.0
|
||||
|
@ -0,0 +1,169 @@
|
||||
From bce23ecc5d8bb6cab86843f7a42164ee44ef091f Mon Sep 17 00:00:00 2001
|
||||
From: John Kacur <jkacur@redhat.com>
|
||||
Date: Thu, 27 Oct 2022 11:14:27 -0400
|
||||
Subject: [PATCH 3/3] rteval: Don't attempt to get DMIinfo if there are dmi
|
||||
warnings
|
||||
|
||||
If the python module dmidecode is available, but produces warnings,
|
||||
you can get a traceback. This happens on some arm boxes,
|
||||
as shown in the traceback below.
|
||||
|
||||
Fix this by treating any warnings that are not listed in the
|
||||
ignorable warnings as if dmi info is not available.
|
||||
|
||||
Also add logging to dmi.ProcessWarnings()
|
||||
|
||||
./rteval-cmd -d10s
|
||||
** DMI WARNING ** /sys/firmware/efi/systab: SMBIOS entry point missing
|
||||
got system topology: 1 node system (4 cores per node)
|
||||
rteval run on 5.19.16-200.fc36.aarch64 started at Fri Oct 21 16:11:51 2022
|
||||
started 3 loads on 4 cores
|
||||
started measurement threads on 4 cores
|
||||
Run duration: 10.0 seconds
|
||||
stopping run at Fri Oct 21 16:13:26 2022
|
||||
Traceback (most recent call last):
|
||||
File "/root/src/rteval/./rteval-cmd", line 402, in <module>
|
||||
ec = rteval.Measure()
|
||||
File "/root/src/rteval/rteval/__init__.py", line 286, in Measure
|
||||
self._report(measure_start, self.__rtevcfg.xslt_report)
|
||||
File "/root/src/rteval/rteval/rtevalReport.py", line 76, in _report
|
||||
self.__xmlreport.AppendXMLnodes(self._sysinfo.MakeReport())
|
||||
File "/root/src/rteval/rteval/sysinfo/__init__.py", line 69, in MakeReport
|
||||
report_n.addChild(dmi.DMIinfo.MakeReport(self))
|
||||
File "/root/src/rteval/rteval/sysinfo/dmi.py", line 111, in MakeReport
|
||||
dmiqry = xmlout.convert_libxml2_to_lxml_doc(self.__dmixml.QuerySection('all'))
|
||||
File "/usr/lib64/python3.10/site-packages/dmidecode.py", line 64, in QuerySection
|
||||
ret = libxml2.xmlDoc( _obj = xmlapi(query_type='s',
|
||||
RuntimeError: [src/dmidecodemodule.c:331] Error decoding DMI data
|
||||
|
||||
** COLLECTED WARNINGS **
|
||||
/sys/firmware/efi/systab: SMBIOS entry point missing
|
||||
** END OF WARNINGS **
|
||||
|
||||
Signed-off-by: John Kacur <jkacur@redhat.com>
|
||||
---
|
||||
rteval-cmd | 4 ++--
|
||||
rteval/sysinfo/__init__.py | 2 +-
|
||||
rteval/sysinfo/dmi.py | 34 +++++++++++++++++++++-------------
|
||||
3 files changed, 24 insertions(+), 16 deletions(-)
|
||||
|
||||
diff --git a/rteval-cmd b/rteval-cmd
|
||||
index 6a928362828f..1e6a7fc86baa 100755
|
||||
--- a/rteval-cmd
|
||||
+++ b/rteval-cmd
|
||||
@@ -210,8 +210,6 @@ def remove_offline(cpulist):
|
||||
if __name__ == '__main__':
|
||||
from rteval.sysinfo import dmi
|
||||
|
||||
- dmi.ProcessWarnings()
|
||||
-
|
||||
# set LD_BIND_NOW to resolve shared library symbols
|
||||
# note: any string will do, nothing significant about 'rteval'
|
||||
|
||||
@@ -261,6 +259,8 @@ if __name__ == '__main__':
|
||||
| (rtevcfg.debugging and Log.DEBUG)
|
||||
logger.SetLogVerbosity(loglev)
|
||||
|
||||
+ dmi.ProcessWarnings(logger=logger)
|
||||
+
|
||||
# Load modules
|
||||
loadmods = LoadModules(config, logger=logger)
|
||||
measuremods = MeasurementModules(config, logger=logger)
|
||||
diff --git a/rteval/sysinfo/__init__.py b/rteval/sysinfo/__init__.py
|
||||
index bb1d00810856..5767e5b7f6fe 100644
|
||||
--- a/rteval/sysinfo/__init__.py
|
||||
+++ b/rteval/sysinfo/__init__.py
|
||||
@@ -49,7 +49,7 @@ class SystemInfo(KernelInfo, SystemServices, dmi.DMIinfo, CPUtopology,
|
||||
NetworkInfo.__init__(self, logger=logger)
|
||||
|
||||
# Parse initial DMI decoding errors
|
||||
- dmi.ProcessWarnings()
|
||||
+ dmi.ProcessWarnings(logger=logger)
|
||||
|
||||
# Parse CPU info
|
||||
CPUtopology._parse(self)
|
||||
diff --git a/rteval/sysinfo/dmi.py b/rteval/sysinfo/dmi.py
|
||||
index 5965c128c093..83f347623b58 100644
|
||||
--- a/rteval/sysinfo/dmi.py
|
||||
+++ b/rteval/sysinfo/dmi.py
|
||||
@@ -1,6 +1,7 @@
|
||||
#
|
||||
# Copyright 2009 - 2013 Clark Williams <williams@redhat.com>
|
||||
# Copyright 2009 - 2013 David Sommerseth <davids@redhat.com>
|
||||
+# Copyright 2022 John Kacur <jkacur@redhat.com>
|
||||
#
|
||||
# This program is free software; you can redistribute it and/or modify
|
||||
# it under the terms of the GNU General Public License as published by
|
||||
@@ -34,14 +35,19 @@ from rteval import rtevalConfig
|
||||
|
||||
try:
|
||||
import dmidecode
|
||||
- dmidecode_loaded = True
|
||||
+ dmidecode_avail = True
|
||||
except ModuleNotFoundError:
|
||||
- dmidecode_loaded = False
|
||||
+ dmidecode_avail = False
|
||||
|
||||
-def ProcessWarnings():
|
||||
+def set_dmidecode_avail(val):
|
||||
+ """ Used to set global variable dmidecode_avail from a function """
|
||||
+ global dmidecode_avail
|
||||
+ dmidecode_avail = val
|
||||
+
|
||||
+def ProcessWarnings(logger=None):
|
||||
""" Process Warnings from dmidecode """
|
||||
|
||||
- if not dmidecode_loaded:
|
||||
+ if not dmidecode_avail:
|
||||
return
|
||||
|
||||
if not hasattr(dmidecode, 'get_warnings'):
|
||||
@@ -62,7 +68,8 @@ def ProcessWarnings():
|
||||
|
||||
# All other warnings will be printed
|
||||
if len(warnline) > 0:
|
||||
- print(f"** DMI WARNING ** {warnline}")
|
||||
+ logger.log(Log.DEBUG, f"** DMI WARNING ** {warnline}")
|
||||
+ set_dmidecode_avail(False)
|
||||
|
||||
dmidecode.clear_warnings()
|
||||
|
||||
@@ -70,11 +77,11 @@ def ProcessWarnings():
|
||||
class DMIinfo:
|
||||
'''class used to obtain DMI info via python-dmidecode'''
|
||||
|
||||
- def __init__(self, logger):
|
||||
- self.__version = '0.5'
|
||||
+ def __init__(self, logger=None):
|
||||
+ self.__version = '0.6'
|
||||
|
||||
- if not dmidecode_loaded:
|
||||
- logger.log(Log.DEBUG|Log.WARN, "No dmidecode module found, ignoring DMI tables")
|
||||
+ if not dmidecode_avail:
|
||||
+ logger.log(Log.DEBUG, "DMI info unavailable, ignoring DMI tables")
|
||||
self.__fake = True
|
||||
return
|
||||
|
||||
@@ -127,14 +134,15 @@ def unit_test(rootdir):
|
||||
self.__dict__[k] = self.config[k]
|
||||
|
||||
try:
|
||||
- ProcessWarnings()
|
||||
+ log = Log()
|
||||
+ log.SetLogVerbosity(Log.DEBUG|Log.INFO)
|
||||
+
|
||||
+ ProcessWarnings(logger=log)
|
||||
if os.getuid() != 0:
|
||||
print("** ERROR ** Must be root to run this unit_test()")
|
||||
return 1
|
||||
|
||||
- log = Log()
|
||||
- log.SetLogVerbosity(Log.DEBUG|Log.INFO)
|
||||
- d = DMIinfo(log)
|
||||
+ d = DMIinfo(logger=log)
|
||||
dx = d.MakeReport()
|
||||
x = libxml2.newDoc("1.0")
|
||||
x.setRootElement(dx)
|
||||
--
|
||||
2.37.3
|
||||
|
@ -0,0 +1,399 @@
|
||||
From d0552193364d160252d117c5bf2e298a31550e3c Mon Sep 17 00:00:00 2001
|
||||
From: John Kacur <jkacur@redhat.com>
|
||||
Date: Mon, 10 Oct 2022 09:49:47 -0400
|
||||
Subject: [PATCH] rteval: Replace python-ethtool with inline code
|
||||
|
||||
This patch adds the file newnet.py to replace the use of python-ethtool
|
||||
The information it generates will appear in the summary.xml
|
||||
You can also test the functionality by running
|
||||
python rteval/sysinfo/newnet.py
|
||||
|
||||
Signed-off-by: John Kacur <jkacur@redhat.com>
|
||||
- V2 Add SPDX license identifier
|
||||
Signed-off-by: John Kacur <jkacur@redhat.com>
|
||||
---
|
||||
rteval/sysinfo/__init__.py | 3 +-
|
||||
rteval/sysinfo/network.py | 117 -------------------
|
||||
rteval/sysinfo/newnet.py | 225 +++++++++++++++++++++++++++++++++++++
|
||||
3 files changed, 227 insertions(+), 118 deletions(-)
|
||||
delete mode 100644 rteval/sysinfo/network.py
|
||||
create mode 100644 rteval/sysinfo/newnet.py
|
||||
|
||||
diff --git a/rteval/sysinfo/__init__.py b/rteval/sysinfo/__init__.py
|
||||
index a4359382f006..bb1d00810856 100644
|
||||
--- a/rteval/sysinfo/__init__.py
|
||||
+++ b/rteval/sysinfo/__init__.py
|
||||
@@ -32,7 +32,7 @@ from rteval.sysinfo.services import SystemServices
|
||||
from rteval.sysinfo.cputopology import CPUtopology
|
||||
from rteval.sysinfo.memory import MemoryInfo
|
||||
from rteval.sysinfo.osinfo import OSInfo
|
||||
-from rteval.sysinfo.network import NetworkInfo
|
||||
+from rteval.sysinfo.newnet import NetworkInfo
|
||||
from rteval.sysinfo.cmdline import cmdlineInfo
|
||||
from rteval.sysinfo import dmi
|
||||
|
||||
@@ -46,6 +46,7 @@ class SystemInfo(KernelInfo, SystemServices, dmi.DMIinfo, CPUtopology,
|
||||
CPUtopology.__init__(self)
|
||||
OSInfo.__init__(self, logger=logger)
|
||||
cmdlineInfo.__init__(self, logger=logger)
|
||||
+ NetworkInfo.__init__(self, logger=logger)
|
||||
|
||||
# Parse initial DMI decoding errors
|
||||
dmi.ProcessWarnings()
|
||||
diff --git a/rteval/sysinfo/network.py b/rteval/sysinfo/network.py
|
||||
deleted file mode 100644
|
||||
index ce9989a1240b..000000000000
|
||||
--- a/rteval/sysinfo/network.py
|
||||
+++ /dev/null
|
||||
@@ -1,117 +0,0 @@
|
||||
-# -*- coding: utf-8 -*-
|
||||
-#
|
||||
-# Copyright 2009 - 2013 David Sommerseth <davids@redhat.com>
|
||||
-#
|
||||
-# This program is free software; you can redistribute it and/or modify
|
||||
-# it under the terms of the GNU General Public License as published by
|
||||
-# the Free Software Foundation; either version 2 of the License, or
|
||||
-# (at your option) any later version.
|
||||
-#
|
||||
-# This program is distributed in the hope that it will be useful,
|
||||
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
-# GNU General Public License for more details.
|
||||
-#
|
||||
-# You should have received a copy of the GNU General Public License along
|
||||
-# with this program; if not, write to the Free Software Foundation, Inc.,
|
||||
-# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
|
||||
-#
|
||||
-# For the avoidance of doubt the "preferred form" of this code is one which
|
||||
-# is in an open unpatent encumbered format. Where cryptographic key signing
|
||||
-# forms part of the process of creating an executable the information
|
||||
-# including keys needed to generate an equivalently functional executable
|
||||
-# are deemed to be part of the source code.
|
||||
-#
|
||||
-
|
||||
-import ethtool, libxml2
|
||||
-
|
||||
-class NetworkInfo(object):
|
||||
- def __init__(self):
|
||||
- pass
|
||||
-
|
||||
- def net_GetDefaultGW(self):
|
||||
- # Get the interface name for the IPv4 default gw
|
||||
- route = open('/proc/net/route')
|
||||
- defgw4 = None
|
||||
- if route:
|
||||
- rl = route.readline()
|
||||
- while rl != '' :
|
||||
- rl = route.readline()
|
||||
- splt = rl.split("\t")
|
||||
- # Only catch default route
|
||||
- if len(splt) > 2 and splt[2] != '00000000' and splt[1] == '00000000':
|
||||
- defgw4 = splt[0]
|
||||
- break
|
||||
- route.close()
|
||||
- return (defgw4, None) # IPv6 gw not yet implemented
|
||||
-
|
||||
- def MakeReport(self):
|
||||
- ncfg_n = libxml2.newNode("NetworkConfig")
|
||||
- (defgw4, defgw6) = self.net_GetDefaultGW()
|
||||
-
|
||||
- # Make an interface tag for each device found
|
||||
- if hasattr(ethtool, 'get_interfaces_info'):
|
||||
- # Using the newer python-ethtool API (version >= 0.4)
|
||||
- for dev in ethtool.get_interfaces_info(ethtool.get_devices()):
|
||||
- if dev.device == 'lo':
|
||||
- continue
|
||||
-
|
||||
- intf_n = libxml2.newNode('interface')
|
||||
- intf_n.newProp('device', dev.device)
|
||||
- intf_n.newProp('hwaddr', dev.mac_address)
|
||||
- ncfg_n.addChild(intf_n)
|
||||
-
|
||||
- # Protcol configurations
|
||||
- if dev.ipv4_address:
|
||||
- ipv4_n = libxml2.newNode('IPv4')
|
||||
- ipv4_n.newProp('ipaddr', dev.ipv4_address)
|
||||
- ipv4_n.newProp('netmask', str(dev.ipv4_netmask))
|
||||
- ipv4_n.newProp('broadcast', dev.ipv4_broadcast)
|
||||
- ipv4_n.newProp('defaultgw', (defgw4 == dev.device) and '1' or '0')
|
||||
- intf_n.addChild(ipv4_n)
|
||||
-
|
||||
- for ip6 in dev.get_ipv6_addresses():
|
||||
- ipv6_n = libxml2.newNode('IPv6')
|
||||
- ipv6_n.newProp('ipaddr', ip6.address)
|
||||
- ipv6_n.newProp('netmask', str(ip6.netmask))
|
||||
- ipv6_n.newProp('scope', ip6.scope)
|
||||
- intf_n.addChild(ipv6_n)
|
||||
-
|
||||
- else: # Fall back to older python-ethtool API (version < 0.4)
|
||||
- ifdevs = ethtool.get_active_devices()
|
||||
- ifdevs.remove('lo')
|
||||
- ifdevs.sort()
|
||||
-
|
||||
- for dev in ifdevs:
|
||||
- intf_n = libxml2.newNode('interface')
|
||||
- intf_n.newProp('device', dev.device)
|
||||
- intf_n.newProp('hwaddr', dev.mac_address)
|
||||
- ncfg_n.addChild(intf_n)
|
||||
-
|
||||
- ipv4_n = libxml2.newNode('IPv4')
|
||||
- ipv4_n.newProp('ipaddr', ethtool.get_ipaddr(dev))
|
||||
- ipv4_n.newProp('netmask', str(ethtool.get_netmask(dev)))
|
||||
- ipv4_n.newProp('defaultgw', (defgw4 == dev) and '1' or '0')
|
||||
- intf_n.addChild(ipv4_n)
|
||||
-
|
||||
- return ncfg_n
|
||||
-
|
||||
-
|
||||
-def unit_test(rootdir):
|
||||
- import sys
|
||||
- try:
|
||||
- net = NetworkInfo()
|
||||
- doc = libxml2.newDoc('1.0')
|
||||
- cfg = net.MakeReport()
|
||||
- doc.setRootElement(cfg)
|
||||
- doc.saveFormatFileEnc('-', 'UTF-8', 1)
|
||||
-
|
||||
- except Exception as e:
|
||||
- import traceback
|
||||
- traceback.print_exc(file=sys.stdout)
|
||||
- print("** EXCEPTION %s", str(e))
|
||||
- return 1
|
||||
-
|
||||
-if __name__ == '__main__':
|
||||
- unit_test(None)
|
||||
-
|
||||
diff --git a/rteval/sysinfo/newnet.py b/rteval/sysinfo/newnet.py
|
||||
new file mode 100644
|
||||
index 000000000000..63417d9e59f1
|
||||
--- /dev/null
|
||||
+++ b/rteval/sysinfo/newnet.py
|
||||
@@ -0,0 +1,225 @@
|
||||
+''' Module to obtain network information for the rteval report '''
|
||||
+#
|
||||
+# Copyright 2022 John Kacur <jkacur@redhat.com
|
||||
+# SPDX-License-Identifier: GPL-2.0-or-later
|
||||
+#
|
||||
+
|
||||
+import os
|
||||
+import socket
|
||||
+import ipaddress
|
||||
+import sys
|
||||
+import libxml2
|
||||
+from rteval.Log import Log
|
||||
+
|
||||
+def get_active_devices():
|
||||
+ ''' returns a list of active network devices, similar to ethtool '''
|
||||
+ ret = []
|
||||
+
|
||||
+ for device in socket.if_nameindex():
|
||||
+ ret.append(device[1])
|
||||
+
|
||||
+ return ret
|
||||
+
|
||||
+def compress_iv6(addr):
|
||||
+ ''' inserts colons into an ipv6address and returns it in compressed form '''
|
||||
+ retaddr = ''
|
||||
+ # Insert colons into the number
|
||||
+ for i in range(4,33,4):
|
||||
+ if i == 32:
|
||||
+ retaddr += addr[i-4:i]
|
||||
+ else:
|
||||
+ retaddr += addr[i-4:i] + ':'
|
||||
+ addr = ipaddress.IPv6Network(retaddr)
|
||||
+ retaddr = str(ipaddress.IPv6Address(retaddr))
|
||||
+ return retaddr
|
||||
+
|
||||
+def get_defaultgw():
|
||||
+ ''' return the ipv4address of the default gateway '''
|
||||
+ defaultgw = None
|
||||
+ with open('/proc/net/route') as f:
|
||||
+ line = f.readline().strip()
|
||||
+ while len(line) > 0:
|
||||
+ (iface, dest, gateway, _, _, _, _, _, _, _, _) = line.split()
|
||||
+ if iface == 'Iface':
|
||||
+ line = f.readline().strip()
|
||||
+ continue
|
||||
+ if dest == '00000000' and gateway != '00000000':
|
||||
+ addr = int(gateway, base=16)
|
||||
+ defaultgw = str(ipaddress.IPv4Address(socket.ntohl(addr)))
|
||||
+ return defaultgw
|
||||
+ line = f.readline().strip()
|
||||
+ return defaultgw
|
||||
+
|
||||
+class IPv6Addresses():
|
||||
+ ''' Obtains a list of IPv6 addresses from the proc file system '''
|
||||
+
|
||||
+ def __init__(self):
|
||||
+ self.data = {}
|
||||
+ IPv6Addresses.load(self)
|
||||
+
|
||||
+ def __contains__(self, dev):
|
||||
+ return dev in self.data
|
||||
+
|
||||
+ def __getitem__(self, dev):
|
||||
+ return self.data.get(dev, None)
|
||||
+
|
||||
+ def __iter__(self):
|
||||
+ return iter(self.data)
|
||||
+
|
||||
+ def load(self):
|
||||
+ '''
|
||||
+ Called by init to load the self.data dictionary with device keys
|
||||
+ and a list of ipv6addresses
|
||||
+ '''
|
||||
+ MYP = '/proc/net/if_inet6'
|
||||
+ with open(MYP, 'r') as f:
|
||||
+ mystr = f.readline().strip()
|
||||
+ while len(mystr) > 0:
|
||||
+ ipv6addr , _, _, _, _, intf = mystr.split()
|
||||
+ ipv6addr = compress_iv6(ipv6addr)
|
||||
+ if intf == 'lo':
|
||||
+ mystr = f.readline().strip()
|
||||
+ continue
|
||||
+ if intf not in self.data:
|
||||
+ self.data[intf] = [ipv6addr]
|
||||
+ else:
|
||||
+ self.data[intf].append(ipv6addr)
|
||||
+ mystr = f.readline().strip()
|
||||
+
|
||||
+class IPv4Addresses():
|
||||
+ ''' Obtains a list of IPv4 addresses from the proc file system '''
|
||||
+
|
||||
+ def __init__(self):
|
||||
+ self.data = {}
|
||||
+ IPv4Addresses.load(self)
|
||||
+
|
||||
+ def __contains__(self, dev):
|
||||
+ return dev in self.data
|
||||
+
|
||||
+ def __getitem__(self, dev):
|
||||
+ return self.data[dev]
|
||||
+
|
||||
+ def __iter__(self):
|
||||
+ return iter(self.data)
|
||||
+
|
||||
+ def load(self):
|
||||
+ '''
|
||||
+ Called by init to load the self.data dictionary with
|
||||
+ device keys, and value consisting of a list of
|
||||
+ ipv4address, netmask and broadcast address
|
||||
+ '''
|
||||
+ MYP = '/proc/net/route'
|
||||
+ with open(MYP, 'r') as f:
|
||||
+ mystr = f.readline().strip()
|
||||
+ while len(mystr) > 0:
|
||||
+ intf, dest, _, _, _, _, _, mask, _, _, _ = mystr.split()
|
||||
+ # Skip over the head of the table an the gateway line
|
||||
+ if intf == "Iface" or dest == '00000000':
|
||||
+ mystr = f.readline().strip()
|
||||
+ continue
|
||||
+ d1 = int(dest, base=16)
|
||||
+ m1 = int(mask, base=16)
|
||||
+ addr = str(ipaddress.IPv4Address(socket.ntohl(d1)))
|
||||
+ netmask = str(ipaddress.IPv4Address(socket.ntohl(m1)))
|
||||
+ addr_with_mask = ipaddress.ip_network(addr + '/' + netmask)
|
||||
+ broadcast = str(addr_with_mask.broadcast_address)
|
||||
+ if intf not in self.data:
|
||||
+ self.data[intf] = [(addr, netmask, broadcast)]
|
||||
+ else:
|
||||
+ self.data[intf].append((addr, netmask, broadcast))
|
||||
+ mystr = f.readline().strip()
|
||||
+
|
||||
+
|
||||
+class MacAddresses():
|
||||
+ ''' Obtains a list of hardware addresses of network devices '''
|
||||
+
|
||||
+ def __init__(self):
|
||||
+ self.mac_address = {}
|
||||
+ self.path = None
|
||||
+ MacAddresses.load(self)
|
||||
+
|
||||
+ def load(self):
|
||||
+ '''
|
||||
+ called by init to load self.mac_address as a dictionary of
|
||||
+ device keys, and mac or hardware addresses as values
|
||||
+ '''
|
||||
+ nics = get_active_devices()
|
||||
+ for nic in nics:
|
||||
+ self.path = f'/sys/class/net/{nic}'
|
||||
+ hwaddr = MacAddresses.set_val(self, 'address')
|
||||
+ self.mac_address[nic] = hwaddr
|
||||
+
|
||||
+ def set_val(self, val):
|
||||
+ ''' Return the result of reading self.path/val '''
|
||||
+ val_path = f'{self.path}/{val}'
|
||||
+ if os.path.exists(val_path):
|
||||
+ with open(val_path, 'r') as f:
|
||||
+ return f.readline().strip()
|
||||
+ return None
|
||||
+
|
||||
+ def __contains__(self, dev):
|
||||
+ return dev in self.mac_address
|
||||
+
|
||||
+ def __getitem__(self, dev):
|
||||
+ return self.mac_address[dev]
|
||||
+
|
||||
+ def __iter__(self):
|
||||
+ return iter(self.mac_address)
|
||||
+
|
||||
+class NetworkInfo():
|
||||
+ ''' Creates an xml report of the network for rteval '''
|
||||
+
|
||||
+ def __init__(self, logger):
|
||||
+ self.defgw4 = get_defaultgw()
|
||||
+ self.__logger = logger
|
||||
+
|
||||
+ def MakeReport(self):
|
||||
+ ''' Make an xml report for rteval '''
|
||||
+ ncfg_n = libxml2.newNode("NetworkConfig")
|
||||
+ defgw4 = self.defgw4
|
||||
+
|
||||
+ mads = MacAddresses()
|
||||
+ for device in mads:
|
||||
+ if device == 'lo':
|
||||
+ continue
|
||||
+ intf_n = libxml2.newNode('interface')
|
||||
+ intf_n.newProp('device', device)
|
||||
+ intf_n.newProp('hwaddr', mads[device])
|
||||
+ ncfg_n.addChild(intf_n)
|
||||
+
|
||||
+ ipv4ads = IPv4Addresses()
|
||||
+ ipv6ads = IPv6Addresses()
|
||||
+ for dev in ipv4ads:
|
||||
+ if dev != device:
|
||||
+ continue
|
||||
+ for lelem in ipv4ads[dev]:
|
||||
+ ipv4_n = libxml2.newNode('IPv4')
|
||||
+ (ipaddr, netmask, broadcast) = lelem
|
||||
+ ipv4_n.newProp('ipaddr', ipaddr)
|
||||
+ ipv4_n.newProp('netmask', netmask)
|
||||
+ ipv4_n.newProp('broadcast', broadcast)
|
||||
+ ipv4_n.newProp('defaultgw', (defgw4 == ipaddr) and '1' or '0')
|
||||
+ intf_n.addChild(ipv4_n)
|
||||
+ if ipv6ads[dev]:
|
||||
+ for lelem in ipv6ads[dev]:
|
||||
+ ipv6_n = libxml2.newNode('IPv6')
|
||||
+ ipaddr = lelem
|
||||
+ ipv6_n.newProp('ipaddr', ipaddr)
|
||||
+ intf_n.addChild(ipv6_n)
|
||||
+ return ncfg_n
|
||||
+
|
||||
+if __name__ == "__main__":
|
||||
+
|
||||
+ try:
|
||||
+ log = Log()
|
||||
+ log.SetLogVerbosity(Log.DEBUG|Log.INFO)
|
||||
+ net = NetworkInfo(logger=log)
|
||||
+ doc = libxml2.newDoc('1.0')
|
||||
+ cfg = net.MakeReport()
|
||||
+ doc.setRootElement(cfg)
|
||||
+ doc.saveFormatFileEnc('-', 'UTF-8', 1)
|
||||
+
|
||||
+ except Exception as e:
|
||||
+ import traceback
|
||||
+ traceback.print_exc(file=sys.stdout)
|
||||
+ print(f"** EXCEPTION {str(e)}")
|
||||
--
|
||||
2.37.3
|
||||
|
@ -0,0 +1,761 @@
|
||||
Name: rteval
|
||||
Version: 3.5
|
||||
Release: 4%{?dist}
|
||||
Summary: Utility to evaluate system suitability for RT Linux
|
||||
|
||||
Group: Development/Tools
|
||||
License: GPLv2
|
||||
URL: https://git.kernel.org/pub/scm/utils/rteval/rteval.git
|
||||
Source0: https://www.kernel.org/pub/linux/utils/rteval/rteval-%{version}.tar.xz
|
||||
BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n)
|
||||
|
||||
BuildRequires: python3-devel
|
||||
Requires: platform-python
|
||||
Requires: python3-lxml
|
||||
Requires: python3-libxml2
|
||||
Requires: python3-dmidecode >= 3.10
|
||||
Requires: python3-requests
|
||||
Requires: rt-tests >= 1.5-11
|
||||
Requires: rteval-loads >= 1.6-2
|
||||
Requires: sysstat
|
||||
Requires: xz bzip2 tar gzip m4 make gawk
|
||||
Requires: kernel-headers
|
||||
Requires: sos
|
||||
BuildArch: noarch
|
||||
Obsoletes: rteval <= 2.14
|
||||
Requires: numactl
|
||||
Requires: gcc binutils gcc-c++ flex bison bc make
|
||||
Requires: elfutils elfutils-libelf-devel
|
||||
Requires: openssl openssl-devel
|
||||
Requires: stress-ng
|
||||
Requires: perl-interpreter perl-devel perl-generators
|
||||
Requires: libmpc libmpc-devel
|
||||
Obsoletes: rteval-common <= 3.1
|
||||
|
||||
#Patches
|
||||
Patch1: rteval-Replace-python-ethtool-with-inline-code.patch
|
||||
Patch2: Fix-DMI-WARNING-when-not-running-as-root.patch
|
||||
Patch3: rteval-Don-t-attempt-to-get-DMIinfo-if-there-are-dmi.patch
|
||||
Patch4: rteval-Catch-failures-in-python-dmidecode.patch
|
||||
|
||||
%description
|
||||
The rteval script is a utility for measuring various aspects of
|
||||
realtime behavior on a system under load. The script unpacks the
|
||||
kernel source, and then goes into a loop, running hackbench and
|
||||
compiling a kernel tree. During that loop the cyclictest program
|
||||
is run to measure event response time. After the run time completes,
|
||||
a statistical analysis of the event response times is done and printed
|
||||
to the screen.
|
||||
|
||||
%prep
|
||||
%setup -q
|
||||
%patch1 -p1
|
||||
%patch2 -p1
|
||||
%patch3 -p1
|
||||
%patch4 -p1
|
||||
|
||||
%build
|
||||
%{__python3} setup.py build
|
||||
|
||||
%install
|
||||
%{__python3} setup.py install --root=$RPM_BUILD_ROOT
|
||||
|
||||
%files
|
||||
%defattr(-,root,root,-)
|
||||
%{python3_sitelib}/*.egg-info
|
||||
|
||||
%doc COPYING README doc/rteval.txt
|
||||
%dir %{_datadir}/%{name}
|
||||
%{python3_sitelib}/rteval/rtevalclient.py*
|
||||
%{python3_sitelib}/rteval/rtevalConfig.py*
|
||||
%{python3_sitelib}/rteval/rtevalXMLRPC.py*
|
||||
%{python3_sitelib}/rteval/version.py*
|
||||
%{python3_sitelib}/rteval/Log.py*
|
||||
%{python3_sitelib}/rteval/systopology.py*
|
||||
%{_mandir}/man8/rteval.8.gz
|
||||
%config(noreplace) %{_sysconfdir}/rteval.conf
|
||||
%{_datadir}/%{name}/rteval_*.xsl
|
||||
%{python3_sitelib}/rteval/__init__.py*
|
||||
%{python3_sitelib}/rteval/rtevalMailer.py*
|
||||
%{python3_sitelib}/rteval/rtevalReport.py*
|
||||
%{python3_sitelib}/rteval/xmlout.py*
|
||||
%{python3_sitelib}/rteval/modules
|
||||
%{python3_sitelib}/rteval/sysinfo
|
||||
/usr/bin/rteval
|
||||
|
||||
%{python3_sitelib}/rteval/__pycache__/*
|
||||
|
||||
%changelog
|
||||
* Wed Dec 27 2023 MSVSphere Packaging Team <packager@msvsphere-os.ru> - 3.5-4
|
||||
- Rebuilt for MSVSphere 8.9
|
||||
|
||||
* Wed Feb 08 2023 John Kacur <jkacur@redhat.com> - 3.5-4
|
||||
- Add check to catch python-dmidecode if it fails
|
||||
Resolves: rhbz#2168373
|
||||
jiraProject == RHELPLAN-148048
|
||||
|
||||
* Thu Oct 27 2022 John Kacur <jkacur@redhat.com> - 3.5-3
|
||||
- Fix "DMI WARNING" when not running as root
|
||||
- Don't attempt to get DMI info if dmidecode returns warnings
|
||||
Resolves: rhbz#2136926
|
||||
|
||||
* Mon Oct 17 2022 John Kacur <jkacur@redhat.com> - 3.5-2
|
||||
- Remove dependency on python-ethtool by using inline code
|
||||
- Add Requires of python-libxml2
|
||||
Resolves: rhbz#2131377
|
||||
|
||||
* Fri Sep 23 2022 John Kacur <jkacur@redhat.com> - 3.5-1
|
||||
- Rebase to rteval-3.5 upstream
|
||||
Resolves: rhbz#2119172
|
||||
|
||||
* Thu Sep 22 2022 Leah Leshchinsky <lleshchi@redhat.com> - 3.4-5
|
||||
- Add measurement and load location to run report
|
||||
Resolves: rhbz#2082260
|
||||
|
||||
* Tue Sep 13 2022 John Kacur <jkacur@redhat.com> - 3.4-4
|
||||
- Make use of systopology instead of misc everywhere
|
||||
- Allow user to enter compressed form of cpulist
|
||||
Resolves: rhbz#2121535
|
||||
|
||||
* Mon Sep 12 2022 John Kacur <jkacur@redhat.com> - 3.4-3
|
||||
- Add option for downloading the kernel to compile as a load
|
||||
- Add a manpage entry for the kernel download option
|
||||
Resolves: rhbz#2107710
|
||||
|
||||
* Tue Jun 28 2022 John Kacur <jkacur@redhat.com> - 3.4-2
|
||||
- Add back __pycache__ to the rhel-8.7 spec file
|
||||
Resolves: rhbz#2069354
|
||||
|
||||
* Tue Jun 28 2022 John Kacur <jkacur@redhat.com> - 3.4-1
|
||||
- Rebase to rteval-3.4 upstream
|
||||
Resolves: rhbz#2069354
|
||||
|
||||
* Wed Jun 22 2022 John Kacur <jkacur@redhat.com> - 3.3-9
|
||||
- Add upstream kcompile patches
|
||||
Resolves: rhbz#2093478
|
||||
|
||||
* Tue Jun 07 2022 John Kacur <jkacur@redhat.com> - 3.3-8
|
||||
- Updates the Requires for rteval-loads with the correct kernel version
|
||||
Resolves: rhbz#2093478
|
||||
|
||||
* Tue Jun 07 2022 John Kacur <jkacur@redhat.com> - 3.3-7
|
||||
- Change the default kernel to compile to linux-5.18.1
|
||||
Resolves: rhbz#2093478
|
||||
|
||||
* Tue Feb 15 2022 John Kacur <jkacur@redhat.com> - 3.3-6
|
||||
- Use inherited cpumask if user doesn't specify a cpumask
|
||||
Resolves: rhbz#2012284
|
||||
|
||||
* Mon Feb 07 2022 John Kacur <jkacur@redhat.com> - 3.3-5
|
||||
- Don't restrict threads to cpumask in environment if user specifies cpumask
|
||||
Resolves: rhbz#2012284
|
||||
|
||||
* Thu Jan 27 2022 John Kacur <jkacur@redhat.com> - 3.3-4
|
||||
- Increase the default number of buckets from 2000 to 3500
|
||||
Resolves: rhbz#2046321
|
||||
|
||||
* Tue Jan 18 2022 John Kacur <jkacur@redhat.com> - 3.3-3
|
||||
- Fix Popen use of text=True not available in python3.6
|
||||
Resolves: rhbz#2041584
|
||||
|
||||
* Fri Jan 14 2022 John Kacur <jkacur@redhat.com> - 3.3-2
|
||||
- Fix test missing threshold assignment
|
||||
Resolves: rhbz#2012285
|
||||
|
||||
* Thu Jan 13 2022 John Kacur <jkacur@redhat.com> - 3.3-1
|
||||
- Rebase to upstream rteval-3.3
|
||||
Resolves: rhbz#2012291
|
||||
|
||||
* Wed Jan 12 2022 John Kacur <jkacur@redhat.com> - 3.2-4
|
||||
- Do not pass obsolete notrace option to cyclictest
|
||||
- Parse maximum latency even if outside configured buckets
|
||||
- Sort the list of cpus
|
||||
- Skip statistics generation if max latency outside of configured buckets
|
||||
- Add --cyclictest-threshold=USEC feature
|
||||
- Add libmpc and libmpc-devel to the Requires
|
||||
Resolves: rhbz#2012285
|
||||
|
||||
* Thu Nov 04 2021 John Kacur <jkacur@redhat.com> - 3.2-3
|
||||
- allow hackbench to run with warning on low mem
|
||||
- clean-ups to hackbench.py
|
||||
- make donotrun work correctly in load modules
|
||||
- Add the idea of an exclusive load module and make stress-ng one
|
||||
Resolves: rhbz#1872776
|
||||
|
||||
* Thu Jul 15 2021 John Kacur <jkacur@redhat.com> - 3.2-2
|
||||
- Restrict measurement threads to cpus in cpumask
|
||||
Resolves: rhbz#1942261
|
||||
|
||||
* Thu Jul 15 2021 John Kacur <jkacur@redhat.com> - 3.2-1
|
||||
- Rebase to latest upstream rteval-3.2
|
||||
Resolves: rhbz#1982718
|
||||
|
||||
* Wed Jan 13 2021 John Kacur <jkacur@redhat.com> - 3.1-4
|
||||
- Remove python-schedutils requirement
|
||||
- Fix spec file to make Obsoletes rteval-common cover all necessary releases
|
||||
Resolves: rhbz#1869340
|
||||
|
||||
* Wed Jan 13 2021 John Kacur <jkacur@redhat.com> - 3.1-3
|
||||
- Remove a stray line in the changelog
|
||||
Resolves: rhbz#1890555
|
||||
|
||||
* Wed Jan 13 2021 John Kacur <jkacur@redhat.com> - 3.1-2
|
||||
- Fix incorrect import in rteval/sysinfo/__init__.py
|
||||
Resolves: rhbz#1890555
|
||||
|
||||
* Mon Jan 11 2021 John Kacur <jkacur@redhat.com> - 3.1-1
|
||||
- Upgrade to rteval-3.1
|
||||
- Don't create a separate rteval-common package anymore
|
||||
Resolves: rhbz#1890555
|
||||
|
||||
* Thu Aug 27 2020 John Kacur <jkacur@redhat.com> - 3.0-13
|
||||
- Parse cpuinfo correctly when the model name has a colon in it.
|
||||
Resolves: rhbz#1873120
|
||||
|
||||
* Thu Jul 23 2020 John Kacur <jkacur@redhat.com> - 3.0-12
|
||||
- Use linux-5.7 in kcompile
|
||||
Resolves: rhbz#1859762
|
||||
|
||||
* Thu Jun 25 2020 John Kacur <jkacur@redhat.com> - 3.0-11
|
||||
- Make sure "make" is available for the kcompile module
|
||||
Resolves: rhbz#1850924
|
||||
|
||||
* Wed Jun 24 2020 John Kacur <jkacur@redhat.com> - 3.0-10
|
||||
- Ensure that a recent rteval-loads with stress-ng is required
|
||||
Resolves: rhbz#1847233
|
||||
|
||||
* Wed Jun 24 2020 John Kacur <jkacur@redhat.com> - 3.0-9
|
||||
- Ensure the stressng command line is displayed in the final report
|
||||
Resolves: rhbz#1850151
|
||||
|
||||
* Mon Jun 15 2020 John Kacur <jkacur@redhat.com> - 3.0-8
|
||||
- Add the stress-ng load module
|
||||
Resolves: rhbz#1816360
|
||||
|
||||
* Mon May 04 2020 John Kacur <jkacur@redhat.com> - 3.0-7
|
||||
- Make sure openssl is available so that rteval can compile the kernel
|
||||
Resolves: rhbz#1831272
|
||||
|
||||
* Tue Dec 10 2019 John Kacur <jkacur@redhat.com> - 3.0-6
|
||||
- Iterate over nodes and not sysTop
|
||||
- Explictly add a few more software requires for compiling the kernel
|
||||
Resolves: rhbz#1755603
|
||||
|
||||
* Tue Dec 03 2019 John Kacur <jkacur@redhat.com> - 3.0-5
|
||||
- Explicitly add some software requires for compiling the kernel
|
||||
Resolves: rhbz#1766879
|
||||
|
||||
* Mon Dec 02 2019 John Kacur <jkacur@redhat.com> - 3.0-4
|
||||
- In hackbench.py node in args to Popen must be a string
|
||||
Resolves: rhbz#1777048
|
||||
|
||||
* Tue Nov 19 2019 John Kacur <jkacur@redhat.com> - 3.0-3
|
||||
- Don't assume cpu0 cannot be offlined, test for it
|
||||
- Drop patches that are no longer in the spec file
|
||||
Resolves: rhbz#1773792
|
||||
|
||||
* Mon Nov 18 2019 John Kacur <jkacur@redhat.com> - 3.0-2
|
||||
- Check whether a cpu is online before adding to a list
|
||||
- Change hackbench to use the systopology interface for online cpus
|
||||
Resolves: rhbz#1715081
|
||||
|
||||
* Fri Nov 15 2019 John Kacur <jkacur@redhat.com> - 3.0-1
|
||||
- Sync rt-tests and rteval-loads versions in the specfile
|
||||
- Upgrade to upstream rteval-3.0
|
||||
Resolves: rhbz#1748955
|
||||
|
||||
* Fri Nov 08 2019 John Kacur <jkacur@redhat.com> - 2.14-27
|
||||
- Update kcompile sources to linux-5.1
|
||||
Resolves: rhbz#1770215
|
||||
|
||||
* Fri Nov 08 2019 John Kacur <jkacur@redhat.com> - 2.14-26
|
||||
- Fix number of hackbench jobs wrt number of CPUs
|
||||
- Don't run on nodes with no CPUs available
|
||||
Resolves: rhbz#1770211
|
||||
|
||||
* Tue Apr 02 2019 Clark Williams <williams@redhat.com> - 2.14.25
|
||||
- fix incorrect test logic in gating tests
|
||||
Resolves: rhbz#1682426
|
||||
|
||||
* Tue Apr 02 2019 Clark Williams <williams@redhat.com> - 2.14.24
|
||||
- add rteval-loads dependency to gating
|
||||
- added second test (short_run) to gating
|
||||
Resolves: rhbz#1682426
|
||||
|
||||
* Mon Apr 01 2019 Clark Williams <williams@redhat.com> - 2.14.23
|
||||
- add missing gating.yaml
|
||||
Resolves: rhbz#1682426
|
||||
|
||||
* Mon Apr 01 2019 Clark Williams <williams@redhat.com> - 2.14.22
|
||||
- checkin OSCI gating framework
|
||||
Resolves: rhbz#1682426
|
||||
|
||||
* Mon Dec 17 2018 John Kacur <jkacur@redhat.com> - 2.14-21
|
||||
- Fix typo in debug output
|
||||
Resolves: rhbz#1659974
|
||||
|
||||
* Tue Oct 16 2018 John Kacur <jkacur@redhat.com> - 2.14-20
|
||||
- Disable options for the remote xmlrpc server, not currently supported
|
||||
Resolves: rhbz#1628322
|
||||
|
||||
* Sat Oct 13 2018 John Kacur <jkacur@redhat.com> - 2.14-19
|
||||
- Fix Requires for python3
|
||||
Resolves: rhbz#1638135
|
||||
|
||||
* Fri Oct 12 2018 John Kacur <jkacur@redhat.com> - 2.14-18
|
||||
- Fix time format in report
|
||||
Resolves: rhbz#1630733
|
||||
|
||||
* Fri Sep 28 2018 John Kacur <jkacur@redhat.com> - 2.14-17
|
||||
- Change python3 to platform-python
|
||||
Resolves: rhbz#1633619
|
||||
|
||||
* Fri Aug 10 2018 John Kacur <jkacur@redhat.com> - 2.14-16
|
||||
- remove unnecssary encode that is causing problems
|
||||
Resolves: rhbz#1614384
|
||||
|
||||
* Tue Aug 07 2018 John Kacur <jkacur@redhat.com> - 2.14-15
|
||||
- tar is required in kcompile.py. Make it a Require in the specfile
|
||||
Resolves: rhbz#1612992
|
||||
|
||||
* Fri Aug 03 2018 John Kacur <jkacur@redhat.com> - 2.14-14
|
||||
- fix python3 division of integers
|
||||
Resolves: rhbz#1611813
|
||||
|
||||
* Fri Aug 03 2018 John Kacur <jkacur@redhat.com> - 2.14-13
|
||||
-fix rtevalclient import
|
||||
Resolves: rhbz#1608464
|
||||
|
||||
* Sat Jun 23 2018 John Kacur <jkacur@redhat.com> - 2.14-12
|
||||
- More python3 changes
|
||||
- Changes for the new version of rt-tests that automates --numa
|
||||
Resolves: rhbz#1594287
|
||||
|
||||
* Tue Jun 12 2018 John Kacur jkacur@redhat.com> - 2.14-11
|
||||
- More specfile changes for python3 build
|
||||
Resolves: rhbz#1518699
|
||||
|
||||
* Wed May 30 2018 John Kacur <jkacur@redhat.com> - 2.14-10
|
||||
- Chnages for a python3 build
|
||||
Resolves: rhbz#1518699
|
||||
|
||||
* Fri Oct 27 2017 John Kacur <jkacur@redhat.com> - 2.14-9
|
||||
- Remove redundant files for clarity.
|
||||
Resolves: rhbz1504162
|
||||
|
||||
* Fri Oct 27 2017 John Kacur <jkacur@redhat.com> - 2.14-8
|
||||
- Don't fail if we don't know the init system
|
||||
Resolves: rhbz1504168
|
||||
|
||||
* Fri Oct 20 2017 John Kacur <jkacur@redhat.com> - 2.14-7
|
||||
- Remove underscore from sysread function in systopology.py
|
||||
Resolves: rhbz1504164
|
||||
|
||||
* Fri Oct 20 2017 John Kacur <jkacur@redhat.com> - 2.14-6
|
||||
- Improve error handling if cyclictest fails to run
|
||||
Resolves: rhbz1504159
|
||||
|
||||
* Fri Oct 20 2017 John Kacur <jkacur@redhat.com> - 2.14-5
|
||||
- Remove trace-cmd from Requires, since it is not needed to run rteval
|
||||
Resolves: rhbz1504173
|
||||
|
||||
* Mon Oct 16 2017 John Kacur <jkacur@redhat.com> - 2.14-4
|
||||
- Don't sleep if hackbench fails to launch due to out-of-memory
|
||||
- Instead, exit gracefully
|
||||
Resolves: rhbz1380144
|
||||
|
||||
* Wed Oct 11 2017 John Kacur <jkacur@redhat.com> - 2.14-3
|
||||
- Add sos as a requires since this package is needed to run sosreport
|
||||
Resolves: rhbz1500722
|
||||
|
||||
* Wed Oct 11 2017 John Kacur <jkacur@redhat.com> - 2.14-2
|
||||
- Add the contents of the kernel boot command line to the summary report
|
||||
Resolves: rhbz1452788
|
||||
|
||||
* Thu Mar 16 2017 Clark Williams <williams@redhat.com> - 2.14-1
|
||||
- removed leftover import of systopology from sysinfo
|
||||
|
||||
* Wed Mar 15 2017 Clark Williams <williams@redhat.com> - 2.13-2
|
||||
- Updated specfile to correct version and bz [1382155]
|
||||
|
||||
* Tue Sep 20 2016 Clark Williams <williams@rehdat.com> - 2.12-1
|
||||
- handle empty environment variables SUDO_USER and USER [1312057]
|
||||
|
||||
* Tue Aug 30 2016 Clark Williams <williams@rehdat.com> - 2.11-1
|
||||
- make sure we return non-zero for early exit from tests
|
||||
|
||||
* Wed Aug 3 2016 Clark Williams <williams@rehdat.com> - 2.10-1
|
||||
- bumped version for RHEL 7.3 release
|
||||
|
||||
* Mon May 9 2016 Clark Williams <williams@redhat.com> - 2.9.1
|
||||
- default cpulist for modules if only one specified [1333831]
|
||||
|
||||
* Tue Apr 26 2016 Clark Williams <williams@redhat.com> - 2.8.1
|
||||
- add the --version option to print the rteval version
|
||||
- made the --cyclictest-breaktrace option work properly [1209986]
|
||||
|
||||
* Fri Apr 1 2016 Clark Williams <williams@redhat.com> - 2.7.1
|
||||
- treat SIGINT and SIGTERM as valid end-of-run events [1278757]
|
||||
- added cpulist options to man page
|
||||
|
||||
* Thu Feb 11 2016 Clark Williams <williams@redhat.com> - 2.6.1
|
||||
- update to make --loads-cpulist and --measurement-cpulist work [1306437]
|
||||
|
||||
* Thu Dec 10 2015 Clark Williams <williams@refhat.com> - 2.5-1
|
||||
- stop using old numactl --cpubind argument
|
||||
|
||||
* Wed Dec 9 2015 Clark Williams <williams@refhat.com> - 2.4.2
|
||||
- added Require of package numactl
|
||||
|
||||
* Tue Nov 17 2015 Clark Williams <williams@refhat.com> - 2.4.1
|
||||
- rework hackbench load to not generate cross-node traffic [1282826]
|
||||
|
||||
* Wed Aug 12 2015 Clark Williams <williams@redhat.com> - 2.3-1
|
||||
- comment out HWLatDetect module from default config [1245699]
|
||||
|
||||
* Wed Jun 10 2015 Clark Williams <williams@redhat.com> - 2.2-1
|
||||
- add --loads-cpulist and --measurement-cpulist to allow cpu placement [1230401]
|
||||
|
||||
* Thu Apr 23 2015 Luis Claudio R. Goncalves <lgoncalv@redhat.com> - 2.1-8
|
||||
- load default configs when no config file is specified (Jiri kastner) [1212452]
|
||||
|
||||
* Wed Jan 14 2015 Clark Williams <williams@redhat.com> - 2.1-7
|
||||
- added requires of bzip2 to specfile [1151567]
|
||||
|
||||
* Thu Jan 8 2015 Clark Williams <williams@redhat.com> - 2.1-6
|
||||
- cleaned up product documentation [1173315]
|
||||
|
||||
* Mon Nov 10 2014 Luis Claudio R. Goncalves <lgoncalv@redhat.com> - 2.1-5
|
||||
- rebuild for RHEL-7.1 (1151567)
|
||||
|
||||
* Thu Mar 27 2014 Clark Williams <williams@redhat.com> - 2.1-4
|
||||
- cherry-picked old commit to deal with installdir problem
|
||||
|
||||
* Wed Mar 26 2014 Clark Williams <williams@redhat.com> - 2.1-3
|
||||
- added sysstat requires to specfile
|
||||
|
||||
* Tue Mar 12 2013 David Sommerseth <davids@redhat.com> - 2.1-2
|
||||
- Migrated from libxslt-python to python-lxml
|
||||
|
||||
* Fri Jan 18 2013 David Sommerseth <davids@redhat.com> - 2.1-1
|
||||
- Made some log lines clearer
|
||||
- cyclictest: Added --cyclictest-breaktrace feature
|
||||
- cyclictest: Removed --cyclictest-distance option
|
||||
- cyclictest: Use a tempfile buffer for cyclictest's stdout data
|
||||
- cyclictest: Report if breaktrace was triggered
|
||||
- cyclictest: Make the unit test work again
|
||||
- cyclictest: Only log and show statistic data when samples are collected
|
||||
- Copyright updates
|
||||
|
||||
* Thu Jan 17 2013 David Sommerseth <davids@redhat.com> - 2.0.1-1
|
||||
- Fix up type casting in the core module code
|
||||
- hwlatdetect: Add some more useful debug info
|
||||
- Reworked the run logic for modules - allow them to flag they won't run
|
||||
- Fixed a few log messages in load modules
|
||||
- Add a 30 seconds sleep before unleashing the measurement threads
|
||||
|
||||
* Thu Jan 10 2013 David Sommerseth <davids@redhat.com> - 2.0-3
|
||||
- Separate out RTEVAL_VERSION into rteval.version, to avoid
|
||||
massive BuildRequirements
|
||||
|
||||
* Fri Dec 21 2012 David Sommerseth <davids@redhat.com> - 2.0-2
|
||||
- Split out common files into rteval-common
|
||||
|
||||
* Fri Dec 21 2012 David Sommerseth <davids@redhat.com> - 2.0-1
|
||||
- Updated to rteval v2.0 and reworked spec file to use setup.py directly
|
||||
|
||||
* Tue Oct 23 2012 Clark Williams <williams@redhat.com> - 1.36-1
|
||||
- deal with system not having dmidecode python module
|
||||
- make sure to cast priority parameter to int
|
||||
- from Raphaël Beamonte <raphael.beamonte@gmail.com>:
|
||||
- Rewrite of the get_kthreads method to make it cross-distribution
|
||||
- Adds getcmdpath method to use which to locate the used commands
|
||||
- Rewrite of the get_services method to make it cross-distribution
|
||||
|
||||
* Mon Apr 2 2012 Clark Williams <williams@redhat.com> - 1.35-1
|
||||
- fix thinko where SIGINT and SIGTERM handlers were commented out
|
||||
|
||||
* Thu Jan 12 2012 Clark Williams <williams@redhat.com> - 1.34-1
|
||||
- fix missing config merge in rteval.py to pass parameters
|
||||
down to cyclictest
|
||||
- modify hackbench to use helper function to start process
|
||||
|
||||
* Sat May 14 2011 Clark Williams <williams@redhat.com> - 1.33-1
|
||||
- modify hackbench cutoff to be 0.75GB/core
|
||||
|
||||
* Mon Aug 23 2010 Clark Williams <williams@redhat.com> - 1.32-1
|
||||
- update docs
|
||||
- refactor some RTEval methods to utility functions
|
||||
- modify hackbench.py not to run under low memory conditions
|
||||
- clean up XML generation to deal with new hackbench code
|
||||
- clean up XSL code to deal with new XML 'run' attribute
|
||||
- from David Sommerseth <davids@redhat.com>:
|
||||
- improve CPU socket counting logic
|
||||
- delay log directory creation until actually needed
|
||||
- from Gowrishankar <gowrishankar.m@in.ibm.com>:
|
||||
- check if the core id really exists (multithreading fix)
|
||||
|
||||
* Mon Jul 26 2010 Clark Williams <williams@redhat.com> - 1.31-1
|
||||
- from David Sommerseth <davids@redhat.com>:
|
||||
- Updated hackbench implementation to avoid overusing resources
|
||||
- Don't show NUMA node information if it's missing in the summary.xml
|
||||
- Show CPU cores properly
|
||||
|
||||
* Wed Jul 21 2010 Clark Williams <williams@redhat.com> - 1.30-1
|
||||
- added code to hackbench to try to detect and ease memory pressure
|
||||
|
||||
* Fri Jul 16 2010 Clark Williams <williams@redhat.com> - 1.29-1
|
||||
- fixed incorrect type value in kcompile.py
|
||||
|
||||
* Fri Jul 16 2010 Clark Williams <williams@redhat.com> - 1.28-1
|
||||
- added logic to loads to adjust number of jobs based on ratio
|
||||
of memory per core
|
||||
|
||||
* Wed Jul 14 2010 Clark Williams <williams@redhat.com> - 1.27-1
|
||||
- modified hackbench to go back to using threads rather than
|
||||
processes for units of work
|
||||
- added memory size, number of numa nodes and run duration to the
|
||||
parameter dictionary passed to all loads and cyclictest
|
||||
|
||||
* Tue Jul 13 2010 Clark Williams <williams@redhat.com> - 1.26-1
|
||||
- modified hackbench parameters to reduce memory consumption
|
||||
|
||||
* Mon Jul 12 2010 Clark Williams <williams@redhat.com> - 1.25-1
|
||||
- fixed cyclictest bug that caused everything to be uniprocessor
|
||||
- updated source copyrights to 2010
|
||||
|
||||
* Fri Jul 9 2010 Clark Williams <williams@redhat.com> - 1.24-1
|
||||
- modified hackbench arguments and added new parameters for
|
||||
hackbench in rteval.conf
|
||||
|
||||
* Thu Jul 8 2010 Clark Williams <williams@redhat.com> - 1.23-1
|
||||
- version bump to deal with out-of-sync cvs issue
|
||||
|
||||
* Thu Jul 8 2010 Clark Williams <williams@redhat.com> - 1.22-1
|
||||
- merged David Sommerseth <davids@redhat.com> changes to use
|
||||
hackbench from rt-tests packages rather than carry local copy
|
||||
- converted all loads and cyclictest to pass __init__ parameters
|
||||
in a dictionary rather than as discrete parameters
|
||||
- added logging for load output
|
||||
|
||||
* Tue Apr 13 2010 Clark Williams <williams@redhat.com> - 1.21-1
|
||||
- from Luis Claudio Goncalves <lgoncalv@redhat.com>:
|
||||
- remove unecessary wait() call in cyclictest.py
|
||||
- close /dev/null after using it
|
||||
- call subprocess.wait() when needed
|
||||
- remove delayloop code in hackbench.py
|
||||
- from David Sommerseth <davids@redhat.com>:
|
||||
- add SIGINT handler
|
||||
- handle non-root user case
|
||||
- process DMI warnings before command line arguments
|
||||
- added --annotate feature to rteval
|
||||
- updates to xmlrpc code
|
||||
|
||||
* Tue Apr 6 2010 Clark Williams <williams@redhat.com> - 1.20-1
|
||||
- code fixes from Luis Claudio Goncalves <lgoncalv@redhat.com>
|
||||
- from David Sommerseth <davids@redhat.com>:
|
||||
- xmlrpc server updates
|
||||
- cputopology.py for recording topology in xml
|
||||
- added NUMA node recording for run data
|
||||
- rpmlint fixes
|
||||
- added start of rteval whitepaper in docs dir
|
||||
|
||||
* Tue Mar 16 2010 Clark Williams <williams@redhat.com> - 1.19-1
|
||||
- add ability for --summarize to read tarfiles
|
||||
- from David Sommerseth <davids@redhat.com>
|
||||
- gather info about loaded kernel modules for XML file
|
||||
- added child tracking to hackbench to prevent zombies
|
||||
|
||||
* Tue Feb 16 2010 Clark Williams <williams@redhat.com> - 1.18-1
|
||||
- fix usage of python 2.6 features on RHEL5 (python 2.4)
|
||||
|
||||
* Tue Feb 16 2010 Clark Williams <williams@redhat.com> - 1.17-1
|
||||
- added logic to filter non-printables from service status output
|
||||
so that we have legal XML output
|
||||
- added logic to hackbench.py to cleanup properly at the end
|
||||
of the test
|
||||
|
||||
* Thu Feb 11 2010 Clark Williams <williams@redhat.com> - 1.16-1
|
||||
- fix errors in show_remaining_time() introduced because
|
||||
time values are floats rather than ints
|
||||
|
||||
* Thu Feb 11 2010 Clark Williams <williams@redhat.com> - 1.15-1
|
||||
- added logic to use --numa and --smp options of new cyclictest
|
||||
- added countdown report for time remaining in a run
|
||||
|
||||
* Tue Feb 9 2010 Clark Williams <williams@redhat.com> - 1.14-1
|
||||
- David Sommerseth <davids@redhat.com>:
|
||||
merged XMLReport() changes for hwcert suite
|
||||
|
||||
* Tue Dec 22 2009 Clark Williams <williams@redhat.com> - 1.13-1
|
||||
- added cyclictest default initializers
|
||||
- added sanity checks to statistics reduction code
|
||||
- updated release checklist to include origin push
|
||||
- updated Makefile clean and help targets
|
||||
- davids updates (mainly for v7 integration):
|
||||
- Add explicit sys.path directory to the python sitelib+
|
||||
'/rteval'
|
||||
- Send program arguments via RtEval() constructor
|
||||
- Added more DMI data into the summary.xml report
|
||||
- Fixed issue with not including all devices in the
|
||||
OnBoardDeviceInfo tag
|
||||
|
||||
* Thu Dec 3 2009 David Sommerseth <davids@redhat.com> - 1.12-2
|
||||
- fixed Makefile and specfile to include and install the
|
||||
rteval/rteval_histogram_raw.py source file for gaining
|
||||
raw access to histogram data
|
||||
- Removed xmlrpc package during merge against master_ipv4 branch
|
||||
|
||||
* Wed Nov 25 2009 Clark Williams <williams@redhat.com> - 1.12-1
|
||||
- fix incorrect reporting of measurement thread priorities
|
||||
|
||||
* Mon Nov 16 2009 Clark Williams <williams@redhat.com> - 1.11-5
|
||||
- ensure that no double-slashes ("//") appear in the symlink
|
||||
path for /usr/bin/rteval (problem with rpmdiff)
|
||||
|
||||
* Tue Nov 10 2009 Clark Williams <williams@redhat.com> - 1.11-4
|
||||
- changed symlink back to install and tracked by %%files
|
||||
|
||||
* Mon Nov 9 2009 Clark Williams <williams@redhat.com> - 1.11-3
|
||||
- changed symlink generation from %%post to %%posttrans
|
||||
|
||||
* Mon Nov 9 2009 Clark Williams <williams@redhat.com> - 1.11-2
|
||||
- fixed incorrect dependency for libxslt
|
||||
|
||||
* Fri Nov 6 2009 Clark Williams <williams@redhat.com> - 1.11-1
|
||||
- added base OS info to XML file and XSL report
|
||||
- created new package rteval-loads for the load source code
|
||||
|
||||
* Wed Nov 4 2009 Clark Williams <williams@redhat.com> - 1.10-1
|
||||
- added config file section for cyclictest and two settable
|
||||
parameters, buckets and interval
|
||||
|
||||
* Thu Oct 29 2009 Clark Williams <williams@redhat.com> - 1.9-1
|
||||
- merged davids updates:
|
||||
-H option (raw histogram data)
|
||||
cleaned up xsl files
|
||||
fixed cpu sorting
|
||||
|
||||
* Mon Oct 26 2009 David Sommerseth <davids@redhat.com> - 1.8-3
|
||||
- Fixed rpmlint complaints
|
||||
|
||||
* Mon Oct 26 2009 David Sommerseth <davids@redhat.com> - 1.8-2
|
||||
- Added xmlrpc package, containing the XML-RPC mod_python modules
|
||||
|
||||
* Tue Oct 20 2009 Clark Williams <williams@redhat.com> - 1.8-1
|
||||
- split kcompile and hackbench into sub-packages
|
||||
- reworked Makefile (and specfile) install/uninstall logic
|
||||
- fixed sysreport incorrect plugin option
|
||||
- catch failure when running on root-squashed NFS
|
||||
|
||||
* Tue Oct 13 2009 Clark Williams <williams@redhat.com> - 1.7-1
|
||||
- added kthread status to xml file
|
||||
- merged davids changes for option processing and additions
|
||||
to xml summary
|
||||
|
||||
* Tue Oct 13 2009 Clark Williams <williams@redhat.com> - 1.6-1
|
||||
- changed stat calculation to loop less
|
||||
- added methods to grab service and kthread status
|
||||
|
||||
* Mon Oct 12 2009 Clark Williams <williams@redhat.com> - 1.5-1
|
||||
- changed cyclictest to use less memory when doing statisics
|
||||
calculations
|
||||
- updated debug output to use module name prefixes
|
||||
- changed option processing to only process config file once
|
||||
|
||||
* Fri Oct 9 2009 Clark Williams <williams@redhat.com> - 1.4-1
|
||||
- changed cyclictest to use histogram rather than sample array
|
||||
- calcuated statistics directly from histogram
|
||||
- changed sample interval to 100us
|
||||
- added -a (affinity) argument to force cpu affinity for
|
||||
measurement threads
|
||||
|
||||
* Thu Sep 24 2009 David Sommerseth <davids@redhat.com> - 1.3-3
|
||||
- Cleaned up the spec file and made rpmlint happy
|
||||
|
||||
* Wed Sep 23 2009 David Sommerseth <davids@redhat.com> - 1.3-2
|
||||
- Removed version number from /usr/share/rteval path
|
||||
|
||||
* Tue Sep 22 2009 Clark Williams <williams@redhat.com> - 1.3-1
|
||||
- changes from davids:
|
||||
* changed report code to sort by processor id
|
||||
* added report submission retry logic
|
||||
* added emailer class
|
||||
|
||||
* Fri Sep 18 2009 Clark Williams <williams@redhat.com> - 1.2-1
|
||||
- added config file handling for modifying load behavior and
|
||||
setting defaults
|
||||
- added units in report per IBM request
|
||||
|
||||
* Wed Aug 26 2009 Clark Williams <williams@redhat.com> - 1.1-2
|
||||
- missed a version change in rteval/rteval.py
|
||||
|
||||
* Wed Aug 26 2009 Clark Williams <williams@redhat.com> - 1.1-1
|
||||
- modified cyclictest.py to start cyclictest threads with a
|
||||
'distance' of zero, meaning they all have the same measurement
|
||||
interval
|
||||
|
||||
* Tue Aug 25 2009 Clark Williams <williams@redhat.com> - 1.0-1
|
||||
- merged davids XMLRPC fixes
|
||||
- fixed --workdir option
|
||||
- verion bump to 1.0
|
||||
|
||||
* Thu Aug 13 2009 Clark Williams <williams@redhat.com> - 0.9-2
|
||||
- fixed problem with incorrect version in rteval.py
|
||||
|
||||
* Tue Aug 4 2009 Clark Williams <williams@redhat.com> - 0.9-1
|
||||
- merged dsommers XMLRPC and database changes
|
||||
- Specify minimum python-dmidecode version, which got native XML support
|
||||
- Added rteval_dmi.xsl
|
||||
- Fixed permission issues in /usr/share/rteval-x.xx
|
||||
|
||||
* Wed Jul 22 2009 Clark Williams <williams@redhat.com> - 0.8-1
|
||||
- added code to capture clocksource info
|
||||
- added code to copy dmesg info to report directory
|
||||
- added code to display clocksource info in report
|
||||
- added --summarize option to display summary of existing report
|
||||
- added helpfile target to Makefile
|
||||
|
||||
* Thu Mar 26 2009 Clark Williams <williams@torg> - 0.7-1
|
||||
- added require for python-schedutils to specfile
|
||||
- added default for cyclictest output file
|
||||
- added help parameter to option parser data
|
||||
- renamed xml output file to summary.xml
|
||||
- added routine to create tarfile of result files
|
||||
|
||||
* Wed Mar 18 2009 Clark Williams <williams@torg> - 0.6-6
|
||||
- added code to handle binary data coming from DMI tables
|
||||
|
||||
* Wed Mar 18 2009 Clark Williams <williams@torg> - 0.6-5
|
||||
- fixed logic for locating XSL template (williams)
|
||||
- fixed another stupid typo in specfile (williams)
|
||||
|
||||
* Wed Mar 18 2009 Clark Williams <williams@torg> - 0.6-4
|
||||
- fixed specfile to install rteval_text.xsl in /usr/share directory
|
||||
|
||||
* Wed Mar 18 2009 Clark Williams <williams@torg> - 0.6-3
|
||||
- added Requires for libxslt-python (williams)
|
||||
- fixed race condition in xmlout constructor/destructor (williams)
|
||||
|
||||
* Wed Mar 18 2009 Clark Williams <williams@torg> - 0.6-2
|
||||
- added Requires for libxslt (williams)
|
||||
- fixed stupid typo in rteval/rteval.py (williams)
|
||||
|
||||
* Wed Mar 18 2009 Clark Williams <williams@torg> - 0.6-1
|
||||
- added xml output logic (williams, dsommers)
|
||||
- added xlst template for report generator (dsommers)
|
||||
- added dmi/smbios output to report (williams)
|
||||
- added __del__ method to hackbench to cleanup after run (williams)
|
||||
- modified to always keep run data (williams)
|
||||
|
||||
* Fri Feb 20 2009 Clark Williams <williams@torg> - 0.5-1
|
||||
- fixed tab/space mix problem
|
||||
- added report path line to report
|
||||
|
||||
* Fri Feb 20 2009 Clark Williams <williams@torg> - 0.4-1
|
||||
- reworked report output
|
||||
- handle keyboard interrupt better
|
||||
- removed duration mismatch between rteval and cyclictest
|
||||
|
||||
* Mon Feb 2 2009 Clark Williams <williams@torg> - 0.3-1
|
||||
- initial checkin
|
Loading…
Reference in new issue