On 11/04/14 12:40, Mateusz Guzik wrote:
On Tue, Nov 04, 2014 at 11:29:49AM +0000, Hans Petter Selasky wrote:
Author: hselasky
Date: Tue Nov 4 11:29:49 2014
New Revision: 274088
URL: https://svnweb.freebsd.org/changeset/base/274088
Log:
Simplify logic a bit. Ensure data buffer is properly aligned,
especially for platforms where unaligned access is not allowed. Make
it possible to override the small buffer size.
A simple continuous read string test using libusb showed a reduction
in CPU usage from roughly 10% to less than 1% using a dual-core GHz
CPU, when the malloc() operation was skipped for small buffers.
MFC after: 2 weeks
Modified:
head/sys/kern/sys_generic.c
Modified: head/sys/kern/sys_generic.c
==============================================================================
--- head/sys/kern/sys_generic.c Tue Nov 4 10:25:52 2014 (r274087)
+++ head/sys/kern/sys_generic.c Tue Nov 4 11:29:49 2014 (r274088)
@@ -646,10 +646,13 @@ struct ioctl_args {
int
sys_ioctl(struct thread *td, struct ioctl_args *uap)
{
+#ifndef SYS_IOCTL_SMALL_SIZE
+#define SYS_IOCTL_SMALL_SIZE 128
+#endif
+ u_char smalldata[SYS_IOCTL_SMALL_SIZE] __aligned(8);
Hi,
Should not you align to word size instead?
You mean 32-bit words?
I think mips64 will require 64-bit alignment. I just put the value for
the worst case. Possibly "sizeof(long)" might work.
Also maybe it would be beneficial to derive the limit from KSTACK_PAGES
(something silly like KSTACK_PAGES * 32 or something), which I believe would
address earlier complaints.
If this is going to give a performance improvement in the USB area, the
small size must be greater or equal to 64 at least, or somewhere around
there.
--HPS
_______________________________________________
svn-src-head@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/svn-src-head
To unsubscribe, send any mail to "svn-src-head-unsubscr...@freebsd.org"