All of lore.kernel.org
 help / color / mirror / Atom feed
From: Johannes Erdfelt <johannes@erdfelt.com>
To: "Adam J. Richter" <adam@yggdrasil.com>
Cc: linux-kernel@vger.kernel.org
Subject: Re: pci_alloc_consistent for small allocations?
Date: Sun, 2 Sep 2001 12:43:22 -0400	[thread overview]
Message-ID: <20010902124321.G9175@sventech.com> (raw)
In-Reply-To: <200109021508.IAA29875@adam.yggdrasil.com>
In-Reply-To: <200109021508.IAA29875@adam.yggdrasil.com>; from adam@yggdrasil.com on Sun, Sep 02, 2001 at 08:08:00AM -0700

On Sun, Sep 02, 2001, Adam J. Richter <adam@yggdrasil.com> wrote:
> 	In looking at the ieee1394 OHCI driver, I noticed that it
> appears to make 104 calls to pci_alloc_consistent for data structures
> that are 16 or 64 bytes.  Currently, on x86, pci_alloc_consistent
> allocates at least one full page per call, so it looks like the
> ohci1394 driver allocates 416kB per controller as a result of these
> data structures.
> 
> 	It is easy enough to change the ohci driver to just
> do a few pci_alloc_consistent calls, but, in grepping through the
> kernel, I see that there are lots of calls to pci_alloc_consistent
> calls requesting small amounts of memory.  So, I think it might reduce
> kernel memory consumption to have pci_alloc_consistent do something
> slightly smarter for allocations of less than a page.  Two pretty
> simple approaches come to mind:
> 
> 	1. If it is the case that a side effect of the slab memory allocator
> is that allocations of less than a page (or a certain size) never cross
> page boundaries, then the x86 version of pci_alloc_consistent can just
> use kmalloc/kfree when the size is below a certain amount.  Could someone
> tell me if this is the case?
> 
> 	2. Assuming that is not the case, I have written, but not yet tested,
> a change to pci_alloc_consistent for x86 where sub-page allocations can share
> a single page.  The first four bytes of a shared page are used as a
> reference counter.  This would be two bytes were it not for alignment
> considerations.  This change can only aggregate small allocations when
> they occur in succession.  I have attached the patch for illustration, but,
> it could use some better variable naming and, I repeat, I have not tested
> it at all yet.  In the middle of working on it, I thought of option #1 and
> figured I should ask on linux-kernel before investing more time in this idea.

Just use pci_pool. We developed the API for USB where we ran into the
same problem.

JE


  parent reply	other threads:[~2001-09-02 16:43 UTC|newest]

Thread overview: 5+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2001-09-02 15:08 pci_alloc_consistent for small allocations? Adam J. Richter
2001-09-02 15:15 ` Russell King
2001-09-02 16:43 ` Johannes Erdfelt [this message]
2001-09-02 23:05 ` David S. Miller
     [not found] <mailman.999443581.14164.linux-kernel2news@redhat.com>
2001-09-04  0:20 ` Pete Zaitcev

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=20010902124321.G9175@sventech.com \
    --to=johannes@erdfelt.com \
    --cc=adam@yggdrasil.com \
    --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.