[PATCH 00/16] Misc page alloc, shmem and mark_page_accessed optimisations

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



I was investigating a performance bug that looked like dd to tmpfs
had regressed.  The bulk of the problem turned out to be a difference
in Kconfig but it got me looking at the unnecessary overhead in tmpfs,
mark_page_accessed and parts of the allocator. This series is the result.

The primary test workload was dd to a tmpfs file that was 1/10th the size
of memory so that dirty balancing and reclaim should not be factors.

loopdd Throughput
                     3.15.0-rc1            3.15.0-rc1
                        vanilla        microopt-v1r11
Min      3993.6000 (  0.00%)      4096.0000 (  2.56%)
Mean     4766.7200 (  0.00%)      4896.4267 (  2.72%)
Stddev    164.5053 (  0.00%)       167.7316 (  1.96%)
Max      4812.8000 (  0.00%)      5120.0000 (  6.38%)

Respectable increase in throughput. The figures are misleading though because
dd reports in GB/sec so there is a lot of noise. The actual time to completiono
is easier to see

loopdd Time
                         3.15.0-rc1            3.15.0-rc1
                            vanilla        microopt-v1r11
Min      time0.3521 (  0.00%)0.3317 (  5.80%)
Mean     time0.3570 (  0.00%)0.3458 (  3.14%)
Stddev   time0.0140 (  0.00%)0.0112 ( 20.59%)
Max      time0.4230 (  0.00%)0.4083 (  3.49%)

The time to dd the data is noticably reduced

          3.15.0-rc1  3.15.0-rc1
             vanillamicroopt-v1r11
User           10.86       10.78
System         70.21       67.12
Elapsed        92.43       89.42

And the system CPU overhead is lower.

A series of tests against various filesystems as well as a general
benchmark are still running but I thought I would send the series out
as-is for comment.

 Documentation/sysctl/vm.txt         |  17 ++--
 arch/ia64/include/asm/topology.h    |   3 +-
 arch/powerpc/include/asm/topology.h |   8 +-
 include/linux/cpuset.h              |  29 +++++++
 include/linux/mmzone.h              |  14 ++-
 include/linux/page-flags.h          |   2 +
 include/linux/pageblock-flags.h     |  18 +++-
 include/linux/swap.h                |   7 +-
 include/linux/topology.h            |   3 +-
 kernel/cpuset.c                     |   8 +-
 mm/filemap.c                        |  58 ++++++++-----
 mm/page_alloc.c                     | 164 ++++++++++++++++++++----------------
 mm/shmem.c                          |   8 +-
 mm/swap.c                           |  13 ++-
 14 files changed, 226 insertions(+), 126 deletions(-)

-- 
1.8.4.5

--
To unsubscribe, send a message with 'unsubscribe linux-mm' in
the body to majordomo@xxxxxxxxx.  For more info on Linux MM,
see: http://www.linux-mm.org/ .
Don't email: <a href=mailto:"dont@xxxxxxxxx";> email@xxxxxxxxx </a>




[Index of Archives]     [Linux ARM Kernel]     [Linux ARM]     [Linux Omap]     [Fedora ARM]     [IETF Annouce]     [Bugtraq]     [Linux]     [Linux OMAP]     [Linux MIPS]     [ECOS]     [Asterisk Internet PBX]     [Linux API]