svn commit: r274088 - head/sys/kern
Hans Petter Selasky
hps at selasky.org
Tue Nov 4 11:46:54 UTC 2014
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
More information about the svn-src-all
mailing list