further vblade bpf tweaking

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



So I'm going to throw some statistics here, and I'd like somebody to 
correct me if they think I'm wrong.
As I see it, the general use-case for AoE deployment consists of one or 
more mostly dedicated machines serving several initiators on one or more 
interfaces (or vlans). This would mean that most, if not all, of the 
traffic would consist of AoE frames.
Let's assume that we are running several targets on the same interface 
(let's say 5, differing by their major number and having 0 as their minor).
If I take a normal sample of traffic under said conditions and pass it 
trough the filter, we would see:
- check Frame type - 2 ops - 0% of frames removed - 100% of frames pass this
- check Response flag - 3 ops - 2 ops - 50% of frames removed - 50% of 
frames pass this
- check Major - 2/4 ops - 80% of frames removed - 10% of frames pass this
- check Minor - 2/4 ops - 0 % of frames removed - 10% of frames pass this

If I were to reorder the checks and move the major/minor checks first, 
response after that and leave the frame type to the end:
- check Major - 2/4 ops - 80% of frames removed - 20% of frames pass this
- check Minor - 2/4 ops - 0 % of frames removed - 20% of frames pass this
- check Response flag - 3 ops - 2 ops - 50% of frames removed - 10% of 
frames pass this
- check Frame type - 2 ops - 0% of frames removed - 10% of frames pass this

This would lead to a fast-fail path for 80% of vblade traffic in 4 ops, 
versus the 9 ops used currently.

If we were to include a moderate amount of other kinds of traffic into 
the mix, major and minor have the nice effect of sitting on top of the 
Total Length and Identification fields of IP, which vary wildly and have 
a small chance of collision.
This is not shared, unfortunately, by IPv6, where it would collide with 
part of Flow Label and part of Payload Length. In normal environments 
these bytes would probably be 0, and so would the response flag. If both 
our major and minor are set to 0, we would have a fail in 9 ops to find 
that out, instead of 2 ops in the current case, for said vblade 
instance, but all other instances would fail in 4 ops.
This trade-off would not be convenient in an environment with more 
non-AoE traffic than AoE traffic, but, as stated, I'd argue that that is 
not the general case.

Implementation-wise I would argue against the need to keep both version, 
as the latency difference is small, but flipping between these by a 
command-line argument would be an option that wouldn't cost anything at 
runtime (something like - favour dedicated or mixed environments with a 
flag)

One more note - since I'm deploying this on FreeBSD (and I believe Linux 
also has something similar) I can make sure I don't see frames sent by 
this machine, so I can drop the removed count for the Response flag to 
0% in certain conditions. I'm about to follow this up with freebsd-net@ 
and maybe raise a question on linux-net@.

I submit this for your consideration, and will provide the needed changes.

Cheers,
  Catalin Salgau

------------------------------------------------------------------------------
HPCC Systems Open Source Big Data Platform from LexisNexis Risk Solutions
Find What Matters Most in Your Big Data with HPCC Systems
Open Source. Fast. Scalable. Simple. Ideal for Dirty Data.
Leverages Graph Analysis for Fast Processing & Easy Data Exploration
http://p.sf.net/sfu/hpccsystems
_______________________________________________
Aoetools-discuss mailing list
Aoetools-discuss@xxxxxxxxxxxxxxxxxxxxx
https://lists.sourceforge.net/lists/listinfo/aoetools-discuss




[Index of Archives]     [Linux ARM Kernel]     [Linux SCSI]     [Linux ARM]     [Linux Omap]     [Fedora ARM]     [IETF Annouce]     [Security]     [Bugtraq]     [Linux OMAP]     [Linux MIPS]     [eCos]     [Asterisk Internet PBX]     [Linux API]

  Powered by Linux