Angelo G. Del Regno
24b59982a7
treewide: Backport new vmalloc for large performance benefits
...
This is a backport from Linux 5.2-rc1 of a patch series to greatly enhance vmalloc's performance
especially on embedded systems, plus all of its dependencies that were missing in kernel 4.9.
For all the informations, refer to LKML: https://lkml.org/lkml/2018/10/19/786
Brief informations:
Currently an allocation of the new VA area is done over busy list iteration until a suitable hole
is found between two busy areas. Therefore each new allocation causes the list being grown.
Due to long list and different permissive parameters an allocation can take a long time on
embedded devices(milliseconds).
This patch organizes the vmalloc memory layout into free areas of the VMALLOC_START-VMALLOC_END range.
It uses a red-black tree that keeps blocks sorted by their offsets in pair with linked list
keeping the free space in order of increasing addresses.
Quote Phoronix:
With this patch from Uladzislau Rezki, calling vmalloc() can take up to 67% less time compared
to the behavior on Linux 5.1 and prior, at least with tests done by the developer under QEMU.
Personal tests are showing that the device is more responsive when memory pressure is
high and when huge allocations are to be done, it's also noticeably faster in this case, like
when starting Chrome with more than 100 opened tabs after a system reboot (so, an
uncached complete load of it).
Shameless kanged from:
https://github.com/sonyxperiadev/kernel / Pull Request 2016
Signed-off-by: sweetyicecare <gabrielseedev@outlook.com>
Signed-off-by: Aoihara <veronicadisa6@gmail.com>
Signed-off-by: KangMamles <imzea69@gmail.com>
Signed-off-by: Sorayukii <sorayukii69@gmail.com>
2026-05-15 17:48:25 +07:00
..
libxfs
xfs: revert "xfs: fix rmap key and record comparison functions"
2020-11-24 13:03:04 +01:00
Kconfig
kmem.c
treewide: Backport new vmalloc for large performance benefits
2026-05-15 17:48:25 +07:00
kmem.h
xfs: remove kmem_zalloc_greedy
2017-10-08 10:26:11 +02:00
Makefile
xfs: introduce the CoW fork
2016-10-04 18:06:40 -07:00
mrlock.h
uuid.c
uuid.h
xfs.h
xfs_acl.c
Merge remote-tracking branch '4.9/tmp-0c058ce' into 4.9
2017-10-30 11:02:06 -07:00
xfs_acl.h
xfs: Don't clear SGID when inheriting ACLs
2017-07-27 15:08:03 -07:00
xfs_aops.c
xfs: ubsan fixes
2018-02-03 17:05:40 +01:00
xfs_aops.h
xfs: allocate delayed extents in CoW fork
2016-10-04 18:06:41 -07:00
xfs_attr.h
xfs_attr_inactive.c
xfs: reinit btree pointer on attr tree inactivation walk
2017-10-27 10:38:10 +02:00
xfs_attr_list.c
xfs_bmap_item.c
xfs: try to avoid blowing out the transaction reservation when bunmaping a shared extent
2017-09-20 08:19:57 +02:00
xfs_bmap_item.h
xfs: log bmap intent items
2016-10-04 11:05:44 -07:00
xfs_bmap_util.c
xfs: move more RT specific code under CONFIG_XFS_RT
2017-10-27 10:38:10 +02:00
xfs_bmap_util.h
xfs: move more RT specific code under CONFIG_XFS_RT
2017-10-27 10:38:10 +02:00
xfs_buf.c
Merge branch 'android-4.9-q' of https://android.googlesource.com/kernel/common into HEAD
2020-02-09 12:03:23 +00:00
xfs_buf.h
block: Get rid of blk_get_backing_dev_info()
2018-02-28 00:14:55 -08:00
xfs_buf_item.c
xfs: fix compiler warnings
2017-09-20 08:20:02 +02:00
xfs_buf_item.h
xfs: remove unnecessary dirty bli format check for ordered bufs
2017-09-20 08:20:01 +02:00
xfs_dir2_readdir.c
xfs: prevent multi-fsb dir readahead from reading random blocks
2017-06-07 12:07:51 +02:00
xfs_discard.c
Force log to disk before reading the AGF during a fstrim
2018-05-30 07:50:40 +02:00
xfs_discard.h
xfs_dquot.c
xfs: Properly retry failed dquot items in case of error during buffer writeback
2018-02-03 17:05:40 +01:00
xfs_dquot.h
xfs_dquot_item.c
xfs: Properly retry failed dquot items in case of error during buffer writeback
2018-02-03 17:05:40 +01:00
xfs_dquot_item.h
xfs_error.c
fs/xfs: Use %pS printk format for direct addresses
2017-10-27 10:38:09 +02:00
xfs_error.h
xfs: simulate per-AG reservations being critically low
2016-10-05 16:26:31 -07:00
xfs_export.c
xfs_export.h
xfs_extent_busy.c
xfs: don't fail xfs_extent_busy allocation
2017-04-08 09:30:31 +02:00
xfs_extent_busy.h
xfs_extfree_item.c
xfs_extfree_item.h
xfs_file.c
xfs: prevent creating negative-sized file via INSERT_RANGE
2018-05-09 09:50:21 +02:00
xfs_filestream.c
Merge branch 'xfs-4.9-log-recovery-fixes' into for-next
2016-10-03 09:56:28 +11:00
xfs_filestream.h
xfs_fsops.c
xfs: use the actual AG length when reserving blocks
2017-01-12 11:39:44 +01:00
xfs_fsops.h
xfs: preallocate blocks for worst-case btree expansion
2016-10-05 16:26:27 -07:00
xfs_globals.c
xfs: garbage collect old cowextsz reservations
2016-10-05 16:26:28 -07:00
xfs_icache.c
xfs: validate cached inodes are free when allocated
2020-08-21 11:01:47 +02:00
xfs_icache.h
xfs: update ag iterator to support wait on new inodes
2017-06-07 12:07:52 +02:00
xfs_icreate_item.c
xfs_icreate_item.h
xfs_inode.c
xfs: remove incorrect ASSERT in xfs_rename
2022-07-12 16:26:24 +02:00
xfs_inode.h
xfs: support ability to wait on new inodes
2017-06-07 12:07:51 +02:00
xfs_inode_item.c
xfs: Don't log uninitialised fields in inode structures
2017-10-27 10:38:09 +02:00
xfs_inode_item.h
xfs_ioctl.c
xfs: map unwritten blocks in XFS_IOC_{ALLOC,FREE}SP just like fallocate
2022-01-11 13:38:12 +01:00
xfs_ioctl.h
xfs_ioctl32.c
xfs: Fix bulkstat compat ioctls on x32 userspace.
2019-12-05 15:34:37 +01:00
xfs_ioctl32.h
xfs_iomap.c
xfs: update i_size after unwritten conversion in dio completion
2017-10-27 10:38:09 +02:00
xfs_iomap.h
xfs: update i_size after unwritten conversion in dio completion
2017-10-27 10:38:09 +02:00
xfs_iops.c
statx: Add a system call to make enhanced file info available
2025-07-10 14:15:39 -04:00
xfs_iops.h
xfs: Propagate dentry down to inode_change_ok()
2016-09-22 10:56:19 +02:00
xfs_itable.c
xfs: remove kmem_zalloc_greedy
2017-10-08 10:26:11 +02:00
xfs_itable.h
xfs_linux.h
xfs: XFS_IS_REALTIME_INODE() should be false if no rt device present
2017-09-13 14:13:37 -07:00
xfs_log.c
xfs: fix missed wakeup on l_flush_wait
2020-08-21 11:01:49 +02:00
xfs_log.h
xfs_log_cil.c
xfs_log_priv.h
xfs: rework log recovery to submit buffers on LSN boundaries
2016-09-26 08:22:16 +10:00
xfs_log_recover.c
xfs: fix log block underflow during recovery cycle verification
2017-12-20 10:07:31 +01:00
xfs_message.c
xfs_message.h
xfs_mount.c
xfs: don't leak quotacheck dquots when cow recovery
2017-09-20 08:19:59 +02:00
xfs_mount.h
xfs: detect agfl count corruption and reset agfl
2018-06-06 16:44:32 +02:00
xfs_mru_cache.c
xfs_mru_cache.h
xfs_ondisk.h
xfs: Don't log uninitialised fields in inode structures
2017-10-27 10:38:09 +02:00
xfs_pnfs.c
xfs: fix a missing unlock on error in xfs_fs_map_blocks
2020-11-18 18:26:27 +01:00
xfs_pnfs.h
xfs_qm.c
xfs: quota: check result of register_shrinker()
2018-03-03 10:23:25 +01:00
xfs_qm.h
xfs_qm_bhv.c
xfs_qm_syscalls.c
xfs: wait on new inodes during quotaoff dquot release
2017-06-07 12:07:52 +02:00
xfs_quota.h
xfs_quotaops.c
xfs: Sanity check flags of Q_XQUOTARM call
2020-01-29 10:24:00 +01:00
xfs_refcount_item.c
xfs: fix double-cleanup when CUI recovery fails
2017-01-12 11:39:44 +01:00
xfs_refcount_item.h
xfs: log refcount intent items
2016-10-03 09:11:21 -07:00
xfs_reflink.c
xfs: fix reflink quota reservation accounting error
2020-08-21 11:02:01 +02:00
xfs_reflink.h
xfs: only reclaim unwritten COW extents periodically
2017-04-08 09:30:32 +02:00
xfs_rmap_item.c
xfs: convert unwritten status of reverse mappings for shared files
2016-10-05 16:26:29 -07:00
xfs_rmap_item.h
xfs_rtalloc.c
xfs: fix realtime bitmap/summary file truncation when growing rt volume
2020-11-10 10:23:52 +01:00
xfs_rtalloc.h
xfs_stats.c
xfs: introduce refcount btree definitions
2016-10-03 09:11:16 -07:00
xfs_stats.h
xfs: introduce refcount btree definitions
2016-10-03 09:11:16 -07:00
xfs_super.c
xfs: clear sb->s_fs_info on mount failure
2019-10-17 13:42:47 -07:00
xfs_super.h
xfs: quiesce the filesystem after recovery on readonly mount
2016-09-26 08:21:44 +10:00
xfs_symlink.c
xfs_symlink.h
xfs_sysctl.c
xfs: garbage collect old cowextsz reservations
2016-10-05 16:26:28 -07:00
xfs_sysctl.h
xfs: garbage collect old cowextsz reservations
2016-10-05 16:26:28 -07:00
xfs_sysfs.c
xfs: fix max_retries _show and _store functions
2017-01-12 11:39:45 +01:00
xfs_sysfs.h
xfs: Fix UBSAN null-ptr-deref in xfs_sysfs_init
2020-08-26 10:29:05 +02:00
xfs_trace.c
xfs_trace.h
xfs: detect agfl count corruption and reset agfl
2018-06-06 16:44:32 +02:00
xfs_trans.c
xfs: xfs_trans_alloc_empty
2017-06-07 12:07:52 +02:00
xfs_trans.h
xfs: disallow marking previously dirty buffers as ordered
2017-09-20 08:20:02 +02:00
xfs_trans_ail.c
xfs: Properly retry failed inode items in case of error during buffer writeback
2017-09-20 08:20:00 +02:00
xfs_trans_bmap.c
xfs: try to avoid blowing out the transaction reservation when bunmaping a shared extent
2017-09-20 08:19:57 +02:00
xfs_trans_buf.c
xfs: disallow marking previously dirty buffers as ordered
2017-09-20 08:20:02 +02:00
xfs_trans_dquot.c
xfs: fix inode quota reservation checks
2020-08-26 10:29:05 +02:00
xfs_trans_extfree.c
xfs_trans_inode.c
fs: Replace current_fs_time() with current_time()
2016-09-27 21:06:22 -04:00
xfs_trans_priv.h
xfs: Properly retry failed inode items in case of error during buffer writeback
2017-09-20 08:20:00 +02:00
xfs_trans_refcount.c
xfs: connect refcount adjust functions to upper layers
2016-10-03 09:11:22 -07:00
xfs_trans_rmap.c
xfs: add shared rmap map/unmap/convert log item types
2016-10-05 16:26:29 -07:00
xfs_xattr.c