linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* Problem: Out of memory after 2days with 2GB RAM
@ 2008-06-12 10:07 Zdenek Kabelac
  2008-06-12 13:38 ` Rik van Riel
  2008-06-13 14:08 ` Rafael J. Wysocki
  0 siblings, 2 replies; 27+ messages in thread
From: Zdenek Kabelac @ 2008-06-12 10:07 UTC (permalink / raw)
  To: Linux Kernel Mailing List; +Cc: riel

Hello

I'm attaching a trace where my machine has got into big troubles after
2 day usage and several successful suspend/resumes (this seems to be
finally getting better now :))

It looks like while there was a huge amount of buffers and caches -
system was unable to allocate few pages for kmalloc in iwl3945 driver
after resume.

I've even tried to 3 > drop_cache  and reinsert iwl driver - but this
had fatal results - machine died completely with blinking caps lock -
and no oops in the log for this case:

This is the commit aab2545fdd6641b76af0ae96456c4ca9d1e50dad  for the
2.6.26-rc5 I've been in this case.
Machine is T61/2GB/C2D

I'm attaching also slabinfo in case it would be usable for something.

NetworkManager: <info>  (eth0): device state change: 1 -> 2
NetworkManager: <info>  (eth0): preparing device.
NetworkManager: <info>  (eth0): deactivating device.
<6>[53906.520363] ACPI: PCI Interrupt 0000:03:00.0[A] -> GSI 17
(level, low) -> IRQ 17
NetworkManager: <info>  (wlan0): device state change: 1 -> 2
NetworkManager: <info>  (wlan0): bringing up device.
<4>[53906.578855] NetworkManager: page allocation failure. order:5, mode:0x1024
<4>[53906.578855] Pid: 2645, comm: NetworkManager Tainted: G        W
2.6.26-rc5 #33
<4>[53906.578855]
<4>[53906.578855] Call Trace:
<4>[53906.578855]  [<ffffffff81092c70>] __alloc_pages_internal+0x460/0x590
<4>[53906.578855]  [<ffffffffa01a87f8>] ?
:iwl3945:iwl3945_hw_tx_queue_init+0x38/0x1a0
<4>[53906.578855]  [<ffffffff81092dbb>] __alloc_pages+0xb/0x10
<4>[53906.578855]  [<ffffffff81011c26>] dma_alloc_pages+0x26/0x30
<4>[53906.578855]  [<ffffffff81011cf3>] dma_alloc_coherent+0xc3/0x2a0
<4>[53906.578855]  [<ffffffffa01a73c3>]
:iwl3945:iwl3945_tx_queue_init+0x63/0x1e0
<4>[53906.578855]  [<ffffffffa01aa06e>] :iwl3945:iwl3945_hw_nic_init+0x8de/0x940
<4>[53906.578855]  [<ffffffffa019de01>] :iwl3945:__iwl3945_up+0x91/0x640
<4>[53906.578855]  [<ffffffffa019e968>] :iwl3945:iwl3945_mac_start+0x568/0x790
<4>[53906.578855]  [<ffffffff8128a67d>] ? __nla_put+0x2d/0x40
<4>[53906.578855]  [<ffffffff8128a633>] ? __nla_reserve+0x53/0x70
<4>[53906.578855]  [<ffffffff8128a67d>] ? __nla_put+0x2d/0x40
<4>[53906.578855]  [<ffffffffa0166def>] :mac80211:ieee80211_open+0x13f/0x590
<4>[53906.578855]  [<ffffffff81273b48>] ? dev_set_rx_mode+0x48/0x60
<4>[53906.578855]  [<ffffffff81275b99>] dev_open+0x89/0xf0
<4>[53906.578855]  [<ffffffff812753c1>] dev_change_flags+0xa1/0x1e0
<4>[53906.578855]  [<ffffffff812730b9>] ? dev_get_by_index+0x19/0x80
<4>[53906.578855]  [<ffffffff8127e59c>] do_setlink+0x20c/0x3a0
<4>[53906.578855]  [<ffffffff812f5cc0>] ? _read_unlock+0x30/0x60
<4>[53906.578855]  [<ffffffff8127e83d>] rtnl_setlink+0x10d/0x150
<4>[53906.578855]  [<ffffffff8127fa2d>] rtnetlink_rcv_msg+0x18d/0x240
<4>[53906.578855]  [<ffffffff8127f8a0>] ? rtnetlink_rcv_msg+0x0/0x240
<4>[53906.578855]  [<ffffffff8128a3e9>] netlink_rcv_skb+0x89/0xb0
<4>[53906.578855]  [<ffffffff8127f889>] rtnetlink_rcv+0x29/0x40
<4>[53906.578855]  [<ffffffff81289e05>] netlink_unicast+0x2d5/0x2f0
<4>[53906.578855]  [<ffffffff8126e38e>] ? __alloc_skb+0x6e/0x150
<4>[53906.578855]  [<ffffffff8128a024>] netlink_sendmsg+0x204/0x300
<4>[53906.578855]  [<ffffffff812f5cc0>] ? _read_unlock+0x30/0x60
<4>[53906.578855]  [<ffffffff81265ca7>] sock_sendmsg+0x127/0x140
<4>[53906.578855]  [<ffffffff81265b09>] ? sock_recvmsg+0x139/0x150
<4>[53906.578855]  [<ffffffff810529d0>] ? autoremove_wake_function+0x0/0x40
<4>[53906.578855]  [<ffffffff812f5e70>] ? _spin_unlock+0x30/0x60
<4>[53906.578855]  [<ffffffff8117bb4a>] ? __up_read+0x2a/0xb0
<4>[53906.578855]  [<ffffffff81266a47>] ? move_addr_to_kernel+0x57/0x60
<4>[53906.578855]  [<ffffffff8126f39c>] ? verify_iovec+0x3c/0xd0
<4>[53906.578855]  [<ffffffff81265e49>] sys_sendmsg+0x189/0x320
<4>[53906.578855]  [<ffffffff81266b4d>] ? sys_sendto+0xfd/0x120
<4>[53906.578855]  [<ffffffff812f5759>] ? trace_hardirqs_on_thunk+0x35/0x3a
<4>[53906.578855]  [<ffffffff8100c50b>] system_call_after_swapgs+0x7b/0x80
<4>[53906.578855]
<6>[53906.578855] Mem-info:
<4>[53906.578855] DMA per-cpu:
<4>[53906.578855] CPU    0: hi:    0, btch:   1 usd:   0
<4>[53906.578855] CPU    1: hi:    0, btch:   1 usd:   0
<4>[53906.578855] DMA32 per-cpu:
<4>[53906.578855] CPU    0: hi:  186, btch:  31 usd:   0
<4>[53906.578855] CPU    1: hi:  186, btch:  31 usd:   0
<4>[53906.578855] Active:231839 inactive:178871 dirty:65 writeback:0 unstable:0
<4>[53906.578855]  free:5997 slab:45072 mapped:27835 pagetables:7405 bounce:0
<4>[53906.578855] DMA free:7896kB min:40kB low:48kB high:60kB
active:308kB inactive:0kB present:15176kB pages_scanned:0
all_unreclaimable? no
<4>[53906.578855] lowmem_reserve[]: 0 1959 1959 1959
<4>[53906.578855] DMA32 free:16092kB min:5640kB low:7048kB high:8460kB
active:927048kB inactive:715484kB present:2006684kB pages_scanned:0
all_unreclaimable? no
<4>[53906.578855] lowmem_reserve[]: 0 0 0 0
<4>[53906.578855] DMA: 86*4kB 112*8kB 148*16kB 38*32kB 0*64kB 0*128kB
0*256kB 0*512kB 1*1024kB 1*2048kB 0*4096kB = 7896kB
<4>[53906.578855] DMA32: 2690*4kB 369*8kB 56*16kB 30*32kB 6*64kB
1*128kB 0*256kB 0*512kB 0*1024kB 0*2048kB 0*4096kB = 16080kB
<4>[53906.578855] 253872 total pagecache pages
<4>[53906.578855] Swap cache: add 98, delete 80, find 18/21
<4>[53906.578855] Free swap  = 1019784kB
<4>[53906.578855] Total swap = 1020088kB
<6>[53906.590046] 517808 pages of RAM
<6>[53906.590154] 17084 reserved pages
<6>[53906.590212] 240951 pages shared
<6>[53906.590214] 18 pages swap cached
<3>[53906.590216] iwl3945: Tx 3 queue init failed
<3>[53906.591272] iwl3945: Unable to int nic
<6>[53906.591272] ACPI: PCI interrupt for device 0000:03:00.0 disabled
NetworkManager: <WARN>  nm_device_hw_bring_up(): (wlan0): device not
up after timeout!
NetworkManager: <info>  (wlan0): deactivating device.
NetworkManager: <info>  (wlan0): device state change: 2 -> 3
dhclient: failed to set close-on-exec for /var/lib/dhclient/dhclient-eth0.leases
dhclient: DHCPREQUEST on eth0 to 255.255.255.255 port 67
dhclient: DHCPREQUEST on eth0 to 255.255.255.255 port 67
dhclient: DHCPDISCOVER on eth0 to 255.255.255.255 port 67 interval 5
dhclient: DHCPDISCOVER on eth0 to 255.255.255.255 port 67 interval 5
dhclient: DHCPDISCOVER on eth0 to 255.255.255.255 port 67 interval 11
dhclient: DHCPDISCOVER on eth0 to 255.255.255.255 port 67 interval 11
dhclient: DHCPDISCOVER on eth0 to 255.255.255.255 port 67 interval 11
dhclient: DHCPDISCOVER on eth0 to 255.255.255.255 port 67 interval 8
dhclient: DHCPDISCOVER on eth0 to 255.255.255.255 port 67 interval 8
dhclient: DHCPDISCOVER on eth0 to 255.255.255.255 port 67 interval 2
dhclient: No DHCPOFFERS received.
dhclient: Trying recorded lease 10.34.33.220
<6>[54165.922893] input: Virtual ThinkFinger Keyboard as
/devices/virtual/input/input29
<6>[54262.400055] input: Virtual ThinkFinger Keyboard as
/devices/virtual/input/input30
NetworkManager: <info>  (wlan0): now unmanaged
NetworkManager: <info>  (wlan0): device state change: 3 -> 1
<6>[54270.420036] iwl3945: Intel(R) PRO/Wireless 3945ABG/BG Network
Connection driver for Linux, 1.2.26ks
<6>[54270.420036] iwl3945: Copyright(c) 2003-2008 Intel Corporation
<6>[54270.423408] ACPI: PCI Interrupt 0000:03:00.0[A] -> GSI 17
(level, low) -> IRQ 17
<6>[54270.423408] iwl3945: Detected Intel Wireless WiFi Link 3945ABG
<6>[54270.470310] iwl3945: Tunable channels: 13 802.11bg, 23 802.11a channels
<6>[54270.593997] ACPI: PCI Interrupt 0000:03:00.0[A] -> GSI 17
(level, low) -> IRQ 17
<6>[54270.595114] firmware: requesting iwlwifi-3945-1.ucode
<4>[54270.698079] ip: page allocation failure. order:4, mode:0x40d0
<4>[54270.698094] Pid: 8712, comm: ip Tainted: G        W 2.6.26-rc5 #33
<4>[54270.698098]
<4>[54270.698099] Call Trace:
<4>[54270.698114]  [<ffffffff81092c70>] __alloc_pages_internal+0x460/0x590
<4>[54270.698132]  [<ffffffff81092dbb>] __alloc_pages+0xb/0x10
<4>[54270.698138]  [<ffffffff81092e3c>] __get_free_pages+0x1c/0x60
<4>[54270.698153]  [<ffffffffa01a73f9>]
:iwl3945:iwl3945_tx_queue_init+0x99/0x1e0
<4>[54270.698170]  [<ffffffffa01aa06e>] :iwl3945:iwl3945_hw_nic_init+0x8de/0x940
<4>[54270.698178]  [<ffffffff810b4fb2>] ? __slab_free+0xf2/0x3b0
<4>[54270.698192]  [<ffffffffa019de01>] :iwl3945:__iwl3945_up+0x91/0x640
<4>[54270.698201]  [<ffffffff8120b692>] ? release_firmware+0x22/0x30
<4>[54270.698217]  [<ffffffffa019e968>] :iwl3945:iwl3945_mac_start+0x568/0x790
<4>[54270.698232]  [<ffffffff81026acd>] ? kernel_map_pages+0xad/0x170
<4>[54270.698255]  [<ffffffffa0166def>] :mac80211:ieee80211_open+0x13f/0x590
<4>[54270.698264]  [<ffffffff81273b48>] ? dev_set_rx_mode+0x48/0x60
<4>[54270.698275]  [<ffffffff81275b99>] dev_open+0x89/0xf0
<4>[54270.698282]  [<ffffffff812753c1>] dev_change_flags+0xa1/0x1e0
<4>[54270.698292]  [<ffffffff8127e59c>] do_setlink+0x20c/0x3a0
<4>[54270.698301]  [<ffffffff8109e766>] ? handle_mm_fault+0x606/0x850
<4>[54270.698309]  [<ffffffff8128aa23>] ? nla_parse+0x33/0x100
<4>[54270.698318]  [<ffffffff8127ff14>] rtnl_newlink+0x434/0x4f0
<4>[54270.698339]  [<ffffffff8127f87a>] ? rtnetlink_rcv+0x1a/0x40
<4>[54270.698355]  [<ffffffff8127fa2d>] rtnetlink_rcv_msg+0x18d/0x240
<4>[54270.698363]  [<ffffffff8127f8a0>] ? rtnetlink_rcv_msg+0x0/0x240
<4>[54270.698370]  [<ffffffff8128a3e9>] netlink_rcv_skb+0x89/0xb0
<4>[54270.698378]  [<ffffffff8127f889>] rtnetlink_rcv+0x29/0x40
<4>[54270.698386]  [<ffffffff81289e05>] netlink_unicast+0x2d5/0x2f0
<4>[54270.698394]  [<ffffffff8126e38e>] ? __alloc_skb+0x6e/0x150
<4>[54270.698404]  [<ffffffff8128a024>] netlink_sendmsg+0x204/0x300
<4>[54270.698410]  [<ffffffff8108bde2>] ? find_lock_page+0x32/0xc0
<4>[54270.698425]  [<ffffffff81265ca7>] sock_sendmsg+0x127/0x140
<4>[54270.698431]  [<ffffffff8108be58>] ? find_lock_page+0xa8/0xc0
<4>[54270.698445]  [<ffffffff810529d0>] ? autoremove_wake_function+0x0/0x40
<4>[54270.698453]  [<ffffffff8108bc8d>] ? unlock_page+0x2d/0x40
<4>[54270.698460]  [<ffffffff8109c5e0>] ? __do_fault+0x200/0x450
<4>[54270.698469]  [<ffffffff8117bb4a>] ? __up_read+0x2a/0xb0
<4>[54270.698476]  [<ffffffff8117bb4a>] ? __up_read+0x2a/0xb0
<4>[54270.698485]  [<ffffffff81266a47>] ? move_addr_to_kernel+0x57/0x60
<4>[54270.698492]  [<ffffffff8126f39c>] ? verify_iovec+0x3c/0xd0
<4>[54270.698500]  [<ffffffff81265e49>] sys_sendmsg+0x189/0x320
<4>[54270.698515]  [<ffffffff8117ba14>] ? __up_write+0x24/0x130
<4>[54270.698531]  [<ffffffff812f5df5>] ? _spin_unlock_irqrestore+0x45/0x90
<4>[54270.698538]  [<ffffffff8117bac0>] ? __up_write+0xd0/0x130
<4>[54270.698550]  [<ffffffff812f5759>] ? trace_hardirqs_on_thunk+0x35/0x3a
<4>[54270.698561]  [<ffffffff8100c50b>] system_call_after_swapgs+0x7b/0x80
<4>[54270.698573]
<6>[54270.698576] Mem-info:
<4>[54270.698579] DMA per-cpu:
<4>[54270.698583] CPU    0: hi:    0, btch:   1 usd:   0
<4>[54270.698586] CPU    1: hi:    0, btch:   1 usd:   0
<4>[54270.698589] DMA32 per-cpu:
<4>[54270.698593] CPU    0: hi:  186, btch:  31 usd:   0
<4>[54270.698596] CPU    1: hi:  186, btch:  31 usd:  30
<4>[54270.698601] Active:233210 inactive:175472 dirty:16 writeback:0 unstable:0
<4>[54270.698603]  free:6697 slab:46327 mapped:27535 pagetables:7467 bounce:0
<4>[54270.698608] DMA free:7880kB min:40kB low:48kB high:60kB
active:252kB inactive:40kB present:15176kB pages_scanned:0
all_unreclaimable? no
<4>[54270.698612] lowmem_reserve[]: 0 1959 1959 1959
<4>[54270.698624] DMA32 free:18908kB min:5640kB low:7048kB high:8460kB
active:932588kB inactive:701848kB present:2006684kB pages_scanned:0
all_unreclaimable? no
<4>[54270.698628] lowmem_reserve[]: 0 0 0 0
<4>[54270.698638] DMA: 89*4kB 113*8kB 144*16kB 39*32kB 0*64kB 0*128kB
0*256kB 0*512kB 1*1024kB 1*2048kB 0*4096kB = 7884kB
<4>[54270.698661] DMA32: 1272*4kB 1491*8kB 71*16kB 7*32kB 4*64kB
0*128kB 1*256kB 0*512kB 0*1024kB 0*2048kB 0*4096kB = 18888kB
<4>[54270.698683] 249509 total pagecache pages
<4>[54270.698687] Swap cache: add 171, delete 127, find 23/30
<4>[54270.698690] Free swap  = 1019608kB
<4>[54270.698693] Total swap = 1020088kB
<6>[54270.713804] 517808 pages of RAM
<6>[54270.713809] 17084 reserved pages
<6>[54270.713810] 237252 pages shared
<6>[54270.713812] 44 pages swap cached
<3>[54270.713814] iwl3945: kmalloc for auxiliary BD structures failed
<3>[54270.713825] iwl3945: Tx 1 queue init failed
<3>[54270.713837] iwl3945: Unable to int nic
<6>[54270.728285] ACPI: PCI Interrupt 0000:03:00.0[A] -> GSI 17
(level, low) -> IRQ 17
<4>[54270.760009] ip: page allocation failure. order:5, mode:0x1024
<4>[54270.760009] Pid: 8741, comm: ip Tainted: G        W 2.6.26-rc5 #33
<4>[54270.760009]
<4>[54270.760009] Call Trace:
<4>[54270.760009]  [<ffffffff81092c70>] __alloc_pages_internal+0x460/0x590
<4>[54270.760009]  [<ffffffffa01a87f8>] ?
:iwl3945:iwl3945_hw_tx_queue_init+0x38/0x1a0
<4>[54270.760009]  [<ffffffff81092dbb>] __alloc_pages+0xb/0x10
<4>[54270.760009]  [<ffffffff81011c26>] dma_alloc_pages+0x26/0x30
<4>[54270.760009]  [<ffffffff81011cf3>] dma_alloc_coherent+0xc3/0x2a0
<4>[54270.760009]  [<ffffffffa01a73c3>]
:iwl3945:iwl3945_tx_queue_init+0x63/0x1e0
<4>[54270.760009]  [<ffffffffa01aa06e>] :iwl3945:iwl3945_hw_nic_init+0x8de/0x940
<4>[54270.760009]  [<ffffffffa019de01>] :iwl3945:__iwl3945_up+0x91/0x640
<4>[54270.760009]  [<ffffffffa019e968>] :iwl3945:iwl3945_mac_start+0x568/0x790
<4>[54270.760009]  [<ffffffff81092253>] ? get_page_from_freelist+0x343/0x630
<4>[54270.760009]  [<ffffffff81026acd>] ? kernel_map_pages+0xad/0x170
<4>[54270.760009]  [<ffffffffa0166def>] :mac80211:ieee80211_open+0x13f/0x590
<4>[54270.760009]  [<ffffffff81273b48>] ? dev_set_rx_mode+0x48/0x60
<4>[54270.760009]  [<ffffffff81275b99>] dev_open+0x89/0xf0
<4>[54270.760009]  [<ffffffff812753c1>] dev_change_flags+0xa1/0x1e0
<4>[54270.760009]  [<ffffffff8127e59c>] do_setlink+0x20c/0x3a0
<4>[54270.760009]  [<ffffffff8109e766>] ? handle_mm_fault+0x606/0x850
<4>[54270.760009]  [<ffffffff8128aa23>] ? nla_parse+0x33/0x100
<4>[54270.760009]  [<ffffffff8127ff14>] rtnl_newlink+0x434/0x4f0
<4>[54270.760009]  [<ffffffff8127f87a>] ? rtnetlink_rcv+0x1a/0x40
<4>[54270.760009]  [<ffffffff8127fa2d>] rtnetlink_rcv_msg+0x18d/0x240
<4>[54270.760009]  [<ffffffff8127f8a0>] ? rtnetlink_rcv_msg+0x0/0x240
<4>[54270.760009]  [<ffffffff8128a3e9>] netlink_rcv_skb+0x89/0xb0
<4>[54270.760009]  [<ffffffff8127f889>] rtnetlink_rcv+0x29/0x40
<4>[54270.760009]  [<ffffffff81289e05>] netlink_unicast+0x2d5/0x2f0
<4>[54270.760009]  [<ffffffff8126e38e>] ? __alloc_skb+0x6e/0x150
<4>[54270.760009]  [<ffffffff8128a024>] netlink_sendmsg+0x204/0x300
<4>[54270.760009]  [<ffffffff8108bde2>] ? find_lock_page+0x32/0xc0
<4>[54270.760009]  [<ffffffff81265ca7>] sock_sendmsg+0x127/0x140
<4>[54270.760009]  [<ffffffff8108be58>] ? find_lock_page+0xa8/0xc0
<4>[54270.760009]  [<ffffffff810529d0>] ? autoremove_wake_function+0x0/0x40
<4>[54270.760009]  [<ffffffff8108bc8d>] ? unlock_page+0x2d/0x40
<4>[54270.760009]  [<ffffffff8109c5e0>] ? __do_fault+0x200/0x450
<4>[54270.760009]  [<ffffffff8117bb4a>] ? __up_read+0x2a/0xb0
<4>[54270.760009]  [<ffffffff8117bb4a>] ? __up_read+0x2a/0xb0
<4>[54270.760009]  [<ffffffff81266a47>] ? move_addr_to_kernel+0x57/0x60
<4>[54270.760009]  [<ffffffff8126f39c>] ? verify_iovec+0x3c/0xd0
<4>[54270.760009]  [<ffffffff81265e49>] sys_sendmsg+0x189/0x320
<4>[54270.760009]  [<ffffffff8117ba14>] ? __up_write+0x24/0x130
<4>[54270.760009]  [<ffffffff812f5df5>] ? _spin_unlock_irqrestore+0x45/0x90
<4>[54270.760009]  [<ffffffff8117bac0>] ? __up_write+0xd0/0x130
<4>[54270.760009]  [<ffffffff812f5759>] ? trace_hardirqs_on_thunk+0x35/0x3a
<4>[54270.760009]  [<ffffffff8100c50b>] system_call_after_swapgs+0x7b/0x80
<4>[54270.760009]
<6>[54270.760009] Mem-info:
<4>[54270.760009] DMA per-cpu:
<4>[54270.760009] CPU    0: hi:    0, btch:   1 usd:   0
<4>[54270.760009] CPU    1: hi:    0, btch:   1 usd:   0
<4>[54270.760009] DMA32 per-cpu:
<4>[54270.760009] CPU    0: hi:  186, btch:  31 usd:  30
<4>[54270.760009] CPU    1: hi:  186, btch:  31 usd:   0
<4>[54270.760009] Active:233193 inactive:175436 dirty:16 writeback:0 unstable:0
<4>[54270.760009]  free:6697 slab:46326 mapped:27519 pagetables:7437 bounce:0
<4>[54270.760009] DMA free:7880kB min:40kB low:48kB high:60kB
active:252kB inactive:40kB present:15176kB pages_scanned:0
all_unreclaimable? no
<4>[54270.760009] lowmem_reserve[]: 0 1959 1959 1959
<4>[54270.760009] DMA32 free:18908kB min:5640kB low:7048kB high:8460kB
active:932520kB inactive:701704kB present:2006684kB pages_scanned:0
all_unreclaimable? no
<4>[54270.760009] lowmem_reserve[]: 0 0 0 0
<4>[54270.760009] DMA: 89*4kB 113*8kB 144*16kB 39*32kB 0*64kB 0*128kB
0*256kB 0*512kB 1*1024kB 1*2048kB 0*4096kB = 7884kB
<4>[54270.760009] DMA32: 1202*4kB 1505*8kB 81*16kB 10*32kB 5*64kB
1*128kB 0*256kB 0*512kB 0*1024kB 0*2048kB 0*4096kB = 18912kB
<4>[54270.760009] 249385 total pagecache pages
<4>[54270.760009] Swap cache: add 228, delete 176, find 23/31
<4>[54270.760009] Free swap  = 1019412kB
<4>[54270.760009] Total swap = 1020088kB
<6>[54270.774246] 517808 pages of RAM
<6>[54270.774264] 17084 reserved pages
<6>[54270.774265] 237398 pages shared
<6>[54270.774267] 52 pages swap cached
<3>[54270.774270] iwl3945: Tx 3 queue init failed
<3>[54270.774311] iwl3945: Unable to int nic
<6>[54270.797597] ACPI: PCI Interrupt 0000:03:00.0[A] -> GSI 17
(level, low) -> IRQ 17
<4>[54270.814521] ip: page allocation failure. order:5, mode:0x1024
<4>[54270.815224] Pid: 8766, comm: ip Tainted: G        W 2.6.26-rc5 #33
<4>[54270.815482]
<4>[54270.815483] Call Trace:
<4>[54270.815858]  [<ffffffff81092c70>] __alloc_pages_internal+0x460/0x590
<4>[54270.815902]  [<ffffffffa01a87f8>] ?
:iwl3945:iwl3945_hw_tx_queue_init+0x38/0x1a0
<4>[54270.815912]  [<ffffffff81092dbb>] __alloc_pages+0xb/0x10
<4>[54270.815917]  [<ffffffff81011c26>] dma_alloc_pages+0x26/0x30
<4>[54270.815920]  [<ffffffff81011cf3>] dma_alloc_coherent+0xc3/0x2a0
<4>[54270.815929]  [<ffffffffa01a73c3>]
:iwl3945:iwl3945_tx_queue_init+0x63/0x1e0
<4>[54270.815938]  [<ffffffffa01aa06e>] :iwl3945:iwl3945_hw_nic_init+0x8de/0x940
<4>[54270.815946]  [<ffffffffa019de01>] :iwl3945:__iwl3945_up+0x91/0x640
<4>[54270.815955]  [<ffffffffa019e968>] :iwl3945:iwl3945_mac_start+0x568/0x790
<4>[54270.815961]  [<ffffffff81092921>] ? __alloc_pages_internal+0x111/0x590
<4>[54270.815966]  [<ffffffff8109e766>] ? handle_mm_fault+0x606/0x850
<4>[54270.815979]  [<ffffffffa0166def>] :mac80211:ieee80211_open+0x13f/0x590
<4>[54270.815984]  [<ffffffff81273b48>] ? dev_set_rx_mode+0x48/0x60
<4>[54270.815990]  [<ffffffff81275b99>] dev_open+0x89/0xf0
<4>[54270.815993]  [<ffffffff812753c1>] dev_change_flags+0xa1/0x1e0
<4>[54270.815999]  [<ffffffff8127e59c>] do_setlink+0x20c/0x3a0
<4>[54270.816003]  [<ffffffff8109e766>] ? handle_mm_fault+0x606/0x850
<4>[54270.816007]  [<ffffffff8128aa23>] ? nla_parse+0x33/0x100
<4>[54270.816013]  [<ffffffff8127ff14>] rtnl_newlink+0x434/0x4f0
<4>[54270.816023]  [<ffffffff8127f87a>] ? rtnetlink_rcv+0x1a/0x40
<4>[54270.816031]  [<ffffffff8127fa2d>] rtnetlink_rcv_msg+0x18d/0x240
<4>[54270.816035]  [<ffffffff8127f8a0>] ? rtnetlink_rcv_msg+0x0/0x240
<4>[54270.816039]  [<ffffffff8128a3e9>] netlink_rcv_skb+0x89/0xb0
<4>[54270.816043]  [<ffffffff8127f889>] rtnetlink_rcv+0x29/0x40
<4>[54270.816047]  [<ffffffff81289e05>] netlink_unicast+0x2d5/0x2f0
<4>[54270.816052]  [<ffffffff8126e38e>] ? __alloc_skb+0x6e/0x150
<4>[54270.816057]  [<ffffffff8128a024>] netlink_sendmsg+0x204/0x300
<4>[54270.816060]  [<ffffffff8108bde2>] ? find_lock_page+0x32/0xc0
<4>[54270.816068]  [<ffffffff81265ca7>] sock_sendmsg+0x127/0x140
<4>[54270.816071]  [<ffffffff8108be58>] ? find_lock_page+0xa8/0xc0
<4>[54270.816078]  [<ffffffff810529d0>] ? autoremove_wake_function+0x0/0x40
<4>[54270.816083]  [<ffffffff8108bc8d>] ? unlock_page+0x2d/0x40
<4>[54270.816086]  [<ffffffff8109c5e0>] ? __do_fault+0x200/0x450
<4>[54270.816092]  [<ffffffff8117bb4a>] ? __up_read+0x2a/0xb0
<4>[54270.816095]  [<ffffffff8117bb4a>] ? __up_read+0x2a/0xb0
<4>[54270.816100]  [<ffffffff81266a47>] ? move_addr_to_kernel+0x57/0x60
<4>[54270.816103]  [<ffffffff8126f39c>] ? verify_iovec+0x3c/0xd0
<4>[54270.816107]  [<ffffffff81265e49>] sys_sendmsg+0x189/0x320
<4>[54270.816114]  [<ffffffff8117ba14>] ? __up_write+0x24/0x130
<4>[54270.816124]  [<ffffffff812f5df5>] ? _spin_unlock_irqrestore+0x45/0x90
<4>[54270.816127]  [<ffffffff8117bac0>] ? __up_write+0xd0/0x130
<4>[54270.816133]  [<ffffffff812f5759>] ? trace_hardirqs_on_thunk+0x35/0x3a
<4>[54270.816139]  [<ffffffff8100c50b>] system_call_after_swapgs+0x7b/0x80
<4>[54270.824621]
<6>[54270.824621] Mem-info:
<4>[54270.824621] DMA per-cpu:
<4>[54270.824621] CPU    0: hi:    0, btch:   1 usd:   0
<4>[54270.824621] CPU    1: hi:    0, btch:   1 usd:   0
<4>[54270.824621] DMA32 per-cpu:
<4>[54270.825933] CPU    0: hi:  186, btch:  31 usd:  30
<4>[54270.826179] CPU    1: hi:  186, btch:  31 usd:   0
<4>[54270.826427] Active:233189 inactive:175412 dirty:16 writeback:0 unstable:0
<4>[54270.826428]  free:6743 slab:46345 mapped:27504 pagetables:7438 bounce:0
<4>[54270.828205] DMA free:7880kB min:40kB low:48kB high:60kB
active:252kB inactive:40kB present:15176kB pages_scanned:0
all_unreclaimable? no
<4>[54270.828490] lowmem_reserve[]: 0 1959 1959 1959
<4>[54270.828900] DMA32 free:19092kB min:5640kB low:7048kB high:8460kB
active:932504kB inactive:701608kB present:2006684kB pages_scanned:0
all_unreclaimable? no
<4>[54270.828942] lowmem_reserve[]: 0 0 0 0
<4>[54270.828942] DMA: 89*4kB 113*8kB 144*16kB 39*32kB 0*64kB 0*128kB
0*256kB 0*512kB 1*1024kB 1*2048kB 0*4096kB = 7884kB
<4>[54270.828943] DMA32: 1203*4kB 1503*8kB 84*16kB 13*32kB 6*64kB
1*128kB 0*256kB 0*512kB 0*1024kB 0*2048kB 0*4096kB = 19108kB
<4>[54270.830573] 249353 total pagecache pages
<4>[54270.831043] Swap cache: add 254, delete 202, find 23/31
<4>[54270.831290] Free swap  = 1019308kB
<4>[54270.831527] Total swap = 1020088kB
<6>[54270.844887] 517808 pages of RAM
<6>[54270.845797] 17084 reserved pages
<6>[54270.847318] 237448 pages shared
<6>[54270.847318] 52 pages swap cached
<3>[54270.847318] iwl3945: Tx 3 queue init failed
<3>[54270.847318] iwl3945: Unable to int nic
<6>[54270.861215] ACPI: PCI Interrupt 0000:03:00.0[A] -> GSI 17
(level, low) -> IRQ 17
<4>[54270.871268] ip: page allocation failure. order:5, mode:0x1024
<4>[54270.871268] Pid: 8776, comm: ip Tainted: G        W 2.6.26-rc5 #33
<4>[54270.871268]
<4>[54270.871268] Call Trace:
<4>[54270.871268]  [<ffffffff81092c70>] __alloc_pages_internal+0x460/0x590
<4>[54270.871268]  [<ffffffffa01a87f8>] ?
:iwl3945:iwl3945_hw_tx_queue_init+0x38/0x1a0
<4>[54270.871268]  [<ffffffff81092dbb>] __alloc_pages+0xb/0x10
<4>[54270.871268]  [<ffffffff81011c26>] dma_alloc_pages+0x26/0x30
<4>[54270.871268]  [<ffffffff81011cf3>] dma_alloc_coherent+0xc3/0x2a0
<4>[54270.871268]  [<ffffffffa01a73c3>]
:iwl3945:iwl3945_tx_queue_init+0x63/0x1e0
<4>[54270.871268]  [<ffffffffa01aa06e>] :iwl3945:iwl3945_hw_nic_init+0x8de/0x940
<4>[54270.871268]  [<ffffffffa019de01>] :iwl3945:__iwl3945_up+0x91/0x640
<4>[54270.871268]  [<ffffffffa019e968>] :iwl3945:iwl3945_mac_start+0x568/0x790
<4>[54270.871268]  [<ffffffff81092253>] ? get_page_from_freelist+0x343/0x630
<4>[54270.871268]  [<ffffffffa0166def>] :mac80211:ieee80211_open+0x13f/0x590
<4>[54270.871268]  [<ffffffff81273b48>] ? dev_set_rx_mode+0x48/0x60
<4>[54270.871268]  [<ffffffff81275b99>] dev_open+0x89/0xf0
<4>[54270.871268]  [<ffffffff812753c1>] dev_change_flags+0xa1/0x1e0
<4>[54270.871268]  [<ffffffff8127e59c>] do_setlink+0x20c/0x3a0
<4>[54270.871268]  [<ffffffff8117bb4a>] ? __up_read+0x2a/0xb0
<4>[54270.871268]  [<ffffffff8128aa23>] ? nla_parse+0x33/0x100
<4>[54270.871268]  [<ffffffff8127ff14>] rtnl_newlink+0x434/0x4f0
<4>[54270.871268]  [<ffffffff8127f87a>] ? rtnetlink_rcv+0x1a/0x40
<4>[54270.871268]  [<ffffffff8127fa2d>] rtnetlink_rcv_msg+0x18d/0x240
<4>[54270.871268]  [<ffffffff8127f8a0>] ? rtnetlink_rcv_msg+0x0/0x240
<4>[54270.871268]  [<ffffffff8128a3e9>] netlink_rcv_skb+0x89/0xb0
<4>[54270.871268]  [<ffffffff8127f889>] rtnetlink_rcv+0x29/0x40
<4>[54270.871268]  [<ffffffff81289e05>] netlink_unicast+0x2d5/0x2f0
<4>[54270.871268]  [<ffffffff8126e38e>] ? __alloc_skb+0x6e/0x150
<4>[54270.871268]  [<ffffffff8128a024>] netlink_sendmsg+0x204/0x300
<4>[54270.871268]  [<ffffffff8108bde2>] ? find_lock_page+0x32/0xc0
<4>[54270.871268]  [<ffffffff81265ca7>] sock_sendmsg+0x127/0x140
<4>[54270.871268]  [<ffffffff8108be58>] ? find_lock_page+0xa8/0xc0
<4>[54270.871268]  [<ffffffff810529d0>] ? autoremove_wake_function+0x0/0x40
<4>[54270.871268]  [<ffffffff8108bc8d>] ? unlock_page+0x2d/0x40
<4>[54270.871268]  [<ffffffff8109c5e0>] ? __do_fault+0x200/0x450
<4>[54270.871268]  [<ffffffff8117bb4a>] ? __up_read+0x2a/0xb0
<4>[54270.871268]  [<ffffffff8117bb4a>] ? __up_read+0x2a/0xb0
<4>[54270.871268]  [<ffffffff81266a47>] ? move_addr_to_kernel+0x57/0x60
<4>[54270.871268]  [<ffffffff8126f39c>] ? verify_iovec+0x3c/0xd0
<4>[54270.871268]  [<ffffffff81265e49>] sys_sendmsg+0x189/0x320
<4>[54270.871268]  [<ffffffff8117ba14>] ? __up_write+0x24/0x130
<4>[54270.871268]  [<ffffffff812f5df5>] ? _spin_unlock_irqrestore+0x45/0x90
<4>[54270.871268]  [<ffffffff8117bac0>] ? __up_write+0xd0/0x130
<4>[54270.871268]  [<ffffffff812f5759>] ? trace_hardirqs_on_thunk+0x35/0x3a
<4>[54270.871268]  [<ffffffff8100c50b>] system_call_after_swapgs+0x7b/0x80
<4>[54270.871268]
<6>[54270.871268] Mem-info:
<4>[54270.871268] DMA per-cpu:
<4>[54270.871268] CPU    0: hi:    0, btch:   1 usd:   0
<4>[54270.871268] CPU    1: hi:    0, btch:   1 usd:   0
<4>[54270.871268] DMA32 per-cpu:
<4>[54270.871268] CPU    0: hi:  186, btch:  31 usd:  60
<4>[54270.871268] CPU    1: hi:  186, btch:  31 usd:  94
<4>[54270.871268] Active:233238 inactive:175412 dirty:16 writeback:0 unstable:0
<4>[54270.871268]  free:6487 slab:46333 mapped:27551 pagetables:7438 bounce:0
<4>[54270.871268] DMA free:7880kB min:40kB low:48kB high:60kB
active:252kB inactive:40kB present:15176kB pages_scanned:0
all_unreclaimable? no
<4>[54270.871268] lowmem_reserve[]: 0 1959 1959 1959
<4>[54270.871268] DMA32 free:18068kB min:5640kB low:7048kB high:8460kB
active:932700kB inactive:701608kB present:2006684kB pages_scanned:0
all_unreclaimable? no
<4>[54270.871268] lowmem_reserve[]: 0 0 0 0
<4>[54270.871268] DMA: 89*4kB 113*8kB 144*16kB 39*32kB 0*64kB 0*128kB
0*256kB 0*512kB 1*1024kB 1*2048kB 0*4096kB = 7884kB
<4>[54270.871268] DMA32: 1065*4kB 1469*8kB 85*16kB 15*32kB 3*64kB
0*128kB 0*256kB 0*512kB 0*1024kB 0*2048kB 0*4096kB = 18044kB
<4>[54270.871268] 249353 total pagecache pages
<4>[54270.871268] Swap cache: add 254, delete 202, find 23/31
<4>[54270.871268] Free swap  = 1019308kB
<4>[54270.871268] Total swap = 1020088kB
dhclient: Corrupt lease file - possible data loss!
dhclient: failed to set close-on-exec for
/var/lib/dhclient/dhclient-wlan0.leases
<6>[54270.892622] 517808 pages of RAM
<6>[54270.892622] 17084 reserved pages
<6>[54270.892622] 237408 pages shared
<6>[54270.892622] 52 pages swap cached
<3>[54270.892622] iwl3945: Tx 5 queue init failed
<3>[54270.892622] iwl3945: Unable to int nic
dhclient: dhclient(8773) is already running - exiting.
dhclient: exiting.
<6>[54270.956110] ACPI: PCI Interrupt 0000:03:00.0[A] -> GSI 17
(level, low) -> IRQ 17
<4>[54270.969802] ifconfig: page allocation failure. order:5, mode:0x1024
<4>[54270.969802] Pid: 8817, comm: ifconfig Tainted: G        W 2.6.26-rc5 #33
<4>[54270.969802]
<4>[54270.969802] Call Trace:
<4>[54270.969802]  [<ffffffff81092c70>] __alloc_pages_internal+0x460/0x590
<4>[54270.969802]  [<ffffffffa01a87f8>] ?
:iwl3945:iwl3945_hw_tx_queue_init+0x38/0x1a0
<4>[54270.969802]  [<ffffffff81092dbb>] __alloc_pages+0xb/0x10
<4>[54270.969802]  [<ffffffff81011c26>] dma_alloc_pages+0x26/0x30
<4>[54270.969802]  [<ffffffff81011cf3>] dma_alloc_coherent+0xc3/0x2a0
<4>[54270.969802]  [<ffffffffa01a73c3>]
:iwl3945:iwl3945_tx_queue_init+0x63/0x1e0
<4>[54270.969802]  [<ffffffffa01aa06e>] :iwl3945:iwl3945_hw_nic_init+0x8de/0x940
<4>[54270.969802]  [<ffffffffa019de01>] :iwl3945:__iwl3945_up+0x91/0x640
<4>[54270.969802]  [<ffffffffa019e968>] :iwl3945:iwl3945_mac_start+0x568/0x790
<4>[54270.969802]  [<ffffffff8109c546>] ? __do_fault+0x166/0x450
<4>[54270.969802]  [<ffffffff81274fbf>] ? netdev_run_todo+0x1f/0x280
<4>[54270.969802]  [<ffffffff8127f852>] ? rtnl_lock+0x12/0x20
<4>[54270.969802]  [<ffffffffa0166def>] :mac80211:ieee80211_open+0x13f/0x590
<4>[54270.969802]  [<ffffffff81273b48>] ? dev_set_rx_mode+0x48/0x60
<4>[54270.969802]  [<ffffffff81275b99>] dev_open+0x89/0xf0
<4>[54270.969802]  [<ffffffff812753c1>] dev_change_flags+0xa1/0x1e0
<4>[54270.969802]  [<ffffffff812bfbec>] devinet_ioctl+0x81c/0x830
<4>[54270.969802]  [<ffffffff8117ba14>] ? __up_write+0x24/0x130
<4>[54270.969802]  [<ffffffff812c0904>] inet_ioctl+0x94/0xc0
<4>[54270.969802]  [<ffffffff81264d56>] sock_ioctl+0x66/0x270
<4>[54270.969802]  [<ffffffff810c8b01>] vfs_ioctl+0x31/0xa0
<4>[54270.969802]  [<ffffffff810c8df3>] do_vfs_ioctl+0x283/0x2f0
<4>[54270.969802]  [<ffffffff810c8ef9>] sys_ioctl+0x99/0xa0
<4>[54270.969802]  [<ffffffff8100c50b>] system_call_after_swapgs+0x7b/0x80
<4>[54270.969802]
<6>[54270.969802] Mem-info:
<4>[54270.969802] DMA per-cpu:
<4>[54270.969802] CPU    0: hi:    0, btch:   1 usd:   0
<4>[54270.969802] CPU    1: hi:    0, btch:   1 usd:   0
<4>[54270.969802] DMA32 per-cpu:
<4>[54270.969802] CPU    0: hi:  186, btch:  31 usd:  62
<4>[54270.969802] CPU    1: hi:  186, btch:  31 usd: 115
<4>[54270.969802] Active:233290 inactive:175412 dirty:16 writeback:0 unstable:0
<4>[54270.969802]  free:6452 slab:46368 mapped:27552 pagetables:7439 bounce:0
<4>[54270.969802] DMA free:7880kB min:40kB low:48kB high:60kB
active:252kB inactive:40kB present:15176kB pages_scanned:0
all_unreclaimable? no
<4>[54270.969802] lowmem_reserve[]: 0 1959 1959 1959
<4>[54270.969802] DMA32 free:17928kB min:5640kB low:7048kB high:8460kB
active:932908kB inactive:701608kB present:2006684kB pages_scanned:0
all_unreclaimable? no
<4>[54270.969802] lowmem_reserve[]: 0 0 0 0
<4>[54270.969802] DMA: 89*4kB 113*8kB 144*16kB 39*32kB 0*64kB 0*128kB
0*256kB 0*512kB 1*1024kB 1*2048kB 0*4096kB = 7884kB
<4>[54270.969802] DMA32: 1165*4kB 1387*8kB 82*16kB 14*32kB 5*64kB
1*128kB 0*256kB 0*512kB 0*1024kB 0*2048kB 0*4096kB = 17964kB
<4>[54270.969802] 249353 total pagecache pages
<4>[54270.969802] Swap cache: add 254, delete 202, find 23/31
<4>[54270.969802] Free swap  = 1019308kB
<4>[54270.969802] Total swap = 1020088kB
<6>[54270.980785] 517808 pages of RAM
<6>[54270.980800] 17084 reserved pages
<6>[54270.980801] 237258 pages shared
<6>[54270.980803] 52 pages swap cached
<3>[54270.980806] iwl3945: Tx 3 queue init failed
<3>[54270.980839] iwl3945: Unable to int nic
<6>[54270.982690] ACPI: PCI Interrupt 0000:03:00.0[A] -> GSI 17
(level, low) -> IRQ 17
<4>[54270.991159] ifconfig: page allocation failure. order:5, mode:0x1024
<4>[54270.991169] Pid: 8817, comm: ifconfig Tainted: G        W 2.6.26-rc5 #33
<4>[54270.991171]
<4>[54270.991172] Call Trace:
<4>[54270.991193]  [<ffffffff81092c70>] __alloc_pages_internal+0x460/0x590
<4>[54270.991210]  [<ffffffffa01a87f8>] ?
:iwl3945:iwl3945_hw_tx_queue_init+0x38/0x1a0
<4>[54270.991215]  [<ffffffff81092dbb>] __alloc_pages+0xb/0x10
<4>[54270.991220]  [<ffffffff81011c26>] dma_alloc_pages+0x26/0x30
<4>[54270.991224]  [<ffffffff81011cf3>] dma_alloc_coherent+0xc3/0x2a0
<4>[54270.991234]  [<ffffffffa01a73c3>]
:iwl3945:iwl3945_tx_queue_init+0x63/0x1e0
<4>[54270.991243]  [<ffffffffa01aa06e>] :iwl3945:iwl3945_hw_nic_init+0x8de/0x940
<4>[54270.991252]  [<ffffffffa019de01>] :iwl3945:__iwl3945_up+0x91/0x640
<4>[54270.991262]  [<ffffffffa019e968>] :iwl3945:iwl3945_mac_start+0x568/0x790
<4>[54270.991266]  [<ffffffff8109c546>] ? __do_fault+0x166/0x450
<4>[54270.991276]  [<ffffffff8127f852>] ? rtnl_lock+0x12/0x20
<4>[54270.991291]  [<ffffffffa0166def>] :mac80211:ieee80211_open+0x13f/0x590
<4>[54270.991296]  [<ffffffff81273b48>] ? dev_set_rx_mode+0x48/0x60
<4>[54270.991302]  [<ffffffff81275b99>] dev_open+0x89/0xf0
<4>[54270.991306]  [<ffffffff812753c1>] dev_change_flags+0xa1/0x1e0
<4>[54270.991313]  [<ffffffff812bfbec>] devinet_ioctl+0x81c/0x830
<4>[54270.991322]  [<ffffffff8117ba14>] ? __up_write+0x24/0x130
<4>[54270.991327]  [<ffffffff812c0904>] inet_ioctl+0x94/0xc0
<4>[54270.991331]  [<ffffffff81264d56>] sock_ioctl+0x66/0x270
<4>[54270.991336]  [<ffffffff810c8b01>] vfs_ioctl+0x31/0xa0
<4>[54270.991341]  [<ffffffff810c8df3>] do_vfs_ioctl+0x283/0x2f0
<4>[54270.991346]  [<ffffffff810c8ef9>] sys_ioctl+0x99/0xa0
<4>[54270.991352]  [<ffffffff8100c50b>] system_call_after_swapgs+0x7b/0x80
<4>[54270.991359]
<6>[54270.991360] Mem-info:
<4>[54270.991362] DMA per-cpu:
<4>[54270.991364] CPU    0: hi:    0, btch:   1 usd:   0
<4>[54270.991366] CPU    1: hi:    0, btch:   1 usd:   0
<4>[54270.991368] DMA32 per-cpu:
<4>[54270.991370] CPU    0: hi:  186, btch:  31 usd:  59
<4>[54270.991372] CPU    1: hi:  186, btch:  31 usd: 114
<4>[54270.991374] Active:233306 inactive:175412 dirty:16 writeback:0 unstable:0
<4>[54270.991375]  free:6478 slab:46351 mapped:27552 pagetables:7439 bounce:0
<4>[54270.991379] DMA free:7880kB min:40kB low:48kB high:60kB
active:252kB inactive:40kB present:15176kB pages_scanned:0
all_unreclaimable? no
<4>[54270.991381] lowmem_reserve[]: 0 1959 1959 1959
<4>[54270.991387] DMA32 free:18032kB min:5640kB low:7048kB high:8460kB
active:932972kB inactive:701608kB present:2006684kB pages_scanned:0
all_unreclaimable? no
<4>[54270.991390] lowmem_reserve[]: 0 0 0 0
<4>[54270.991395] DMA: 89*4kB 113*8kB 144*16kB 39*32kB 0*64kB 0*128kB
0*256kB 0*512kB 1*1024kB 1*2048kB 0*4096kB = 7884kB
<4>[54270.991408] DMA32: 1165*4kB 1399*8kB 82*16kB 13*32kB 6*64kB
1*128kB 0*256kB 0*512kB 0*1024kB 0*2048kB 0*4096kB = 18092kB
<4>[54270.991420] 249353 total pagecache pages
<4>[54270.991422] Swap cache: add 254, delete 202, find 23/31
<4>[54270.991424] Free swap  = 1019308kB
<4>[54270.991426] Total swap = 1020088kB
<6>[54271.004577] 517808 pages of RAM
<6>[54271.004595] 17084 reserved pages
<6>[54271.004596] 237266 pages shared
<6>[54271.004598] 52 pages swap cached
<3>[54271.004601] iwl3945: Tx 3 queue init failed
<3>[54271.004641] iwl3945: Unable to int nic
dhclient: receive_packet failed on wlan0: Network is down
dhclient: DHCPDISCOVER on wlan0 to 255.255.255.255 port 67 interval 7
dhclient: send_packet: Network is down
dhclient: DHCPDISCOVER on wlan0 to 255.255.255.255 port 67 interval 9
dhclient: send_packet: Network is down
dhclient: DHCPDISCOVER on wlan0 to 255.255.255.255 port 67 interval 9
dhclient: send_packet: Network is down
dhclient: DHCPDISCOVER on wlan0 to 255.255.255.255 port 67 interval 8
dhclient: send_packet: Network is down
dhclient: failed to set close-on-exec for /var/lib/dhclient/dhclient-eth0.leases
dhclient: DHCPDISCOVER on eth0 to 255.255.255.255 port 67 interval 6
dhclient: DHCPDISCOVER on wlan0 to 255.255.255.255 port 67 interval 8
dhclient: send_packet: Network is down
dhclient: DHCPDISCOVER on eth0 to 255.255.255.255 port 67 interval 6
dhclient: DHCPDISCOVER on wlan0 to 255.255.255.255 port 67 interval 8
dhclient: send_packet: Network is down
dhclient: DHCPDISCOVER on eth0 to 255.255.255.255 port 67 interval 9
dhclient: DHCPDISCOVER on wlan0 to 255.255.255.255 port 67 interval 12
dhclient: send_packet: Network is down
dhclient: DHCPDISCOVER on eth0 to 255.255.255.255 port 67 interval 13


slabinfo:
Name                   Objects Objsize    Space Slabs/Part/Cpu  O/S O
%Fr %Ef Flg
Acpi-Namespace            1932      32   204.8K         50/1/0   39 0
 2  30 PZFU
Acpi-Operand              3202      72   475.1K       116/11/0   28 0
 9  48 PZFU
Acpi-Parse                  68      48     8.1K          2/0/0   34 0
 0  39 PZFU
Acpi-ParseExt               56      72     8.1K          2/0/0   28 0
 0  49 PZFU
Acpi-State                  52      80     8.1K          2/0/0   26 0
 0  50 PZFU
anon_vma                  5138      72   770.0K       188/20/0   28 0
10  48 PZFU
arp_cache                   18     348     8.1K          1/0/0   18 1
 0  76 APZFU
bdev_cache                  39    1432    65.5K          2/1/0   21 3
50  85 APaZFU
bio                         59     104    16.3K          4/2/0   21 0
50  37 APZFU
biovec-1                   102      16    12.2K          3/1/0   42 0
33  13 APZFU
biovec-128                  30    2048    65.5K          2/0/0   15 3
 0  93 APZFU
biovec-16                   58     256    24.5K          3/1/0   21 1
33  60 APZFU
biovec-256                  22    4096   327.6K         10/0/0    7 3
 0  27 APZFU
biovec-4                    42      64    12.2K          3/1/0   21 0
33  21 APZFU
biovec-64                   42    1024    49.1K          3/0/0   14 2
 0  87 APZFU
blkdev_ioc                 117     128    28.6K          7/4/0   20 0
57  52 PZFU
blkdev_queue                28    2240    98.3K          3/1/0   14 3
33  63 PZFU
blkdev_requests             50     304    24.5K          3/1/0   21 1
33  61 PZFU
bridge_fdb_cache            21      64     8.1K          2/1/0   21 0
50  16 APZFU
buffer_head              98029     104    30.0M    7345/6625/0   23 0
90  33 PaZFU
cfq_io_context             117     168    32.7K          8/5/0   17 0
62  59 PZFU
cfq_queue                  114     128    28.6K          7/4/0   20 0
57  50 PZFU
dentry                   56168     256    19.1M       4685/9/0   12 0
 0  74 PaZFU
dm_io                      288      40    36.8K          9/1/0   36 0
11  31 PZFU
dm_target_io               294      24    32.7K          8/1/0   42 0
12  21 PZFU
dnotify_cache                1      40     4.0K          1/1/0   36 0
100   0 PZFU
eventpoll_epi               18     128     8.1K          2/1/0   16 0
50  28 APZFU
eventpoll_pwq               30      72     8.1K          2/1/0   28 0
50  26 PZFU
ext3_inode_cache         55555    1472   105.8M     3231/409/0   21 3
12  77 PaZFU
ext3_xattr                 230      88    40.9K         10/1/0   25 0
10  49 PaZFU
fasync_cache                42      24     8.1K          2/1/0   42 0
50  12 PZFU
file_lock_cache             26     232     8.1K          2/0/0   13 0
 0  73 PZFU
files_cache                142     768   147.4K          9/5/0   18 2
55  73 APZFU
filp                      6554     296     2.6M       320/35/0   21 1
10  74 APZFU
fs_cache                   136     120    28.6K          7/4/0   21 0
57  56 APZFU
idr_layer_cache            572     528   360.4K         44/0/0   13 1
 0  83 PZFU
inet_peer_cache             21      64     8.1K          2/1/0   21 0
50  16 APZFU
inode_cache               5284    1072     6.3M        390/0/0   14 2
 0  88 PaZFU
inotify_event_cache         72      40     8.1K          2/0/0   36 0
 0  35 PZFU
inotify_watch_cache        200      72    32.7K          8/1/0   28 0
12  43 PZFU
ip_dst_cache                42     312    16.3K          2/0/0   21 1
 0  79 APZFU
ip_fib_alias                39      32     8.1K          2/1/0   39 0
50  15 PZFU
ip_fib_hash                 32      72     8.1K          2/1/0   28 0
50  28 PZFU
journal_handle              64      56     8.1K          2/0/0   32 0
 0  43 PaZFU
journal_head                59      96    16.3K          4/2/0   24 0
50  34 PaZFU
kmalloc-1024               596    1024   753.6K        23/16/0   29 3
69  80 PZFU
kmalloc-128                442     128    94.2K         23/5/0   20 0
21  60 PZFU
kmalloc-16                2605      16   241.6K        59/15/0   46 0
25  17 PZFU
kmalloc-192                266     192    77.8K         19/7/0   15 0
36  65 PZFU
kmalloc-2048               455    2048     1.5M        48/31/0   15 3
64  59 PZFU
kmalloc-256                625     256   221.1K        54/13/0   12 0
24  72 PZFU
kmalloc-32                 768      32    86.0K         21/9/0   39 0
42  28 PZFU
kmalloc-4096               415    4096     1.9M         60/2/0    7 3
 3  86 PZFU
kmalloc-512                492     512   319.4K        39/10/0   14 1
25  78 PZFU
kmalloc-64                4059      64   815.1K      199/131/0   30 0
65  31 PZFU
kmalloc-8                 3511       8   290.8K        71/11/0   51 0
15   9 PZFU
kmalloc-96                1841      96   327.6K        80/17/0   24 0
21  53 PZFU
kmalloc_dma-512             14     512     8.1K          1/0/0   14 1
 0  87 dPZFU
kvm_mmu_page_header         25      88     8.1K          2/1/0   25 0
50  26 PZFU
kvm_pte_chain               32      56     8.1K          2/1/0   32 0
50  21 PZFU
kvm_rmap_desc               36      40     8.1K          2/1/0   36 0
50  17 PZFU
kvm_vcpu                     0    5568    32.7K          1/1/0    5 3
100   0 PZFU
mm_struct                  127    1184   196.6K        12/10/0   12 2
83  76 APZFU
mnt_cache                   35     224    12.2K          3/1/0   12 0
33  63 APZFU
mqueue_inode_cache           1    1456    32.7K          1/1/0   21 3
100   4 APZFU
names_cache                 14    4096    65.5K          2/0/0    7 3
 0  87 APZFU
nf_conntrack                50     304    40.9K          5/3/0   21 1
60  37 PZFU
pid                        333      88    73.7K        18/13/0   21 0
72  39 APZFU
posix_timers_cache          12     248     4.0K          1/0/0   12 0
 0  72 PZFU
proc_inode_cache          1580    1104     2.0M        64/23/0   27 3
35  83 PaZFU
radix_tree_node          23769     552    15.5M     1896/230/0   13 1
12  84 PaZFU
RAW                         15    1200    32.7K          2/1/0   12 2
50  54 APZFU
request_sock_TCP            21      88     8.1K          2/1/0   21 0
50  22 APZFU
revoke_record               32      32     8.1K          2/1/0   32 0
50  12 APaZFU
revoke_table                46      16     4.0K          1/0/0   46 0
 0  17 PaZFU
rpc_buffers                 23    2048    65.5K          2/1/0   15 3
50  71 APZFU
rpc_inode_cache             22    1376    32.7K          1/0/0   22 3
 0  92 APaZFU
rpc_tasks                   29     272    16.3K          2/1/0   21 1
50  48 APZFU
scsi_cmd_cache              42     312    16.3K          2/0/0   21 1
 0  79 APZFU
scsi_sense_cache            42      96     8.1K          2/0/0   21 0
 0  49 APZFU
sgpool-128                   6    5120    65.5K          2/1/0    6 3
50  46 APZFU
sgpool-16                   42     640    32.7K          2/0/0   21 2
 0  82 APZFU
sgpool-32                   46    1280    65.5K          2/0/0   23 3
 0  89 APZFU
sgpool-64                   12    2560    65.5K          2/1/0   12 3
50  46 APZFU
sgpool-8                    36     320    16.3K          2/0/0   18 1
 0  70 APZFU
shmem_inode_cache         1194    1328     1.7M         53/8/0   23 3
15  91 PZFU
sighand_cache              199    2184   524.2K        16/10/0   14 3
62  82 APZFU
signal_cache               193     888   196.6K         12/4/0   17 2
33  87 APZFU
sigqueue                    34     160     8.1K          2/0/0   17 0
 0  66 PZFU
skbuff_fclone_cache         28     452    16.3K          2/0/0   14 1
 0  77 APZFU
skbuff_head_cache          352     224   208.8K        51/48/0   12 0
94  37 APZFU
sock_inode_cache           731    1200     1.0M        63/11/0   12 2
17  84 APaZFU
sysfs_dir_cache          14377      80     2.2M        555/5/0   26 0
 0  50 PZFU
task_delay_info            295     120    65.5K        16/10/0   21 0
62  54 PZFU
task_struct                278    9368     3.1M        97/12/0    3 3
12  81 PZFU
task_xstate                232     512   163.8K        20/12/0   13 1
60  72 PZFU
taskstats                   29     312    16.3K          2/1/0   21 1
50  55 PZFU
TCP                         32    2248    98.3K          3/1/0   13 3
33  73 APZFU
tcp_bind_bucket             64      40     8.1K          2/0/0   32 0
 0  31 APZFU
tw_sock_TCP                 16     136     8.1K          2/1/0   16 0
50  26 APZFU
UDP                         28    1224    49.1K          3/1/0   12 2
33  69 APZFU
uhci_urb_priv               64      56     8.1K          2/0/0   32 0
 0  43 PZFU
uid_cache                   25      64     8.1K          2/1/0   21 0
50  19 APZFU
UNIX                       731    1376     1.1M         34/8/0   22 3
23  90 APZFU
vm_area_struct           14664     168     3.6M       881/58/0   17 0
 6  68 PZFU

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

* Re: Problem: Out of memory after 2days with 2GB RAM
  2008-06-12 10:07 Problem: Out of memory after 2days with 2GB RAM Zdenek Kabelac
@ 2008-06-12 13:38 ` Rik van Riel
  2008-06-12 13:54   ` Johannes Berg
  2008-06-13 14:08 ` Rafael J. Wysocki
  1 sibling, 1 reply; 27+ messages in thread
From: Rik van Riel @ 2008-06-12 13:38 UTC (permalink / raw)
  To: Zdenek Kabelac
  Cc: Linux Kernel Mailing List, yi.zhu, reinette.chatre, linux-wireless

On Thu, 12 Jun 2008 12:07:34 +0200
"Zdenek Kabelac" <zdenek.kabelac@gmail.com> wrote:

> It looks like while there was a huge amount of buffers and caches -
> system was unable to allocate few pages for kmalloc in iwl3945 driver
> after resume.

It looks like this is because it wants to allocate 2**5 contiguous
pages, which is 128kB of contiguous kernel memory.
 
> <4>[53906.578855] NetworkManager: page allocation failure. order:5, mode:0x1024
> <4>[53906.578855] Pid: 2645, comm: NetworkManager Tainted: G        W
> 2.6.26-rc5 #33
> <4>[53906.578855]
> <4>[53906.578855] Call Trace:
> <4>[53906.578855]  [<ffffffff81092c70>] __alloc_pages_internal+0x460/0x590
> <4>[53906.578855]  [<ffffffffa01a87f8>] ?
> :iwl3945:iwl3945_hw_tx_queue_init+0x38/0x1a0
> <4>[53906.578855]  [<ffffffff81092dbb>] __alloc_pages+0xb/0x10
> <4>[53906.578855]  [<ffffffff81011c26>] dma_alloc_pages+0x26/0x30
> <4>[53906.578855]  [<ffffffff81011cf3>] dma_alloc_coherent+0xc3/0x2a0
> <4>[53906.578855]  [<ffffffffa01a73c3>]
> :iwl3945:iwl3945_tx_queue_init+0x63/0x1e0
> <4>[53906.578855]  [<ffffffffa01aa06e>] :iwl3945:iwl3945_hw_nic_init+0x8de/0x940
> <4>[53906.578855]  [<ffffffffa019de01>] :iwl3945:__iwl3945_up+0x91/0x640
> <4>[53906.578855]  [<ffffffffa019e968>] :iwl3945:iwl3945_mac_start+0x568/0x790
> <4>[53906.578855]  [<ffffffff8128a67d>] ? __nla_put+0x2d/0x40
> <4>[53906.578855]  [<ffffffff8128a633>] ? __nla_reserve+0x53/0x70
> <4>[53906.578855]  [<ffffffff8128a67d>] ? __nla_put+0x2d/0x40
> <4>[53906.578855]  [<ffffffffa0166def>] :mac80211:ieee80211_open+0x13f/0x590
> <4>[53906.578855]  [<ffffffff81273b48>] ? dev_set_rx_mode+0x48/0x60
> <4>[53906.578855]  [<ffffffff81275b99>] dev_open+0x89/0xf0
> <4>[53906.578855]  [<ffffffff812753c1>] dev_change_flags+0xa1/0x1e0
> <4>[53906.578855]  [<ffffffff812730b9>] ? dev_get_by_index+0x19/0x80
> <4>[53906.578855]  [<ffffffff8127e59c>] do_setlink+0x20c/0x3a0
> <4>[53906.578855]  [<ffffffff812f5cc0>] ? _read_unlock+0x30/0x60
> <4>[53906.578855]  [<ffffffff8127e83d>] rtnl_setlink+0x10d/0x150
> <4>[53906.578855]  [<ffffffff8127fa2d>] rtnetlink_rcv_msg+0x18d/0x240
> <4>[53906.578855]  [<ffffffff8127f8a0>] ? rtnetlink_rcv_msg+0x0/0x240
> <4>[53906.578855]  [<ffffffff8128a3e9>] netlink_rcv_skb+0x89/0xb0
> <4>[53906.578855]  [<ffffffff8127f889>] rtnetlink_rcv+0x29/0x40
> <4>[53906.578855]  [<ffffffff81289e05>] netlink_unicast+0x2d5/0x2f0
> <4>[53906.578855]  [<ffffffff8126e38e>] ? __alloc_skb+0x6e/0x150
> <4>[53906.578855]  [<ffffffff8128a024>] netlink_sendmsg+0x204/0x300
> <4>[53906.578855]  [<ffffffff812f5cc0>] ? _read_unlock+0x30/0x60
> <4>[53906.578855]  [<ffffffff81265ca7>] sock_sendmsg+0x127/0x140
> <4>[53906.578855]  [<ffffffff81265b09>] ? sock_recvmsg+0x139/0x150
> <4>[53906.578855]  [<ffffffff810529d0>] ? autoremove_wake_function+0x0/0x40
> <4>[53906.578855]  [<ffffffff812f5e70>] ? _spin_unlock+0x30/0x60
> <4>[53906.578855]  [<ffffffff8117bb4a>] ? __up_read+0x2a/0xb0
> <4>[53906.578855]  [<ffffffff81266a47>] ? move_addr_to_kernel+0x57/0x60
> <4>[53906.578855]  [<ffffffff8126f39c>] ? verify_iovec+0x3c/0xd0
> <4>[53906.578855]  [<ffffffff81265e49>] sys_sendmsg+0x189/0x320
> <4>[53906.578855]  [<ffffffff81266b4d>] ? sys_sendto+0xfd/0x120
> <4>[53906.578855]  [<ffffffff812f5759>] ? trace_hardirqs_on_thunk+0x35/0x3a
> <4>[53906.578855]  [<ffffffff8100c50b>] system_call_after_swapgs+0x7b/0x80
> <4>[53906.578855]
> <6>[53906.578855] Mem-info:
> <4>[53906.578855] DMA per-cpu:
> <4>[53906.578855] CPU    0: hi:    0, btch:   1 usd:   0
> <4>[53906.578855] CPU    1: hi:    0, btch:   1 usd:   0
> <4>[53906.578855] DMA32 per-cpu:
> <4>[53906.578855] CPU    0: hi:  186, btch:  31 usd:   0
> <4>[53906.578855] CPU    1: hi:  186, btch:  31 usd:   0
> <4>[53906.578855] Active:231839 inactive:178871 dirty:65 writeback:0 unstable:0
> <4>[53906.578855]  free:5997 slab:45072 mapped:27835 pagetables:7405 bounce:0
> <4>[53906.578855] DMA free:7896kB min:40kB low:48kB high:60kB
> active:308kB inactive:0kB present:15176kB pages_scanned:0
> all_unreclaimable? no
> <4>[53906.578855] lowmem_reserve[]: 0 1959 1959 1959
> <4>[53906.578855] DMA32 free:16092kB min:5640kB low:7048kB high:8460kB
> active:927048kB inactive:715484kB present:2006684kB pages_scanned:0
> all_unreclaimable? no
> <4>[53906.578855] lowmem_reserve[]: 0 0 0 0
> <4>[53906.578855] DMA: 86*4kB 112*8kB 148*16kB 38*32kB 0*64kB 0*128kB
> 0*256kB 0*512kB 1*1024kB 1*2048kB 0*4096kB = 7896kB
> <4>[53906.578855] DMA32: 2690*4kB 369*8kB 56*16kB 30*32kB 6*64kB
> 1*128kB 0*256kB 0*512kB 0*1024kB 0*2048kB 0*4096kB = 16080kB

As you can see, the 128kB free areas have been pretty much exhausted
and there is still a good amount of free memory.

I am not sure why this last 128kB area was not allocated, but lets
face it - it would have blown up the next allocation anyway.

Doing such a large allocation from a driver is probably not the best
idea.

-- 
All rights reversed.

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

* Re: Problem: Out of memory after 2days with 2GB RAM
  2008-06-12 13:38 ` Rik van Riel
@ 2008-06-12 13:54   ` Johannes Berg
  2008-06-12 14:12     ` Zdenek Kabelac
  2008-06-12 15:43     ` Tomas Winkler
  0 siblings, 2 replies; 27+ messages in thread
From: Johannes Berg @ 2008-06-12 13:54 UTC (permalink / raw)
  To: Rik van Riel
  Cc: Zdenek Kabelac, Linux Kernel Mailing List, yi.zhu,
	reinette.chatre, linux-wireless

On Thu, 2008-06-12 at 09:38 -0400, Rik van Riel wrote:
> On Thu, 12 Jun 2008 12:07:34 +0200
> "Zdenek Kabelac" <zdenek.kabelac@gmail.com> wrote:
> 
> > It looks like while there was a huge amount of buffers and caches -
> > system was unable to allocate few pages for kmalloc in iwl3945 driver
> > after resume.
> 
> It looks like this is because it wants to allocate 2**5 contiguous
> pages, which is 128kB of contiguous kernel memory.

64-bit system I assume?
The allocation should be 256 * 20 * sizeof(struct sk_buff *).

Try the patch below. It should improve code generation too.

I discussed this with Tomas previously and he says the hw is capable of
doing 20 fragments per frame (wonder why, Broadcom can do an unlimited
number...) but he complained about the networking stack not being able
to. Well, the hardware needs to support IP checksumming for that, hence,
afaik, only two fragments can ever be used (one for hw header, one for
frame)

This cuts the allocation to 10%, or (under) a page in all cases.

johannes

--- everything.orig/drivers/net/wireless/iwlwifi/iwl-3945.h	2008-06-12 15:50:29.000000000 +0200
+++ everything/drivers/net/wireless/iwlwifi/iwl-3945.h	2008-06-12 15:50:31.000000000 +0200
@@ -120,7 +120,7 @@ struct iwl3945_queue {
 int iwl3945_queue_space(const struct iwl3945_queue *q);
 int iwl3945_x2_queue_used(const struct iwl3945_queue *q, int i);
 
-#define MAX_NUM_OF_TBS          (20)
+#define MAX_NUM_OF_TBS          (2)
 
 /* One for each TFD */
 struct iwl3945_tx_info {
--- everything.orig/drivers/net/wireless/iwlwifi/iwl-dev.h	2008-06-12 15:50:18.000000000 +0200
+++ everything/drivers/net/wireless/iwlwifi/iwl-dev.h	2008-06-12 15:50:24.000000000 +0200
@@ -115,7 +115,7 @@ struct iwl_queue {
 				* space less than this */
 } __attribute__ ((packed));
 
-#define MAX_NUM_OF_TBS          (20)
+#define MAX_NUM_OF_TBS          (2)
 
 /* One for each TFD */
 struct iwl_tx_info {



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

* Re: Problem: Out of memory after 2days with 2GB RAM
  2008-06-12 13:54   ` Johannes Berg
@ 2008-06-12 14:12     ` Zdenek Kabelac
  2008-06-12 14:19       ` Johannes Berg
  2008-06-12 16:38       ` Tomas Winkler
  2008-06-12 15:43     ` Tomas Winkler
  1 sibling, 2 replies; 27+ messages in thread
From: Zdenek Kabelac @ 2008-06-12 14:12 UTC (permalink / raw)
  To: Johannes Berg
  Cc: Rik van Riel, Linux Kernel Mailing List, yi.zhu, reinette.chatre,
	linux-wireless

2008/6/12 Johannes Berg <johannes@sipsolutions.net>:
> On Thu, 2008-06-12 at 09:38 -0400, Rik van Riel wrote:
>> On Thu, 12 Jun 2008 12:07:34 +0200
>> "Zdenek Kabelac" <zdenek.kabelac@gmail.com> wrote:
>>
>> > It looks like while there was a huge amount of buffers and caches -
>> > system was unable to allocate few pages for kmalloc in iwl3945 driver
>> > after resume.
>>
>> It looks like this is because it wants to allocate 2**5 contiguous
>> pages, which is 128kB of contiguous kernel memory.
>
> 64-bit system I assume?
> The allocation should be 256 * 20 * sizeof(struct sk_buff *).
>
> Try the patch below. It should improve code generation too.

I'll surely try you patch - but is the iwl the only driver which needs
128kB continuous memory chunk?

I think that if the 128kB memchunks are exhausted in 2 days while
there is over 1GB of free RAM in buffers & caches I think some
defragmentation is needed then ?

btw: Does it really means that within those buffers kernel could not
find any adjacent 32 pages which could be made free ?

Zdenek

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

* Re: Problem: Out of memory after 2days with 2GB RAM
  2008-06-12 14:12     ` Zdenek Kabelac
@ 2008-06-12 14:19       ` Johannes Berg
  2008-06-12 16:38       ` Tomas Winkler
  1 sibling, 0 replies; 27+ messages in thread
From: Johannes Berg @ 2008-06-12 14:19 UTC (permalink / raw)
  To: Zdenek Kabelac
  Cc: Rik van Riel, Linux Kernel Mailing List, yi.zhu, reinette.chatre,
	linux-wireless

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


> >> It looks like this is because it wants to allocate 2**5 contiguous
> >> pages, which is 128kB of contiguous kernel memory.
> >
> > 64-bit system I assume?
> > The allocation should be 256 * 20 * sizeof(struct sk_buff *).
> >
> > Try the patch below. It should improve code generation too.
> 
> I'll surely try you patch - but is the iwl the only driver which needs
> 128kB continuous memory chunk?

I don't know. But I think it'll probably fail right after, trying to
allocate a 32kb buffer with pci_alloc_something....

johannes

[-- Attachment #2: This is a digitally signed message part --]
[-- Type: application/pgp-signature, Size: 836 bytes --]

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

* Re: Problem: Out of memory after 2days with 2GB RAM
  2008-06-12 13:54   ` Johannes Berg
  2008-06-12 14:12     ` Zdenek Kabelac
@ 2008-06-12 15:43     ` Tomas Winkler
  2008-06-12 16:35       ` Tomas Winkler
                         ` (3 more replies)
  1 sibling, 4 replies; 27+ messages in thread
From: Tomas Winkler @ 2008-06-12 15:43 UTC (permalink / raw)
  To: Johannes Berg
  Cc: Rik van Riel, Zdenek Kabelac, Linux Kernel Mailing List, yi.zhu,
	reinette.chatre, linux-wireless

On Thu, Jun 12, 2008 at 4:54 PM, Johannes Berg
<johannes@sipsolutions.net> wrote:
> On Thu, 2008-06-12 at 09:38 -0400, Rik van Riel wrote:
>> On Thu, 12 Jun 2008 12:07:34 +0200
>> "Zdenek Kabelac" <zdenek.kabelac@gmail.com> wrote:
>>
>> > It looks like while there was a huge amount of buffers and caches -
>> > system was unable to allocate few pages for kmalloc in iwl3945 driver
>> > after resume.
>>
>> It looks like this is because it wants to allocate 2**5 contiguous
>> pages, which is 128kB of contiguous kernel memory.
>
> 64-bit system I assume?
> The allocation should be 256 * 20 * sizeof(struct sk_buff *).

> Try the patch below. It should improve code generation too.
>
> I discussed this with Tomas previously and he says the hw is capable of
> doing 20 fragments per frame (wonder why, Broadcom can do an unlimited
> number...) but he complained about the networking stack not being able
> to.

This is scatter gather buffers that can be kicked in one DMA transaction.

Well, the hardware needs to support IP checksumming for that, hence,
> afaik, only two fragments can ever be used (one for hw header, one for
> frame)
This I still don't understand why but everybody is already tired to
explaining me why.. :) Just need to find time to dig into it.

> This cuts the allocation to 10%, or (under) a page in all cases.

Probably. it would be safe to use vmalloc for allocating txb anyway.
I'll give it a try.

There was already discussion on LKML about memory allocation problems
on X86_64, which might explain this regression. This didn't happen
before.

Tomas

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

* Re: Problem: Out of memory after 2days with 2GB RAM
  2008-06-12 15:43     ` Tomas Winkler
@ 2008-06-12 16:35       ` Tomas Winkler
  2008-06-12 17:05         ` Johannes Berg
  2008-06-12 17:03       ` Johannes Berg
                         ` (2 subsequent siblings)
  3 siblings, 1 reply; 27+ messages in thread
From: Tomas Winkler @ 2008-06-12 16:35 UTC (permalink / raw)
  To: Johannes Berg
  Cc: Rik van Riel, Zdenek Kabelac, Linux Kernel Mailing List, yi.zhu,
	reinette.chatre, linux-wireless

On Thu, Jun 12, 2008 at 6:43 PM, Tomas Winkler <tomasw@gmail.com> wrote:
> On Thu, Jun 12, 2008 at 4:54 PM, Johannes Berg
> <johannes@sipsolutions.net> wrote:
>> On Thu, 2008-06-12 at 09:38 -0400, Rik van Riel wrote:
>>> On Thu, 12 Jun 2008 12:07:34 +0200
>>> "Zdenek Kabelac" <zdenek.kabelac@gmail.com> wrote:
>>>
>>> > It looks like while there was a huge amount of buffers and caches -
>>> > system was unable to allocate few pages for kmalloc in iwl3945 driver
>>> > after resume.
>>>
>>> It looks like this is because it wants to allocate 2**5 contiguous
>>> pages, which is 128kB of contiguous kernel memory.
>>
>> 64-bit system I assume?
>> The allocation should be 256 * 20 * sizeof(struct sk_buff *).
>
>> Try the patch below. It should improve code generation too.
>>
>> I discussed this with Tomas previously and he says the hw is capable of
>> doing 20 fragments per frame (wonder why, Broadcom can do an unlimited
>> number...) but he complained about the networking stack not being able
>> to.
>
> This is scatter gather buffers that can be kicked in one DMA transaction.
>
> Well, the hardware needs to support IP checksumming for that, hence,
>> afaik, only two fragments can ever be used (one for hw header, one for
>> frame)
> This I still don't understand why but everybody is already tired to
> explaining me why.. :) Just need to find time to dig into it.
>
>> This cuts the allocation to 10%, or (under) a page in all cases.
>
> Probably. it would be safe to use vmalloc for allocating txb anyway.
> I'll give it a try.

So vmalloc  didn't break anything on the 32bit machine I'm just about
to install 64 one so it will take hour or two.. I will issue some
official patch after that.

> There was already discussion on LKML about memory allocation problems
> on X86_64, which might explain this regression. This didn't happen
> before.

This is  the thread title if you are interested.
'x86/kernel/pci_dma.c: gfp |= __GFP_NORETRY'

Tomas

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

* Re: Problem: Out of memory after 2days with 2GB RAM
  2008-06-12 14:12     ` Zdenek Kabelac
  2008-06-12 14:19       ` Johannes Berg
@ 2008-06-12 16:38       ` Tomas Winkler
  1 sibling, 0 replies; 27+ messages in thread
From: Tomas Winkler @ 2008-06-12 16:38 UTC (permalink / raw)
  To: Zdenek Kabelac
  Cc: Johannes Berg, Rik van Riel, Linux Kernel Mailing List, yi.zhu,
	reinette.chatre, linux-wireless

On Thu, Jun 12, 2008 at 5:12 PM, Zdenek Kabelac
<zdenek.kabelac@gmail.com> wrote:
> 2008/6/12 Johannes Berg <johannes@sipsolutions.net>:
>> On Thu, 2008-06-12 at 09:38 -0400, Rik van Riel wrote:
>>> On Thu, 12 Jun 2008 12:07:34 +0200
>>> "Zdenek Kabelac" <zdenek.kabelac@gmail.com> wrote:
>>>
>>> > It looks like while there was a huge amount of buffers and caches -
>>> > system was unable to allocate few pages for kmalloc in iwl3945 driver
>>> > after resume.
>>>
>>> It looks like this is because it wants to allocate 2**5 contiguous
>>> pages, which is 128kB of contiguous kernel memory.
>>
>> 64-bit system I assume?
>> The allocation should be 256 * 20 * sizeof(struct sk_buff *).
>>
>> Try the patch below. It should improve code generation too.
>
> I'll surely try you patch - but is the iwl the only driver which needs
> 128kB continuous memory chunk?

We do some stupid free-alloc sequence on restart this is where it
fails. I'm still polishing a patch that eliminates it.
Tomas

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

* Re: Problem: Out of memory after 2days with 2GB RAM
  2008-06-12 15:43     ` Tomas Winkler
  2008-06-12 16:35       ` Tomas Winkler
@ 2008-06-12 17:03       ` Johannes Berg
  2008-06-12 17:35         ` Tomas Winkler
  2008-06-12 17:10       ` Rik van Riel
  2008-06-12 21:30       ` Jiri Slaby
  3 siblings, 1 reply; 27+ messages in thread
From: Johannes Berg @ 2008-06-12 17:03 UTC (permalink / raw)
  To: Tomas Winkler
  Cc: Rik van Riel, Zdenek Kabelac, Linux Kernel Mailing List, yi.zhu,
	reinette.chatre, linux-wireless

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


> > Try the patch below. It should improve code generation too.
> >
> > I discussed this with Tomas previously and he says the hw is capable of
> > doing 20 fragments per frame (wonder why, Broadcom can do an unlimited
> > number...) but he complained about the networking stack not being able
> > to.
> 
> This is scatter gather buffers that can be kicked in one DMA transaction.
> 
> Well, the hardware needs to support IP checksumming for that, hence,
> > afaik, only two fragments can ever be used (one for hw header, one for
> > frame)
> This I still don't understand why but everybody is already tired to
> explaining me why.. :) Just need to find time to dig into it.

And you can safely decrease the allocation to 10% as I do in my patch
because once you understand you'll see that you cannot possibly use
more. Hence, you can ack this patch ;)

> > This cuts the allocation to 10%, or (under) a page in all cases.
> 
> Probably. it would be safe to use vmalloc for allocating txb anyway.
> I'll give it a try.

Yeah, but why bother if we can just allocate 10% of the size, waste a
lot less memory etc. mac80211 isn't going to pass in a scatter/gather
frame anyway.

> There was already discussion on LKML about memory allocation problems
> on X86_64, which might explain this regression. This didn't happen
> before.

Doesn't really matter, iwlwifi is _wasting_ this allocation, it cannot
possibly use all those buffers anyway.

The more interesting thing is the pci_alloc_consistent allocation right
below that is also _huge_, but that's because of the stupid hardware
design, or can the hardware cope with having the descriptors non-linear
in memory?

johannes

[-- Attachment #2: This is a digitally signed message part --]
[-- Type: application/pgp-signature, Size: 836 bytes --]

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

* Re: Problem: Out of memory after 2days with 2GB RAM
  2008-06-12 16:35       ` Tomas Winkler
@ 2008-06-12 17:05         ` Johannes Berg
  2008-06-12 17:39           ` Tomas Winkler
  0 siblings, 1 reply; 27+ messages in thread
From: Johannes Berg @ 2008-06-12 17:05 UTC (permalink / raw)
  To: Tomas Winkler
  Cc: Rik van Riel, Zdenek Kabelac, Linux Kernel Mailing List, yi.zhu,
	reinette.chatre, linux-wireless

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


> > Probably. it would be safe to use vmalloc for allocating txb anyway.
> > I'll give it a try.
> 
> So vmalloc  didn't break anything on the 32bit machine I'm just about
> to install 64 one so it will take hour or two.. I will issue some
> official patch after that.

Well, I disagree, and I'll push my patch as soon as somebody confirms
that it doesn't break anything.

> > There was already discussion on LKML about memory allocation problems
> > on X86_64, which might explain this regression. This didn't happen
> > before.
> 
> This is  the thread title if you are interested.
> 'x86/kernel/pci_dma.c: gfp |= __GFP_NORETRY'

Like I said, it doesn't matter, there's no need to _waste_
18*256*sizeof(void *) bytes memory.

johannes

[-- Attachment #2: This is a digitally signed message part --]
[-- Type: application/pgp-signature, Size: 836 bytes --]

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

* Re: Problem: Out of memory after 2days with 2GB RAM
  2008-06-12 15:43     ` Tomas Winkler
  2008-06-12 16:35       ` Tomas Winkler
  2008-06-12 17:03       ` Johannes Berg
@ 2008-06-12 17:10       ` Rik van Riel
  2008-06-12 21:30       ` Jiri Slaby
  3 siblings, 0 replies; 27+ messages in thread
From: Rik van Riel @ 2008-06-12 17:10 UTC (permalink / raw)
  To: Tomas Winkler
  Cc: Johannes Berg, Zdenek Kabelac, Linux Kernel Mailing List, yi.zhu,
	reinette.chatre, linux-wireless

On Thu, 12 Jun 2008 18:43:37 +0300
"Tomas Winkler" <tomasw@gmail.com> wrote:

> This is scatter gather buffers that can be kicked in one DMA transaction.

> This I still don't understand why but everybody is already tired to
> explaining me why.. :) Just need to find time to dig into it.

The only thing that makes no sense to me is why your
driver "needs" to allocate 10x as much memory in that
buffer than it will ever use.

What is the problem with the simpler solution, which
just reduces the size of the buffer to an amount of
memory that might actually get used?

-- 
All Rights Reversed

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

* Re: Problem: Out of memory after 2days with 2GB RAM
  2008-06-12 17:03       ` Johannes Berg
@ 2008-06-12 17:35         ` Tomas Winkler
  2008-06-12 17:39           ` Johannes Berg
  0 siblings, 1 reply; 27+ messages in thread
From: Tomas Winkler @ 2008-06-12 17:35 UTC (permalink / raw)
  To: Johannes Berg
  Cc: Rik van Riel, Zdenek Kabelac, Linux Kernel Mailing List, yi.zhu,
	reinette.chatre, linux-wireless

On Thu, Jun 12, 2008 at 8:03 PM, Johannes Berg
<johannes@sipsolutions.net> wrote:
>
>> > Try the patch below. It should improve code generation too.
>> >
>> > I discussed this with Tomas previously and he says the hw is capable of
>> > doing 20 fragments per frame (wonder why, Broadcom can do an unlimited
>> > number...) but he complained about the networking stack not being able
>> > to.
>>
>> This is scatter gather buffers that can be kicked in one DMA transaction.
>>
>> Well, the hardware needs to support IP checksumming for that, hence,
>> > afaik, only two fragments can ever be used (one for hw header, one for
>> > frame)
>> This I still don't understand why but everybody is already tired to
>> explaining me why.. :) Just need to find time to dig into it.
>
> And you can safely decrease the allocation to 10% as I do in my patch
> because once you understand you'll see that you cannot possibly use
> more. Hence, you can ack this patch ;)
>
>> > This cuts the allocation to 10%, or (under) a page in all cases.
>>
>> Probably. it would be safe to use vmalloc for allocating txb anyway.
>> I'll give it a try.
>
> Yeah, but why bother if we can just allocate 10% of the size, waste a
> lot less memory etc. mac80211 isn't going to pass in a scatter/gather
> frame anyway.

Hope never dies. I actually have seen this speed up the throughput so
I will dig into it anyway.

>> There was already discussion on LKML about memory allocation problems
>> on X86_64, which might explain this regression. This didn't happen
>> before.
>
> Doesn't really matter, iwlwifi is _wasting_ this allocation, it cannot
> possibly use all those buffers anyway.

This matter actually for consistent allocation.

> The more interesting thing is the pci_alloc_consistent allocation right
> below that is also _huge_, but that's because of the stupid hardware
> design, or can the hardware cope with having the descriptors non-linear
> in memory?

We talk after your next HW design. How will configure 265 * 16
descriptors separately.

Tomas

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

* Re: Problem: Out of memory after 2days with 2GB RAM
  2008-06-12 17:35         ` Tomas Winkler
@ 2008-06-12 17:39           ` Johannes Berg
  2008-06-12 17:50             ` Tomas Winkler
  0 siblings, 1 reply; 27+ messages in thread
From: Johannes Berg @ 2008-06-12 17:39 UTC (permalink / raw)
  To: Tomas Winkler
  Cc: Rik van Riel, Zdenek Kabelac, Linux Kernel Mailing List, yi.zhu,
	reinette.chatre, linux-wireless

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


> > Yeah, but why bother if we can just allocate 10% of the size, waste a
> > lot less memory etc. mac80211 isn't going to pass in a scatter/gather
> > frame anyway.
> 
> Hope never dies. I actually have seen this speed up the throughput so
> I will dig into it anyway.

Well, you can always add it back later if you make the networking stack
and mac80211 support it. It's a two-line patch after all.

> > The more interesting thing is the pci_alloc_consistent allocation right
> > below that is also _huge_, but that's because of the stupid hardware
> > design, or can the hardware cope with having the descriptors non-linear
> > in memory?
> 
> We talk after your next HW design. How will configure 265 * 16
> descriptors separately.

Well, considering that other hardware does manage to do things
differently (say Broadcom because I know their DMA engine), I don't know
why your hw designers went wild with this. All you need is an
"end-of-frame" flag. But that's not really interesting to discuss,
unless this is actually controlled by the microcode and you can change
it.

johannes

[-- Attachment #2: This is a digitally signed message part --]
[-- Type: application/pgp-signature, Size: 836 bytes --]

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

* Re: Problem: Out of memory after 2days with 2GB RAM
  2008-06-12 17:05         ` Johannes Berg
@ 2008-06-12 17:39           ` Tomas Winkler
  2008-06-12 17:46             ` Johannes Berg
  0 siblings, 1 reply; 27+ messages in thread
From: Tomas Winkler @ 2008-06-12 17:39 UTC (permalink / raw)
  To: Johannes Berg
  Cc: Rik van Riel, Zdenek Kabelac, Linux Kernel Mailing List, yi.zhu,
	reinette.chatre, linux-wireless

On Thu, Jun 12, 2008 at 8:05 PM, Johannes Berg
<johannes@sipsolutions.net> wrote:
>
>> > Probably. it would be safe to use vmalloc for allocating txb anyway.
>> > I'll give it a try.
>>
>> So vmalloc  didn't break anything on the 32bit machine I'm just about
>> to install 64 one so it will take hour or two.. I will issue some
>> official patch after that.
>
> Well, I disagree, and I'll push my patch as soon as somebody confirms
> that it doesn't break anything.

Remember you are not a maintainer of this driver and second we are
open to all suggestions you don't have to use this kind of
statements...

>
>> > There was already discussion on LKML about memory allocation problems
>> > on X86_64, which might explain this regression. This didn't happen
>> > before.
>>
>> This is  the thread title if you are interested.
>> 'x86/kernel/pci_dma.c: gfp |= __GFP_NORETRY'
>
> Like I said, it doesn't matter, there's no need to _waste_
> 18*256*sizeof(void *) bytes memory.

It does matter this is not pci allocation we are saving in your patch.

> johannes
>

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

* Re: Problem: Out of memory after 2days with 2GB RAM
  2008-06-12 17:39           ` Tomas Winkler
@ 2008-06-12 17:46             ` Johannes Berg
  2008-06-12 18:03               ` Tomas Winkler
  2008-06-12 18:41               ` John W. Linville
  0 siblings, 2 replies; 27+ messages in thread
From: Johannes Berg @ 2008-06-12 17:46 UTC (permalink / raw)
  To: Tomas Winkler
  Cc: Rik van Riel, Zdenek Kabelac, Linux Kernel Mailing List, yi.zhu,
	reinette.chatre, linux-wireless

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


> > Well, I disagree, and I'll push my patch as soon as somebody confirms
> > that it doesn't break anything.
> 
> Remember you are not a maintainer of this driver and second we are
> open to all suggestions you don't have to use this kind of
> statements...

Yeah, you're right, I can't really do that. But I can submit the patch
to akpm, and I'm sure he'll take it after you provide your counter
argument about hope never dying again ;)

Frankly, I don't see why you're so opposed to this patch even if it
doesn't solve anything it probably leads to better code generation and
using a lot less memory.

Also, I know you cannot actually need those descriptors since mac80211
will never ever pass such frames, and _that_ is an area I do have at
least some influence over, so I'll surely notice when that changes.

> >> > There was already discussion on LKML about memory allocation problems
> >> > on X86_64, which might explain this regression. This didn't happen
> >> > before.
> >>
> >> This is  the thread title if you are interested.
> >> 'x86/kernel/pci_dma.c: gfp |= __GFP_NORETRY'
> >
> > Like I said, it doesn't matter, there's no need to _waste_
> > 18*256*sizeof(void *) bytes memory.
> 
> It does matter this is not pci allocation we are saving in your patch.

Well, thing is, my patch saves 18 KiB memory on 32-bit and 36 on 64-bit,
so I think we should merge it regardless. Yes, the pci allocation is
icky, and yes, it would be good to just do it once instead of over and
over again, but even if you change it to do _all_ those allocations just
once we should not be wasting those 18/36 KiB memory for nothing.

johannes

[-- Attachment #2: This is a digitally signed message part --]
[-- Type: application/pgp-signature, Size: 836 bytes --]

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

* Re: Problem: Out of memory after 2days with 2GB RAM
  2008-06-12 17:39           ` Johannes Berg
@ 2008-06-12 17:50             ` Tomas Winkler
  0 siblings, 0 replies; 27+ messages in thread
From: Tomas Winkler @ 2008-06-12 17:50 UTC (permalink / raw)
  To: Johannes Berg
  Cc: Rik van Riel, Zdenek Kabelac, Linux Kernel Mailing List, yi.zhu,
	reinette.chatre, linux-wireless

On Thu, Jun 12, 2008 at 8:39 PM, Johannes Berg
<johannes@sipsolutions.net> wrote:
>
>> > Yeah, but why bother if we can just allocate 10% of the size, waste a
>> > lot less memory etc. mac80211 isn't going to pass in a scatter/gather
>> > frame anyway.
>>
>> Hope never dies. I actually have seen this speed up the throughput so
>> I will dig into it anyway.
>
> Well, you can always add it back later if you make the networking stack
> and mac80211 support it. It's a two-line patch after all.

I will handle this.

>> > The more interesting thing is the pci_alloc_consistent allocation right
>> > below that is also _huge_, but that's because of the stupid hardware
>> > design, or can the hardware cope with having the descriptors non-linear
>> > in memory?
>>
>> We talk after your next HW design. How will configure 265 * 16
>> descriptors separately.
>
> Well, considering that other hardware does manage to do things
> differently (say Broadcom because I know their DMA engine), I don't know
> why your hw designers went wild with this. All you need is an
> "end-of-frame" flag. But that's not really interesting to discuss,
> unless this is actually controlled by the microcode and you can change
> it.
>
This is have to do something with HW packet scheduling

> johannes
>

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

* Re: Problem: Out of memory after 2days with 2GB RAM
  2008-06-12 17:46             ` Johannes Berg
@ 2008-06-12 18:03               ` Tomas Winkler
  2008-06-12 18:15                 ` Johannes Berg
  2008-06-12 18:41               ` John W. Linville
  1 sibling, 1 reply; 27+ messages in thread
From: Tomas Winkler @ 2008-06-12 18:03 UTC (permalink / raw)
  To: Johannes Berg
  Cc: Rik van Riel, Zdenek Kabelac, Linux Kernel Mailing List, yi.zhu,
	reinette.chatre, linux-wireless

On Thu, Jun 12, 2008 at 8:46 PM, Johannes Berg
<johannes@sipsolutions.net> wrote:
>
>> > Well, I disagree, and I'll push my patch as soon as somebody confirms
>> > that it doesn't break anything.
>>
>> Remember you are not a maintainer of this driver and second we are
>> open to all suggestions you don't have to use this kind of
>> statements...
>
> Yeah, you're right, I can't really do that. But I can submit the patch
> to akpm, and I'm sure he'll take it after you provide your counter
> argument about hope never dying again ;)

Here you go again

> Frankly, I don't see why you're so opposed to this patch even if it
> doesn't solve anything it probably leads to better code generation and
> using a lot less memory.

I'm not against it. You;v decided that I'm fighting you because I gave
another solution.
Frankly we probably don't need this allocation at all. maybe one skb
is just enough
even with my never dying hope all fragments are in skb fragment list.
This still probably won't save pci memory allocation problem

Tomas


> Also, I know you cannot actually need those descriptors since mac80211
> will never ever pass such frames, and _that_ is an area I do have at
> least some influence over, so I'll surely notice when that changes.
>
>> >> > There was already discussion on LKML about memory allocation problems
>> >> > on X86_64, which might explain this regression. This didn't happen
>> >> > before.
>> >>
>> >> This is  the thread title if you are interested.
>> >> 'x86/kernel/pci_dma.c: gfp |= __GFP_NORETRY'
>> >
>> > Like I said, it doesn't matter, there's no need to _waste_
>> > 18*256*sizeof(void *) bytes memory.
>>
>> It does matter this is not pci allocation we are saving in your patch.
>
> Well, thing is, my patch saves 18 KiB memory on 32-bit and 36 on 64-bit,
> so I think we should merge it regardless. Yes, the pci allocation is
> icky, and yes, it would be good to just do it once instead of over and
> over again, but even if you change it to do _all_ those allocations just
> once we should not be wasting those 18/36 KiB memory for nothing.
>
> johannes
>

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

* Re: Problem: Out of memory after 2days with 2GB RAM
  2008-06-12 18:03               ` Tomas Winkler
@ 2008-06-12 18:15                 ` Johannes Berg
  2008-06-12 20:11                   ` Zdenek Kabelac
  0 siblings, 1 reply; 27+ messages in thread
From: Johannes Berg @ 2008-06-12 18:15 UTC (permalink / raw)
  To: Tomas Winkler
  Cc: Rik van Riel, Zdenek Kabelac, Linux Kernel Mailing List, yi.zhu,
	reinette.chatre, linux-wireless

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


> I'm not against it. You;v decided that I'm fighting you because I gave
> another solution.

Ok, no, I'm not saying you shouldn't rewrite all the code to get rid of
it, but I think you can use a patch like mine interim as such a rewrite
is unlikely to go into 2.6.26, is it?

> Frankly we probably don't need this allocation at all. maybe one skb
> is just enough

That would be nice, indeed.

> even with my never dying hope all fragments are in skb fragment list.

:)

> This still probably won't save pci memory allocation problem

Yeah, true, that one needs to be done, but it could probably be done
only once when hw is probed rather than every time it is brought up.
Most likely not something you'll get to fix in 2.6.26 either though.

johannes

[-- Attachment #2: This is a digitally signed message part --]
[-- Type: application/pgp-signature, Size: 836 bytes --]

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

* Re: Problem: Out of memory after 2days with 2GB RAM
  2008-06-12 17:46             ` Johannes Berg
  2008-06-12 18:03               ` Tomas Winkler
@ 2008-06-12 18:41               ` John W. Linville
  1 sibling, 0 replies; 27+ messages in thread
From: John W. Linville @ 2008-06-12 18:41 UTC (permalink / raw)
  To: Johannes Berg
  Cc: Tomas Winkler, Rik van Riel, Zdenek Kabelac,
	Linux Kernel Mailing List, yi.zhu, reinette.chatre,
	linux-wireless

On Thu, Jun 12, 2008 at 07:46:52PM +0200, Johannes Berg wrote:
> 
> > > Well, I disagree, and I'll push my patch as soon as somebody confirms
> > > that it doesn't break anything.
> > 
> > Remember you are not a maintainer of this driver and second we are
> > open to all suggestions you don't have to use this kind of
> > statements...
> 
> Yeah, you're right, I can't really do that. But I can submit the patch
> to akpm, and I'm sure he'll take it after you provide your counter
> argument about hope never dying again ;)

Is there some reason you think I would need to be cut out of the loop??
akpm isn't the only one who likes solutions...

John
-- 
John W. Linville
linville@tuxdriver.com

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

* Re: Problem: Out of memory after 2days with 2GB RAM
  2008-06-12 18:15                 ` Johannes Berg
@ 2008-06-12 20:11                   ` Zdenek Kabelac
  2008-06-12 22:17                     ` Tomas Winkler
  2008-06-13  0:43                     ` Andrew Morton
  0 siblings, 2 replies; 27+ messages in thread
From: Zdenek Kabelac @ 2008-06-12 20:11 UTC (permalink / raw)
  To: Johannes Berg
  Cc: Tomas Winkler, Rik van Riel, Linux Kernel Mailing List, yi.zhu,
	reinette.chatre, linux-wireless

2008/6/12 Johannes Berg <johannes@sipsolutions.net>:
>
>> I'm not against it. You;v decided that I'm fighting you because I gave
>> another solution.
>
> Ok, no, I'm not saying you shouldn't rewrite all the code to get rid of
> it, but I think you can use a patch like mine interim as such a rewrite
> is unlikely to go into 2.6.26, is it?
>
>> Frankly we probably don't need this allocation at all. maybe one skb
>> is just enough
>
> That would be nice, indeed.
>
>> even with my never dying hope all fragments are in skb fragment list.
>
> :)
>
>> This still probably won't save pci memory allocation problem
>
> Yeah, true, that one needs to be done, but it could probably be done
> only once when hw is probed rather than every time it is brought up.
> Most likely not something you'll get to fix in 2.6.26 either though.


Well - it's great that there will be saved few kB in allocation of
never used pointers in iwl driver - but does this really solve the
problem that kernel gets relatively quickly out of memory for
allocations of this size - I guess iwl isn't the only driver
requesting 32 sequential pages.

Is it possible to track how this memory gets fragment/lost - who owns
the block and why they are not back in the pool?

btw with 8hour uptime at this moment I can see this:

DMA: 26*4kB 37*8kB 72*16kB 65*32kB 3*64kB 0*128kB 0*256kB 0*512kB
0*1024kB 0*2048kB 1*4096kB = 7920kB
DMA32: 203*4kB 79*8kB 26*16kB 11*32kB 6*64kB 9*128kB 3*256kB 2*512kB
2*1024kB 0*2048kB 0*4096kB = 7588kB

so at this moment I can see quiet a lot of free DMA memory - but in my
trace at the thread beginig after several suspend/resumes this memory
was gone....

Zdenek

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

* Re: Problem: Out of memory after 2days with 2GB RAM
  2008-06-12 15:43     ` Tomas Winkler
                         ` (2 preceding siblings ...)
  2008-06-12 17:10       ` Rik van Riel
@ 2008-06-12 21:30       ` Jiri Slaby
  2008-06-12 22:26         ` Tomas Winkler
  3 siblings, 1 reply; 27+ messages in thread
From: Jiri Slaby @ 2008-06-12 21:30 UTC (permalink / raw)
  To: Tomas Winkler
  Cc: Johannes Berg, Rik van Riel, Zdenek Kabelac,
	Linux Kernel Mailing List, yi.zhu, reinette.chatre,
	linux-wireless

On 06/12/2008 05:43 PM, Tomas Winkler wrote:
> On Thu, Jun 12, 2008 at 4:54 PM, Johannes Berg
> <johannes@sipsolutions.net> wrote:
>> This cuts the allocation to 10%, or (under) a page in all cases.
> 
> Probably. it would be safe to use vmalloc for allocating txb anyway.
> I'll give it a try.

Why it wouldn't be "safe". I suggested it to you already, since allocating 64k 
by kmalloc for descriptors accessed only in kernel is crud. Moreover you're 
mixing the buffer with its descriptors here? Or what you're considering to vmalloc?

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

* Re: Problem: Out of memory after 2days with 2GB RAM
  2008-06-12 20:11                   ` Zdenek Kabelac
@ 2008-06-12 22:17                     ` Tomas Winkler
  2008-06-13  0:43                     ` Andrew Morton
  1 sibling, 0 replies; 27+ messages in thread
From: Tomas Winkler @ 2008-06-12 22:17 UTC (permalink / raw)
  To: Zdenek Kabelac
  Cc: Johannes Berg, Rik van Riel, Linux Kernel Mailing List, yi.zhu,
	reinette.chatre, linux-wireless

On Thu, Jun 12, 2008 at 11:11 PM, Zdenek Kabelac
<zdenek.kabelac@gmail.com> wrote:
> 2008/6/12 Johannes Berg <johannes@sipsolutions.net>:
>>
>>> I'm not against it. You;v decided that I'm fighting you because I gave
>>> another solution.
>>
>> Ok, no, I'm not saying you shouldn't rewrite all the code to get rid of
>> it, but I think you can use a patch like mine interim as such a rewrite
>> is unlikely to go into 2.6.26, is it?
>>
>>> Frankly we probably don't need this allocation at all. maybe one skb
>>> is just enough
>>
>> That would be nice, indeed.
>>
>>> even with my never dying hope all fragments are in skb fragment list.
>>
>> :)
>>
>>> This still probably won't save pci memory allocation problem
>>
>> Yeah, true, that one needs to be done, but it could probably be done
>> only once when hw is probed rather than every time it is brought up.
>> Most likely not something you'll get to fix in 2.6.26 either though.
>
>
> Well - it's great that there will be saved few kB in allocation of
> never used pointers in iwl driver - but does this really solve the
> problem that kernel gets relatively quickly out of memory for
> allocations of this size - I guess iwl isn't the only driver
> requesting 32 sequential pages.
>
> Is it possible to track how this memory gets fragment/lost - who owns
> the block and why they are not back in the pool?
>
> btw with 8hour uptime at this moment I can see this:
>
> DMA: 26*4kB 37*8kB 72*16kB 65*32kB 3*64kB 0*128kB 0*256kB 0*512kB
> 0*1024kB 0*2048kB 1*4096kB = 7920kB
> DMA32: 203*4kB 79*8kB 26*16kB 11*32kB 6*64kB 9*128kB 3*256kB 2*512kB
> 2*1024kB 0*2048kB 0*4096kB = 7588kB
>
> so at this moment I can see quiet a lot of free DMA memory - but in my
> trace at the thread beginig after several suspend/resumes this memory
> was gone....

Currently the driver frees the memory on down and allocates it back on
up. This is done even in initial
reset for sake of flow simplicity.
I'm not sure yet why the memory is actually accumulating, whether the
bug is in the driver or memory system is not clear to me yet.  I
haven't seen this on older kernels or driver.
As I wrote I'm also polishing a patch that doesn't do this free-alloc
loop hope this will remedy somehow this problem. It has a drawback as
it will hold on memory even if devices is down.

Tomas

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

* Re: Problem: Out of memory after 2days with 2GB RAM
  2008-06-12 21:30       ` Jiri Slaby
@ 2008-06-12 22:26         ` Tomas Winkler
  0 siblings, 0 replies; 27+ messages in thread
From: Tomas Winkler @ 2008-06-12 22:26 UTC (permalink / raw)
  To: Jiri Slaby
  Cc: Johannes Berg, Rik van Riel, Zdenek Kabelac,
	Linux Kernel Mailing List, yi.zhu, reinette.chatre,
	linux-wireless

On Fri, Jun 13, 2008 at 12:30 AM, Jiri Slaby <jirislaby@gmail.com> wrote:
> On 06/12/2008 05:43 PM, Tomas Winkler wrote:
>>
>> On Thu, Jun 12, 2008 at 4:54 PM, Johannes Berg
>> <johannes@sipsolutions.net> wrote:
>>>
>>> This cuts the allocation to 10%, or (under) a page in all cases.
>>
>> Probably. it would be safe to use vmalloc for allocating txb anyway.
>> I'll give it a try.
>
> Why it wouldn't be "safe". I suggested it to you already, since allocating
> 64k by kmalloc for descriptors accessed only in kernel is crud. Moreover
> you're mixing the buffer with its descriptors here? Or what you're
> considering to vmalloc?
>
Not that. I just wasn't sure when I dropped the line  I'm not doing it
under some spinlock or something like that.
Tomas

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

* Re: Problem: Out of memory after 2days with 2GB RAM
  2008-06-12 20:11                   ` Zdenek Kabelac
  2008-06-12 22:17                     ` Tomas Winkler
@ 2008-06-13  0:43                     ` Andrew Morton
  1 sibling, 0 replies; 27+ messages in thread
From: Andrew Morton @ 2008-06-13  0:43 UTC (permalink / raw)
  To: Zdenek Kabelac
  Cc: johannes, tomasw, riel, linux-kernel, yi.zhu, reinette.chatre,
	linux-wireless

On Thu, 12 Jun 2008 22:11:32 +0200
"Zdenek Kabelac" <zdenek.kabelac@gmail.com> wrote:

> Well - it's great that there will be saved few kB in allocation of
> never used pointers in iwl driver - but does this really solve the
> problem that kernel gets relatively quickly out of memory for
> allocations of this size - I guess iwl isn't the only driver
> requesting 32 sequential pages.

I hope it is the only one.  Doing a 128kb GFP_ATOMIC allocation is
hopelessly unreliable.  Even a 128k GFP_KERNEL allocation will fail all
over the place.

Please convert the driver to allocate no more than 4k at a time.

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

* Re: Problem: Out of memory after 2days with 2GB RAM
  2008-06-12 10:07 Problem: Out of memory after 2days with 2GB RAM Zdenek Kabelac
  2008-06-12 13:38 ` Rik van Riel
@ 2008-06-13 14:08 ` Rafael J. Wysocki
  2008-06-13 14:15   ` Zdenek Kabelac
  1 sibling, 1 reply; 27+ messages in thread
From: Rafael J. Wysocki @ 2008-06-13 14:08 UTC (permalink / raw)
  To: Zdenek Kabelac; +Cc: Linux Kernel Mailing List, riel

On Thursday, 12 of June 2008, Zdenek Kabelac wrote:
> Hello
> 
> I'm attaching a trace where my machine has got into big troubles after
> 2 day usage and several successful suspend/resumes (this seems to be
> finally getting better now :))
> 
> It looks like while there was a huge amount of buffers and caches -
> system was unable to allocate few pages for kmalloc in iwl3945 driver
> after resume.
> 
> I've even tried to 3 > drop_cache  and reinsert iwl driver - but this
> had fatal results - machine died completely with blinking caps lock -
> and no oops in the log for this case:
> 
> This is the commit aab2545fdd6641b76af0ae96456c4ca9d1e50dad  for the
> 2.6.26-rc5 I've been in this case.

Is this a regression from 2.6.25, BTW?

Rafael

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

* Re: Problem: Out of memory after 2days with 2GB RAM
  2008-06-13 14:08 ` Rafael J. Wysocki
@ 2008-06-13 14:15   ` Zdenek Kabelac
  2008-06-30 11:30     ` Zdenek Kabelac
  0 siblings, 1 reply; 27+ messages in thread
From: Zdenek Kabelac @ 2008-06-13 14:15 UTC (permalink / raw)
  To: Rafael J. Wysocki; +Cc: Linux Kernel Mailing List, riel

2008/6/13 Rafael J. Wysocki <rjw@sisk.pl>:
> On Thursday, 12 of June 2008, Zdenek Kabelac wrote:
>> Hello
>>
>> I'm attaching a trace where my machine has got into big troubles after
>> 2 day usage and several successful suspend/resumes (this seems to be
>> finally getting better now :))
>>
>> It looks like while there was a huge amount of buffers and caches -
>> system was unable to allocate few pages for kmalloc in iwl3945 driver
>> after resume.
>>
>> I've even tried to 3 > drop_cache  and reinsert iwl driver - but this
>> had fatal results - machine died completely with blinking caps lock -
>> and no oops in the log for this case:
>>
>> This is the commit aab2545fdd6641b76af0ae96456c4ca9d1e50dad  for the
>> 2.6.26-rc5 I've been in this case.
>
> Is this a regression from 2.6.25, BTW?

Well I've never seen this with 2.6.25 kernel - on the other hand
usually I've not been running machine for a longer period of time,
because suspend was failing too often I guess. Now it's more stable so
this bug has shown up.

It might be related to this issue as well http://lkml.org/lkml/2008/5/22/308

Zdenek

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

* Re: Problem: Out of memory after 2days with 2GB RAM
  2008-06-13 14:15   ` Zdenek Kabelac
@ 2008-06-30 11:30     ` Zdenek Kabelac
  0 siblings, 0 replies; 27+ messages in thread
From: Zdenek Kabelac @ 2008-06-30 11:30 UTC (permalink / raw)
  To: Rafael J. Wysocki; +Cc: Linux Kernel Mailing List, riel

2008/6/13 Zdenek Kabelac <zdenek.kabelac@gmail.com>:
> 2008/6/13 Rafael J. Wysocki <rjw@sisk.pl>:
>> On Thursday, 12 of June 2008, Zdenek Kabelac wrote:
>>> Hello
>>>
>>> I'm attaching a trace where my machine has got into big troubles after
>>> 2 day usage and several successful suspend/resumes (this seems to be
>>> finally getting better now :))
>>>
>>> It looks like while there was a huge amount of buffers and caches -
>>> system was unable to allocate few pages for kmalloc in iwl3945 driver
>>> after resume.
>>>
>>> I've even tried to 3 > drop_cache  and reinsert iwl driver - but this
>>> had fatal results - machine died completely with blinking caps lock -
>>> and no oops in the log for this case:
>>>
>>> This is the commit aab2545fdd6641b76af0ae96456c4ca9d1e50dad  for the
>>> 2.6.26-rc5 I've been in this case.
>>
>> Is this a regression from 2.6.25, BTW?
>
> Well I've never seen this with 2.6.25 kernel - on the other hand
> usually I've not been running machine for a longer period of time,
> because suspend was failing too often I guess. Now it's more stable so
> this bug has shown up.
>
> It might be related to this issue as well http://lkml.org/lkml/2008/5/22/308
>


I'd like to point out - that -rc8 kernel without the iwl patch from
this thread is still failing (even though the OOM patch for memory
allocation on x86_64 is in the /mm directory.

Also as far as I can see - there is actually DMA memory chunk to
satisfy order 5 allocation in the log - so why is it failing ?

Zdenek

----

ACPI: PCI Interrupt 0000:03:00.0[A] -> GSI 17 (level, low) -> IRQ 17
NetworkManager: page allocation failure. order:5, mode:0x24
Pid: 2656, comm: NetworkManager Tainted: G        W 2.6.26-rc8 #37

Call Trace:
 [<ffffffff81092de0>] __alloc_pages_internal+0x460/0x5a0
 [<ffffffffa0228818>] ? :iwl3945:iwl3945_hw_tx_queue_init+0x38/0x1a0
 [<ffffffff81092f3b>] __alloc_pages+0xb/0x10
 [<ffffffff81011c86>] dma_alloc_pages+0x26/0x30
 [<ffffffff81011d74>] dma_alloc_coherent+0xe4/0x2d0
 [<ffffffffa02273d3>] :iwl3945:iwl3945_tx_queue_init+0x63/0x1e0
 [<ffffffffa022a08e>] :iwl3945:iwl3945_hw_nic_init+0x8de/0x940
 [<ffffffffa021de01>] :iwl3945:__iwl3945_up+0x91/0x640
 [<ffffffffa021e968>] :iwl3945:iwl3945_mac_start+0x568/0x790
 [<ffffffff8128b30d>] ? __nla_put+0x2d/0x40
 [<ffffffff8128b2c3>] ? __nla_reserve+0x53/0x70
 [<ffffffff810b3714>] ? deactivate_slab+0x194/0x1c0
 [<ffffffffa0184dff>] :mac80211:ieee80211_open+0x13f/0x590
 [<ffffffff81274738>] ? dev_set_rx_mode+0x48/0x60
 [<ffffffff81276809>] dev_open+0x89/0xf0
 [<ffffffff81276031>] dev_change_flags+0xa1/0x1e0
 [<ffffffff81273ca9>] ? dev_get_by_index+0x19/0x80
 [<ffffffff8127f214>] do_setlink+0x214/0x3a0
 [<ffffffff812f6c20>] ? _read_unlock+0x30/0x60
 [<ffffffff8127f4ad>] rtnl_setlink+0x10d/0x150
 [<ffffffff8128069d>] rtnetlink_rcv_msg+0x18d/0x240
 [<ffffffff81280510>] ? rtnetlink_rcv_msg+0x0/0x240
 [<ffffffff8128b079>] netlink_rcv_skb+0x89/0xb0
 [<ffffffff812804f9>] rtnetlink_rcv+0x29/0x40
 [<ffffffff8128aa95>] netlink_unicast+0x2d5/0x2f0
 [<ffffffff8126ef7e>] ? __alloc_skb+0x6e/0x150
 [<ffffffff8128acb4>] netlink_sendmsg+0x204/0x300
 [<ffffffff812f6c20>] ? _read_unlock+0x30/0x60
 [<ffffffff81266887>] sock_sendmsg+0x127/0x140
 [<ffffffff812666e9>] ? sock_recvmsg+0x139/0x150
 [<ffffffff81052a90>] ? autoremove_wake_function+0x0/0x40
 [<ffffffff81267627>] ? move_addr_to_kernel+0x57/0x60
 [<ffffffff8126ff8c>] ? verify_iovec+0x3c/0xd0
 [<ffffffff81266a29>] sys_sendmsg+0x189/0x320
 [<ffffffff8126772d>] ? sys_sendto+0xfd/0x120
 [<ffffffff810ce6ac>] ? d_free+0x6c/0x80
 [<ffffffff810bb2dd>] ? __fput+0x17d/0x1f0
 [<ffffffff812f66b9>] ? trace_hardirqs_on_thunk+0x35/0x3a
 [<ffffffff8100c50b>] system_call_after_swapgs+0x7b/0x80

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:   0
CPU    1: hi:  186, btch:  31 usd:   0
Active:276891 inactive:134614 dirty:27 writeback:0 unstable:0
 free:4046 slab:46992 mapped:20984 pagetables:6432 bounce:0
DMA free:7896kB min:40kB low:48kB high:60kB active:3728kB
inactive:956kB present:15176kB pages_scanned:0 all_unreclaimable? no
lowmem_reserve[]: 0 1959 1959 1959
DMA32 free:8288kB min:5640kB low:7048kB high:8460kB active:1103836kB
inactive:537500kB present:2006684kB pages_scanned:0 all_unreclaimable?
no
lowmem_reserve[]: 0 0 0 0
DMA: 116*4kB 156*8kB 159*16kB 0*32kB 1*64kB 0*128kB 0*256kB 1*512kB
1*1024kB 1*2048kB 0*4096kB = 7904kB
DMA32: 1342*4kB 182*8kB 14*16kB 21*32kB 6*64kB 0*128kB 1*256kB 0*512kB
0*1024kB 0*2048kB 0*4096kB = 8360kB
223498 total pagecache pages
Swap cache: add 1441, delete 1373, find 22/33
Free swap  = 1014760kB
Total swap = 1020088kB
517808 pages of RAM
17370 reserved pages
248201 pages shared
68 pages swap cached
iwl3945: Tx 5 queue init failed
iwl3945: Unable to int nic
ACPI: PCI interrupt for device 0000:03:00.0 disabled

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

end of thread, other threads:[~2008-06-30 11:31 UTC | newest]

Thread overview: 27+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2008-06-12 10:07 Problem: Out of memory after 2days with 2GB RAM Zdenek Kabelac
2008-06-12 13:38 ` Rik van Riel
2008-06-12 13:54   ` Johannes Berg
2008-06-12 14:12     ` Zdenek Kabelac
2008-06-12 14:19       ` Johannes Berg
2008-06-12 16:38       ` Tomas Winkler
2008-06-12 15:43     ` Tomas Winkler
2008-06-12 16:35       ` Tomas Winkler
2008-06-12 17:05         ` Johannes Berg
2008-06-12 17:39           ` Tomas Winkler
2008-06-12 17:46             ` Johannes Berg
2008-06-12 18:03               ` Tomas Winkler
2008-06-12 18:15                 ` Johannes Berg
2008-06-12 20:11                   ` Zdenek Kabelac
2008-06-12 22:17                     ` Tomas Winkler
2008-06-13  0:43                     ` Andrew Morton
2008-06-12 18:41               ` John W. Linville
2008-06-12 17:03       ` Johannes Berg
2008-06-12 17:35         ` Tomas Winkler
2008-06-12 17:39           ` Johannes Berg
2008-06-12 17:50             ` Tomas Winkler
2008-06-12 17:10       ` Rik van Riel
2008-06-12 21:30       ` Jiri Slaby
2008-06-12 22:26         ` Tomas Winkler
2008-06-13 14:08 ` Rafael J. Wysocki
2008-06-13 14:15   ` Zdenek Kabelac
2008-06-30 11:30     ` Zdenek Kabelac

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).