Upstream PR:
https://github.com/redhat-performance/tuned/pull/288
----- Original Message -----
On Wed, Jul 22, 2020 at 04:06:10AM -0400, Jaroslav Skarvada wrote:
> Hi,
>
> thanks for the patch. It seems we can also drop the
> tuned-profiles-nfv-host-bin
> package from next RHELs, because it was used only for this calculation
>
> thanks & regards
>
> Jaroslav
Yep!
>
> ----- Original Message -----
> > Thanks for the patch Marcelo. I believe the tuned.spec file should also
> > be
> > updated
> > now that qemu-kvm-tools-rhev package doesn't seem to be needed?
> >
> > On Tue, Jul 21, 2020 at 7:21 PM Marcelo Tosatti <mtosatti(a)redhat.com>
> > wrote:
> >
> > >
> > > The LAPIC advancement improvement is minimal (3 or 4 us) and its
> > > calculation has shown to be problematic under certain
> > > scenarios (for example if qemu-kvm is not installed).
> > >
> > > Remove it.
> > >
> > > Signed-off-by: Marcelo Tosatti <mtosatti(a)redhat.com>
> > >
> > > diff --git
> > > a/profiles/realtime-virtual-host/find-lapictscdeadline-optimal.sh
> > > b/profiles/realtime-virtual-host/find-lapictscdeadline-optimal.sh
> > > deleted file mode 100755
> > > index 539c47e..0000000
> > > --- a/profiles/realtime-virtual-host/find-lapictscdeadline-optimal.sh
> > > +++ /dev/null
> > > @@ -1,30 +0,0 @@
> > > -#!/bin/bash
> > > -
> > > -: ${1?"Usage: $0 latency-file"}
> > > -
> > > -lines=`wc -l $1 | cut -f 1 -d " "`
> > > -in_range=0
> > > -prev_value=1
> > > -for i in `seq 1 $lines`; do
> > > - a=`awk "NR==$i" $1 | cut -f 2 -d ":"`
> > > - value=$(($a*100/$prev_value))
> > > - if [ $value -ge 98 -a $value -le 102 ]; then
> > > - in_range=$(($in_range + 1))
> > > - else
> > > - in_range=0
> > > - fi
> > > - if [ $in_range -ge 2 ]; then
> > > - echo -n "optimal value for lapic_timer_advance_ns is:
"
> > > - awk "NR==$(($i - 1))" $1 | cut -f 1 -d
":"
> > > - exit 0
> > > - fi
> > > - prev_value=$a
> > > -done
> > > -# if still decreasing, then use highest ns value
> > > -if [ $value -le 99 ]; then
> > > - echo -n "optimal value for lapic_timer_advance_ns is: "
> > > - awk "NR==$(($i - 1))" $1 | cut -f 1 -d ":"
> > > - exit 0
> > > -fi
> > > -echo optimal not found
> > > -exit 1
> > > diff --git a/profiles/realtime-virtual-host/script.sh
> > > b/profiles/realtime-virtual-host/script.sh
> > > index edae6c5..a11dac7 100755
> > > --- a/profiles/realtime-virtual-host/script.sh
> > > +++ b/profiles/realtime-virtual-host/script.sh
> > > @@ -2,102 +2,13 @@
> > >
> > > . /usr/lib/tuned/functions
> > >
> > > -CACHE_VALUE_FILE=./lapic_timer_adv_ns
> > > -CACHE_CPU_FILE=./lapic_timer_adv_ns.cpumodel
> > > -KVM_LAPIC_FILE=/sys/module/kvm/parameters/lapic_timer_advance_ns
> > > KTIMER_LOCKLESS_FILE=/sys/kernel/ktimer_lockless_check
> > > -QEMU=$(type -P qemu-kvm || echo /usr/libexec/qemu-kvm)
> > >
-TSCDEADLINE_LATENCY="/usr/share/qemu-kvm/tscdeadline_latency.flat"
> > > -[ -f "$TSCDEADLINE_LATENCY" ] ||
> > >
TSCDEADLINE_LATENCY="/usr/share/tuned-profiles-nfv-host-bin/tscdeadline_latency.flat"
> > > -[ -f "$TSCDEADLINE_LATENCY" ] ||
> > > TSCDEADLINE_LATENCY="/usr/share/tuned/tscdeadline_latency.flat"
> > > -
> > > -run_tsc_deadline_latency()
> > > -{
> > > - dir=`mktemp -d`
> > > -
> > > - for i in `seq 1000 500 7000`; do
> > > - echo $i > $KVM_LAPIC_FILE
> > > -
> > > - unixpath=`mktemp`
> > > -
> > > - chrt -f 1 $QEMU -S -enable-kvm -device pc-testdev \
> > > - -device isa-debug-exit,iobase=0xf4,iosize=0x4 \
> > > - -display none -serial stdio -device pci-testdev \
> > > - -kernel "$TSCDEADLINE_LATENCY" \
> > > - -cpu host,tsc-deadline=on \
> > > - -mon chardev=char0,mode=readline \
> > > - -chardev socket,id=char0,nowait,path=$unixpath,server |
> > > grep
> > > latency | cut -f 2 -d ":" > $dir/out &
> > > -
> > > - sleep 1s
> > > - pidofvcpu=`echo "info cpus" | ncat -U $unixpath | grep
> > > thread_id
> > > | cut -f 3 -d "=" | tr -d "\r"`
> > > - taskset -p -c $1 $pidofvcpu >/dev/null
> > > - echo "cont" | ncat -U $unixpath >/dev/null
> > > - wait
> > > -
> > > - if [ ! -f $dir/out ]; then
> > > - die running $TSCDEADLINE_LATENCY failed
> > > - fi
> > > -
> > > - tmp=$(wc -l $dir/out | awk '{ print $1 }')
> > > - if [ $tmp -eq 0 ]; then
> > > - die running $TSCDEADLINE_LATENCY failed
> > > - fi
> > > -
> > > - A=0
> > > - while read l; do
> > > - A=$(($A+$l))
> > > - done < $dir/out
> > > -
> > > - lines=`wc -l $dir/out | cut -f 1 -d " "`
> > > - ans=$(($A/$lines))
> > > - echo $i: $ans
> > > - done
> > > -}
> > >
> > > start() {
> > > setup_kvm_mod_low_latency
> > >
> > > disable_ksm
> > >
> > > - # If CPU model has changed, clean the cache
> > > - if [ -f $CACHE_CPU_FILE ]; then
> > > - curmodel=`cat /proc/cpuinfo | grep "model name" | cut
-f 2 -d
> > > ":"
> > > | uniq`
> > > - if [ -z "$curmodel" ]; then
> > > - die failed to read CPU model
> > > - fi
> > > -
> > > - genmodel=`cat $CACHE_CPU_FILE`
> > > -
> > > - if [ "$curmodel" != "$genmodel" ]; then
> > > - rm -f $CACHE_VALUE_FILE
> > > - rm -f $CACHE_CPU_FILE
> > > - fi
> > > - fi
> > > -
> > > - # If the cache is empty, find the best lapic_timer_advance_ns
> > > value
> > > - # and cache it
> > > -
> > > - if [ ! -f $KVM_LAPIC_FILE ]; then
> > > - die $KVM_LAPIC_FILE not found
> > > - fi
> > > -
> > > - if [ ! -f $CACHE_VALUE_FILE ]; then
> > > - if [ -f "$TSCDEADLINE_LATENCY" ]; then
> > > - tempdir=`mktemp -d`
> > > - isolatedcpu=`echo "$TUNED_isolated_cores_expanded"
| cut
> > > -f
> > > 1 -d ","`
> > > - run_tsc_deadline_latency $isolatedcpu > $tempdir/lat.out
> > > - if ! ./find-lapictscdeadline-optimal.sh $tempdir/lat.out
> > > >
> > > $tempdir/opt.out; then
> > > - die could not find optimal latency
> > > - fi
> > > - echo `cat $tempdir/opt.out | cut -f 2 -d ":"`
>
> > > $CACHE_VALUE_FILE
> > > - curmodel=`cat /proc/cpuinfo | grep "model name" |
cut -f
> > > 2
> > > -d ":" | uniq`
> > > - echo "$curmodel" > $CACHE_CPU_FILE
> > > - fi
> > > - fi
> > > -
> > > - if [ -f $CACHE_VALUE_FILE ]; then
> > > - echo `cat $CACHE_VALUE_FILE` > $KVM_LAPIC_FILE
> > > - fi
> > > systemctl start rt-entsk
> > >
> > > if [ -f $KTIMER_LOCKLESS_FILE ]; then
> > >
> > >
> >