Messages in this thread | | | From | David Laight <> | Subject | RE: recvfrom/recvmsg performance and CONFIG_HARDENED_USERCOPY | Date | Mon, 9 Dec 2019 11:01:30 +0000 |
| |
From: Eric Dumazet > Sent: 06 December 2019 14:22 ... > Real question is : Do you actually need to use recvmsg() instead of recvfrom() ? > If recvmsg() provides additional cmsg, this is not surprising it is more expensive.
Except I'm not passing in a buffer for it. The reason I'm looking at recvmsg is that I'd like to use recvmmsg it order to read out more than one message from a socket without doing an extra poll(). Note that I don't expect there to be a second message most of the time and almost never a third one.
Although I think that will only ever 'win' if recvmmsg() called vfs_poll() to find if there was more data to read before doing any of the copy_from_user() etc.
> recvmsg() also uses an indirect call, so CONFIG_RETPOLINE=y is probably hurting.
I don't have CONFIG_RETPOLINE enabled, the compiler I'm using is too old. (gcc 4.7.3).
David
- Registered Address Lakeside, Bramley Road, Mount Farm, Milton Keynes, MK1 1PT, UK Registration No: 1397386 (Wales)
| |