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
----- 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
>
>