mirror of
https://mirrors.bfsu.edu.cn/git/linux.git
synced 2024-11-27 14:14:24 +08:00
95139d9408
Both Ryan and Chris have been utilizing the small test program to aid in debugging and identifying issues with swap entry allocation. While a real or intricate workload might be more suitable for assessing the correctness and effectiveness of the swap allocation policy, a small test program presents a simpler means of understanding the problem and initially verifying the improvements being made. Let's endeavor to integrate it into tools/mm. Although it presently only accommodates 64KB and 4KB, I'm optimistic that we can expand its capabilities to support multiple sizes and simulate more complex systems in the future as required. Basically, we have 1. Use MADV_PAGEPUT for rapid swap-out, putting the swap allocation code under high exercise in a short time. 2. Use MADV_DONTNEED to simulate the behavior of libc and Java heap in freeing memory, as well as for munmap, app exits, or OOM killer scenarios. This ensures new mTHP is always generated, released or swapped out, similar to the behavior on a PC or Android phone where many applications are frequently started and terminated. 3. Swap in with or without the "-a" option to observe how fragments due to swap-in and the incoming swap-in of large folios will impact swap-out fallback. Due to 2, we ensure a certain proportion of mTHP. Similarly, because of 3, we maintain a certain proportion of small folios, as we don't support large folios swap-in, meaning any swap-in will immediately result in small folios. Therefore, with both 2 and 3, we automatically achieve a system containing both mTHP and small folios. Additionally, 1 provides the ability to continuously swap them out. We can also use "-s" to add a dedicated small folios memory area. [akpm@linux-foundation.org: thp_swap_allocator_test.c needs mman.h, per Kairui Song] Link: https://lkml.kernel.org/r/20240622071231.576056-2-21cnbao@gmail.com Signed-off-by: Barry Song <v-songbaohua@oppo.com> Acked-by: Chris Li <chrisl@kernel.org> Tested-by: Chris Li <chrisl@kernel.org> Reviewed-by: Ryan Roberts <ryan.roberts@arm.com> Tested-by: Ryan Roberts <ryan.roberts@arm.com> Cc: David Hildenbrand <david@redhat.com> Cc: "Huang, Ying" <ying.huang@intel.com> Cc: Hugh Dickins <hughd@google.com> Cc: Kairui Song <kasong@tencent.com> Cc: Kalesh Singh <kaleshsingh@google.com> Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
34 lines
666 B
Makefile
34 lines
666 B
Makefile
# SPDX-License-Identifier: GPL-2.0
|
|
# Makefile for vm tools
|
|
#
|
|
include ../scripts/Makefile.include
|
|
|
|
BUILD_TARGETS=page-types slabinfo page_owner_sort thp_swap_allocator_test
|
|
INSTALL_TARGETS = $(BUILD_TARGETS) thpmaps
|
|
|
|
LIB_DIR = ../lib/api
|
|
LIBS = $(LIB_DIR)/libapi.a
|
|
|
|
CFLAGS += -Wall -Wextra -I../lib/ -pthread
|
|
LDFLAGS += $(LIBS) -pthread
|
|
|
|
all: $(BUILD_TARGETS)
|
|
|
|
$(BUILD_TARGETS): $(LIBS)
|
|
|
|
$(LIBS):
|
|
make -C $(LIB_DIR)
|
|
|
|
%: %.c
|
|
$(CC) $(CFLAGS) -o $@ $< $(LDFLAGS)
|
|
|
|
clean:
|
|
$(RM) page-types slabinfo page_owner_sort
|
|
make -C $(LIB_DIR) clean
|
|
|
|
sbindir ?= /usr/sbin
|
|
|
|
install: all
|
|
install -d $(DESTDIR)$(sbindir)
|
|
install -m 755 -p $(INSTALL_TARGETS) $(DESTDIR)$(sbindir)
|