diff --git a/SOURCES/rt-tests-Don-t-compress-man-pages-by-default.patch b/SOURCES/rt-tests-Don-t-compress-man-pages-by-default.patch new file mode 100644 index 0000000..812162d --- /dev/null +++ b/SOURCES/rt-tests-Don-t-compress-man-pages-by-default.patch @@ -0,0 +1,48 @@ +From f1d4b4324f7e81fc9779be5659a400daf307116a Mon Sep 17 00:00:00 2001 +From: John Kacur +Date: Sat, 21 Nov 2020 00:09:50 -0500 +Subject: [PATCH] rt-tests: Don't compress man pages by default + +This patch changes the default behavior of the Makefile to install +man pages without compression. This allows distribution build systems to +use the kind of compression they wish to use without the Makefile +getting in the way. + +It is still possible to compress the man pages using the Makefile, for +example + +make MAN_COMPRESSION=gzip + +or + +make MAN_OMPRESSION=bzip2 + +Signed-off-by: John Kacur +--- + Makefile | 5 ++--- + 1 file changed, 2 insertions(+), 3 deletions(-) + +diff --git a/Makefile b/Makefile +index c3ebbd7b2a2e..202067493123 100644 +--- a/Makefile ++++ b/Makefile +@@ -49,14 +49,13 @@ MANPAGES = src/cyclictest/cyclictest.8 \ + src/sched_deadline/deadline_test.8 \ + src/ssdd/ssdd.8 \ + src/sched_deadline/cyclicdeadline.8 \ +- src/cyclictest/get_cyclictest_snapshot.8 \ + src/oslat/oslat.8 + + ifdef PYLIB +- MANPAGES += src/hwlatdetect/hwlatdetect.8 ++ MANPAGES += src/cyclictest/get_cyclictest_snapshot.8 \ ++ src/hwlatdetect/hwlatdetect.8 + endif + +-MAN_COMPRESSION ?= gzip + ifeq ($(MAN_COMPRESSION),gzip) + MANPAGES := $(MANPAGES:.8=.8.gz) + else ifeq ($(MAN_COMPRESSION),bzip2) +-- +2.26.2 + diff --git a/SOURCES/rt-tests-determine_maximum_mpps.sh-Add-a-menu-to-get-user-settings.patch b/SOURCES/rt-tests-determine_maximum_mpps.sh-Add-a-menu-to-get-user-settings.patch new file mode 100644 index 0000000..a239546 --- /dev/null +++ b/SOURCES/rt-tests-determine_maximum_mpps.sh-Add-a-menu-to-get-user-settings.patch @@ -0,0 +1,192 @@ +From ed5045179836f32b60e5092c123e6f47da27beba Mon Sep 17 00:00:00 2001 +From: John Kacur +Date: Wed, 9 Dec 2020 12:11:44 -0500 +Subject: [PATCH 1/3] rt-tests: determine_maximum_mpps.sh: Add a menu to get + user settings. + +Incorporate the functionality of the get_cpuinfo_mhz.sh script into +determine_maximum_mpps.sh so that get_cpuinfo_mhz.sh can be removed. + +Currently determine_maximum_mpps.sh (part of queuelat) asks the user +to edit the PREAMBLE in the script to set the environment. + +Get rid of this by creating a menu that allows the user the set these +variables from a menu when running the script. + +Here is the output from running the script with the -h option + +./src/queuelat/determine_maximum_mpps.sh -h +Usage: +determine_maximum_mpps.sh [OPTIONS] + +-c cpulist + List of processors to run on. The default is processor 0 + Numbers are separated by commas and may include ranges. Eg. 0,3,7-11 +-m maxlat + maximum latency in nanoseconds. The default is 20000 + if the maximum is exceeded, that run of queuelat quits +-n cycles + Estimated number of cycles it takes to process one packet + The default is 300 +-f + Set the scheduling policy to SCHED_FIFO. + This is the default if not specified +-r + Set the scheduling policy to SCHED_RR. +-p priority + default priority = 1. Valid numbers are from 1 to 99 +-h + help + print this help message and exit + +Signed-off-by: John Kacur + +diff --git a/src/queuelat/determine_maximum_mpps.sh b/src/queuelat/determine_maximum_mpps.sh +index f785147f1bbd..fdede472728c 100755 +--- a/src/queuelat/determine_maximum_mpps.sh ++++ b/src/queuelat/determine_maximum_mpps.sh +@@ -6,12 +6,84 @@ + # A script to determine the maximum mpps. Logic: + # Increase mpps in 0.5 units + # +-# NOTE: please set "PREAMBLE" to the command line you use for +-# +-PREAMBLE="taskset -c 2 chrt -f 1" + MAXLAT="20000" + CYCLES_PER_PACKET="300" + OUTFILE=/usr/tmp/outfile ++PRIO=1 ++CPULIST=0 ++SCHED="" ++ ++usage() ++{ ++ echo "Usage:" ++ echo "$(basename $0) [OPTIONS]" ++ echo ++ echo "-c cpulist" ++ echo " List of processors to run on. The default is processor 0" ++ echo " Numbers are separated by commas and may include ranges. Eg. 0,3,7-11" ++ echo "-m maxlat" ++ echo " maximum latency in nanoseconds. The default is 20000" ++ echo " if the maximum is exceeded, that run of queuelat quits" ++ echo "-n cycles" ++ echo " Estimated number of cycles it takes to process one packet" ++ echo " The default is 300" ++ echo "-f" ++ echo " Set the scheduling policy to SCHED_FIFO." ++ echo " This is the default if not specified" ++ echo "-r" ++ echo " Set the scheduling policy to SCHED_RR". ++ echo "-p priority" ++ echo " default priority = 1. Valid numbers are from 1 to 99" ++ echo "-h" ++ echo " help" ++ echo " print this help message and exit" ++ exit ++} ++ ++get_cpuinfo_mhz() ++{ ++ grep "cpu MHz" /proc/cpuinfo | cut -f 3 -d " " | sort -rn | head -n1 ++} ++ ++# Check that the scheduling policy hasn't already been set ++# Exit with an error message if it has ++check_sched() ++{ ++ if [ "${SCHED}" != "" ]; then ++ echo "Specify -f or -r, but not both" ++ usage ++ fi ++} ++ ++# Process command line options ++while getopts ":c:frp:m:n:h" opt; do ++ case ${opt} in ++ c ) CPULIST="${OPTARG}" ;; ++ m ) MAXLAT="${OPTARG}" ;; ++ n ) CYCLES_PER_PACKET="${OPTARG}" ;; ++ f ) check_sched; SCHED="-f" ;; ++ r ) check_sched; SCHED="-r" ;; ++ p ) PRIO="${OPTARG}" ;; ++ h ) usage ;; ++ * ) echo "no such option"; usage ;; ++ esac ++done ++ ++shift $((OPTIND -1 )) ++ ++# If the user hasn't specified a scheduling policy ++# then set it to the default SCHED_FIFO ++if [ "${SCHED}" == "" ]; then ++ SCHED="-f" ++fi ++ ++# Error checking that the user entered a priority between 1 and 99 ++if [[ "${PRIO}" -lt "1" ]] || [[ "${PRIO}" -gt "99" ]]; then ++ echo "PRIO must be a number between 1 and 99" ++ usage ++fi ++ ++PREAMBLE="taskset -c ${CPULIST} chrt ${SCHED} ${PRIO}" + + echo "Determining maximum mpps the machine can handle" + echo "Will take a few minutes to determine mpps value" +@@ -21,7 +93,7 @@ for mpps in $(seq 3 3 50); do + echo testing "$mpps" Mpps + + OUTFILE=$(mktemp) +- $PREAMBLE queuelat -m $MAXLAT -c $CYCLES_PER_PACKET -f "$(sh get_cpuinfo_mhz.sh)" -p "$mpps" -t 30 > "$OUTFILE" ++ $PREAMBLE queuelat -m $MAXLAT -c $CYCLES_PER_PACKET -f "$(get_cpuinfo_mhz)" -p "$mpps" -t 30 > "$OUTFILE" + + exceeded=$(grep exceeded "$OUTFILE") + if [ ! -z "$exceeded" ]; then +@@ -37,7 +109,7 @@ for mpps in $(seq $first_mpps -1 3); do + echo testing "$mpps" Mpps + + OUTFILE=$(mktemp) +- $PREAMBLE queuelat -m $MAXLAT -c $CYCLES_PER_PACKET -f "$(sh get_cpuinfo_mhz.sh)" -p "$mpps" -t 30 > "$OUTFILE" ++ $PREAMBLE queuelat -m $MAXLAT -c $CYCLES_PER_PACKET -f "$(get_cpuinfo_mhz)" -p "$mpps" -t 30 > "$OUTFILE" + + exceeded=$(grep exceeded "$OUTFILE") + if [ -z "$exceeded" ]; then +@@ -54,7 +126,7 @@ for mpps in $(seq "$second_mpps" 0.3 $first_mpps); do + echo testing "$mpps" Mpps + + OUTFILE=$(mktemp) +- $PREAMBLE queuelat -m $MAXLAT -c $CYCLES_PER_PACKET -f "$(sh get_cpuinfo_mhz.sh)" -p "$mpps" -t 30 > "$OUTFILE" ++ $PREAMBLE queuelat -m $MAXLAT -c $CYCLES_PER_PACKET -f "$(get_cpuinfo_mhz)" -p "$mpps" -t 30 > "$OUTFILE" + + exceeded=$(grep exceeded "$OUTFILE") + if [ ! -z "$exceeded" ]; then +@@ -71,7 +143,7 @@ for mpps in $(seq "$third_mpps" -0.1 3); do + echo testing "$mpps" Mpps + + OUTFILE=$(mktemp) +- $PREAMBLE queuelat -m $MAXLAT -c $CYCLES_PER_PACKET -f "$(sh get_cpuinfo_mhz.sh)" -p "$mpps" -t 30 > "$OUTFILE" ++ $PREAMBLE queuelat -m $MAXLAT -c $CYCLES_PER_PACKET -f "$(get_cpuinfo_mhz)" -p "$mpps" -t 30 > "$OUTFILE" + + exceeded=$(grep exceeded "$OUTFILE") + if [ -z "$exceeded" ]; then +@@ -90,7 +162,7 @@ while [ $queuelat_failure == 1 ]; do + echo "$mpps Mpps" + + for i in $(seq 1 10); do +- $PREAMBLE queuelat -m $MAXLAT -c $CYCLES_PER_PACKET -f "$(get_cpuinfo_mhz.sh)" -p "$mpps" -t 30 > "$OUTFILE" ++ $PREAMBLE queuelat -m $MAXLAT -c $CYCLES_PER_PACKET -f "$(get_cpuinfo_mhz)" -p "$mpps" -t 30 > "$OUTFILE" + exceeded=$(grep exceeded "$OUTFILE") + + if [ ! -z "$exceeded" ]; then +@@ -113,7 +185,7 @@ while [ $queuelat_failure == 1 ]; do + echo -n "Starting 10 minutes run with " + echo "$mpps Mpps" + +- $PREAMBLE queuelat -m $MAXLAT -c $CYCLES_PER_PACKET -f "$(get_cpuinfo_mhz.sh)" -p "$mpps" -t 600 > "$OUTFILE" ++ $PREAMBLE queuelat -m $MAXLAT -c $CYCLES_PER_PACKET -f "$(get_cpuinfo_mhz)" -p "$mpps" -t 600 > "$OUTFILE" + exceeded=$(grep exceeded "$OUTFILE") + + if [ ! -z "$exceeded" ]; then +-- +2.26.2 + diff --git a/SOURCES/rt-tests-queuelat-Add-a-manpage-for-determine_maximum_mpps.patch b/SOURCES/rt-tests-queuelat-Add-a-manpage-for-determine_maximum_mpps.patch new file mode 100644 index 0000000..6256a6a --- /dev/null +++ b/SOURCES/rt-tests-queuelat-Add-a-manpage-for-determine_maximum_mpps.patch @@ -0,0 +1,93 @@ +From 009954ca6542c83c39fbb87b0cebf778d89cf79f Mon Sep 17 00:00:00 2001 +From: John Kacur +Date: Wed, 9 Dec 2020 12:19:59 -0500 +Subject: [PATCH 3/3] rt-tests: queuelat: Add a manpage for + determine_maximum_mpps.sh + +Add a manpage for determine_maximum_mpps.sh + +Signed-off-by: John Kacur + +diff --git a/Makefile b/Makefile +index d5b14991032d..fba4546ac50a 100644 +--- a/Makefile ++++ b/Makefile +@@ -52,6 +52,7 @@ MANPAGES = src/cyclictest/cyclictest.8 \ + src/signaltest/signaltest.8 \ + src/pi_tests/pip_stress.8 \ + src/queuelat/queuelat.8 \ ++ src/queuelat/determine_maximum_mpps.8 \ + src/sched_deadline/deadline_test.8 \ + src/ssdd/ssdd.8 \ + src/sched_deadline/cyclicdeadline.8 \ +diff --git a/src/queuelat/determine_maximum_mpps.8 b/src/queuelat/determine_maximum_mpps.8 +new file mode 100644 +index 000000000000..4a28f1a4e34a +--- /dev/null ++++ b/src/queuelat/determine_maximum_mpps.8 +@@ -0,0 +1,62 @@ ++.\" Hey, EMACS: -*- nroff -*- ++.TH DETERMINE_MAXIMUM_MPPS 8 "Dec 4, 2020" ++.\" Please adjust this date whenever revising the manpage. ++.\" ++.\" Some roff macros, for reference: ++.\" .nh disable hyphenation ++.\" .hy enable hyphenation ++.\" .ad l left justify ++.\" .ad b justify to both left and right margins ++.\" .nf disable filling ++.\" .fi enable filling ++.\" .br insert line break ++.\" .sp insert n+1 empty lines ++.\" for manpage-specific macros, see man(7) ++.SH NAME ++determine_maximum_mpps \- Determine the maximum mpps the machine can handle ++.SH SYNOPSIS ++.LP ++determine_maximum_mpps [-c cpulist] [-m maxlat] [-n cycles] [-f | -r] [-p priority] [-h] ++.SH DESCRIPTION ++determine_maximum_mpps will find the maximum mpps parameter which can sustain ++.PP ++.RS ++1. 10 consecutive 30 second runs. ++.br ++2. 1 run of 10 minutes. ++.PP ++.RE ++Without violating the latency specified with $MAXLAT (default 20000) ++.PP ++.SH TERMINOLOGY ++mpps : million-packets-per-second ++.br ++.SH OPTIONS ++.TP ++.B \-c cpulist ++List of processors to run on. The default is processor 0 ++.TP ++.B \-m maxlat ++Maximum latency in nanoseconds. The default is 20000. if the maximum is exceeded, that run of queuelat quits. ++.TP ++.B \-n cycles ++Extimated number of cycles it takes to process one packet. The default is 300 ++.TP ++.B \-f ++Set the scheduling policy to SCHED_FIFO. This is the default if not specified. ++.TP ++.B \-r ++Set the scheduling policy to SCHED_RR. ++.TP ++.B \-p priority ++default priority = 1. Valid numbers are from 1 to 99 ++.TP ++.B \-h ++help ++.LP ++.SH AUTHOR ++determine_maximum_mpps was written by ++.br ++Marcelo Tosatti ++.PP ++This man page was written by John Kacur +-- +2.26.2 + diff --git a/SOURCES/rt-tests-queuelat-Remove-get_cpuinfo_mhz.sh-and-old-Makefile.patch b/SOURCES/rt-tests-queuelat-Remove-get_cpuinfo_mhz.sh-and-old-Makefile.patch new file mode 100644 index 0000000..00e4e9e --- /dev/null +++ b/SOURCES/rt-tests-queuelat-Remove-get_cpuinfo_mhz.sh-and-old-Makefile.patch @@ -0,0 +1,57 @@ +From a6114da09c475c0083fe3a681e79ba2c05d08848 Mon Sep 17 00:00:00 2001 +From: John Kacur +Date: Tue, 8 Dec 2020 13:25:53 -0500 +Subject: [PATCH 2/3] rt-tests: queuelat: Remove get_cpuinfo_mhz.sh and old + Makefile + +The functionality in get_cpuinfo_mhz.sh has been incorporated into +determine_maximum_mpps.sh, so it can safely be removed. + +The queuelat is built from the rt-tests suite Makefile, and the old +Makefile in the queuelat directory can be removed. + +Signed-off-by: John Kacur + +diff --git a/Makefile b/Makefile +index 3b38d21afb3a..d5b14991032d 100644 +--- a/Makefile ++++ b/Makefile +@@ -209,7 +209,6 @@ rebuild: + install: all install_manpages install_hwlatdetect install_get_cyclictest_snapshot + mkdir -p "$(DESTDIR)$(bindir)" + cp $(TARGETS) "$(DESTDIR)$(bindir)" +- install src/queuelat/get_cpuinfo_mhz.sh "$(DESTDIR)$(bindir)" + install src/queuelat/determine_maximum_mpps.sh "${DESTDIR}${bindir}" + + .PHONY: install_hwlatdetect +diff --git a/src/queuelat/Makefile b/src/queuelat/Makefile +deleted file mode 100644 +index b4d327829b17..000000000000 +--- a/src/queuelat/Makefile ++++ /dev/null +@@ -1,9 +0,0 @@ +-queuelat: queuelat.o +- cc -o queuelat queuelat.o +- +-queuelat.o: queuelat.c +- cc -c -Wall queuelat.c +- +-clean: +- rm queuelat queuelat.o +- +diff --git a/src/queuelat/get_cpuinfo_mhz.sh b/src/queuelat/get_cpuinfo_mhz.sh +deleted file mode 100755 +index 14a2c12c478f..000000000000 +--- a/src/queuelat/get_cpuinfo_mhz.sh ++++ /dev/null +@@ -1,7 +0,0 @@ +-#!/bin/bash +- +-# SPDX-License-Identifier: GPL-2.0-or-later +-# Copyright (C) 2018 Marcelo Tosatti +- +-mhz=$(grep "cpu MHz" /proc/cpuinfo | cut -f 3 -d " " | sort -rn | head -n1) +-echo "$mhz" +-- +2.26.2 + diff --git a/SPECS/rt-tests.spec b/SPECS/rt-tests.spec index b7b66c4..f30b1a2 100644 --- a/SPECS/rt-tests.spec +++ b/SPECS/rt-tests.spec @@ -6,7 +6,7 @@ Name: rt-tests # Numa argument to make: NUMA=1 # Version: 1.9 -Release: 1%{?dist} +Release: 2%{?dist} License: GPLv2 Group: Development/Tools URL: git://git.kernel.org/pub/scm/utils/rt-tests/rt-tests.git @@ -21,6 +21,11 @@ BuildRequires: python3-devel Requires: bash bc #Patches +Patch1: rt-tests-Don-t-compress-man-pages-by-default.patch +Patch2: rt-tests-determine_maximum_mpps.sh-Add-a-menu-to-get-user-settings.patch +Patch3: rt-tests-queuelat-Remove-get_cpuinfo_mhz.sh-and-old-Makefile.patch +Patch4: rt-tests-queuelat-Add-a-manpage-for-determine_maximum_mpps.patch + %description rt-tests is a set of programs that test and measure various components of @@ -29,6 +34,10 @@ latency. It also tests the functioning of priority-inheritance mutexes. %prep %setup -q -n %{name}-%{version} +%patch1 -p1 +%patch2 -p1 +%patch3 -p1 +%patch4 -p1 %build %set_build_flags @@ -59,31 +68,38 @@ rm -rf ${build_root} %{_bindir}/ssdd %{_bindir}/oslat %{_bindir}/determine_maximum_mpps.sh -%{_bindir}/get_cpuinfo_mhz.sh %{_bindir}/get_cyclictest_snapshot %{python3_sitelib}/get_cyclictest_snapshot.py* %{python3_sitelib}/__pycache__/get_cyclictest_snapshot* %doc -%{_mandir}/man8/cyclictest.8.gz -%{_mandir}/man8/hackbench.8.gz -%{_mandir}/man8/hwlatdetect.8.gz -%{_mandir}/man8/pi_stress.8.gz -%{_mandir}/man8/pmqtest.8.gz -%{_mandir}/man8/ptsematest.8.gz -%{_mandir}/man8/rt-migrate-test.8.gz -%{_mandir}/man8/signaltest.8.gz -%{_mandir}/man8/sigwaittest.8.gz -%{_mandir}/man8/svsematest.8.gz -%{_mandir}/man8/pip_stress.8.gz -%{_mandir}/man8/queuelat.8.gz -%{_mandir}/man8/deadline_test.8.gz -%{_mandir}/man8/cyclicdeadline.8.gz -%{_mandir}/man8/ssdd.8.gz -%{_mandir}/man8/oslat.8.gz -%{_mandir}/man8/get_cyclictest_snapshot.8.gz +%{_mandir}/man8/cyclictest.8.* +%{_mandir}/man8/hackbench.8.* +%{_mandir}/man8/hwlatdetect.8.* +%{_mandir}/man8/pi_stress.8.* +%{_mandir}/man8/pmqtest.8.* +%{_mandir}/man8/ptsematest.8.* +%{_mandir}/man8/rt-migrate-test.8.* +%{_mandir}/man8/signaltest.8.* +%{_mandir}/man8/sigwaittest.8.* +%{_mandir}/man8/svsematest.8.* +%{_mandir}/man8/pip_stress.8.* +%{_mandir}/man8/queuelat.8.* +%{_mandir}/man8/deadline_test.8.* +%{_mandir}/man8/cyclicdeadline.8.* +%{_mandir}/man8/ssdd.8.* +%{_mandir}/man8/oslat.8.* +%{_mandir}/man8/get_cyclictest_snapshot.8.* +%{_mandir}/man8/determine_maximum_mpps.8.* %changelog -*Tue Nov 24 2020 John Kacur - 1.9-1 +* Wed Dec 09 2020 John Kacur - 1.9-2 +- Don't compress manpages by default in the makefile +- Add a menu to determine_maximum_mpps.sh +- Add determine_maximum_mmps.8 manpage +- Remove get_cpuinfo_mhz.sh and old Makefile in queuelat dir +Resolves: rhbz#1906104 + +* Tue Nov 24 2020 John Kacur - 1.9-1 - Update to upstream rt-tests-1.9 - Add BuildRequires for gcc - use set_build_flags @@ -699,7 +715,7 @@ Sebastian Andrzej Siewior (1): * Tue Mar 16 2010 Clark Williams - 0.67-1 - modified specfile to add hackbench - modified internal ftrace logic for correct tracing -- Changed rpm %description field to be more descriptive (BZ# 572323) +- Changed rpm %%description field to be more descriptive (BZ# 572323) - from Carsten Emde - added smp option to svsematest - fixed policy display in cyclictest