Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]
Groups > linux.kernel > #1718198
| From | Łukasz Daniluk <lukasz.daniluk@intel.com> |
|---|---|
| Newsgroups | linux.kernel |
| Subject | [RESEND PATCH 0/3] mm: Add cache coloring mechanism |
| Date | 2017-08-23 12:10 +0200 |
| Message-ID | <uhALL-7CP-1@gated-at.bofh.it> (permalink) |
| Organization | linux.* mail to news gateway |
Patches resend with Linux Kernel Mailing List added correctly this time. This patch series adds cache coloring mechanism that works along buddy allocator. The solution is opt-in, disabled by default minimally interferes with default allocation paths due to added if statements. Why would such patches be needed? Big caches with low associativity (direct mapped caches, 2-way associative) will benefit from the solution the most - it allows for near constant performance through the lifetime of a system, despite the allocations and deallocations happening and reordering buddy lists. On KNL system, the STREAM benchmark with problem size resulting in its internal arrays being of 16GB size will yield bandwidth performance of 336GB/s after fresh boot. With cache coloring patches applied and enabled, this performance stays near constant (most 1.5% drop observed), despite running benchmark multiple times with varying sizes over course of days. Without these patches however, the bandwidth when using such allocations drops to 117GB/s - over 65% of irrecoverable performance penalty. Workloads that exceed set cache size suffer from decreased randomization of allocations with cache coloring enabled, but effect of cache usage disappears roughly at the same allocation size. Solution is divided into three patches. First patch is a preparatory one that provides interface for retrieving (information about) free lists contained by particular free_area structure. Second one (parallel structure keeping separate list_heads for each cache color in a given context) shows general solution overview and is working as it is. However, it has serious performance implications with bigger caches due to linear search for next color to be used during allocations. Third patch (sorting list_heads using RB trees) aims to improve solution's performance by replacing linear search for next color with searching in RB tree. While improving computational performance, it imposes increased memory cost of the solution. Łukasz Daniluk (3): mm: move free_list selection to dedicated functions mm: Add page colored allocation path mm: Add helper rbtree to search for next cache color Documentation/admin-guide/kernel-parameters.txt | 8 + include/linux/mmzone.h | 12 +- mm/compaction.c | 4 +- mm/page_alloc.c | 381 ++++++++++++++++++++++-- mm/vmstat.c | 10 +- 5 files changed, 383 insertions(+), 32 deletions(-) -- 2.13.3
Back to linux.kernel | Previous | Next — Next in thread | Find similar | Unroll thread
[RESEND PATCH 0/3] mm: Add cache coloring mechanism Łukasz Daniluk <lukasz.daniluk@intel.com> - 2017-08-23 12:10 +0200
[RESEND PATCH 3/3] mm: Add helper rbtree to search for next cache color Łukasz Daniluk <lukasz.daniluk@intel.com> - 2017-08-23 12:10 +0200
[RESEND PATCH 2/3] mm: Add page colored allocation path Łukasz Daniluk <lukasz.daniluk@intel.com> - 2017-08-23 12:10 +0200
Re: [RESEND PATCH 2/3] mm: Add page colored allocation path Dave Hansen <dave.hansen@intel.com> - 2017-08-23 16:00 +0200
[RESEND PATCH 1/3] mm: move free_list selection to dedicated functions Łukasz Daniluk <lukasz.daniluk@intel.com> - 2017-08-23 12:10 +0200
Re: [RESEND PATCH 0/3] mm: Add cache coloring mechanism Vlastimil Babka <vbabka@suse.cz> - 2017-08-24 14:50 +0200
Re: [RESEND PATCH 0/3] mm: Add cache coloring mechanism Dave Hansen <dave.hansen@intel.com> - 2017-08-24 18:10 +0200
Re: [RESEND PATCH 0/3] mm: Add cache coloring mechanism Vlastimil Babka <vbabka@suse.cz> - 2017-08-25 11:10 +0200
csiph-web