S3C2440A strange perfomance issue

Mark Tinguely marktinguely at gmail.com
Thu May 12 14:13:25 UTC 2011


On 5/12/2011 3:29 AM, Владимир Фещенко wrote:
> %cc -O0 -o test test.c
>
> and execute it:
>
> Code:
>
> %/usr/bin/time -l ./test
>        120.16 real       119.44 user         0.16 sys
>       12177  involuntary context switches
>
> time of execution is over 120 sec ... but after system reboot:
>
> Code:
>
> %/usr/bin/time -l ./test
>          2.85 real         2.55 user         0.25 sys
>         292  involuntary context switches
>
> execution time is 2.85(!) sec, but it's not all!
>
> Code:
>
> %cat test>  /dev/null
>
> %/usr/bin/time -l ./test
>        120.40 real       119.51 user         0.23 sys
>       12201  involuntary context switches
>
> Once the file has been opened for reading (cat test>  /dev/null), execution time again increased to 120 sec (until the next reboot).
>
> What is it?!

Sounds like the executable cache gets disabled on the executable page 
that is also writable issue that we talked about year or so ago. If you 
want a quick test, in pmap_fix_cache(), and exit the routine immediately 
if the mapping is executable. I did some tracing, and there are cases 
where this is not the correct solution - executable mappings that are 
really shared and cache should be disabled. I have a idea level patch 
for this but never tested it well enough.

I also notice a huge jump in "involuntary context switch" counts in your 
runs.

--Mark Tinguely



More information about the freebsd-arm mailing list