Differences
This shows you the differences between two versions of the page.
| Both sides previous revision Previous revision Next revision | Previous revision | ||
| armsuperpages [2013/07/16 20:53] – ZbigniewBodek | armsuperpages [2020/05/18 02:48] (current) – this is a historical page. MarkLinimon | ||
|---|---|---|---|
| Line 1: | Line 1: | ||
| ====== FreeBSD/arm Superpages for ARMv7 ====== | ====== FreeBSD/arm Superpages for ARMv7 ====== | ||
| + | |||
| + | :!: this is a historical page. | ||
| ==== Engineer ==== | ==== Engineer ==== | ||
| Line 37: | Line 39: | ||
| | M1 | Clean-ups of pmap-v6.c module | **100%** | | | M1 | Clean-ups of pmap-v6.c module | **100%** | | ||
| - | | M2 | Initial implementation of superpages on ARM | **70%** | | + | | M2 | Initial implementation of superpages on ARM | **100%** | |
| - | | M3 | Performance measurements, | + | | M3 | Performance measurements, |
| - | | M4 | Final integration with the %%FreeBSD%% source repo | **50%** | | + | | M4 | Final integration with the %%FreeBSD%% source repo | **100%** | |
| === Clean-ups of pmap-v6.c module === | === Clean-ups of pmap-v6.c module === | ||
| Line 63: | Line 65: | ||
| * PV entry management for superpages | * PV entry management for superpages | ||
| * Enable generic, reservation based allocation | * Enable generic, reservation based allocation | ||
| - | |||
| - | //Ongoing tasks:// | ||
| * Bring-up of the functionality | * Bring-up of the functionality | ||
| * Adjust pmap-v6 infrastructure to utilize superpages' | * Adjust pmap-v6 infrastructure to utilize superpages' | ||
| - | * Fix bugs | ||
| - | ---- | + | ===== Performance measurements and testing ===== |
| - | ===== Repository ===== | + | * Currently pmap-v6 is suffering from the demotion problem caused by the continuous active queue scanning in VM.\\ Due to that all tests were performed with vm.pageout_update_period set to the number greater than available pages in the system. This effectively disables the actively queue scanning. |
| - | [[https:// | + | **GUPS benchmark** |
| - | Currently there are two active branches in the repository. | + | GUPS (Giga Updates Per Second) measures how frequently system can issue updates to randomly generated memory locations. |
| - | In order to view commits on the desired branch, one has to switch to it using **// | + | In particular GUPS measures both memory latency and bandwidth capabilities. |
| - | **Branches:** | + | | Test | CPU Time used [s] | Real time used [s] | Updates per second [bn/s] | SP support | |
| + | | 1 | 146,421875 | 146,420915 | 0,003666627 | **Disabled** | | ||
| + | | 2 | 146,476562 | 146,476513 | 0,003665235 | **Disabled** | | ||
| + | | 3 | 146,398438 | 146,396621 | 0,003667236 | **Disabled** | | ||
| + | | 4 | 146,695312 | 146,699617 | 0,003659661 | **Disabled** | | ||
| + | | 5 | 96,453125 | 96,450370 | 0,005566292 | **Enabled** | | ||
| + | | 6 | 96,429688 | 96,426973 | 0,005567643 | **Enabled** | | ||
| + | | 7 | 96,953125 | 96,948327 | 0,005537702 | **Enabled** | | ||
| + | | 8 | 96,421875 | 96,423033 | 0,005567870 | **Enabled** | | ||
| + | | Improvement | 34% | 34% | 52% | | ||
| - | | + | **LMbench** |
| - | * most recent changes that are being tested at the moment | + | |
| - | * **armsp** | + | LMbench is a popular suite of system performance benchmarks. |
| - | * main project' | + | |
| + | Memory bandwidth and latency tests can be used for the purpose of // | ||
| + | |||
| + | LMbench uses STREAM testing program to examine memory performance. | ||
| + | Results are differentiated by type of operation. | ||
| + | |||
| + | | Mmap reread [MB/s] | Bcopy (libc) [MB/s] | Bcopy (hand) [MB/s] | Mem read [MB/s] | Mem write [MB/s] | Mem latency [ns] | SP support | | ||
| + | | 645,4 | 305,4 | 432,3 | 681 | 3043 | 238,8 | **Disabled** | | ||
| + | | 660,0 | 312,4 | 446,9 | 696 | 3300 | 148,4 | **Enabled** | | ||
| + | | Improvement |||||| | ||
| + | | 2,26% | 2,29% | 3,37% | 2,2% | 8,44 % | 37,85% | | ||
| + | |||
| + | **Self host world build** | ||
| + | |||
| + | Reduction in the duration of self hosted world build can be observed when using GCC. | ||
| + | |||
| + | No time reduction can be observed when using CLANG despite creation of ~570000 superpages in the process. | ||
| + | |||
| + | | GCC | CLANG | SP support | | ||
| + | | 6h 36min | 6h 16min | **Disabled** | | ||
| + | | 5h 14min | 6h 15min | **Enabled** | | ||
| + | |||
| + | ---- | ||
| + | |||
| + | ===== Repository ===== | ||
| + | |||
| + | The code has been integrated to the %%FreeBSD%% HEAD. | ||
| + | |||
| + | [[http:// | ||
| ===== References/ | ===== References/ | ||
| Line 90: | Line 126: | ||
| Practical, transparent operating system support for superpages | Practical, transparent operating system support for superpages | ||
| [[http:// | [[http:// | ||
| + | |||
| + | ---- | ||
| + | |||
| + | {{tag> | ||