linux-mtd.lists.infradead.org archive mirror
 help / color / mirror / Atom feed
* jffs2 memory usage and OOM killer
@ 2007-05-28  7:50 Matthieu CASTET
  2007-05-30 10:01 ` Matthieu CASTET
  0 siblings, 1 reply; 3+ messages in thread
From: Matthieu CASTET @ 2007-05-28  7:50 UTC (permalink / raw)
  To: linux-mtd; +Cc: David Woodhouse

[-- Attachment #1: Type: text/plain, Size: 847 bytes --]

Hi,

On a system with 16 MB of ram  (6700KB free at the time of mounting), I
have a 50 MB jffs2 partition with a big file on it (30 MB). This file
was uploaded with xmodem, and a dump of the partition show that the
inode node are very small (128 o).


After the file was uploaded on the jffs2 partition and a reboot :

if I do a rw mount, the partition is mounted, but jffs2 memory usage
increase until it eats all the memory and the system die (see jffs2_oom1
attachement).

if I do a ro mount, the partition is mounted (use 2MB of RAM), but if I
list directory, jffs2 start to eat all memory until OOM killer is called
(see jffs2_oom attachement).


I know that jffs2 eats some memory, but I am impressed that it can eat
so much memory.


Matthieu

PS : The ML keep think that the "Message has a
suspicious header", even after several retry.




[-- Attachment #2: jffs2_oom --]
[-- Type: text/plain, Size: 15665 bytes --]

# free                                                                                                                         
              total         used         free       shared      buffers                                                        
  Mem:        13948         7168         6780            0            0                                                        
 Swap:            0            0            0                                                                                  
Total:        13948         7168         6780                                                                                  
#                                                                                                                              
#                                                                                                                              
#                                                                                                                              
#                                                                                                                              
# mount /dev/mtdblock3 /mnt/ -o ro -t jffs2                                                                                    
# free                                                                                                                         
              total         used         free       shared      buffers                                                        
  Mem:        13948         9712         4236            0            0                                                        
 Swap:            0            0            0                                                                                  
Total:        13948         9712         4236                                                                                  
# free                                                                                                                         
              total         used         free       shared      buffers                                                        
  Mem:        13948         9712         4236            0            0                                                        
 Swap:            0            0            0                                                                                  
Total:        13948         9712         4236                                                                                  
# free                                                                                                                         
              total         used         free       shared      buffers                                                        
  Mem:        13948         9712         4236            0            0                                                        
 Swap:            0            0            0                                                                                  
Total:        13948         9712         4236                                                                                  
# ls /mnt/                                                                                                                     
[   71.110000] [<c00261b0>] (dump_stack+0x0/0x14) from [<c005d444>] (out_of_memory+0x78/0x204)                                 
[   71.115000] [<c005d3cc>] (out_of_memory+0x0/0x204) from [<c005ed94>] (__alloc_pages+0x228/0x2a4)                            
[   71.125000]  r8 = 00000000  r7 = C02C6580  r6 = 000000D0  r5 = 00000000                                                     
[   71.130000]  r4 = 00000000                                                                                                  
[   71.135000] [<c005eb6c>] (__alloc_pages+0x0/0x2a4) from [<c0074b34>] (cache_alloc_refill+0x2e0/0x5a4)                       
[   71.140000] [<c0074854>] (cache_alloc_refill+0x0/0x5a4) from [<c0074848>] (kmem_cache_alloc+0x5c/0x68)                      
[   71.150000] [<c00747ec>] (kmem_cache_alloc+0x0/0x68) from [<c00c2f90>] (jffs2_alloc_tmp_dnode_info+0x1c/0x24)               
[   71.160000]  r6 = C000909C  r5 = 00000200  r4 = 75AE4D26                                                                    
[   71.165000] [<c00c2f74>] (jffs2_alloc_tmp_dnode_info+0x0/0x24) from [<c00c4ea8>] (jffs2_do_read_inode_internal+0x964/0x167c)
[   71.180000] [<c00c4544>] (jffs2_do_read_inode_internal+0x0/0x167c) from [<c00c5e78>] (jffs2_do_read_inode+0x20c/0x228)      
[   71.190000] [<c00c5c6c>] (jffs2_do_read_inode+0x0/0x228) from [<c00cd07c>] (jffs2_read_inode+0x78/0x334)                    
[   71.200000] [<c00cd004>] (jffs2_read_inode+0x0/0x334) from [<c00bfc84>] (jffs2_lookup+0x128/0x16c)                          
[   71.210000] [<c00bfb5c>] (jffs2_lookup+0x0/0x16c) from [<c007fecc>] (do_lookup+0xbc/0x184)                                  
[   71.215000] [<c007fe10>] (do_lookup+0x0/0x184) from [<c0081c14>] (__link_path_walk+0xa90/0x103c)                            
[   71.225000] [<c0081184>] (__link_path_walk+0x0/0x103c) from [<c008224c>] (link_path_walk+0x8c/0x154)                        
[   71.235000] [<c00821c0>] (link_path_walk+0x0/0x154) from [<c00827a0>] (do_path_lookup+0x2e0/0x308)                          
[   71.245000]  r8 = 00000001  r7 = C0921000  r6 = C0903EC8  r5 = 00000000                                                     
[   71.250000]  r4 = C02AD3A0                                                                                                  
[   71.255000] [<c00824c0>] (do_path_lookup+0x0/0x308) from [<c00830bc>] (__user_walk_fd+0x44/0x64)                            
[   71.260000] [<c0083078>] (__user_walk_fd+0x0/0x64) from [<c007b9c0>] (vfs_lstat_fd+0x24/0x54)                               
[   71.270000]  r7 = 000000C4  r6 = 0008387D  r5 = C0903EC8  r4 = C0903F40                                                     
[   71.275000] [<c007b99c>] (vfs_lstat_fd+0x0/0x54) from [<c007ba58>] (vfs_lstat+0x1c/0x20)                                    
[   71.285000]  r5 = BEFCB970  r4 = C0903F40                                                                                   
[   71.290000] [<c007ba3c>] (vfs_lstat+0x0/0x20) from [<c007ba7c>] (sys_lstat64+0x20/0x44)                                     
[   71.300000] [<c007ba5c>] (sys_lstat64+0x0/0x44) from [<c0021e60>] (ret_fast_syscall+0x0/0x2c)                               
[   71.305000]  r5 = 00000000  r4 = 00083878                                                                                   
[   71.310000] Mem-info:                                                                                                       
[   71.315000] DMA per-cpu:                                                                                                    
[   71.315000] CPU    0: Hot: hi:    0, btch:   1 usd:   0   Cold: hi:    0, btch:   1 usd:   0                                
[   71.320000] Active:70 inactive:0 dirty:0 writeback:0 unstable:0 free:127 slab:2331 mapped:0 pagetables:9                    
[   71.325000] DMA free:508kB min:508kB low:632kB high:760kB active:280kB inactive:0kB present:16256kB pages_scanned:504 all_us
[   71.330000] lowmem_reserve[]: 0 0                                                                                           
[   71.335000] DMA: 1*4kB 1*8kB 1*16kB 1*32kB 1*64kB 1*128kB 1*256kB 0*512kB 0*1024kB 0*2048kB 0*4096kB = 508kB                
[   71.345000] Swap cache: add 0, delete 0, find 0/0, race 0+0                                                                 
[   71.350000] Free swap  = 0kB                                                                                                
[   71.355000] Total swap = 0kB                                                                                                
[   71.355000] Free swap:            0kB                                                                                       
[   71.360000] 4096 pages of RAM                                                                                               
[   71.365000] 154 free pages                                                                                                  
[   71.365000] 1360 reserved pages                                                                                             
[   71.370000] 2331 slab pages                                                                                                 
[   71.370000] 23 pages shared                                                                                                 
[   71.375000] 0 pages swap cached                                                                                             
[   71.380000] Out of memory: kill process 709 (sh) score 29 or a child                                                        
[   71.385000] Killed process 725 (sh)                                                                                         
[   72.455000] sh: page allocation failure. order:0, mode:0xd0                                                                 
[   72.455000] [<c00261b0>] (dump_stack+0x0/0x14) from [<c005edfc>] (__alloc_pages+0x290/0x2a4)                                
[   72.465000] [<c005eb6c>] (__alloc_pages+0x0/0x2a4) from [<c0074b34>] (cache_alloc_refill+0x2e0/0x5a4)                       
[   72.470000] [<c0074854>] (cache_alloc_refill+0x0/0x5a4) from [<c0074848>] (kmem_cache_alloc+0x5c/0x68)                      
[   72.480000] [<c00747ec>] (kmem_cache_alloc+0x0/0x68) from [<c00c2ffc>] (jffs2_alloc_full_dnode+0x1c/0x24)                   
[   72.490000]  r6 = C00091D4  r5 = 00000200  r4 = 00000080                                                                    
[   72.495000] [<c00c2fe0>] (jffs2_alloc_full_dnode+0x0/0x24) from [<c00c50e0>] (jffs2_do_read_inode_internal+0xb9c/0x167c)    
[   72.505000] [<c00c4544>] (jffs2_do_read_inode_internal+0x0/0x167c) from [<c00c5e78>] (jffs2_do_read_inode+0x20c/0x228)      
[   72.520000] [<c00c5c6c>] (jffs2_do_read_inode+0x0/0x228) from [<c00cd07c>] (jffs2_read_inode+0x78/0x334)                    
[   72.530000] [<c00cd004>] (jffs2_read_inode+0x0/0x334) from [<c00bfc84>] (jffs2_lookup+0x128/0x16c)                          
[   72.535000] [<c00bfb5c>] (jffs2_lookup+0x0/0x16c) from [<c007fecc>] (do_lookup+0xbc/0x184)                                  
[   72.545000] [<c007fe10>] (do_lookup+0x0/0x184) from [<c0081c14>] (__link_path_walk+0xa90/0x103c)                            
[   72.555000] [<c0081184>] (__link_path_walk+0x0/0x103c) from [<c008224c>] (link_path_walk+0x8c/0x154)                        
[   72.565000] [<c00821c0>] (link_path_walk+0x0/0x154) from [<c00827a0>] (do_path_lookup+0x2e0/0x308)                          
[   72.575000]  r8 = 00000001  r7 = C0921000  r6 = C0903EC8  r5 = 00000000                                                     
[   72.580000]  r4 = C02AD3A0                                                                                                  
[   72.580000] [<c00824c0>] (do_path_lookup+0x0/0x308) from [<c00830bc>] (__user_walk_fd+0x44/0x64)                            
[   72.590000] [<c0083078>] (__user_walk_fd+0x0/0x64) from [<c007b9c0>] (vfs_lstat_fd+0x24/0x54)                               
[   72.600000]  r7 = 000000C4  r6 = 0008387D  r5 = C0903EC8  r4 = C0903F40                                                     
[   72.605000] [<c007b99c>] (vfs_lstat_fd+0x0/0x54) from [<c007ba58>] (vfs_lstat+0x1c/0x20)                                    
[   72.615000]  r5 = BEFCB970  r4 = C0903F40                                                                                   
[   72.620000] [<c007ba3c>] (vfs_lstat+0x0/0x20) from [<c007ba7c>] (sys_lstat64+0x20/0x44)                                     
[   72.625000] [<c007ba5c>] (sys_lstat64+0x0/0x44) from [<c0021e60>] (ret_fast_syscall+0x0/0x2c)                               
[   72.635000]  r5 = 00000000  r4 = 00083878                                                                                   
[   72.640000] Mem-info:                                                                                                       
[   72.640000] DMA per-cpu:                                                                                                    
[   72.645000] CPU    0: Hot: hi:    0, btch:   1 usd:   0   Cold: hi:    0, btch:   1 usd:   0                                
[   72.650000] Active:70 inactive:0 dirty:0 writeback:0 unstable:0 free:0 slab:2458 mapped:0 pagetables:9                      
[   72.655000] DMA free:0kB min:508kB low:632kB high:760kB active:280kB inactive:0kB present:16256kB pages_scanned:565 all_unrs
[   72.660000] lowmem_reserve[]: 0 0                                                                                           
[   72.665000] DMA: 0*4kB 0*8kB 0*16kB 0*32kB 0*64kB 0*128kB 0*256kB 0*512kB 0*1024kB 0*2048kB 0*4096kB = 0kB                  
[   72.675000] Swap cache: add 0, delete 0, find 0/0, race 0+0                                                                 
[   72.680000] Free swap  = 0kB                                                                                                
[   72.680000] Total swap = 0kB                                                                                                
[   72.685000] Free swap:            0kB                                                                                       
[   72.690000] 4096 pages of RAM                                                                                               
[   72.690000] 27 free pages                                                                                                   
[   72.695000] 1360 reserved pages                                                                                             
[   72.695000] 2458 slab pages                                                                                                 
[   72.700000] 23 pages shared                                                                                                 
[   72.705000] 0 pages swap cached                                                                                             
[   72.705000] JFFS2 error: (725) read_dnode: alloc fn failed                                                                  
[   72.970000] JFFS2 error: (725) jffs2_do_read_inode_internal: cannot read nodes for ino 2, returned error is -12             
Killed                                                                                                                         
#                                                                                                                              
# ls /mnt/                                                                                                                     
ls: /mnt/luxo-jr.mpg: Input/output error                                                                                       
# free                                                                                                                         
              total         used         free       shared      buffers                                                        
  Mem:        13948         9604         4344            0            0                                                        
 Swap:            0            0            0                                                                                  
Total:        13948         9604         4344




[-- Attachment #3: jffs2_oom1 --]
[-- Type: text/plain, Size: 8665 bytes --]

# mount /dev/mtdblock3 /mnt/ -t jffs2                                                                                          
# [ 1333.055000] sh invoked oom-killer: gfp_mask=0x201d2, order=0, oomkilladj=0                                                
[ 1333.055000] [<c00261b0>] (dump_stack+0x0/0x14) from [<c005d444>] (out_of_memory+0x78/0x204)                                 
[ 1333.060000] [<c005d3cc>] (out_of_memory+0x0/0x204) from [<c005ed94>] (__alloc_pages+0x228/0x2a4)                            
[ 1333.070000]  r8 = 00000000  r7 = C0293040  r6 = 000201D2  r5 = 00000000                                                     
[ 1333.080000] jffs2_gcd_mtd3 invoked oom-killer: gfp_mask=0xd0, order=0, oomkilladj=0                                         
[ 1333.085000] [<c00261b0>] (dump_stack+0x0/0x14) from [<c005d444>] (out_of_memory+0x78/0x204)                                 
[ 1333.095000] [<c005d3cc>] (out_of_memory+0x0/0x204) from [<c005ed94>] (__alloc_pages+0x228/0x2a4)                            
[ 1333.105000]  r8 = 00000000  r7 = C02C6040  r6 = 000000D0  r5 = 00000000                                                     
[ 1333.110000]  r4 = 00000000                                                                                                  
[ 1333.115000] [<c005eb6c>] (__alloc_pages+0x0/0x2a4) from [<c0074b34>] (cache_alloc_refill+0x2e0/0x5a4)                       
[ 1333.120000] [<c0074854>] (cache_alloc_refill+0x0/0x5a4) from [<c0074848>]  r4 = 00000000                                    
[ 1333.130000] [<c005eb6c>] (__alloc_pages+0x0/0x2a4) from [<c0060c28>] (__do_page_cache_readahead+0x104/0x2b0)                
[ 1333.140000] [<c0060b24>] (__do_page_cache_readahead+0x0/0x2b0) from [<c006116c>] (do_page_cache_readahead+0x60/0x6c)        
[ 1333.150000] [<c006110c>] (do_page_cache_readahead+0x0/0x6c) from [<c005c3fc>] (filemap_nopage+0x1a0/0x42c)                  
[ 1333.160000]  r7 = 00000003  r6 = C02B0BA0  r5 = 00000000  r4 = 00000000                                                     
[ 1333.165000] [<c005c25c>] (filemap_nopage+0x0/0x42c) from [<c00681bc>] (__handle_mm_fault+0x168/0xae8)                       
[ 1333.175000] [<c0068054>] (__handle_mm_fault+0x0/0xae8) from [<c0027c18>] (do_page_fault+0xec/0x238)                         
[ 1333.185000] [<c0027b2c>] (do_page_fault+0x0/0x238) from [<c0027e18>] (do_translation_fault+0x20/0x80)                       
[ 1333.195000] [<c0027df8>] (do_translation_fault+0x0/0x80) from [<c0027e90>] (do_PrefetchAbort+0x18/0x1c)                     
[ 1333.205000]  r5 = 0007F678  r4 = FFFFFFFF                                                                                   
[ 1333.210000] [<c0027e78>] (do_PrefetchAbort+0x0/0x1c) from [<c0021e08>] (ret_from_exception+0x0/0x10)                        
[ 1333.220000] Mem-info:                                                                                                       
[ 1333.220000] DMA per-cpu:                                                                                                    
[ 1333.225000] CPU    0: Hot: hi:    0, btch:   1 usd:   0   Cold: hi:    0, btch:   1 usd:   0                                
[ 1333.230000] (kmem_cache_alloc+0x5c/0x68)                                                                                    
[ 1333.235000] [<c00747ec>] (kmem_cache_alloc+0x0/0x68) from [<c00c2f90>] (jffs2_alloc_tmp_dnode_info+0x1c/0x24)               
[ 1333.245000]  r6 = C00094E8  r5 = 00000200  r4 = 75AE4D26                                                                    
[ 1333.250000] [<c00c2f74>] (jffs2_alloc_tmp_dnode_info+0x0/0x24) from [<c00c4ea8>] (jffs2_do_read_inode_internal+0x964/0x167c)
[ 1333.260000] [<c00c4544>] (jffs2_do_read_inode_internal+0x0/0x167c) from [<c00c5c1c>] (jffs2_do_crccheck_inode+0x5c/0xac)    
[ 1333.275000] [<c00c5bc0>] (jffs2_do_crccheck_inode+0x0/0xac) Active:56 inactive:0 dirty:0 writeback:0 unstable:0 free:127 sl6
[ 1333.285000] DMA free:508kB min:508kB low:632kB high:760kB active:224kB inactive:0kB present:16256kB pages_scanned:819 all_us
[ 1333.290000] lowmem_reserve[]: 0 0                                                                                           
[ 1333.295000] DMA: 1*4kB 1*8kB 1*16kB 1*32kB 1*64kB 1*128kB 1*256kB 0*512kB 0*1024kB 0*2048kB 0*4096kB = 508kB                
[ 1333.305000] Swap cache: add 0, delete 0, find 0/0, race 0+0                                                                 
[ 1333.310000] Free swap  = 0kB                                                                                                
[ 1333.310000] Total swap = 0kB                                                                                                
[ 1333.315000] Free swap:            0kB                                                                                       
[ 1333.320000] 4096 pages of RAM                                                                                               
[ 1333.320000] 151 free pages                                                                                                  
[ 1333.325000] 1360 reserved pages                                                                                             
[ 1333.325000] 2321 slab pages                                                                                                 
[ 1333.330000] 0 pages shared                                                                                                  
[ 1333.335000] 0 pages swap cached                                                                                             
[ 1333.335000] Out of memory: kill process 709 (sh) score 19 or a child                                                        
[ 1333.345000] Killed process 709 (sh)                                                                                         
[ 1333.510000]  r7 = C0F8B400  r6 = 00000001  r5 = C04B2000  r4 = C0FEE560                                                     
[ 1333.510000] [<c00c942c>] (jffs2_garbage_collect_pass+0x0/0x191c) from [<c00cc020>] (jffs2_garbage_collect_thread+0x12c/0x18)
[ 1333.520000] [<c00cbef4>] (jffs2_garbage_collect_thread+0x0/0x188) from [<c0037424>] (do_exit+0x0/0x8b0)                     
[ 1333.530000]  r7 = 00000000  r6 = 00000000  r5 = 00000000  r4 = 00000000                                                     
[ 1333.535000] Mem-info:                                                                                                       
[ 1333.540000] DMA per-cpu:                                                                                                    
[ 1333.540000] CPU    0: Hot: hi:    0, btch:   1 usd:   0   Cold: hi:    0, btch:   1 usd:   0                                
[ 1333.545000] Active:21 inactive:31 dirty:0 writeback:0 unstable:0 free:165 slab:2322 mapped:0 pagetables:3                   
[ 1333.550000] DMA free:660kB min:508kB low:632kB high:760kB active:84kB inactive:124kB present:16256kB pages_scanned:0 all_uno
[ 1333.555000] lowmem_reserve[]: 0 0                                                                                           
[ 1333.660000] DMA: 7*4kB 14*8kB 2*16kB 0*32kB 0*64kB 0*128kB 0*256kB 1*512kB 0*1024kB 0*2048kB 0*4096kB = 684kB               
[ 1333.665000] Swap cache: add 0, delete 0, find 0/0, race 0+0                                                                 
[ 1333.670000] Free swap  = 0kB                                                                                                
[ 1333.670000] Total swap = 0kB                                                                                                
[ 1333.675000] Free swap:            0kB                                                                                       
[ 1333.680000] 4096 pages of RAM                                                                                               
[ 1333.680000] 191 free pages                                                                                                  
[ 1333.685000] 1360 reserved pages                                                                                             
[ 1333.685000] 2322 slab pages                                                                                                 
[ 1333.690000] 9 pages shared                                                                                                  
[ 1333.690000] 0 pages swap cached                                                                                             
[ 1333.695000] Kernel panic - not syncing: Out of memory and no killable processes...




^ permalink raw reply	[flat|nested] 3+ messages in thread

* Re: jffs2 memory usage and OOM killer
  2007-05-28  7:50 jffs2 memory usage and OOM killer Matthieu CASTET
@ 2007-05-30 10:01 ` Matthieu CASTET
  2007-05-31 12:05   ` David Woodhouse
  0 siblings, 1 reply; 3+ messages in thread
From: Matthieu CASTET @ 2007-05-30 10:01 UTC (permalink / raw)
  To: Linux mtd

Matthieu CASTET a écrit :
> Hi,
> 
> On a system with 16 MB of ram  (6700KB free at the time of mounting), I
> have a 50 MB jffs2 partition with a big file on it (30 MB). This file
> was uploaded with xmodem, and a dump of the partition show that the
> inode node are very small (128 o).
> 
> 
> After the file was uploaded on the jffs2 partition and a reboot :
> 
> if I do a rw mount, the partition is mounted, but jffs2 memory usage
> increase until it eats all the memory and the system die (see jffs2_oom1
> attachement).
> 
> if I do a ro mount, the partition is mounted (use 2MB of RAM), but if I
> list directory, jffs2 start to eat all memory until OOM killer is called
> (see jffs2_oom attachement).
> 
> 
> I know that jffs2 eats some memory, but I am impressed that it can eat
> so much memory.
> 
Using git jffs2, allow to mount the fs without OOM. Now jfss2 eats 3MB.


Matthieu

^ permalink raw reply	[flat|nested] 3+ messages in thread

* Re: jffs2 memory usage and OOM killer
  2007-05-30 10:01 ` Matthieu CASTET
@ 2007-05-31 12:05   ` David Woodhouse
  0 siblings, 0 replies; 3+ messages in thread
From: David Woodhouse @ 2007-05-31 12:05 UTC (permalink / raw)
  To: Matthieu CASTET; +Cc: Linux mtd

On Wed, 2007-05-30 at 12:01 +0200, Matthieu CASTET wrote:
> > I know that jffs2 eats some memory, but I am impressed that it can
> > eat so much memory.
>
> Using git jffs2, allow to mount the fs without OOM. Now jfss2 eats
> 3MB. 

Yeah, that sucked. We fixed it.

-- 
dwmw2

^ permalink raw reply	[flat|nested] 3+ messages in thread

end of thread, other threads:[~2007-05-31 12:05 UTC | newest]

Thread overview: 3+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2007-05-28  7:50 jffs2 memory usage and OOM killer Matthieu CASTET
2007-05-30 10:01 ` Matthieu CASTET
2007-05-31 12:05   ` David Woodhouse

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).