[PATCH 1/3] socket: evaluate buffer size in recv / recvfrom

Alexander Turenko alexander.turenko at tarantool.org
Mon Aug 27 12:26:57 MSK 2018


On Mon, Aug 27, 2018 at 12:20:59PM +0300, Vladimir Davydov wrote:
> On Mon, Aug 27, 2018 at 03:08:49AM +0300, Alexander Turenko wrote:
> > On Fri, Aug 24, 2018 at 06:25:42PM +0300, Vladimir Davydov wrote:
> > > On Fri, Aug 24, 2018 at 05:47:37AM +0300, Alexander Turenko wrote:
> > > > diff --git a/src/lua/socket.lua b/src/lua/socket.lua
> > > > index 06306eae2..946e11e9e 100644
> > > > --- a/src/lua/socket.lua
> > > > +++ b/src/lua/socket.lua
> > > > @@ -770,6 +770,41 @@ local function socket_send(self, octets, flags)
> > > >      return tonumber(res)
> > > >  end
> > > >  
> > > > +local function socket_is_udp(self)
> > > > +    local fd = check_socket(self)
> > > > +    if self.itype == nil then
> > > > +        self.itype = self:getsockopt('SOL_SOCKET', 'SO_TYPE')
> > > 
> > > I think you could instead set itype in socket constructor.
> > > 
> > 
> > That will increase memory consumption in case when it is not needed to
> > know itype: say, for sending sockets (I should add comment about this,
> > of course). However I think it is worth to cache it when revc / recvfrom
> > is used intensively to avoid extra syscall.
> > 
> > Do you think we can ignore extra memory comsumption in this case?
> 
> How much of memory overhead is it going to be? Several bytes per socket?
> IMHO we can ignore it.

8 bytes (numbers in lua are doubles). Ok, I'll proceed.

WBR, Alexander Turenko.



More information about the Tarantool-patches mailing list