From owner-freebsd-questions@FreeBSD.ORG Sun Feb 27 21:37:17 2011 Return-Path: Delivered-To: freebsd-questions@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 99BFA1065673 for ; Sun, 27 Feb 2011 21:37:17 +0000 (UTC) (envelope-from bonomi@mail.r-bonomi.com) Received: from mail.r-bonomi.com (mx-out.r-bonomi.com [204.87.227.120]) by mx1.freebsd.org (Postfix) with ESMTP id 6EE258FC16 for ; Sun, 27 Feb 2011 21:37:17 +0000 (UTC) Received: (from bonomi@localhost) by mail.r-bonomi.com (8.14.4/rdb1) id p1RLhr0J027801; Sun, 27 Feb 2011 15:43:53 -0600 (CST) Date: Sun, 27 Feb 2011 15:43:53 -0600 (CST) From: Robert Bonomi Message-Id: <201102272143.p1RLhr0J027801@mail.r-bonomi.com> To: cyber366@gmail.com In-Reply-To: Cc: freebsd-questions@freebsd.org Subject: Re: FreeBSD Performance X-BeenThere: freebsd-questions@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: User questions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 27 Feb 2011 21:37:17 -0000 > From owner-freebsd-questions@freebsd.org Sun Feb 27 14:54:09 2011 > From: David > Date: Sun, 27 Feb 2011 15:46:03 -0500 > To: freebsd-questions@freebsd.org > Subject: FreeBSD Performance > > Hello All: > > I am curious... does anyone know of a reasonably priced commodity server > capable of sourcing/sinking 10 Gbps of data from/to disk via 2 x 10 GE > network interfaces? Any ideas on how hard this would be to do with > FreeBSD? > > I know of a proprietary linux-based system, but looking for open-source > FreeBSD based system. A lot depends on what you need to do with the data. Do you need just the 'contents' of the network packets -- i.e. are you trying to send/recieve a single stream of data -- or do you need complete headers, augmented with timestamps, such that you can re- construct/replay what was 'seen on the wire'? Is the box 'dedicated' to receiving (or sending), and does -nothing-else- while that operation is in process? or do you need to sample the data in real-time as well? Another question is _how_long_ you need to handle the 2x10gbit/sec of data. a few seconds? a few tens of seconds? minutes? hours? If you need to 'go to disk' in real-time, you're looking at needing at least 3-4 gigabyte/sec of bandwith to disk. No commodity drives provide that kind of capacity, so you're looking at multiple drives 'in parallel' -- the logical equivalent of a 'striped' RAID array. Probably 12-16 spindles paralleled. Best handled with _hardware_ raid, directly in the disk controller, but I don't know of a commodity controller that supports enough spindles to give that bandwidth. This means one is best off doing it in the application softwre itself, rather than trusting the O/S to get it right. You're also looking at a _big_ disk array. Around 200 gigs for ONE MINUTE of data. Need 'only' an hour? That's merely 12 terabytes. The O/S is -relatively- unimportant. You need _good_ network cards, with good drivers -- preferably ones where most of the network stack can be off-loaded onto the card itself. You also need good disk controllers, ideally semi-autonomous (like SCSI), with fairly large data buffers.