Skip site navigation (1)Skip section navigation (2)
Date:      Sun, 27 Feb 2011 15:43:53 -0600 (CST)
From:      Robert Bonomi <bonomi@mail.r-bonomi.com>
To:        cyber366@gmail.com
Cc:        freebsd-questions@freebsd.org
Subject:   Re: FreeBSD Performance
Message-ID:  <201102272143.p1RLhr0J027801@mail.r-bonomi.com>
In-Reply-To: <D43A1DFD-04C5-44DD-8AB7-6E3FD6CEA582@gmail.com>

Next in thread | Previous in thread | Raw E-Mail | Index | Archive | Help
> From owner-freebsd-questions@freebsd.org  Sun Feb 27 14:54:09 2011
> From: David <cyber366@gmail.com>
> 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. <wry grin>

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.




Want to link to this message? Use this URL: <http://docs.FreeBSD.org/cgi/mid.cgi?201102272143.p1RLhr0J027801>