Skip site navigation (1)Skip section navigation (2)
Date:      Wed, 28 May 2014 22:17:13 -0700
From:      Adrian Chadd <adrian@freebsd.org>
To:        Peter Wemm <peter@wemm.org>
Cc:        Fred Pedrisa <fredhps10@hotmail.com>, freebsd-current <freebsd-current@freebsd.org>, Jan Bramkamp <crest@rlwinm.de>
Subject:   Re: RES: KQueue vs Select (NetMap)
Message-ID:  <CAJ-VmokGG3qxCauz8VvCKE-tTtR-m5jOn=01SEhhfKEVW_GkyA@mail.gmail.com>
In-Reply-To: <3223163.UsW4aPcrLi@overcee.wemm.org>
References:  <COL131-DS24C9EC384D928E5FEB71C3B0240@phx.gbl> <00d301cf7af9$d5ce5bb0$816b1310$@freebsd.org> <COL131-DS2CB7D5481FFC762EA6F10B0240@phx.gbl> <3223163.UsW4aPcrLi@overcee.wemm.org>

next in thread | previous in thread | raw e-mail | index | archive | help
what he said.


-a


On 28 May 2014 22:02, Peter Wemm <peter@wemm.org> wrote:
> On Thursday 29 May 2014 01:57:38 Fred Pedrisa wrote:
>> Hello,
>>
>> There are 4 threads, and a total of 32 FDs. What do you think ?
>
> I think it is time for you to try it and find out...
>
> I suspect it wouldn't make much difference at all if you just implement select
> semantics with kqueue.
>
>> -----Mensagem original-----
>> De: owner-freebsd-current@freebsd.org
>> [mailto:owner-freebsd-current@freebsd.org] Em nome de Adrian Chadd
>> Enviada em: quinta-feira, 29 de maio de 2014 01:52
>> Para: Fred Pedrisa
>> Cc: freebsd-current; Jan Bramkamp
>> Assunto: Re: KQueue vs Select (NetMap)
>>
>> If your netmap thread(s) just have one or two FDs in some low range (say,
>> under FD 8 or 10) - no.
>>
>> If you have a whole bunch of active FDs and your netmap threads get FDs that
>> are high - then yes. select() operates on a bitmap of FD numbers. So if
>> your netmap FD is like, FD 8 and it's the highest FD that you're interested
>> in, select() only has to scan up to that FD. So it scans up to 8 FDs. If
>> you have a very active program and it has thousands of FDs open, select()
>> has to check all the FDs in the bitmap to see if they're set before getting
>> to your netmap FD.
>>
>> So yes. kqueue() is actually rather nice.
>>
>>
>>
>> -a
>>
>> On 28 May 2014 21:48, Fred Pedrisa <fredhps10@hotmail.com> wrote:
>> > Hello,
>> >
>> > Ok, but in practice, is there any performance gain by moving from select
>>
>> to kQueue implementation ? Or is it not significant at all ?
>>
>> > -----Mensagem original-----
>> > De: adrian.chadd@gmail.com [mailto:adrian.chadd@gmail.com] Em nome de
>> > Adrian Chadd Enviada em: quinta-feira, 29 de maio de 2014 01:46
>> > Para: Fred Pedrisa
>> > Cc: Jan Bramkamp; freebsd-current
>> > Assunto: Re: KQueue vs Select (NetMap)
>> >
>> > The advantage is being able to include it in the rest of a kqueue IO loop
>>
>> where it's doing other things.
>>
>> > -a
>> >
>> > On 28 May 2014 20:53, Fred Pedrisa <fredhps10@hotmail.com> wrote:
>> >> Hello,
>> >>
>> >> Yes, but kqueue support was added in recent commits as it says in the
>> >> netmap changelog, is there any advantage ?
>> >>
>> >> -----Mensagem original-----
>> >> De: owner-freebsd-current@freebsd.org
>> >> [mailto:owner-freebsd-current@freebsd.org] Em nome de Jan Bramkamp
>> >> Enviada em: quinta-feira, 29 de maio de 2014 00:30
>> >> Para: freebsd-current@freebsd.org
>> >> Assunto: Re: KQueue vs Select (NetMap)
>> >>
>> >> On 29.05.2014 03:04, Fred Pedrisa wrote:
>> >>> Hey Guys,
>> >>>
>> >>>
>> >>>
>> >>> How does kQueue performs over select with netmap ?
>> >>
>> >> You are asking for a comparison between apples and oranges. Netmap is
>> >> an API for high performance access to the low-level features of
>> >> modern NICs. It works on batches of frames in hardware queues.
>> >>
>> >> The kqueue() and kevent() system calls are an event notification API.
>> >> It is mostly used by application dealing with a large amount of
>> >> non-blocking sockets (or other file descriptors). It reduces overhead
>> >> inherent in
>> >> select() and poll() by preserving state between calls. It also
>> >> supports multiple types of events (read ready, write ready, timer
>> >> expired, async i/o, etc.).
>> >>
>> >> Afaik the netmap pseudo-device supports only select() and poll().
>> >> This is no performance problem because every thread will only deal
>> >> with a small number of file descriptors to netmap devices.
>> >>
>> >> Netmap is designed to bypass the FreeBSD IP stack (for most frames).
>> >> Kqueue is designed to scale to many sockets per process within the
>> >> FreeBSD IP stack.
>> >> _______________________________________________
>> >> freebsd-current@freebsd.org mailing list
>> >> http://lists.freebsd.org/mailman/listinfo/freebsd-current
>> >> To unsubscribe, send any mail to
>>
>> "freebsd-current-unsubscribe@freebsd.org"
>>
>> >> _______________________________________________
>> >> freebsd-current@freebsd.org mailing list
>> >> http://lists.freebsd.org/mailman/listinfo/freebsd-current
>> >> To unsubscribe, send any mail to
>>
>> "freebsd-current-unsubscribe@freebsd.org"
>>
>> _______________________________________________
>> freebsd-current@freebsd.org mailing list
>> http://lists.freebsd.org/mailman/listinfo/freebsd-current
>> To unsubscribe, send any mail to "freebsd-current-unsubscribe@freebsd.org"
>>
>> _______________________________________________
>> freebsd-current@freebsd.org mailing list
>> http://lists.freebsd.org/mailman/listinfo/freebsd-current
>> To unsubscribe, send any mail to "freebsd-current-unsubscribe@freebsd.org"
>
> --
> Peter Wemm - peter@wemm.org; peter@FreeBSD.org; peter@yahoo-inc.com; KI6FJV
> UTF-8: for when a ' just won\342\200\231t do.



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?CAJ-VmokGG3qxCauz8VvCKE-tTtR-m5jOn=01SEhhfKEVW_GkyA>