Re: poor cyclictest results with 5.0 series rt for arm64

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



> could you please try the following hunk?
>
> diff --git a/arch/arm64/kernel/entry.S b/arch/arm64/kernel/entry.S
> index 6808cd9526c67..63c6960262861 100644
> --- a/arch/arm64/kernel/entry.S
> +++ b/arch/arm64/kernel/entry.S
> @@ -648,7 +648,8 @@ alternative_if ARM64_HAS_IRQ_PRIO_MASKING
>         orr     x24, x24, x0
>  alternative_else_nop_endif
>
> -       cbnz    x24, 2f                                 // preempt count != 0
> +       cbz     x24, 1f                                 // (need_resched + count) == 0
> +       cbnz    w24, 2f                                 // count != 0
>
>         ldr     w24, [tsk, #TSK_TI_PREEMPT_LAZY]        // get preempt lazy count
>         cbnz    w24, 2f                                 // preempt lazy count != 0
>
After correctly applying this patch I do not see large latencies, >15M
iterations and counting.
# ./cyclictest -S -m -n -p 99 -i 200 -h 700 -f
# /dev/cpu_dma_latency set to 0us
policy: fifo: loadavg: 0.04 0.06 0.18 1/134 2043

T: 0 ( 1968) P:99 I:200 C:15081932 Min:      6 Act:    8 Avg:    7 Max:      22
T: 1 ( 1969) P:99 I:200 C:15081831 Min:      6 Act:    9 Avg:    7 Max:      17
T: 2 ( 1970) P:99 I:200 C:15081727 Min:      6 Act:    9 Avg:    8 Max:      17
T: 3 ( 1971) P:99 I:200 C:15081619 Min:      6 Act:    9 Avg:    8 Max:      18

I apologize for messing this up the first time. I had copied the text
strait from gmail and it failed to apply. If I had used 'patch -l' or
copied it from the archive, then it directly applies and I wouldn't
have messed up when I put it in manually. Just for reference here's
how I screwed it up:
diff --git a/arch/arm64/kernel/entry.S b/arch/arm64/kernel/entry.S
index 6808cd9526c6..be0933a3f5e3 100644
--- a/arch/arm64/kernel/entry.S
+++ b/arch/arm64/kernel/entry.S
@@ -651,7 +651,8 @@ alternative_else_nop_endif
        cbnz    x24, 2f                                 // preempt count != 0

        ldr     w24, [tsk, #TSK_TI_PREEMPT_LAZY]        // get preempt
lazy count
-       cbnz    w24, 2f                                 // preempt
lazy count != 0
+       cbz     x24, 1f                                 //
(need_resched + count) == 0
+       cbnz    w24, 2f                                 // count != 0

        ldr     x0, [tsk, #TSK_TI_FLAGS]                // get flags
        tbz     x0, #TIF_NEED_RESCHED_LAZY, 2f          // needs rescheduling?

thanks,
Paul



[Index of Archives]     [RT Stable]     [Kernel Newbies]     [IDE]     [Security]     [Git]     [Netfilter]     [Bugtraq]     [Yosemite]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Linux ATA RAID]     [Samba]     [Video 4 Linux]     [Device Mapper]

  Powered by Linux