[prev in list] [next in list] [prev in thread] [next in thread]
List: linux-btrfs
Subject: Re: Deletion of snapshots with few changes (and quota enabled) consumes 2GB+ of memory
From: Simon Arlott <simon () fire ! lp0 ! eu>
Date: 2016-10-30 17:49:31
Message-ID: b26a8e63-3f34-27c3-e347-697489bff5fd () simon ! arlott ! org ! uk
[Download RAW message or body]
On 01/10/16 21:44, Simon Arlott wrote:
> I've got 32 snapshots in a 21GB subvolume with 3189 directories and
> 2077439 files. The 24 hour diff between snapshots is only about 5MB.
> The hourly diff between snapshots is about 160-320KB.
>
> When I start deleting some of the hourly snapshots, the memory usage
> goes up to at least 2GB (and then the VM runs out of memory). If I add
> additional memory it can survive but with high disk I/O and a lot of
> blocked processes.
I've tracked this down to btrfs_qgroup_prepare_account_extents, which is
running out of memory working with 239596..464222+ qgroup extent record
nodes in delayed_refs->dirty_extent_root.
When deleting snapshots for smaller subvolumes it only has to handle
4780 nodes.
Using 4.9.0-rc3 (2a26d99b251b8625d27aed14e97fc10707a3a81f) to run UML
with 256MB of memory it runs out after about 80K nodes:
[ 126.010000] btrfs_qgroup_prepare_account_extents nodes=87869/239596
[ 126.010000] btrfs-transacti invoked oom-killer: \
gfp_mask=0x2400840(GFP_NOFS|__GFP_NOFAIL), nodemask=0, order=0, oom_score_adj=0 [ \
126.010000] btrfs-transacti cpuset=/ mems_allowed=0 [ 126.010000] CPU: 0 PID: 123 \
Comm: btrfs-transacti Tainted: G W 4.9.0-rc3+ #63 [ 126.010000] Stack:
[ 126.010000] 7022b540 60071a02 7022b550 7022b760
[ 126.010000] 600a55d7 603faaa0 7022b550 602b766f
[ 126.010000] 7022b5e0 600e9b87 00000000 00000000
[ 126.010000] Call Trace:
[ 126.010000] [<600a55d7>] ? [ 126.010000] printk+0x0/0x94
[<6001c20b>] [ 126.010000] show_stack+0xdb/0x1a0
[<60071a02>] ? [ 126.010000] dump_stack_print_info+0xd2/0xf0
[<600a55d7>] ? [ 126.020000] printk+0x0/0x94
[<602b766f>] [ 126.020000] dump_stack+0x2a/0x3b
[<600e9b87>] [ 126.020000] dump_header.isra.5+0xa5/0x233
[<6002c13d>] ? [ 126.020000] set_signals+0x2d/0x50
[<600aea8a>] ? [ 126.020000] get_page_from_freelist+0x84a/0x9d0
[<600ab384>] [ 126.020000] out_of_memory.part.7+0xe4/0x3d0
[<6002c100>] ? [ 126.020000] get_signals+0x0/0x10
[<600ae150>] ? [ 126.020000] __zone_watermark_ok+0x0/0xf0
[<600aba1e>] [ 126.020000] out_of_memory+0x6e/0x100
[<600ae240>] ? [ 126.020000] get_page_from_freelist+0x0/0x9d0
[<600ae150>] ? [ 126.020000] __zone_watermark_ok+0x0/0xf0
[<600ae240>] ? [ 126.020000] get_page_from_freelist+0x0/0x9d0
[<600b00cf>] [ 126.020000] __alloc_pages_nodemask+0xe9f/0xfa0
[<600af180>] ? [ 126.020000] gfp_pfmemalloc_allowed+0x0/0xb0
[<600a7560>] ? [ 126.020000] find_get_entry+0x0/0xf0
[<600a7808>] [ 126.020000] pagecache_get_page+0xd8/0x2f0
[<601c4874>] [ 126.020000] alloc_extent_buffer+0x134/0x4a0
[<601b9180>] ? [ 126.020000] btrfs_get_token_64+0x0/0x130
[<6018f796>] [ 126.020000] read_tree_block+0x26/0x70
[<601c4be0>] ? [ 126.020000] free_extent_buffer+0x0/0xb0
[<601c4be0>] ? [ 126.020000] free_extent_buffer+0x0/0xb0
[<601681fb>] [ 126.020000] read_block_for_search.isra.16+0x17b/0x3b0
[<6016adef>] [ 126.020000] btrfs_search_slot+0x62f/0xde0
[<6016bb56>] [ 126.020000] btrfs_search_old_slot+0x5b6/0xcc0
[<600e4e8b>] ? [ 126.020000] kmem_cache_alloc+0xbb/0x150
[<60218e04>] ? [ 126.020000] ulist_alloc+0x24/0x70
[<6021510d>] [ 126.020000] __resolve_indirect_refs+0x1ad/0x980
[<600e4e8b>] ? [ 126.020000] kmem_cache_alloc+0xbb/0x150
[<60215920>] ? [ 126.020000] __add_prelim_ref.part.1+0x40/0x120
[<601c4c2b>] ? [ 126.020000] free_extent_buffer+0x4b/0xb0
[<60214970>] ? [ 126.020000] __merge_refs+0x0/0x150
[<6018f770>] ? [ 126.020000] read_tree_block+0x0/0x70
[<602166a5>] [ 126.020000] find_parent_nodes+0xca5/0x19d0
[<60216673>] ? [ 126.020000] find_parent_nodes+0xc73/0x19d0
[<601c5360>] ? [ 126.020000] read_extent_buffer+0x0/0x140
[<6002c100>] ? [ 126.020000] get_signals+0x0/0x10
[<600e5b08>] ? [ 126.020000] kfree+0x118/0x1e0
[<60217500>] ? [ 126.020000] __btrfs_find_all_roots+0x130/0x140
[<60218e04>] ? [ 126.020000] ulist_alloc+0x24/0x70
[<60215a00>] ? [ 126.020000] find_parent_nodes+0x0/0x19d0
[<60219190>] ? [ 126.020000] ulist_next+0x0/0x50
[<6021748f>] [ 126.020000] __btrfs_find_all_roots+0xbf/0x140
[<60164b29>] ? [ 126.020000] btrfs_free_path+0x39/0x50
[<60217530>] ? [ 126.020000] btrfs_find_all_roots+0x0/0x90
[<600a55d7>] ? [ 126.020000] printk+0x0/0x94
[<6021759c>] [ 126.020000] btrfs_find_all_roots+0x6c/0x90
[<6021bc6a>] [ 126.020000] btrfs_qgroup_prepare_account_extents+0xba/0x160
[<60179340>] ? [ 126.020000] btrfs_trans_release_metadata+0x0/0x90
[<6017f740>] ? [ 126.020000] btrfs_run_delayed_refs+0x0/0x390
[<60199936>] [ 126.020000] btrfs_commit_transaction.part.13+0x3f6/0xd50
[<60068790>] ? [ 126.020000] prepare_to_wait_event+0x0/0x110
[<60068300>] ? [ 126.020000] autoremove_wake_function+0x0/0x40
[<60313650>] ? [ 126.020000] mutex_lock+0x0/0x30
[<6019a2d7>] [ 126.020000] btrfs_commit_transaction+0x47/0xa0
[<60058f10>] ? [ 126.020000] kthread_should_stop+0x0/0x30
[<60193807>] [ 126.020000] transaction_kthread+0x1f7/0x210
[<60193610>] ? [ 126.020000] transaction_kthread+0x0/0x210
[<600683b0>] ? [ 126.020000] __init_waitqueue_head+0x0/0x10
[<60193610>] ? [ 126.020000] transaction_kthread+0x0/0x210
[<600683b0>] ? [ 126.020000] __init_waitqueue_head+0x0/0x10
[<600589a2>] [ 126.020000] kthread+0x112/0x140
[<6002c0ef>] ? [ 126.020000] unblock_signals+0x1f/0x30
[<6005e3a7>] ? [ 126.020000] finish_task_switch+0x57/0x160
[<60060875>] ? [ 126.020000] schedule_tail+0x15/0xc0
[<6001aaa1>] [ 126.020000] new_thread_handler+0x81/0xb0
[ 126.020000]
[ 126.020000] Mem-Info:
[ 126.020000] active_anon:124 inactive_anon:0 isolated_anon:0
[ 126.020000] active_file:1162 inactive_file:1124 isolated_file:32
[ 126.020000] unevictable:0 dirty:1028 writeback:0 unstable:0
[ 126.020000] slab_reclaimable:360 slab_unreclaimable:50575
[ 126.020000] mapped:1 shmem:0 pagetables:14 bounce:0
[ 126.020000] free:764 free_pcp:18 free_cma:0
[ 126.020000] Node 0 active_anon:496kB inactive_anon:0kB active_file:4648kB \
inactive_file:4496kB unevictable:0kB isolated(anon):0kB isolated(file):128kB \
mapped:4kB dirty:4112kB writeback:0kB shmem:0kB writeback_tmp:0kB unstable:0kB \
pages_scanned:37019 all_unreclaimable? yes [ 126.020000] Normal free:3056kB \
min:2008kB low:2508kB high:3008kB active_anon:496kB inactive_anon:0kB \
active_file:4648kB inactive_file:4496kB unevictable:0kB writepending:4112kB \
present:279180kB managed:252356kB mlocked:0kB slab_reclaimable:1440kB \
slab_unreclaimable:202300kB kernel_stack:488kB pagetables:56kB bounce:0kB \
free_pcp:72kB local_pcp:72kB free_cma:0kB [ 126.020000] lowmem_reserve[]: 0 0
[ 126.020000] Normal: 32*4kB (H) 34*8kB (H) 18*16kB (H) 14*32kB (H) 10*64kB (H) \
6*128kB (H) 2*256kB (H) 0*512kB 0*1024kB 0*2048kB 0*4096kB = 3056kB 2320 total \
pagecache pages [ 126.020000] 69795 pages RAM
[ 126.020000] 0 pages HighMem/MovableOnly
[ 126.020000] 6706 pages reserved
[ 126.020000] [ pid ] uid tgid total_vm rss nr_ptes nr_pmds swapents \
oom_score_adj name [ 126.020000] Kernel panic - not syncing: Out of memory and no \
killable processes...
--
Simon Arlott
--
To unsubscribe from this list: send the line "unsubscribe linux-btrfs" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic