]> git.ipfire.org Git - thirdparty/ipxe.git/commit
[iobuf] Allocate I/O buffer descriptor separately to conserve aligned memory
authorMichael Brown <mcb30@ipxe.org>
Sun, 8 Jul 2012 16:14:08 +0000 (17:14 +0100)
committerMichael Brown <mcb30@ipxe.org>
Sun, 8 Jul 2012 16:54:53 +0000 (17:54 +0100)
commit4a8a7bd91a6911779e3972a6d00d5a25bd7c0367
treed793f7afd35e41b7a05df35ef272ba8a6717f344
parentb0e236a9ee512f61d85bc1dfea57fafa04b3f214
[iobuf] Allocate I/O buffer descriptor separately to conserve aligned memory

I/O buffers are allocated on aligned boundaries.  The I/O buffer
descriptor (the struct io_buffer) is currently attached to the end of
the I/O buffer.  When the size of the buffer is close to its
alignment, this can waste large amounts of aligned memory.

For example, a network card using 2048-byte receive buffers will end
up allocating 2072 bytes on a 2048-byte boundary.  This effectively
wastes 50% of the available memory.

Improve the situation by allocating the descriptor separately from the
main I/O buffer if inline allocation would cause the total allocated
size to cross the alignment boundary.

Signed-off-by: Michael Brown <mcb30@ipxe.org>
src/core/iobuf.c