[LITMUS^RT] Running LITMUS-RT on ARM64
Andrii Anisov
andrii_anisov at epam.com
Thu Nov 2 17:26:33 CET 2017
Hello Björn,
Kindly update if you had a chance to check my comments?
On 21.09.17 16:26, Andrii Anisov wrote:
> Hello Björn,
>
> On 21.09.17 13:08, Björn Brandenburg wrote:
>> Hi Andrii,
>>
>> this is what I’m seeing; seems to be ok:
>>
>> objdump -t rtspin | grep loop
>> 0000000000402ee0 l F .text 0000000000000065 loop
>> 0000000000403040 l F .text 0000000000000084 loop_once_with_mem
>> 00000000004031b0 l F .text 000000000000012d loop_for
> Yep, it is here.
>
>
> Ok, we have following values:
>
>> In 1 ms 124415 loops.
>> In 10 ms 1835007 loops.
>> In 100 ms 30228892 loops.
>> In 1 s 301964990 loops.
>
> In fact I would take the value from 1s evaluation (divided by 1000),
> in your case 301964. Then run `rtspin -l -a0` and then adjust it
> manually to get minimal error.
>
>> When running the configuration loop (on an Intel Xeon CPU E5-2450 @
>> 2.10GHz):
>>
>> ./rtspin -a0
>> Probe 4096 loops for 1 ms:
>> Probe 8192 loops for 1 ms:
>> Probe 16384 loops for 1 ms:
>> Probe 32768 loops for 1 ms:
>> Probe 65536 loops for 1 ms:
>> Probe 131072 loops for 1 ms:
>> 98304 loops elapsed in 0.00078678131103515625 s
>> 114688 loops elapsed in 0.00091290473937988281 s
>> 122880 loops elapsed in 0.00098991394042968750 s
>> 126976 loops elapsed in 0.00100708007812500000 s
>> 124928 loops elapsed in 0.00100111961364746094 s
>> 123904 loops elapsed in 0.00098490715026855469 s
>> 124416 loops elapsed in 0.00100708007812500000 s
>> 124160 loops elapsed in 0.00098299980163574219 s
>> 124288 loops elapsed in 0.00098085403442382812 s
>> 124352 loops elapsed in 0.00098705291748046875 s
>> 124384 loops elapsed in 0.00092506408691406250 s
>> 124400 loops elapsed in 0.00092005729675292969 s
>> 124408 loops elapsed in 0.00092291831970214844 s
>> 124412 loops elapsed in 0.00092983245849609375 s
>> 124414 loops elapsed in 0.00091719627380371094 s
>> 124415 loops elapsed in 0.00092101097106933594 s
>> In 1 ms 124415 loops.
> But something is going wrong in this probation. You can see pretty big
> execution time deviation which turned binary search in a completely
> wrong direction. Maybe some specific runtime optimizations of this CPU.
>
> One more change I missed during patches reordering is here [1]. This
> also might be the cause. Could you please give it a try?
>
>> For comparison, the old cputime()/TSC-based loop usually achieves an
>> error of less than 0.002%.
> Well, from my understanding, the cputime()/TSC-based loop is self
> balancing due to its timekeeping nature so it tends to show better
> numbers in debug cases.
>
>
>> Here I’m getting "In 1 ms 441849 loops.”, which results in an error
>> between 2% and 3%, which is much better, but still not that great.
> Yep, in this case I'd do manual adjustments of the value. I.e.
> `441849*1.025 *≈* 453000`
>
> [1]
> https://github.com/aanisov/liblitmus/commit/0bfe5c08e15aca0505bdc769f8f348c88952df21
--
*Andrii Anisov*
*
*
More information about the litmus-dev
mailing list