22.08.2012 17:36, Luigi Rizzo написал:
On Wed, Aug 22, 2012 at 02:32:21AM +0000, Bruce Evans wrote:
luigi wrote:

even more orthogonal:

I found that copying 8n + (5, 6 or 7) bytes was much much slower than
copying a multiple of 8 bytes. For n=0, 1,2,4,8 bytes are efficient,
other cases are slow (turned into 2 or 3 different writes).

The netmap code uses a pkt_copy routine that does exactly this
rounding, gaining some 10-20ns per packet for small sizes.
I don't believe 10-20ns for just the extra bytes.  memcpy() ends up
with a movsb to copy the extra bytes.  This can be slow, but I don't
believe 10-20ns (except on machines running at i486 speeds of course).
I am adding at the end a test program so people can try things on their hw.

Build it with

        cc -O2 -Werror -Wall -Wextra  -lpthread -lrt testlock.c -o testlock



# uname -a
FreeBSD m18.cabletv.dp.ua 9.0-STABLE FreeBSD 9.0-STABLE #1: Tue Apr 24 13:23:05 EEST 2012 r...@m18.cabletv.dp.ua:/usr/src/sys/i386/compile/m18 i386

cc -O2 -Werror -Wall -Wextra  -lpthread -lrt testlock.c -o testlock

testlock.c: In function 'test_rdtsc':
testlock.c:151: error: can't find a register in class 'AD_REGS' while reloading 'asm'
testlock.c:151: error: 'asm' operand has impossible constraints

_______________________________________________
freebsd-hackers@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/freebsd-hackers
To unsubscribe, send any mail to "freebsd-hackers-unsubscr...@freebsd.org"

Reply via email to