From owner-freebsd-net@freebsd.org Thu Nov 12 18:20:09 2015 Return-Path: Delivered-To: freebsd-net@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 2B615A2DBC8 for ; Thu, 12 Nov 2015 18:20:09 +0000 (UTC) (envelope-from bugzilla-noreply@freebsd.org) Received: from kenobi.freebsd.org (kenobi.freebsd.org [IPv6:2001:1900:2254:206a::16:76]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client did not present a certificate) by mx1.freebsd.org (Postfix) with ESMTPS id 171DD13C8 for ; Thu, 12 Nov 2015 18:20:09 +0000 (UTC) (envelope-from bugzilla-noreply@freebsd.org) Received: from bugs.freebsd.org ([127.0.1.118]) by kenobi.freebsd.org (8.15.2/8.15.2) with ESMTP id tACIK8ZS025749 for ; Thu, 12 Nov 2015 18:20:08 GMT (envelope-from bugzilla-noreply@freebsd.org) From: bugzilla-noreply@freebsd.org To: freebsd-net@FreeBSD.org Subject: [Bug 204438] setsockopt() handling of kern.ipc.maxsockbuf limit Date: Thu, 12 Nov 2015 18:20:08 +0000 X-Bugzilla-Reason: AssignedTo X-Bugzilla-Type: changed X-Bugzilla-Watch-Reason: None X-Bugzilla-Product: Base System X-Bugzilla-Component: kern X-Bugzilla-Version: 11.0-CURRENT X-Bugzilla-Keywords: needs-qa, patch X-Bugzilla-Severity: Affects Many People X-Bugzilla-Who: alfred@FreeBSD.org X-Bugzilla-Status: New X-Bugzilla-Priority: --- X-Bugzilla-Assigned-To: freebsd-net@FreeBSD.org X-Bugzilla-Target-Milestone: --- X-Bugzilla-Flags: mfc-stable9? mfc-stable10? X-Bugzilla-Changed-Fields: cc Message-ID: In-Reply-To: References: Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: 7bit X-Bugzilla-URL: https://bugs.freebsd.org/bugzilla/ Auto-Submitted: auto-generated MIME-Version: 1.0 X-BeenThere: freebsd-net@freebsd.org X-Mailman-Version: 2.1.20 Precedence: list List-Id: Networking and TCP/IP with FreeBSD List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 12 Nov 2015 18:20:09 -0000 https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=204438 Alfred Perlstein changed: What |Removed |Added ---------------------------------------------------------------------------- CC| |alfred@FreeBSD.org --- Comment #13 from Alfred Perlstein --- I believe the reason for the adjustment is that "sb_max" is for "max kernel memory taken by the socketbuffer INCLUDING MBUFS THEMSELVES" So what is actually happening is that each MCLSIZE (size of cluster) of "data" is having MSIZE (size of mbuf) added to it. Why is it scaled up so? Because in reality one needs MSIZE actual memory for each cluster as metadata to point to it. And why is this done? So that you can actually trust "sb_max" to mean maximum kernel memory taken to support N bytes per socket. I didn't realize Linux silents truncates the requested amount, that's a little scary, however I'm learning to trust more and more what Linux does. What might make a bit more sense in the long run is actually to make: 1) kern.ipc.maxsockbuf == max number of bytes of DATA in each socketbuffer 2) kern.ipc.maxsockbufmeta = max number of bytes of DATA + METADATA required to be allocated. -- You are receiving this mail because: You are the assignee for the bug.