HEADS UP: Superpages support for ARMv6/v7

fabiodive fabiodive at gmail.com
Tue Aug 27 09:45:19 UTC 2013


OK, that's fine, should be fine also having some configuration
"option" into the kernel configuration file…
thank you again
f.


On Aug 27, 2013, at 10:42 AM, Zbyszek Bodek <zbb at semihalf.com> wrote:

> On 27.08.2013 11:36, fabiodive wrote:
>> Hello,
>> I am going to do some tests on my beagle bone black here,
>> please could you give me an hint about enabling the feature
>> into the kernel? Which directive should I use?
>> thank you
>> f.
>> 
> 
> Hello.
> 
> If you are not using loader then open:
> sys/arm/arm/pmap-v6.c
> and set "sp_enabled = 0;" -> "sp_enabled = 1;"
> recompile.
> 
> OR if using loader then set:
> vm.pmap.sp_enabled=1 in loader.conf
> 
> Both methods are sufficient.
> 
> Best regards
> Zbigniew Bodek
> 
> 
>> On Aug 26, 2013, at 8:05 PM, Zbyszek Bodek <zbb at semihalf.com> wrote:
>> 
>>> Hello Everyone.
>>> 
>>> I'm happy to announce that Superpages support for ARM has just been
>>> integrated to the FreeBSD HEAD:
>>> http://svnweb.freebsd.org/changeset/base/254918
>>> 
>>> This project was sponsored by The FreeBSD Foundation and Semihalf.
>>> It was developed with great support of Alan Cox (alc) who was also the
>>> technical reviewer of the code. Thank you very much Alan for all your help!
>>> I would also like to thank Grzegorz Bernacki (gber) and Rafal Jaworowski
>>> (raj) for mentoring and help with the code integration and all the
>>> people involved in testing of the patches and review.
>>> 
>>> The code was tested on a quad-core, ARMv7, Marvell Armada XP SoC in SMP
>>> environment.
>>> 
>>> Superpages is a feature that can increase TLB coverage and allow for
>>> efficient use of page table entries. Current implementation for ARM
>>> supports two page sizes: 4KB small pages (used as base pages) and 1MB
>>> sections (used as superpages).
>>> Superpages are created either directly by 1MB section insertion or as a
>>> result of promotion of 256 4KB pages. In both cases superpages creation
>>> and utilization depends on *sp_enabled* sysctl variable.
>>> 
>>> By default, superpages support is disabled.
>>> In order to use this functionality one needs to set
>>> *vm.pmap.sp_enabled* tunable to non-zero value. This can be done either
>>> in loader.conf or by modifying *sp_enabled* variable in
>>> sys/arm/arm/pmap-v6.c . Statistics regarding superpages usage are
>>> available through: sysctl vm.pmap.section
>>> 
>>> All ARMv6/v7-based platforms can take advantage from superpages, so
>>> please enable this feature on your ARM kernels.
>>> We will appreciate all your feedback regarding performance impact and
>>> general system behavior.
>>> 
>>> Performance improvement should be visible in all tasks where intensive
>>> memory utilization is involved. GUPS (Giga Updates Per Second) benchmark
>>> can be used to show the difference in memory utilization efficiency with
>>> superpages enabled and disabled. GUPS src can be downloaded from here:
>>> http://people.freebsd.org/~raj/patches/arm/superpages/GUPS.tar.gz
>>> 
>>> Exemplary GUPS results:
>>> --------------------------------------------------------------------
>>> *superpages enabled*
>>> vm.pmap.section.promotions: 1024
>>> vm.pmap.section.p_failures: 58
>>> vm.pmap.section.mappings: 0
>>> vm.pmap.section.demotions: 0
>>> 
>>> # ./gups
>>> Main table size   = 2^27 = 134217728 words
>>> Number of updates = 536870912
>>> CPU time used  = 97.085938 seconds
>>> Real time used = 97.082504 seconds
>>> 0.005530048 Billion(10^9) Updates    per second [GUP/s]
>>> 
>>> vm.pmap.section.promotions: 2048
>>> vm.pmap.section.p_failures: 58
>>> vm.pmap.section.mappings: 0
>>> vm.pmap.section.demotions: 0
>>> 
>>> * superpages disabled *
>>> Main table size   = 2^27 = 134217728 words
>>> Number of updates = 536870912
>>> CPU time used  = 145.679688 seconds
>>> Real time used = 145.680798 seconds
>>> 0.003685255 Billion(10^9) Updates    per second [GUP/s]
>>> --------------------------------------------------------------------
>>> 
>>> *Self host buildworld*
>>> World build time on Armada XP has shortened from 6h 36min to
>>> 5h 14min with superpages enabled.
>>> 
>>> *Stress tests*
>>> stress --cpu 4 --io 4 --vm 2 --vm-bytes 800M
>>> Survived long time runs, large superpages creation ratio has been observed.
>>> 
>>> *Swapping*
>>> No problems with swapping or system running under heavy load with
>>> shortage of memory have been observed.
>>> 
>>> 
>>> Please feel free to send your results.
>>> 
>>> Best regards
>>> Zbigniew Bodek
>>> _______________________________________________
>>> freebsd-arm at freebsd.org mailing list
>>> http://lists.freebsd.org/mailman/listinfo/freebsd-arm
>>> To unsubscribe, send any mail to "freebsd-arm-unsubscribe at freebsd.org"
>> 
> 



More information about the freebsd-arm mailing list