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