Re: [PATCH] mm/compaction: Reduce unnecessary loops

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

 




On 2024/1/13 3:25, Andrew Morton wrote:
On Fri, 12 Jan 2024 15:35:24 +0800 "Bang Li" <libang.li@xxxxxxxxxxxx> wrote:

Compaction will be triggered when we write 1 to '/proc/sys/vm/
compact_memory'. During the execution of the process, when we send
SIGKILL to terminate the compaction, the process does not exit
immediately. Instead, it will continue to loop through the remaining
zones and nodes before exiting.

in my environment:

[root]# cat /proc/buddyinfo
Node 0, zone      DMA      1      1      1      0      2      1      1      0      1      1      3
Node 0, zone    DMA32   1666   1123    804    625    488    356    321    278    209    178    250
Node 0, zone   Normal  58852  83160  49983   9812   2287   1229  19604  24471  10346   5219  12205
[root]# echo 1 > /sys/kernel/debug/tracing/events/compaction/mm_compaction_end/enable

before the patch:

[root]# timeout --signal=SIGKILL 0.002 bash -c 'echo 1 > /proc/sys/vm/compact_memory'
[root]# cat /sys/kernel/debug/tracing/trace_pipe
            <...>-26494   [014] .....   226.468993: mm_compaction_end: zone_start=0x1 migrate_pfn=0xe00 free_pfn=0xe00 zone_end=0x1000, mode=sync status=complete
            <...>-26494   [014] .....   226.469718: mm_compaction_end: zone_start=0x1000 migrate_pfn=0x20a80 free_pfn=0xffe00 zone_end=0x100000, mode=sync status=contended
            <...>-26494   [014] .....   226.469720: mm_compaction_end: zone_start=0x100000 migrate_pfn=0x100000 free_pfn=0x307fe00 zone_end=0x3080000, mode=sync status=contended

after the patch:

[root]# timeout --signal=SIGKILL 0.002 bash -c 'echo 1 > /proc/sys/vm/compact_memory'
[root]# cat /sys/kernel/debug/tracing/trace_pipe
            <...>-17491   [053] .....   109.005387: mm_compaction_end: zone_start=0x1 migrate_pfn=0xe00 free_pfn=0xe00 zone_end=0x1000, mode=sync status=complete
            <...>-17491   [053] .....   109.006139: mm_compaction_end: zone_start=0x1000 migrate_pfn=0x22220 free_pfn=0xffe00 zone_end=0x100000, mode=sync status=contended

Although it exits quickly after receiving the SIGKILL signal, a better
solution is to terminate the loop early after receiving the SIGKILL
signal.


What is the use case here?  The requirement?  Why is this change
valuable to anyone?

Thanks for the quick reply! I'm very sorry that my inappropriate use
case confused you. What I want to explain is that when receiving the
SIGKILL signal, we can break in advance to reduce unnecessary loops.
This is a clean up patch, the purpose is to reduce the execution of
unnecessary code. If possible, I will remove the confusing use case
in V2.

Thanks,
Bang




[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