-
Notifications
You must be signed in to change notification settings - Fork 2
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
ANDROID: reset android13-5.10-lts branch back to android13-5.10 state
The android13-5.10-lts branch was allowed to get out of sync with regards to the ABI state while some LTS releases were merged into it. In order to sort this out, and ensure that the ABI is stable, reset it back to the current state of the android13-5.10 branch as of commit 46fc349 ("ANDROID: Update the ABI representation") Bug: 161946584 Signed-off-by: Greg Kroah-Hartman <[email protected]> Change-Id: Ia1c4798fb0b80e61de81b3f0ae89c89f8c6b1c55
- Loading branch information
Showing
1,048 changed files
with
22,576 additions
and
14,080 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,7 @@ | ||
What: /sys/fs/erofs/features/ | ||
Date: November 2021 | ||
Contact: "Huang Jianan" <[email protected]> | ||
Description: Shows all enabled kernel features. | ||
Supported features: | ||
zero_padding, compr_cfgs, big_pcluster, chunked_file, | ||
device_table, compr_head2, sb_chksum. |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -55,8 +55,9 @@ Description: Controls the in-place-update policy. | |
0x04 F2FS_IPU_UTIL | ||
0x08 F2FS_IPU_SSR_UTIL | ||
0x10 F2FS_IPU_FSYNC | ||
0x20 F2FS_IPU_ASYNC, | ||
0x20 F2FS_IPU_ASYNC | ||
0x40 F2FS_IPU_NOCACHE | ||
0x80 F2FS_IPU_HONOR_OPU_WRITE | ||
==== ================= | ||
|
||
Refer segment.h for details. | ||
|
@@ -98,6 +99,33 @@ Description: Controls the issue rate of discard commands that consist of small | |
checkpoint is triggered, and issued during the checkpoint. | ||
By default, it is disabled with 0. | ||
|
||
What: /sys/fs/f2fs/<disk>/max_discard_request | ||
Date: December 2021 | ||
Contact: "Konstantin Vyshetsky" <[email protected]> | ||
Description: Controls the number of discards a thread will issue at a time. | ||
Higher number will allow the discard thread to finish its work | ||
faster, at the cost of higher latency for incomming I/O. | ||
|
||
What: /sys/fs/f2fs/<disk>/min_discard_issue_time | ||
Date: December 2021 | ||
Contact: "Konstantin Vyshetsky" <[email protected]> | ||
Description: Controls the interval the discard thread will wait between | ||
issuing discard requests when there are discards to be issued and | ||
no I/O aware interruptions occur. | ||
|
||
What: /sys/fs/f2fs/<disk>/mid_discard_issue_time | ||
Date: December 2021 | ||
Contact: "Konstantin Vyshetsky" <[email protected]> | ||
Description: Controls the interval the discard thread will wait between | ||
issuing discard requests when there are discards to be issued and | ||
an I/O aware interruption occurs. | ||
|
||
What: /sys/fs/f2fs/<disk>/max_discard_issue_time | ||
Date: December 2021 | ||
Contact: "Konstantin Vyshetsky" <[email protected]> | ||
Description: Controls the interval the discard thread will wait when there are | ||
no discard operations to be issued. | ||
|
||
What: /sys/fs/f2fs/<disk>/discard_granularity | ||
Date: July 2017 | ||
Contact: "Chao Yu" <[email protected]> | ||
|
@@ -269,11 +297,16 @@ Description: Shows current reserved blocks in system, it may be temporarily | |
What: /sys/fs/f2fs/<disk>/gc_urgent | ||
Date: August 2017 | ||
Contact: "Jaegeuk Kim" <[email protected]> | ||
Description: Do background GC agressively when set. When gc_urgent = 1, | ||
background thread starts to do GC by given gc_urgent_sleep_time | ||
interval. When gc_urgent = 2, F2FS will lower the bar of | ||
checking idle in order to process outstanding discard commands | ||
and GC a little bit aggressively. It is set to 0 by default. | ||
Description: Do background GC aggressively when set. Set to 0 by default. | ||
gc urgent high(1): does GC forcibly in a period of given | ||
gc_urgent_sleep_time and ignores I/O idling check. uses greedy | ||
GC approach and turns SSR mode on. | ||
gc urgent low(2): lowers the bar of checking I/O idling in | ||
order to process outstanding discard commands and GC a | ||
little bit aggressively. uses cost benefit GC approach. | ||
gc urgent mid(3): does GC forcibly in a period of given | ||
gc_urgent_sleep_time and executes a mid level of I/O idling check. | ||
uses cost benefit GC approach. | ||
|
||
What: /sys/fs/f2fs/<disk>/gc_urgent_sleep_time | ||
Date: August 2017 | ||
|
@@ -430,6 +463,7 @@ Description: Show status of f2fs superblock in real time. | |
0x800 SBI_QUOTA_SKIP_FLUSH skip flushing quota in current CP | ||
0x1000 SBI_QUOTA_NEED_REPAIR quota file may be corrupted | ||
0x2000 SBI_IS_RESIZEFS resizefs is in process | ||
0x4000 SBI_IS_FREEZING freefs is in process | ||
====== ===================== ================================= | ||
|
||
What: /sys/fs/f2fs/<disk>/ckpt_thread_ioprio | ||
|
@@ -503,7 +537,7 @@ Date: July 2021 | |
Contact: "Daeho Jeong" <[email protected]> | ||
Description: Show how many segments have been reclaimed by GC during a specific | ||
GC mode (0: GC normal, 1: GC idle CB, 2: GC idle greedy, | ||
3: GC idle AT, 4: GC urgent high, 5: GC urgent low) | ||
3: GC idle AT, 4: GC urgent high, 5: GC urgent low 6: GC urgent mid) | ||
You can re-initialize this value to "0". | ||
|
||
What: /sys/fs/f2fs/<disk>/gc_segment_mode | ||
|
@@ -540,3 +574,9 @@ Contact: "Daeho Jeong" <[email protected]> | |
Description: You can set the trial count limit for GC urgent high mode with this value. | ||
If GC thread gets to the limit, the mode will turn back to GC normal mode. | ||
By default, the value is zero, which means there is no limit like before. | ||
|
||
What: /sys/fs/f2fs/<disk>/max_roll_forward_node_blocks | ||
Date: January 2022 | ||
Contact: "Jaegeuk Kim" <[email protected]> | ||
Description: Controls max # of node block writes to be used for roll forward | ||
recovery. This can limit the roll forward recovery time. |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,152 @@ | ||
.. SPDX-License-Identifier: GPL-2.0 | ||
============= | ||
Multi-Gen LRU | ||
============= | ||
The multi-gen LRU is an alternative LRU implementation that optimizes | ||
page reclaim and improves performance under memory pressure. Page | ||
reclaim decides the kernel's caching policy and ability to overcommit | ||
memory. It directly impacts the kswapd CPU usage and RAM efficiency. | ||
|
||
Quick start | ||
=========== | ||
Build the kernel with the following configurations. | ||
|
||
* ``CONFIG_LRU_GEN=y`` | ||
* ``CONFIG_LRU_GEN_ENABLED=y`` | ||
|
||
All set! | ||
|
||
Runtime options | ||
=============== | ||
``/sys/kernel/mm/lru_gen/`` contains stable ABIs described in the | ||
following subsections. | ||
|
||
Kill switch | ||
----------- | ||
``enable`` accepts different values to enable or disable the following | ||
components. Its default value depends on ``CONFIG_LRU_GEN_ENABLED``. | ||
All the components should be enabled unless some of them have | ||
unforeseen side effects. Writing to ``enable`` has no effect when a | ||
component is not supported by the hardware, and valid values will be | ||
accepted even when the main switch is off. | ||
|
||
====== =============================================================== | ||
Values Components | ||
====== =============================================================== | ||
0x0001 The main switch for the multi-gen LRU. | ||
0x0002 Clearing the accessed bit in leaf page table entries in large | ||
batches, when MMU sets it (e.g., on x86). This behavior can | ||
theoretically worsen lock contention (mmap_lock). If it is | ||
disabled, the multi-gen LRU will suffer a minor performance | ||
degradation. | ||
0x0004 Clearing the accessed bit in non-leaf page table entries as | ||
well, when MMU sets it (e.g., on x86). This behavior was not | ||
verified on x86 varieties other than Intel and AMD. If it is | ||
disabled, the multi-gen LRU will suffer a negligible | ||
performance degradation. | ||
[yYnN] Apply to all the components above. | ||
====== =============================================================== | ||
|
||
E.g., | ||
:: | ||
|
||
echo y >/sys/kernel/mm/lru_gen/enabled | ||
cat /sys/kernel/mm/lru_gen/enabled | ||
0x0007 | ||
echo 5 >/sys/kernel/mm/lru_gen/enabled | ||
cat /sys/kernel/mm/lru_gen/enabled | ||
0x0005 | ||
|
||
Thrashing prevention | ||
-------------------- | ||
Personal computers are more sensitive to thrashing because it can | ||
cause janks (lags when rendering UI) and negatively impact user | ||
experience. The multi-gen LRU offers thrashing prevention to the | ||
majority of laptop and desktop users who do not have ``oomd``. | ||
|
||
Users can write ``N`` to ``min_ttl_ms`` to prevent the working set of | ||
``N`` milliseconds from getting evicted. The OOM killer is triggered | ||
if this working set cannot be kept in memory. In other words, this | ||
option works as an adjustable pressure relief valve, and when open, it | ||
terminates applications that are hopefully not being used. | ||
|
||
Based on the average human detectable lag (~100ms), ``N=1000`` usually | ||
eliminates intolerable janks due to thrashing. Larger values like | ||
``N=3000`` make janks less noticeable at the risk of premature OOM | ||
kills. | ||
|
||
The default value ``0`` means disabled. | ||
|
||
Experimental features | ||
===================== | ||
``/sys/kernel/debug/lru_gen`` accepts commands described in the | ||
following subsections. Multiple command lines are supported, so does | ||
concatenation with delimiters ``,`` and ``;``. | ||
|
||
``/sys/kernel/debug/lru_gen_full`` provides additional stats for | ||
debugging. ``CONFIG_LRU_GEN_STATS=y`` keeps historical stats from | ||
evicted generations in this file. | ||
|
||
Working set estimation | ||
---------------------- | ||
Working set estimation measures how much memory an application | ||
requires in a given time interval, and it is usually done with little | ||
impact on the performance of the application. E.g., data centers want | ||
to optimize job scheduling (bin packing) to improve memory | ||
utilizations. When a new job comes in, the job scheduler needs to find | ||
out whether each server it manages can allocate a certain amount of | ||
memory for this new job before it can pick a candidate. To do so, this | ||
job scheduler needs to estimate the working sets of the existing jobs. | ||
|
||
When it is read, ``lru_gen`` returns a histogram of numbers of pages | ||
accessed over different time intervals for each memcg and node. | ||
``MAX_NR_GENS`` decides the number of bins for each histogram. | ||
:: | ||
|
||
memcg memcg_id memcg_path | ||
node node_id | ||
min_gen_nr age_in_ms nr_anon_pages nr_file_pages | ||
... | ||
max_gen_nr age_in_ms nr_anon_pages nr_file_pages | ||
|
||
Each generation contains an estimated number of pages that have been | ||
accessed within ``age_in_ms`` non-cumulatively. E.g., ``min_gen_nr`` | ||
contains the coldest pages and ``max_gen_nr`` contains the hottest | ||
pages, since ``age_in_ms`` of the former is the largest and that of | ||
the latter is the smallest. | ||
|
||
Users can write ``+ memcg_id node_id max_gen_nr | ||
[can_swap[full_scan]]`` to ``lru_gen`` to create a new generation | ||
``max_gen_nr+1``. ``can_swap`` defaults to the swap setting and, if it | ||
is set to ``1``, it forces the scan of anon pages when swap is off. | ||
``full_scan`` defaults to ``1`` and, if it is set to ``0``, it reduces | ||
the overhead as well as the coverage when scanning page tables. | ||
|
||
A typical use case is that a job scheduler writes to ``lru_gen`` at a | ||
certain time interval to create new generations, and it ranks the | ||
servers it manages based on the sizes of their cold memory defined by | ||
this time interval. | ||
|
||
Proactive reclaim | ||
----------------- | ||
Proactive reclaim induces memory reclaim when there is no memory | ||
pressure and usually targets cold memory only. E.g., when a new job | ||
comes in, the job scheduler wants to proactively reclaim memory on the | ||
server it has selected to improve the chance of successfully landing | ||
this new job. | ||
|
||
Users can write ``- memcg_id node_id min_gen_nr [swappiness | ||
[nr_to_reclaim]]`` to ``lru_gen`` to evict generations less than or | ||
equal to ``min_gen_nr``. Note that ``min_gen_nr`` should be less than | ||
``max_gen_nr-1`` as ``max_gen_nr`` and ``max_gen_nr-1`` are not fully | ||
aged and therefore cannot be evicted. ``swappiness`` overrides the | ||
default value in ``/proc/sys/vm/swappiness``. ``nr_to_reclaim`` limits | ||
the number of pages to evict. | ||
|
||
A typical use case is that a job scheduler writes to ``lru_gen`` | ||
before it tries to land a new job on a server, and if it fails to | ||
materialize the cold memory without impacting the existing jobs on | ||
this server, it retries on the next server according to the ranking | ||
result obtained from the working set estimation step described | ||
earlier. |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.