From owner-freebsd-net@FreeBSD.ORG Tue Jul 15 14:22:58 2003 Return-Path: Delivered-To: freebsd-net@freebsd.org Received: from mx1.FreeBSD.org (mx1.freebsd.org [216.136.204.125]) by hub.freebsd.org (Postfix) with ESMTP id 8788937B401 for ; Tue, 15 Jul 2003 14:22:58 -0700 (PDT) Received: from mail.sandvine.com (sandvine.com [199.243.201.138]) by mx1.FreeBSD.org (Postfix) with ESMTP id A2CDF43FB1 for ; Tue, 15 Jul 2003 14:22:57 -0700 (PDT) (envelope-from sloach@sandvine.com) Received: by mail.sandvine.com with Internet Mail Service (5.5.2653.19) id <346X8VK5>; Tue, 15 Jul 2003 17:22:56 -0400 Message-ID: From: Scot Loach To: "'freebsd-net@freebsd.org'" Date: Tue, 15 Jul 2003 17:22:55 -0400 MIME-Version: 1.0 X-Mailer: Internet Mail Service (5.5.2653.19) Content-Type: text/plain; charset="iso-8859-1" Subject: Kernel tuning for large maxsockets X-BeenThere: freebsd-net@freebsd.org X-Mailman-Version: 2.1.1 Precedence: list List-Id: Networking and TCP/IP with FreeBSD List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 15 Jul 2003 21:22:58 -0000 Currently, whenever maxsockets is increased, this causes kernel memory to be preallocated for each type of pcb (tcp, udp, raw, divert). The number of pcbs preallocated for each of these is always the same as maxsockets. This is probably a waste of memory for raw sockets and divert sockets, since they would not normally be used in large numbers. A large server could save kvm by reducing the number of divert and raw pcbs preallocated. For example, on a machine configured for 200,000 maxsockets we would save 75MB of kvm out of a total of 262MB that would have been preallocated. This kvm savings can be used to increase maxsockets even more. Is there any reason I should not modify the kernel code to only let a small, fixed number of raw and divert pcbs be preallocated instead of having them scale with maxsockets? Next, does this seem like a generally useful thing that could be rolled back into the source tree? I could make this a kernel option or a tunable sysctl variable. thanks Scot Loach