Bug 12135

Summary: swapper: page allocation failure, tigon3, tg3
Product: Memory Management Reporter: Samuel E. Rebollo (rebollo)
Component: Page AllocatorAssignee: Andrew Morton (akpm)
Status: REJECTED INVALID    
Severity: normal    
Priority: P1    
Hardware: All   
OS: Linux   
Kernel Version: 2.6.26.7 Subsystem:
Regression: --- Bisected commit-id:
Attachments: 'dmesg' right after booting the system, no error shown
kernel config, 2.6.26.7

Description Samuel E. Rebollo 2008-12-01 19:44:21 UTC
Latest working kernel version: unknown
Earliest failing kernel version: unknown
Distribution: gentoo 2008.0
Hardware Environment: Pentium D 3.00GHz, 2GB RAM, 1GB SWAP, two Tigon3 (BCM95721)
Software Environment: SMP PREEMPT x86_64
Problem Description: while transferring a 54GB backup (single file) through a 1Gbps link the process finish successfully but the following message shows up in 'dmesg': "swapper: page allocation failure"; if I 'swapoff -a' before the transfer nothing shows up with 'dmesg'

Steps to reproduce:
- make sure swap space is enabled ('swapon -a')
- on local PC (the one with the problem): 'nc -l -p 8888|tar vxf -'
- on remote PC (fileserver): 'cat 54GB-backup.tar|nc problematicserver 8888'
- wait fo the transfer to happen; after a while you'll get the message

--- [snip] ---
swapper: page allocation failure. order:0, mode:0x20
Pid: 0, comm: swapper Not tainted 2.6.26.7 #1

Call Trace:
 <IRQ>  [<ffffffff80256ab0>] __alloc_pages_internal+0x38b/0x3a4
 [<ffffffff8026fa41>] cache_alloc_refill+0x247/0x490
 [<ffffffff8026fd00>] __kmalloc+0x76/0xa2
 [<ffffffff805019d9>] __alloc_skb+0x56/0x11c
 [<ffffffff80502999>] __netdev_alloc_skb+0x15/0x2f
 [<ffffffff80467db6>] tg3_alloc_rx_skb+0xdd/0x18b
 [<ffffffff8046c3d2>] tg3_poll+0x3b2/0x785
 [<ffffffff80507e4e>] net_rx_action+0x69/0x12c
 [<ffffffff8022fe23>] __do_softirq+0x55/0xc4
 [<ffffffff8021acf5>] ack_apic_level+0x12/0xd5
 [<ffffffff8020c2ec>] call_softirq+0x1c/0x28
 [<ffffffff8020e2ee>] do_softirq+0x2c/0x68
 [<ffffffff8022fd16>] irq_exit+0x3f/0x50
 [<ffffffff8020e40a>] do_IRQ+0xb6/0xd4
 [<ffffffff80211618>] mwait_idle+0x0/0x44
 [<ffffffff8020b641>] ret_from_intr+0x0/0xa
 <EOI>  [<ffffffff8047bf7a>] scsi_request_fn+0x0/0x32e
 [<ffffffff80211659>] mwait_idle+0x41/0x44
 [<ffffffff80209f27>] cpu_idle+0x4c/0x88

Mem-info:
DMA per-cpu:
CPU    0: hi:    0, btch:   1 usd:   0
CPU    1: hi:    0, btch:   1 usd:   0
DMA32 per-cpu:
CPU    0: hi:  186, btch:  31 usd:  99
CPU    1: hi:  186, btch:  31 usd:  65
Active:2504 inactive:483125 dirty:28842 writeback:12612 unstable:0
 free:2533 slab:22131 mapped:984 pagetables:281 bounce:0
DMA free:8024kB min:24kB low:28kB high:36kB active:0kB inactive:560kB present:9268kB pages_scanned:0 all_unreclaimable? no
lowmem_reserve[]: 0 2003 2003 2003
DMA32 free:2108kB min:5712kB low:7140kB high:8568kB active:10016kB inactive:1931940kB present:2052064kB pages_scanned:0 all_unreclaimable? no
lowmem_reserve[]: 0 0 0 0
DMA: 302*4kB 320*8kB 11*16kB 0*32kB 0*64kB 0*128kB 0*256kB 0*512kB 0*1024kB 0*2048kB 1*4096kB = 8040kB
DMA32: 0*4kB 1*8kB 1*16kB 1*32kB 0*64kB 0*128kB 0*256kB 0*512kB 0*1024kB 1*2048kB 0*4096kB = 2104kB
484201 total pagecache pages
Swap cache: add 44, delete 44, find 0/0
Free swap  = 1060096kB
Total swap = 1060272kB
524224 pages of RAM
9529 reserved pages
486950 pages shared
0 pages swap cached
--- [/snip] ---
Comment 1 Samuel E. Rebollo 2008-12-01 19:49:18 UTC
Created attachment 19095 [details]
'dmesg' right after booting the system, no error shown
Comment 2 Andrew Morton 2008-12-01 19:50:35 UTC
yes, it's just a diagnostic warning that the network is allocating
memory faster than the VM system is reclaiming it.  Everything should
recover and run to completion.

You should be able to make the warning go away by increasing /proc/sys/vm/min_free_kbytes.
Comment 3 Samuel E. Rebollo 2008-12-01 19:53:03 UTC
Created attachment 19096 [details]
kernel config, 2.6.26.7
Comment 4 Samuel E. Rebollo 2008-12-02 18:19:44 UTC
after a fresh boot:
'cat /proc/sys/vm/min_free_kbytes' outputs something just over 5MB

did:
echo 8192>/proc/sys/vm/min_free_kbytes

then the same backup transfer over the gigabit network and now I don't get any warning message(s) and the swap space did get used (just ~220kB, but w/o any problems)

THANK YOU!, next time you come to Puerto Rico I'll buy you a couple of beers. :)