From owner-freebsd-arch@freebsd.org Mon Aug 31 00:00:10 2015 Return-Path: Delivered-To: freebsd-arch@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id 2793D9C6C5A for ; Mon, 31 Aug 2015 00:00:10 +0000 (UTC) (envelope-from jmg@gold.funkthat.com) Received: from gold.funkthat.com (gate2.funkthat.com [208.87.223.18]) (using TLSv1 with cipher DHE-RSA-AES256-SHA (256/256 bits)) (Client CN "gold.funkthat.com", Issuer "gold.funkthat.com" (not verified)) by mx1.freebsd.org (Postfix) with ESMTPS id E1732E17; Mon, 31 Aug 2015 00:00:09 +0000 (UTC) (envelope-from jmg@gold.funkthat.com) Received: from gold.funkthat.com (localhost [127.0.0.1]) by gold.funkthat.com (8.14.5/8.14.5) with ESMTP id t7V003EE019461 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=NO); Sun, 30 Aug 2015 17:00:03 -0700 (PDT) (envelope-from jmg@gold.funkthat.com) Received: (from jmg@localhost) by gold.funkthat.com (8.14.5/8.14.5/Submit) id t7V003Yl019460; Sun, 30 Aug 2015 17:00:03 -0700 (PDT) (envelope-from jmg) Date: Sun, 30 Aug 2015 17:00:03 -0700 From: John-Mark Gurney To: Adrian Chadd Cc: Jack Vogel , Sean Bruno , "freebsd-arch@freebsd.org" Subject: Re: Network card interrupt handling Message-ID: <20150831000003.GJ33167@funkthat.com> References: <55DDE9B8.4080903@freebsd.org> <20150828184800.GE33167@funkthat.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: X-Operating-System: FreeBSD 9.1-PRERELEASE amd64 X-PGP-Fingerprint: 54BA 873B 6515 3F10 9E88 9322 9CB1 8F74 6D3F A396 X-Files: The truth is out there X-URL: http://resnet.uoregon.edu/~gurney_j/ X-Resume: http://resnet.uoregon.edu/~gurney_j/resume.html X-TipJar: bitcoin:13Qmb6AeTgQecazTWph4XasEsP7nGRbAPE X-to-the-FBI-CIA-and-NSA: HI! HOW YA DOIN? can i haz chizburger? User-Agent: Mutt/1.5.21 (2010-09-15) X-Greylist: Sender IP whitelisted, not delayed by milter-greylist-4.2.7 (gold.funkthat.com [127.0.0.1]); Sun, 30 Aug 2015 17:00:03 -0700 (PDT) X-BeenThere: freebsd-arch@freebsd.org X-Mailman-Version: 2.1.20 Precedence: list List-Id: Discussion related to FreeBSD architecture List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 31 Aug 2015 00:00:10 -0000 Adrian Chadd wrote this message on Fri, Aug 28, 2015 at 12:41 -0700: > [snip] > > Well, the other big reason for doing it deferred like this is to avoid > network based deadlocks because you're being fed packets faster than > you can handle them. If you never yield, you stop other NIC > processing. You snipped the part of me asking isn't the interrupt thread just the same interruptable context as the task queue? Maybe the priority is different, but that can be adjusted to be the same and still save the context switch... There is no break/moderation in the taskqueue, as it'll just enqueue itself, and when the task queue breaks out, it'll just immediately run itself, since it has a dedicated thread to itself... So, looks like you get the same spinning behavior... > People used to do run-to-completion and then complained when this > happened, so polling was a thing. Maybe when using PCI shared interrupts, but we are talking about PCIe MSI-X unshared interrupts. > So - I'm all for doing it with a fast interrupt handler and a fast > taskqueue. As long as we don't run things to completion and > re-schedule the taskqueue (so other things on that core get network > processing) then I'm okay. > > (I kinda want us to have NAPI at some point...) -- John-Mark Gurney Voice: +1 415 225 5579 "All that I will do, has been done, All that I have, has not."