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