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"

Reply via email to