From: Robert Hancock <hancockrwd@gmail.com>
To: Jonathan Haws <Jonathan.Haws@sdl.usu.edu>
Cc: "linux-kernel@vger.kernel.org" <linux-kernel@vger.kernel.org>
Subject: Re: sata_sil24 memory fragmentation issues
Date: Thu, 02 Sep 2010 18:22:56 -0600 [thread overview]
Message-ID: <4C803FE0.10001@gmail.com> (raw)
In-Reply-To: <5ABE8A5E96C0364CAF2B4DC1DEB7CEAC12824E74@Mercury.usurf.usu.edu>
On 09/02/2010 11:02 AM, Jonathan Haws wrote:
> I am having some issues with the sata_sil24 driver. It appears that when memory gets fragmented enough, bad things start to happen. However, this only occurs when I am receiving large amounts of data over the network as well.
>
> Here is my test setup: I am running an AMCC 405EX processor on their Kilauea development board. I have a PCIe SATA controller based on the 3531 single port chip (which uses the sata_sil24 driver). I have a program that simply dumps data out to disk. When I am running that program, I am also running ping -s 8500<some-ip>.
>
> Here is the output:
>
> 8508 bytes from 172.31.22.21: seq=137 ttl=128 time=1.306 ms
> CNT: 129 WRIT: 35651584 RATE: 34.00000 MB/s READ: 0 RATE: 0.00000 MB/s AVG WR: 34.17188 MB/s AVG RD: 0.00000 MB/s
> 8508 bytes from 172.31.22.21: seq=138 ttl=128 time=1.254 ms
> CNT: 130 WRIT: 34603008 RATE: 33.00000 MB/s READ: 0 RATE: 0.00000 MB/s AVG WR: 34.16279 MB/s AVG RD: 0.00000 MB/s
> 8508 bytes from 172.31.22.21: seq=139 ttl=128 time=1.291 ms
> CNT: 131 WRIT: 34603008 RATE: 33.00000 MB/s READ: 0 RATE: 0.00000 MB/s AVG WR: 34.15385 MB/s AVG RD: 0.00000 MB/s
> 8508 bytes from 172.31.22.21: seq=140 ttl=128 time=1.254 ms
> CNT: 132 WRIT: 35651584 RATE: 34.00000 MB/s READ: 0 RATE: 0.00000 MB/s AVG WR: 34.15267 MB/s AVG RD: 0.00000 MB/s
> sata: page allocation failure. order:0, mode:0x22
sata is the process name, I believe? Not sure the SATA driver is
involved here at all.
> Call Trace:
> [ccad9a10] [c0006ef0] show_stack+0x44/0x16c (unreliable)
> [ccad9a50] [c006f9f0] __alloc_pages_nodemask+0x38c/0x4f8
> [ccad9ad0] [c01a7e3c] emac_poll_rx+0x5ac/0x768
> [ccad9b10] [c01a28e4] mal_poll+0xa8/0x1ec
> [ccad9b40] [c01d3eec] net_rx_action+0x9c/0x1b4
> [ccad9b70] [c003b3c0] __do_softirq+0xc4/0x148
> [ccad9bb0] [c0004d18] do_softirq+0x78/0x80
> [ccad9bc0] [c003afac] irq_exit+0x64/0x7c
> [ccad9bd0] [c0005210] do_IRQ+0x9c/0xb4
> [ccad9bf0] [c000fa7c] ret_from_except+0x0/0x18
> [ccad9cb0] [00000001] 0x1
> [ccad9cd0] [c00c2a68] generic_write_end+0x24/0xe0
> [ccad9d00] [c0069cc0] generic_file_buffered_write+0x18c/0x304
> [ccad9d90] [c006a38c] __generic_file_aio_write_nolock+0x288/0x4fc
> [ccad9e00] [c006a8e4] generic_file_aio_write+0x68/0xf8
> [ccad9e30] [c009a9b4] do_sync_write+0xc4/0x138
> [ccad9ef0] [c009b41c] vfs_write+0xb4/0x158
> [ccad9f10] [c009ba4c] sys_write+0x4c/0x90
> [ccad9f40] [c000f434] ret_from_syscall+0x0/0x3c
> Mem-Info:
> DMA per-cpu:
> CPU 0: hi: 90, btch: 15 usd: 53
> Active_anon:554 active_file:1753 inactive_anon:608
> inactive_file:49910 unevictable:0 dirty:6020 writeback:0 unstable:0
> free:192 slab:2573 mapped:445 pagetables:25 bounce:0
> DMA free:768kB min:2036kB low:2544kB high:3052kB active_anon:2216kB inactive_anon:2432kB active_file:7012kB inactive_file:199640kB unevictable:0kB present:260096kB pages_scanned:0 all_unreclaimable? no
> lowmem_reserve[]: 0 0 0
> DMA: 2*4kB 1*8kB 1*16kB 1*32kB 1*64kB 1*128kB 0*256kB 1*512kB 0*1024kB 0*2048kB 0*4096kB = 768kB
> 51673 total pagecache pages
> 0 pages in swap cache
> Swap cache stats: add 0, delete 0, find 0/0
> Free swap = 0kB
> Total swap = 0kB
> 65536 pages RAM
> 1400 pages reserved
> 51949 pages shared
> 12273 pages non-shared
> emac_alloc_rx_skb: allocating new page after consumption
>
> I am seeing a few different issues - one, the SATA driver is failing to allocate memory, even though there is memory available. Also, the ibm_newemac driver is failing to allocate memory even though there is memory available.
>
> I have already modified the ibm_newemac driver to only ever allocate single pages. Before, it would allocate based on MTU size - so if I had the MTU set to 9000, it would try and allocate 4 contiguous pages, which it would fail because there were no contiguous 16k pages available.
>
> Can anyone help me with this issue? I have been trying to move to Linux on this hardware for a long time, but just cannot seem to get past this issue. I am very new to kernel development and am not very familiar with the ATA system at all, let alone the memory manager. I had a hard enough time getting to understand the networking stack (which I still feel like I don't understand completely).
>
> Thanks for the help.
>
> Jonathan
>
>
next prev parent reply other threads:[~2010-09-03 0:23 UTC|newest]
Thread overview: 5+ messages / expand[flat|nested] mbox.gz Atom feed top
2010-09-02 17:02 sata_sil24 memory fragmentation issues Jonathan Haws
2010-09-03 0:22 ` Robert Hancock [this message]
2010-09-03 14:46 ` Jonathan Haws
2010-09-03 15:54 ` Jonathan Haws
2010-09-03 16:47 ` Robert Hancock
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=4C803FE0.10001@gmail.com \
--to=hancockrwd@gmail.com \
--cc=Jonathan.Haws@sdl.usu.edu \
--cc=linux-kernel@vger.kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.