Re: Memory fragmentation issue related suggestion request

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

 



Hi,

You need to scribe in plain text only.


Thanks

>________________________________
> From: Adarsh Sharma <eddy.adarsh@xxxxxxxxx>
>To: PINTU KUMAR <pintu.k@xxxxxxxxxxx> 
>Cc: Ankur.Tank@xxxxxxxxxxxxxxxxxxx; linux-kernel@xxxxxxxxxxxxxxx; linux-mm@xxxxxxxxx; artfri2@xxxxxxxxx
>Sent: Monday, 12 September 2016 12:06 PM
>Subject: Re: Memory fragmentation issue related suggestion request
> 
>
>
>Hi Pintu,
>
>I am also looking for a mailing list where we can share memory related issues at kernel level. I tried subscribing to that mailing list but it says Invalid ID :
>
>>>>> --001a11436926db8726053c49ac67
>**** Command '-- 001a11436926db8726053c49ac67' not recognized.
>>>>> Content-Type: text/plain; charset=UTF-8
>**** Command 'content-type:' not recognized.
>>>>>
>>>>> subscribe linux-mm@xxxxxxxxx
>**** subscribe: unknown list 'linux-mm@xxxxxxxxx'.
>
>Thanks
>
>
>
>On Mon, Sep 12, 2016 at 11:42 AM, PINTU KUMAR <pintu.k@xxxxxxxxxxx> wrote:
>
>Dear Ankur,
>>
>>I would suggest you register to linux-mm@xxxxxxxxx and explain your issues in details.
>>There are other experts here, who can guide you.
>>
>>Few comments are inline below.
>>
>>> From: Ankur Tank [mailto:Ankur.Tank@ LntTechservices.com]
>>> Sent: Saturday, September 10, 2016 5:26 PM
>>> To: pintu.k@xxxxxxxxxxx
>>> Cc: artfri2@xxxxxxxxx
>>> Subject: Memory fragmentation issue related suggestion request
>>>
>>> Hello Pintukumar,
>>>
>>> TL;DR
>>> We have an issue in our Linux box, what looks like memory fragmentation issue,
>>> while searching on net I referred talk you gave in Embedded Linux Conf.
>>I have several talks in ELC, not sure which one you are referring to. Please point out.
>>
>>> I am facing this issue for couple of weeks so thought to ask you for suggestions.
>>> Please forgive me If I offended you by writing mail to you, Ignore mail if you feel so.
>>>
>>> Details
>>> We are facing one issue in our Embedded Linux board, Our board is Beaglebone
>>> black based custom board, with 4GB eMMC as storage. We are using Linux kernel
>>> 3.12.
>>In addition, you may need to provide the following information:
>>RAM size ?
>>cat /proc/meminfo  (before and after the operation)
>>cat /proc/buddyinfo (before and after the operation)
>>cat /proc/vmstat (before and after the operation)
>>
>>> Our firmware upgrade strategy is using backgup partition for Bootloader, Kernel,
>>> dtb, rootfs.
>>> So,
>>> During firmware upgrade with big rootfs and running dd to read the partition in raw
>>> mode.
>>> In short looks like those operations are overloading the system.
>>>
>>I am not sure, but I think this is the crude way of taking the backup.
>>This will certainly overload your system.
>>FOTA upgrade experts can give more comments here.
>>
>>> From below log looks like pages above 32KB size is not available and may be
>>> because of that rootfs tar on the emmc is failing.
>>> I have following queries in that regards,
>>>
>>> 1.       Do you think it is a memory fragmentation ?
>>Yes, if all above 32KB (2^3 order) pages are not available, and pages are available in lower orders (2^0/1/2) then its certainly fragmentation problem.
>>However, as I said, you need to provide the following output to confirm:
>>cat /proc/buddyinfo
>>
>>> May be silly to ask so but just to confirm, because I had added the software swap
>>> however with that also we were seeing issue reproducible and swap was not full at
>>> that time ☹
>>>
>>Well, adding swap should help a bit but it may not solve the problem completely.
>>How much swap did you actually allocated?
>>What kind of swap you used ?
>>Is it ZRAM/ZSWAP (with compression support) ?
>>What is the swappiness ratio ? (/proc/sys/vm/swappiness)
>>
>>> 2.       If it is so how do we handle it ? is there a some way similar to your shrinker
>>> utility to reclaim the memory pages ?
>>>
>>Not sure which shrinker utility are you referring to ?
>>Is it : /proc/sys/vm/shrink_memory ?
>>
>>> Any suggestion would help me move forward,
>>>
>>Did you tried enabling CONFIG_COMPACTION ?
>>Try using ZRAM or ZSWAP (~30% of MemTotal).
>>Try tuning : /proc/sys/vm/dirty_{ background_ratio/bytes} and others.
>>[Refer kernel/documentation for the same]
>>
>>From the logs, I observed the following:
>>> [ 6676.674219] mmcqd/1: page allocation failure: order:1, mode:0x200020
>>Order-1 allocation is failing, so pages might be sitting in order-0.
>>> [ 6676.674739]  free_cma:1982
>>You have around ~7MB of CMA free pages, so this cannot be used for non-movable allocation.
>>> [ 6676.674885] 51661 total pagecache pages
>>You have huge amount of memory sitting in caches. These can be reclaimed in back ground (with slight performance degradation).
>>To experiment and debug you can try: echo 3 > /proc/sys/vm/drop_caches
>>> [ 6676.674925] Total swap = 0kB
>>Swap is not enabled on your system.
>>
>>
>>> Regards,
>>> Ankur
>>>
>>> Error log
>>> ----------------------------
>>>
>>> [ 6676.674219] mmcqd/1: page allocation failure: order:1, mode:0x200020
>>>    [ 6676.674256] CPU: 0 PID: 612 Comm: mmcqd/1 Tainted: P           O 3.12.10-005-
>>> ts-armv7l #2
>>>     [ 6676.674321] [<c0012d24>] (unwind_backtrace+0x0/0xf4) from [<c0011130>]
>>> (show_stack+0x10/0x14)
>>>     [ 6676.674355] [<c0011130>] (show_stack+0x10/0x14) from [<c0087548>]
>>> (warn_alloc_failed+0xe0/0x118)
>>>     [ 6676.674383] [<c0087548>] (warn_alloc_failed+0xe0/0x118) from [<c008a3ac>]
>>> (__alloc_pages_nodemask+0x74c/ 0x8f8)
>>>     [ 6676.674413] [<c008a3ac>] (__alloc_pages_nodemask+0x74c/ 0x8f8) from
>>> [<c00b2e8c>] (cache_alloc_refill+0x328/ 0x620)
>>>     [ 6676.674436] [<c00b2e8c>] (cache_alloc_refill+0x328/ 0x620) from
>>> [<c00b3224>] (__kmalloc+0xa0/0xe8)
>>>     [ 6676.674471] [<c00b3224>] (__kmalloc+0xa0/0xe8) from [<c0212904>]
>>> (edma_prep_slave_sg+0x84/ 0x388)
>>>     [ 6676.674505] [<c0212904>] (edma_prep_slave_sg+0x84/ 0x388) from
>>> [<c02ec0a0>] (omap_hsmmc_request+0x414/ 0x508)
>>>     [ 6676.674544] [<c02ec0a0>] (omap_hsmmc_request+0x414/ 0x508) from
>>> [<c02d6748>] (mmc_start_request+0xc4/0xe0)
>>>     [ 6676.674568] [<c02d6748>] (mmc_start_request+0xc4/0xe0) from
>>> [<c02d7530>] (mmc_start_req+0x2d8/0x38c)
>>>     [ 6676.674589] [<c02d7530>] (mmc_start_req+0x2d8/0x38c) from [<c02e4818>]
>>> (mmc_blk_issue_rw_rq+0xb4/ 0x9d8)
>>>     [ 6676.674611] [<c02e4818>] (mmc_blk_issue_rw_rq+0xb4/ 0x9d8) from
>>> [<c02e52e0>] (mmc_blk_issue_rq+0x1a4/0x468)
>>>     [ 6676.674631] [<c02e52e0>] (mmc_blk_issue_rq+0x1a4/0x468) from
>>> [<c02e5c68>] (mmc_queue_thread+0x88/0x118)
>>>     [ 6676.674657] [<c02e5c68>] (mmc_queue_thread+0x88/0x118) from
>>> [<c004d8b8>] (kthread+0xb4/0xb8)
>>>     [ 6676.674681] [<c004d8b8>] (kthread+0xb4/0xb8) from [<c000e298>]
>>> (ret_from_fork+0x14/0x3c)
>>>     [ 6676.674691] Mem-info:
>>>     [ 6676.674700] Normal per-cpu:
>>>     [ 6676.674711] CPU    0: hi:   90, btch:  15 usd:  79
>>>     [ 6676.674739] active_anon:4889 inactive_anon:13 isolated_anon:0
>>>     [ 6676.674739]  active_file:8082 inactive_file:43196 isolated_file:0
>>>     [ 6676.674739]  unevictable:422 dirty:2 writeback:1152 unstable:0
>>>     [ 6676.674739]  free:3286 slab_reclaimable:1090 slab_unreclaimable:915
>>>     [ 6676.674739]  mapped:1593 shmem:39 pagetables:181 bounce:0
>>>     [ 6676.674739]  free_cma:1982
>>>     [ 6676.674800] Normal free:13144kB min:2004kB low:2504kB high:3004kB
>>> active_anon:19556kB inactive_anon:52kB active_file:32328kB
>>> inactive_file:172784kB unevictable:o
>>>     [ 6676.674813] lowmem_reserve[]: 0 0 0
>>>     [ 6676.674831] Normal: 2584*4kB (UMC) 217*8kB (C) 57*16kB (C) 5*32kB (C)
>>> 0*64kB 0*128kB 0*256kB 0*512kB 0*1024kB 0*2048kB 0*4096kB 0*8192kB =
>>> 13144kB
>>>     [ 6676.674885] 51661 total pagecache pages
>>>     [ 6676.674900] 0 pages in swap cache
>>>     [ 6676.674910] Swap cache stats: add 0, delete 0, find 0/0
>>>     [ 6676.674918] Free swap  = 0kB
>>>     [ 6676.674925] Total swap = 0kB
>>>     [ 6676.674938] SLAB: Unable to allocate memory on node 0 (gfp=0x20)
>>>     [ 6676.674949]   cache: kmalloc-8192, object size: 8192, order: 1
>>>     [ 6676.674962]   node 0: slabs: 3/3, objs: 3/3, free: 0
>>>     [ 6676.674984] omap_hsmmc 481d8000.mmc: prep_slave_sg() failed
>>>     [ 6676.674997] omap_hsmmc 481d8000.mmc: MMC start dma failure
>>>     [ 6676.676181] mmcblk0: unknown error -1 sending read/write command, card
>>> status 0x900
>>>     [ 6676.676300] end_request: I/O error, dev mmcblk0, sector 27648
>>>     [ 6676.676318] Buffer I/O error on device mmcblk0p9, logical block 896
>>>     [ 6676.676329] lost page write due to I/O error on mmcblk0p9
>>>     [ 6676.676401] end_request: I/O error, dev mmcblk0, sector 27656
>>>     [ 6676.676415] Buffer I/O error on device mmcblk0p9, logical block 897
>>>     [ 6676.676425] lost page write due to I/O error on mmcblk0p9
>>>     [ 6676.676450] end_request: I/O error, dev mmcblk0, sector 27664
>>>     [ 6676.676461] Buffer I/O error on device mmcblk0p9, logical block 898
>>>     [ 6676.676471] lost page write due to I/O error on mmcblk0p9
>>>     [ 6676.676494] end_request: I/O error, dev mmcblk0, sector 27672
>>>     [ 6676.676505] Buffer I/O error on device mmcblk0p9, logical block 899
>>>     [ 6676.676515] lost page write due to I/O error on mmcblk0p9
>>>     [ 6676.676537] end_request: I/O error, dev mmcblk0, sector 27680
>>>     [ 6676.676548] Buffer I/O error on device mmcblk0p9, logical block 900
>>>     [ 6676.676558] lost page write due to I/O error on mmcblk0p9
>>>     [ 6676.676580] end_request: I/O error, dev mmcblk0, sector 27688
>>>     [ 6676.676591] Buffer I/O error on device mmcblk0p9, logical block 901
>>>     [ 6676.676601] lost page write due to I/O error on mmcblk0p9
>>>     [ 6676.676622] end_request: I/O error, dev mmcblk0, sector 27696
>>>     [ 6676.676634] Buffer I/O error on device mmcblk0p9, logical block 902
>>>     [ 6676.676643] lost page write due to I/O error on mmcblk0p9
>>>     [ 6676.676665] end_request: I/O error, dev mmcblk0, sector 27704
>>>     [ 6676.676676] Buffer I/O error on device mmcblk0p9, logical block 903
>>>     [ 6676.676685] lost page write due to I/O error on mmcblk0p9
>>>     [ 6676.676707] end_request: I/O error, dev mmcblk0, sector 27712
>>>     [ 6676.676718] Buffer I/O error on device mmcblk0p9, logical block 904
>>>     [ 6676.676728] lost page write due to I/O error on mmcblk0p9
>>>     [ 6676.676749] end_request: I/O error, dev mmcblk0, sector 27720
>>>     [ 6676.678266] mmcqd/1: page allocation failure: order:1, mode:0x200020
>>>     [ 6676.678285] CPU: 0 PID: 612 Comm: mmcqd/1 Tainted: P           O 3.12.10-005-
>>> ts-armv7l #2
>>>     [ 6676.678330] [<c0012d24>] (unwind_backtrace+0x0/0xf4) from [<c0011130>]
>>> (show_stack+0x10/0x14)
>>>     [ 6676.678358] [<c0011130>] (show_stack+0x10/0x14) from [<c0087548>]
>>> (warn_alloc_failed+0xe0/0x118)
>>>     [ 6676.678385] [<c0087548>] (warn_alloc_failed+0xe0/0x118) from [<c008a3ac>]
>>> (__alloc_pages_nodemask+0x74c/ 0x8f8)
>>>     [ 6676.678412] [<c008a3ac>] (__alloc_pages_nodemask+0x74c/ 0x8f8) from
>>> [<c00b2e8c>] (cache_alloc_refill+0x328/ 0x620)
>>>     [ 6676.678434] [<c00b2e8c>] (cache_alloc_refill+0x328/ 0x620) from
>>> [<c00b3224>] (__kmalloc+0xa0/0xe8)
>>>     [ 6676.678464] [<c00b3224>] (__kmalloc+0xa0/0xe8) from [<c0212904>]
>>> (edma_prep_slave_sg+0x84/ 0x388)
>>>     [ 6676.678493] [<c0212904>] (edma_prep_slave_sg+0x84/ 0x388) from
>>> [<c02ec0a0>] (omap_hsmmc_request+0x414/ 0x508)
>>>     [ 6676.678524] [<c02ec0a0>] (omap_hsmmc_request+0x414/ 0x508) from
>>> [<c02d6748>] (mmc_start_request+0xc4/0xe0)
>>>     [ 6676.678547] [<c02d6748>] (mmc_start_request+0xc4/0xe0) from
>>> [<c02d7530>] (mmc_start_req+0x2d8/0x38c)
>>>     [ 6676.678568] [<c02d7530>] (mmc_start_req+0x2d8/0x38c) from [<c02e4994>]
>>> (mmc_blk_issue_rw_rq+0x230/ 0x9d8)
>>>     [ 6676.678589] [<c02e4994>] (mmc_blk_issue_rw_rq+0x230/ 0x9d8) from
>>> [<c02e52e0>] (mmc_blk_issue_rq+0x1a4/0x468)
>>>     [ 6676.678608] [<c02e52e0>] (mmc_blk_issue_rq+0x1a4/0x468) from
>>> [<c02e5c68>] (mmc_queue_thread+0x88/0x118)
>>>     [ 6676.678632] [<c02e5c68>] (mmc_queue_thread+0x88/0x118) from
>>> [<c004d8b8>] (kthread+0xb4/0xb8)
>>>     [ 6676.678655] [<c004d8b8>] (kthread+0xb4/0xb8) from [<c000e298>]
>>> (ret_from_fork+0x14/0x3c)
>>>     [ 6676.678664] Mem-info:
>>>
>>
>>
>>
>
>
>

--
To unsubscribe, send a message with 'unsubscribe linux-mm' in
the body to majordomo@xxxxxxxxx.  For more info on Linux MM,
see: http://www.linux-mm.org/ .
Don't email: <a href



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