>A graduate student here implements a mmap() interface to a TCP/IP network
>card. He notices that it takes much longer time to copy from mmapp()'ed
>area to another user area than it takes to copy the same amount of data
>from kernel space to user space. The students here have no idea why this
>could be possible. I hope someone on this list can give us a hint. Below
>is a part of his original email. He uses rdtsc instruction to do the
>timing.
>
>------------------------------------------------------------------------
>Well I have implemented a memory mapped interface for the user in Linux
>using the DEC 21140 Tulip ethernet card. Thus the user has access to the
>buffers, but when I did a memcpy from the RX buffer to the user variable,
>it took an extraordinary amount of time, approx 70 microsec for 1460
>btyes... where as the original scheme takes 25 microsec for the same data
>when it does a memcpy_to_iovec in tcp_recvmsg().
>
>I am confused by this unexpected timings. More than 80% of the time is
>spent doing the memcpy.
>-----------------------------------------------------------------------
If the mapping is being done via a device mapping, then the region will
be marked non-cacheable.
-DG
David Greenman
Co-founder/Principal Architect, The FreeBSD Project - http://www.freebsd.org
Creator of high-performance Internet servers - http://www.terasolutions.com
To Unsubscribe: send mail to [EMAIL PROTECTED]
with "unsubscribe freebsd-hackers" in the body of the message