Re: [PATCH V2] mm/gup: Clear the LRU flag of a page before adding to LRU batch

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

 





在 2024/8/3 4:18, Chris Li 写道:
On Thu, Aug 1, 2024 at 6:56 PM Ge Yang <yangge1116@xxxxxxx> wrote:



I can't reproduce this problem, using tmpfs to compile linux.
Seems you limit the memory size used to compile linux, which leads to
OOM. May I ask why the memory size is limited to 481280kB? Do I also
need to limit the memory size to 481280kB to test?

Yes, you need to limit the cgroup memory size to force the swap
action. I am using memory.max = 470M.

I believe other values e.g. 800M can trigger it as well. The reason to
limit the memory to cause the swap action.
The goal is to intentionally overwhelm the memory load and let the
swap system do its job. The 470M is chosen to cause a lot of swap
action but not too high to cause OOM kills in normal kernels.
In another word, high enough swap pressure but not too high to bust
into OOM kill. e.g. I verify that, with your patch reverted, the
mm-stable kernel can sustain this level of swap pressure (470M)
without OOM kill.

I borrowed the 470M magic value from Hugh and verified it works with
my test system. Huge has a similar swab test up which is more
complicated than mine. It is the inspiration of my swap stress test
setup.

FYI, I am using "make -j32" on a machine with 12 cores (24
hyperthreading). My typical swap usage is about 3-5G. I set my
swapfile size to about 20G.
I am using zram or ssd as the swap backend.  Hope that helps you
reproduce the problem.

Hi Chris,

I try to construct the experiment according to your suggestions above.

Hi Ge,

Sorry to hear that you were not able to reproduce it.

High swap pressure can be triggered, but OOM can't be reproduced. The
specific steps are as follows:
root@ubuntu-server-2204:/home/yangge# cp workspace/linux/ /dev/shm/ -rf

I use a slightly different way to setup the tmpfs:

Here is section of my script:

         if ! [ -d $tmpdir ]; then
                 sudo mkdir -p $tmpdir
                 sudo mount -t tmpfs -o size=100% nodev $tmpdir
         fi

         sudo mkdir -p $cgroup
         sudo sh -c "echo $mem > $cgroup/memory.max" || echo setup
memory.max error
         sudo sh -c "echo 1 > $cgroup/memory.oom.group" || echo setup
oom.group error

Per run:

        # $workdir is under $tmpdir
         sudo rm -rf $workdir
         mkdir -p $workdir
         cd $workdir
         echo "Extracting linux tree"
         XZ_OPT='-T0 -9 –memory=75%' tar xJf $linux_src || die "xz
extract failed"

         sudo sh -c "echo $BASHPID > $cgroup/cgroup.procs"
         echo "Cleaning linux tree, setup defconfig"
         cd $workdir/linux
         make -j$NR_TASK clean
         make defconfig > /dev/null
         echo Kernel compile run $i
         /usr/bin/time -a -o $log make --silent -j$NR_TASK  || die "make failed"
>

Thanks.

root@ubuntu-server-2204:/home/yangge# sync
root@ubuntu-server-2204:/home/yangge# echo 3 > /proc/sys/vm/drop_caches
root@ubuntu-server-2204:/home/yangge# cd /sys/fs/cgroup/
root@ubuntu-server-2204:/sys/fs/cgroup/# mkdir kernel-build
root@ubuntu-server-2204:/sys/fs/cgroup/# cd kernel-build
root@ubuntu-server-2204:/sys/fs/cgroup/kernel-build# echo 470M > memory.max
root@ubuntu-server-2204:/sys/fs/cgroup/kernel-build# echo $$ > cgroup.procs
root@ubuntu-server-2204:/sys/fs/cgroup/kernel-build# cd /dev/shm/linux/
root@ubuntu-server-2204:/dev/shm/linux# make clean && make -j24

I am using make -j 32.

Your step should work.

Did you enable MGLRU in your .config file? Mine did. I attached my
config file here.


The above test didn't enable MGLRU.

When MGLRU is enabled, I can reproduce OOM very soon. The cause of triggering OOM is being analyzed.


Please help to see which step does not meet your requirements.

How many cores does your server have? I assume your RAM should be
plenty on that server.


My server has 64 cores (128 hyperthreading) and 160G of RAM.

Chris





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

  Powered by Linux