From owner-freebsd-current@FreeBSD.ORG Thu May 29 04:51:56 2014 Return-Path: Delivered-To: freebsd-current@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [8.8.178.115]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id 89EE018E for ; Thu, 29 May 2014 04:51:56 +0000 (UTC) Received: from mail-qg0-x229.google.com (mail-qg0-x229.google.com [IPv6:2607:f8b0:400d:c04::229]) (using TLSv1 with cipher ECDHE-RSA-RC4-SHA (128/128 bits)) (Client CN "smtp.gmail.com", Issuer "Google Internet Authority G2" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 471862A7D for ; Thu, 29 May 2014 04:51:56 +0000 (UTC) Received: by mail-qg0-f41.google.com with SMTP id j5so20985152qga.28 for ; Wed, 28 May 2014 21:51:55 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=mime-version:sender:in-reply-to:references:date:message-id:subject :from:to:cc:content-type; bh=oIrnacDRKny6OwmrK25pj+yBry56Bl+etSUglyxI1q4=; b=mXwI1mCFcztZsxn1G6U1HnwEHOf9+yK5vJPpiTzaxyKLXHdHjmYsLqacnYOdSI48Fm G5mC8wuVF7ruOGlGZ9ZTNg1QDSMZUrI7FOQfC0kAsb5q2LkJtl42i1aSlAQWAiJm38ec 9Bfs+0iPx4EJOK/gds9LqxnNrg+TLYtsjU8biSxkYvh9kpCUgNV5Zy3niSBTC8+rv2RX oYZaMLIpSwqYCFroJb3tgtxkgY3tkWO8PsHUs9xVLTGe64dOsV6gcd7QmDW3c8i/JGCT BXmD/j1zw8s/kC99sEiHyk8Xig0YAM/U5NOVVqpTlgne+Rqg3h7vxZdSwxBgIN7CQBmN eNZA== MIME-Version: 1.0 X-Received: by 10.224.36.141 with SMTP id t13mr5756861qad.75.1401339115302; Wed, 28 May 2014 21:51:55 -0700 (PDT) Sender: adrian.chadd@gmail.com Received: by 10.224.191.201 with HTTP; Wed, 28 May 2014 21:51:55 -0700 (PDT) In-Reply-To: References: <00c301cf7aee$b00caea0$10260be0$@rlwinm.de> Date: Wed, 28 May 2014 21:51:55 -0700 X-Google-Sender-Auth: lg71OLTSLZvw7IA2zpAjdcAqD9Y Message-ID: Subject: Re: KQueue vs Select (NetMap) From: Adrian Chadd To: Fred Pedrisa Content-Type: text/plain; charset=UTF-8 Cc: freebsd-current , Jan Bramkamp X-BeenThere: freebsd-current@freebsd.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: Discussions about the use of FreeBSD-current List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 29 May 2014 04:51:56 -0000 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 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 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" >