[PATCH 00/97] Misc series of functional/performance fixes for 3.12-stable

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

 



Kernel Summit 2014 had a topic on performance regressions and catching
them.  The situation relatively recently has been good but I believe this
is partially due to major distributions stabilising recently and hardware
vendors working on performance for their latest platforms. On thing I fear is
that we miss performance regressions because releases contains performance
gains and losses, some of which balance out. After a number of mainline
releases, the performance may look ok but in comparison to a distribution
kernel cherry-picking the picture is not as rosy.  The 3.0-longterm
included a number of performance-related patches so it could be used as
a good performance baseline for later releases. It is no longer maintained.

This series contains a large number of patches against 3.12-longterm that
never made it to stable as the bugs were not serious enough or they were
performance patches. 3.10-longterm may need other pre-requisites I did
not research and 3.14-longterm should be able to apply a subset although
I have not tested the result.

The first 12 patches are mostly functional patches. After that is mostly but
not exclusively performance-related patches. Sometimes there are patches
that are clean-ups so that later patches do not have to be extensively
modified for the backport.

I'm aware that this series is outside the standard rules for stable.
Even the stable rules for performance patches is being violated here as
I do not added information to the changelog on user-visible effects or
bugzilla entries beyond what is already available as the information was
not recorded when these patches were identified. By the nature of many of
the patches they do include performance data though. It's up to the -stable
maintainers for each longterm kernel if they want to use the kernel they
maintain as a performance baseline or not.

Al Viro (1):
  callers of iov_copy_from_user_atomic() don't need pagecache_disable()

Bob Liu (2):
  mm: thp: cleanup: mv alloc_hugepage to better place
  mm: thp: khugepaged: add policy for finding target node

Christoph Lameter (1):
  vmscan: reclaim_clean_pages_from_list() must use mod_zone_page_state()

Damien Ramonda (1):
  readahead: fix sequential read cache miss detection

Dan Streetman (4):
  swap: change swap_info singly-linked list to list_head
  lib/plist: add helper functions
  lib/plist: add plist_requeue
  swap: change swap_list_head to plist, add swap_avail_head

Dave Chinner (1):
  fs/superblock: unregister sb shrinker before ->kill_sb()

David Rientjes (10):
  mm, thp: do not allow thp faults to avoid cpuset restrictions
  mm, compaction: avoid isolating pinned pages
  mm, compaction: determine isolation mode only once
  mm, compaction: ignore pageblock skip when manually invoking
    compaction
  mm, migration: add destination page freeing callback
  mm, compaction: return failed migration target pages back to freelist
  mm, compaction: add per-zone migration pfn cache for async compaction
  mm, compaction: embed migration mode in compact_control
  mm, compaction: terminate async compaction when rescheduling
  mm, thp: only collapse hugepages to nodes with affinity for
    zone_reclaim_mode

Davidlohr Bueso (1):
  mm: per-thread vma caching

Fabian Frederick (1):
  mm/readahead.c: inline ra_submit

Han Pingtian (1):
  mm: prevent setting of a value less than 0 to min_free_kbytes

Heesub Shin (1):
  mm/compaction: clean up unused code lines

Hugh Dickins (4):
  mm: fix bad rss-counter if remap_file_pages raced migration
  mm: fix direct reclaim writeback regression
  shmem: fix init_page_accessed use to stop !PageLRU bug
  mm/memory.c: use entry = ACCESS_ONCE(*pte) in handle_pte_fault()

Jens Axboe (1):
  mm/filemap.c: avoid always dirtying mapping->flags on O_DIRECT

Jerome Marchand (2):
  mm: make copy_pte_range static again
  memcg, vmscan: Fix forced scan of anonymous pages

Jianyu Zhan (1):
  mm/swap.c: clean up *lru_cache_add* functions

Johannes Weiner (5):
  lib: radix-tree: add radix_tree_delete_item()
  mm: shmem: save one radix tree lookup when truncating swapped pages
  mm: filemap: move radix tree hole searching here
  mm + fs: prepare for non-page entries in page cache radix trees
  mm: madvise: fix MADV_WILLNEED on shmem swapouts

Joonsoo Kim (7):
  slab: correct pfmemalloc check
  mm/compaction: disallow high-order page for migration target
  mm/compaction: do not call suitable_migration_target() on every page
  mm/compaction: change the timing to check to drop the spinlock
  mm/compaction: check pageblock suitability once per pageblock
  mm/compaction: clean-up code on success of ballon isolation
  vmalloc: use rcu list iterator to reduce vmap_area_lock contention

KOSAKI Motohiro (2):
  mm: get rid of unnecessary overhead of trace_mm_page_alloc_extfrag()
  mm: __rmqueue_fallback() should respect pageblock type

Linus Torvalds (1):
  mm: don't pointlessly use BUG_ON() for sanity check

Mel Gorman (30):
  mm, x86: Account for TLB flushes only when debugging
  x86/mm: Clean up inconsistencies when flushing TLB ranges
  x86/mm: Eliminate redundant page table walk during TLB range flushing
  mm: compaction: trace compaction begin and end
  mm: optimize put_mems_allowed() usage
  mm: vmscan: use proportional scanning during direct reclaim and full
    scan at DEF_PRIORITY
  mm: page_alloc: do not update zlc unless the zlc is active
  mm: page_alloc: do not treat a zone that cannot be used for dirty
    pages as "full"
  include/linux/jump_label.h: expose the reference count
  mm: page_alloc: use jump labels to avoid checking number_of_cpusets
  mm: page_alloc: calculate classzone_idx once from the zonelist ref
  mm: page_alloc: only check the zone id check if pages are buddies
  mm: page_alloc: only check the alloc flags and gfp_mask for dirty once
  mm: page_alloc: take the ALLOC_NO_WATERMARK check out of the fast path
  mm: page_alloc: use unsigned int for order in more places
  mm: page_alloc: reduce number of times page_to_pfn is called
  mm: page_alloc: convert hot/cold parameter and immediate callers to
    bool
  mm: page_alloc: lookup pageblock migratetype with IRQs enabled during
    free
  mm: shmem: avoid atomic operation during shmem_getpage_gfp
  mm: do not use atomic operations when releasing pages
  mm: do not use unnecessary atomic operations when adding pages to the
    LRU
  fs: buffer: do not use unnecessary atomic operations when discarding
    buffers
  mm: non-atomically mark page accessed during page cache allocation
    where possible
  mm: avoid unnecessary atomic operations during end_page_writeback()
  mm: pagemap: avoid unnecessary overhead when tracepoints are
    deactivated
  mm: rearrange zone fields into read-only, page alloc, statistics and
    page reclaim lines
  mm: move zone->pages_scanned into a vmstat counter
  mm: vmscan: only update per-cpu thresholds for online CPU
  mm: page_alloc: abort fair zone allocation policy when remotes nodes
    are encountered
  mm: page_alloc: reduce cost of the fair zone allocation policy

Michal Hocko (1):
  mm: exclude memoryless nodes from zone_reclaim

Nishanth Aravamudan (1):
  hugetlb: ensure hugepage access is denied if hugepages are not
    supported

Raghavendra K T (1):
  mm/readahead.c: fix readahead failure for memoryless NUMA nodes and
    limit readahead pages

Sasha Levin (1):
  mm: remove read_cache_page_async()

Shaohua Li (2):
  swap: add a simple detector for inappropriate swapin readahead
  x86/mm: In the PTE swapout page reclaim case clear the accessed bit
    instead of flushing the TLB

Tim Chen (1):
  fs/superblock: avoid locking counting inodes and dentries before
    reclaiming them

Vladimir Davydov (4):
  mm: vmscan: shrink all slab objects if tight on memory
  mm: vmscan: call NUMA-unaware shrinkers irrespective of nodemask
  mm: vmscan: respect NUMA policy mask when shrinking slab on direct
    reclaim
  mm: vmscan: shrink_slab: rename max_pass -> freeable

Vlastimil Babka (8):
  mm: compaction: encapsulate defer reset logic
  mm: compaction: do not mark unmovable pageblocks as skipped in async
    compaction
  mm: compaction: reset scanner positions immediately when they meet
  mm/compaction: cleanup isolate_freepages()
  mm/compaction: do not count migratepages when unnecessary
  mm/compaction: avoid rescanning pageblocks in isolate_freepages
  mm, compaction: properly signal and act upon lock and need_sched()
    contention
  mm/page_alloc: prevent MIGRATE_RESERVE pages from being misplaced

Yasuaki Ishimatsu (1):
  mm: get rid of unnecessary pageblock scanning in
    setup_zone_migrate_reserve

 arch/tile/mm/homecache.c                 |   2 +-
 arch/unicore32/include/asm/mmu_context.h |   4 +-
 arch/x86/include/asm/tlbflush.h          |   6 +-
 arch/x86/kernel/cpu/mtrr/generic.c       |   4 +-
 arch/x86/mm/pgtable.c                    |  21 +-
 arch/x86/mm/tlb.c                        |  52 +---
 fs/btrfs/compression.c                   |   2 +-
 fs/btrfs/extent_io.c                     |  15 +-
 fs/btrfs/file.c                          |  10 +-
 fs/buffer.c                              |  28 +-
 fs/cramfs/inode.c                        |   3 +-
 fs/exec.c                                |   5 +-
 fs/ext4/mballoc.c                        |  14 +-
 fs/f2fs/checkpoint.c                     |   1 -
 fs/f2fs/node.c                           |   2 -
 fs/fuse/dev.c                            |   2 +-
 fs/fuse/file.c                           |   4 -
 fs/gfs2/aops.c                           |   1 -
 fs/gfs2/meta_io.c                        |   4 +-
 fs/hugetlbfs/inode.c                     |   5 +
 fs/jffs2/fs.c                            |   2 +-
 fs/nfs/blocklayout/blocklayout.c         |   2 +-
 fs/ntfs/attrib.c                         |   1 -
 fs/ntfs/file.c                           |   1 -
 fs/proc/task_mmu.c                       |   3 +-
 fs/super.c                               |  16 +-
 include/linux/compaction.h               |  20 +-
 include/linux/cpuset.h                   |  56 ++--
 include/linux/gfp.h                      |   4 +-
 include/linux/huge_mm.h                  |   4 -
 include/linux/hugetlb.h                  |  10 +
 include/linux/jump_label.h               |  20 +-
 include/linux/migrate.h                  |  11 +-
 include/linux/mm.h                       |  11 +-
 include/linux/mm_types.h                 |   4 +-
 include/linux/mmzone.h                   | 233 ++++++++-------
 include/linux/page-flags.h               |   6 +-
 include/linux/pageblock-flags.h          |  33 +--
 include/linux/pagemap.h                  | 131 +++++++--
 include/linux/pagevec.h                  |   5 +
 include/linux/plist.h                    |  45 +++
 include/linux/radix-tree.h               |   5 +-
 include/linux/sched.h                    |   7 +
 include/linux/shmem_fs.h                 |   1 +
 include/linux/swap.h                     |  30 +-
 include/linux/swapfile.h                 |   2 +-
 include/linux/vm_event_item.h            |   4 +-
 include/linux/vmacache.h                 |  38 +++
 include/linux/vmstat.h                   |   8 +
 include/trace/events/compaction.h        |  67 ++++-
 include/trace/events/kmem.h              |  10 +-
 include/trace/events/pagemap.h           |  16 +-
 kernel/cpuset.c                          |  16 +-
 kernel/debug/debug_core.c                |  14 +-
 kernel/fork.c                            |   7 +-
 lib/plist.c                              |  52 ++++
 lib/radix-tree.c                         | 106 ++-----
 mm/Makefile                              |   2 +-
 mm/compaction.c                          | 347 +++++++++++++----------
 mm/filemap.c                             | 470 +++++++++++++++++++++----------
 mm/fremap.c                              |  28 +-
 mm/frontswap.c                           |  13 +-
 mm/huge_memory.c                         |  93 ++++--
 mm/hugetlb.c                             |  17 +-
 mm/internal.h                            |  22 +-
 mm/madvise.c                             |   2 +-
 mm/memory-failure.c                      |   4 +-
 mm/memory.c                              |   4 +-
 mm/memory_hotplug.c                      |   2 +-
 mm/mempolicy.c                           |  16 +-
 mm/migrate.c                             |  56 ++--
 mm/mincore.c                             |  20 +-
 mm/mmap.c                                |  55 ++--
 mm/nommu.c                               |  24 +-
 mm/page_alloc.c                          | 439 ++++++++++++++++-------------
 mm/readahead.c                           |  37 +--
 mm/shmem.c                               | 133 +++------
 mm/slab.c                                |  12 +-
 mm/slub.c                                |  16 +-
 mm/swap.c                                | 101 ++++++-
 mm/swap_state.c                          |  65 ++++-
 mm/swapfile.c                            | 224 ++++++++-------
 mm/truncate.c                            |  74 ++++-
 mm/vmacache.c                            | 114 ++++++++
 mm/vmalloc.c                             |   6 +-
 mm/vmscan.c                              | 144 ++++++----
 mm/vmstat.c                              |  13 +-
 87 files changed, 2374 insertions(+), 1365 deletions(-)
 create mode 100644 include/linux/vmacache.h
 create mode 100644 mm/vmacache.c

-- 
1.8.4.5

--
To unsubscribe from this list: send the line "unsubscribe stable" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html




[Index of Archives]     [Linux Kernel]     [Kernel Development Newbies]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Yosemite Hiking]     [Linux Kernel]     [Linux SCSI]