[prev in list] [next in list] [prev in thread] [next in thread] 

List:       linux-rt-users
Subject:    [RFC v0 0/9] [RFC v0 0/9] pi_stress: Add SCHED_DEADLINE support
From:       Daniel Wagner <daniel.wagner () bmw-carit ! de>
Date:       2014-11-05 9:09:36
Message-ID: 1415178585-3192-1-git-send-email-daniel.wagner () bmw-carit ! de
[Download RAW message or body]

Hi,

I wrote a small test program to play around with SCHED_DEADLINE which
triggered various PI related crashes. Steven convinced me to get
the test somehow upstream. I figured pi_stress is very simular with my
test program. So here my attempt to merge the essence of my test
into pi_stress.c


  patch 1: hackbench: Don't re-assign context for each fd
  patch 2: rt-tests.h: Remove unused header file
  patch 3: pi_stress: Remove unused TIMER_SIGNAL definition

	Not really related to this series. Just found it while
	browsing the code a bit. Are you interested in such
	patches?

  patch 4: error: Add debug() function
  patch 5: pi_stress: Use error.h for logging and debugging

	I didn't want to add the sched_setattr() code directly
	to pi_stress.c. As soon rt-utils.h is used you get also
	error.h which brings info() and friends it collides
	in pi_stress.c.
	Several other tests also implement info() and friends.
	Would it make sense to convert them using error.h too?
	Then I would also suggest to get --verbose and
	--debug options handled in a central way. Maybe something
	like the GLib does with parsing the argc first and hanlding
	those flags. What do you think?

  patch 6: rt-sched: Add sched_setattr/sched_getattr API
  patch 7: rt-utils: Add helper to parse/print scheduling policies
  patch 8: rt-utils: Add gettid()

	Add to the library some of the code which could be reused
	by other tests as well. Nothing really fancy.

  patch 9: pi_stress: Store schedule attributes per thread

	Finally this adds the a command line arguments which
	allows the user to define which scheduler setting is
	used for each thread catagory:

# ./pi_stress --sched \
id=high,policy=deadline,runtime=100000,deadline=200000,period=200000 Starting PI \
Stress Test Number of thread groups: 1
Duration of test run: infinite
Number of inversions per group: unlimited
     Admin thread SCHED_FIFO priority 4
1 groups of 3 threads will be created
      High thread SCHED_DEADLINE runtime 100000 deadline 200000 period 200000
       Med thread SCHED_FIFO priority 2
       Low thread SCHED_FIFO priority 1
Current Inversions: 2446249
Stopping test
Terminated


WARNING: Do no run this on older kernels (<3.18-rc3) it will crash your
system. You have been warned!


Obviously, you can also do some stupid stuff like:

# ./pi_stress --rr --sched \
id=high,policy=deadline,h=dl,runtime=100000,deadline=200000,period=200000 --sched \
id=low,policy=fifo,priority=3 Starting PI Stress Test
Number of thread groups: 1
Duration of test run: infinite
Number of inversions per group: unlimited
     Admin thread SCHED_RR priority 4
1 groups of 3 threads will be created
      High thread SCHED_DEADLINE runtime 100000 deadline 200000 period 200000
       Med thread SCHED_RR priority 2
       Low thread SCHED_FIFO priority 3
Current Inversions: 352306
Stopping test
Terminated

cheers,
daniel

Cc: Clark Williams <williams@redhat.com>
Cc: John Kacur <jkacur@redhat.com>
Cc: Steven Rostedt <rostedt@goodmis.org>
Cc: Dario Faggioli <raistlin@linux.it>
Cc: <linux-rt-users@vger.kernel.org>

Daniel Wagner (9):
  hackbench: Don't re-assign context for each fd
  rt-tests.h: Remove unused header file
  pi_stress: Remove unused TIMER_SIGNAL definition
  error: Add debug() function
  pi_stress: Use error.h for logging and debugging
  rt-sched: Add sched_setattr/sched_getattr API
  rt-utils: Add helper to parse/print scheduling policies
  rt-utils: Add gettid()
  pi_stress: Store schedule attributes per thread

 Makefile                  |   4 +-
 src/hackbench/hackbench.c |   8 +-
 src/include/error.h       |   1 +
 src/include/rt-sched.h    |  76 +++++++
 src/include/rt-tests.h    | 124 ------------
 src/include/rt-utils.h    |   7 +
 src/lib/error.c           |  10 +
 src/lib/rt-sched.c        |  43 ++++
 src/lib/rt-utils.c        |  44 ++++
 src/pi_tests/pi_stress.c  | 500 ++++++++++++++++++++++++++++++----------------
 10 files changed, 512 insertions(+), 305 deletions(-)
 create mode 100644 src/include/rt-sched.h
 delete mode 100644 src/include/rt-tests.h
 create mode 100644 src/lib/rt-sched.c

-- 
1.9.3

--
To unsubscribe from this list: send the line "unsubscribe linux-rt-users" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic