[PATCH 0/2] sched/eevdf: sched_attr::sched_runtime slice hint

From: peterz
Date: Fri Sep 15 2023 - 08:49:51 EST


Hi,

As promised a while ago, here is a new version of the variable slice length
hint stuff. Back when I asked for comments on the latency-nice vs slice length
thing, there was very limited feedback on-list, a number of people have
expressed interrest in the slice length hint.


I'm still working on improving the wakeup latency -- but esp. after commit:

63304558ba5d ("sched/eevdf: Curb wakeup-preemption")

it needs a little more work. Everything I tried so far made it worse.

As is it behaves ok-ish:

root@ivb-ep:~/bench# cat doit-latency-slice.sh
#!/bin/bash

perf bench sched messaging -g 40 -l 12000 &

sleep 1
chrt3 -o --sched-runtime $((`cat /debug/sched/base_slice_ns`*10)) 0 cyclictest --policy other -D 5 -q -H 20000 --histfile data.txt ; grep Latencies data.txt
chrt3 -o --sched-runtime 0 0 cyclictest --policy other -D 5 -q -H 20000 --histfile data.txt ; grep Latencies data.txt
chrt3 -o --sched-runtime $((`cat /debug/sched/base_slice_ns`/10)) 0 cyclictest --policy other -D 5 -q -H 20000 --histfile data.txt ; grep Latencies data.txt

wait $!
root@ivb-ep:~/bench# ./doit-latency-slice.sh
# Running 'sched/messaging' benchmark:
# /dev/cpu_dma_latency set to 0us
# Min Latencies: 00060
# Avg Latencies: 00990
# Max Latencies: 224925
# /dev/cpu_dma_latency set to 0us
# Min Latencies: 00020
# Avg Latencies: 00656
# Max Latencies: 37595
# /dev/cpu_dma_latency set to 0us
# Min Latencies: 00016
# Avg Latencies: 00354
# Max Latencies: 16687
# 20 sender and receiver processes per group
# 40 groups == 1600 processes run

Total time: 38.246 [sec]


(chrt3 is a hacked up version of util-linux/chrt that allows --sched-runtime unconditionally)