Re: 1us latency?

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

 



On 8/3/2015 11:53 AM, Clark Williams wrote:
> On Mon, 3 Aug 2015 21:36:26 +0300
> pavel <pavel@xxxxxxxxxxx> wrote:
> 
>> 1. Without patch
>>
>> # ./cyclictest -S -p fifo -D60s
>> defaulting realtime priority to 9
>> # /dev/cpu_dma_latency set to 0us
>> policy: fifo: loadavg: 0.00 0.01 0.05 1/207 12378
>>
>> T: 0 (12361) P: 9 I:1000 C:  59993 Min:      1 Act:    1 Avg:    1 Max:       8
>> T: 1 (12362) P: 9 I:1500 C:  39995 Min:      1 Act:    1 Avg:    1 Max:       9
>> T: 2 (12363) P: 9 I:2000 C:  29996 Min:      1 Act:    1 Avg:    1 Max:      12
>> T: 3 (12364) P: 9 I:2500 C:  23997 Min:      1 Act:    1 Avg:    1 Max:       9
>> T: 4 (12365) P: 9 I:3000 C:  19997 Min:      1 Act:    1 Avg:    1 Max:       6
>> T: 5 (12366) P: 9 I:3500 C:  17141 Min:      1 Act:    1 Avg:    1 Max:       11
>> T: 6 (12367) P: 9 I:4000 C:  14998 Min:      0 Act:    1 Avg:    1 Max:       10
>> T: 7 (12368) P: 9 I:4500 C:  13331 Min:      0 Act:    1 Avg:    1 Max:       6
>>
>> 2. With patch
>>
>>   # ./cyclictest -S -p fifo -D60s
>> defaulting realtime priority to 9
>> # /dev/cpu_dma_latency set to 0us
>> policy: fifo: loadavg: 0.05 0.04 0.05 1/206 12469
>>
>> T: 0 (12452) P: 9 I:1000 C:  59997 Min:      1 Act:    1 Avg:    1 Max:       3
>> T: 1 (12453) P: 9 I:1500 C:  39998 Min:      1 Act:    1 Avg:    1 Max:       2
>> T: 2 (12454) P: 9 I:2000 C:  29998 Min:      1 Act:    1 Avg:    1 Max:       4
>> T: 3 (12455) P: 9 I:2500 C:  23999 Min:      1 Act:    1 Avg:    1 Max:       4
>> T: 4 (12456) P: 9 I:3000 C:  19999 Min:      1 Act:    1 Avg:    1 Max:       4
>> T: 5 (12457) P: 9 I:3500 C:  17142 Min:      1 Act:    1 Avg:    1 Max:       3
>> T: 6 (12458) P: 9 I:4000 C:  14999 Min:      1 Act:    1 Avg:    1 Max:       2
>> T: 7 (12459) P: 9 I:4500 C:  13332 Min:      1 Act:    1 Avg:    1 Max:       3
>>
>>
>> Patch  ---
>>
>> diff --git a/src/cyclictest/cyclictest.c b/src/cyclictest/cyclictest.c
>> index 34053c5..84a70de 100644
>> --- a/src/cyclictest/cyclictest.c
>> +++ b/src/cyclictest/cyclictest.c
>> @@ -1727,6 +1727,9 @@ static void print_stat(FILE *fp, struct thread_param *par, 
>> int index, int verbos
>>   {
>>          struct thread_stat *stat = par->stats;
>>
>> +       if ( stat->cycles < 5000)
>> +                stat->max = 0;
>> +
>>          if (!verbose) {
>>                  if (quiet != 1) {
>>                          char *fmt;
>>
>> ---
>>
>>
>> 03.08.2015 20:59, pavel пишет:
>>>
>>>>
>>>>> # ./cyclictest -S -p fifo
>>>>> defaulting realtime priority to 9
>>>>> # /dev/cpu_dma_latency set to 0us
>>>>> policy: fifo: loadavg: 0.00 0.03 0.05 1/218 4240
>>>>>
>>>>> T: 0 ( 4174) P: 9 I:1000 C: 430806 Min:      1 Act:    1 Avg:    1 Max:      10
>>>>> T: 1 ( 4175) P: 9 I:1500 C: 287204 Min:      1 Act:    1 Avg:    1 Max:       6
>>>>> T: 2 ( 4176) P: 9 I:2000 C: 215403 Min:      1 Act:    2 Avg:    1 Max:      11
>>>>> T: 3 ( 4177) P: 9 I:2500 C: 172322 Min:      1 Act:    1 Avg:    1 Max:       9
>>>>> T: 4 ( 4178) P: 9 I:3000 C: 143602 Min:      1 Act:    1 Avg:    1 Max:      10
>>>>> T: 5 ( 4179) P: 9 I:3500 C: 123087 Min:      1 Act:    1 Avg:    1 Max:      11
>>>>> T: 6 ( 4180) P: 9 I:4000 C: 107701 Min:      1 Act:    1 Avg:    1 Max:      10
>>>>> T: 7 ( 4181) P: 9 I:4500 C: 108232 Min:      1 Act:    2 Avg:    1 Max:      11
>>>>>
>>>>>
>>>>> It possible? 1us latency?  o_O
>>>> No, your latency is 11us. Max latency is what we care about, not the
>>>> average.
>>> By the way, max values appear only at the start, then they are roughly equal to
>>> the average.
>>
> 
> Interesting. Betting that's page faults and cache filling. 

You might want to try running a background load on the system that pollutes
the cache and TLB and see if you get larger values after the start up period.

> 
> I don't think we want to arbitrarily pick some number of cycles for a
> "settle time" (i.e. a grace period for the application to reach steady
> state). Possibly we should add an option for that? Specify some number
> of cycles or some amount of time that where the measurement threads run
> before actual measurements start?
> 
>   $ cyclictest --numa -p95 -m --settle=10ms
> 
> That would say "run the measurement threads for ten milliseconds before
> actually starting the measurement period". That would allow them to
> fault in and fill cache lines before starting real work.
> 
> Anyone else have an opinion?
> 
> Clark
> --
> To unsubscribe from this list: send the line "unsubscribe linux-rt-users" in
> the body of a message to majordomo@xxxxxxxxxxxxxxx
> More majordomo info at  http://vger.kernel.org/majordomo-info.html
> .
> 

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



[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