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

update on os-bigarray branch



I've been porting the network stack to switch all data buffers to directly
use data buffers as external reference counted pages, rather than wrapping
them in OCaml string types. These buffers are exposed as 'bigarrays', and
manipulated via the new 'cstruct' syntax extension which maps c structs
to OCaml, and generates accessor functions for them.

Everything works up until the Channel module (which will work very shortly),
but I did some ICMP echo flood tests to check out the performance as a rough
metric, and the results are pretty good. With 2000 byte packets and a million
echo requests, going between two PV domains, all the tests have zero packet
loss or reordering issues (good!).   

In descending order performance, we have the zero-copy Mirage cstruct stack,
then PV Linux, and then the Mirage bitstring (which performs a data copy into
an OCaml string).

--- Mirage-cstruct 10.0.0.2 ping statistics ---
100000 packets transmitted, 100000 received, 0% packet loss, time 16885ms
rtt min/avg/max/mdev = 0.089/0.114/0.704/0.026 ms, ipg/ewma 0.168/0.109 ms

--- PV Linux 10.0.0.4 ping statistics ---
100000 packets transmitted, 100000 received, 0% packet loss, time 17044ms
rtt min/avg/max/mdev = 0.106/0.123/0.201/0.007 ms, ipg/ewma 0.170/0.125 ms

--- Mirage-bitstring 10.0.0.2 ping statistics ---
100000 packets transmitted, 100000 received, 0% packet loss, time 18062ms
rtt min/avg/max/mdev = 0.095/0.132/0.498/0.030 ms, ipg/ewma 0.180/0.138 ms


I've done some quick TCP write tests, and we seem to have fixed the very slow
problem that the old Bitstring had (due to the multiple string creates).

Next steps before merging this into trunk are:
- Finish Channel for buffered TCP (will let HTTP and SSH work again)
- Mort is porting lib/dns (while on vacation i believe!)
- Haris will take a look at the Openflow switch, once I port the controller
  over to the new Channel stack.

So we should get to a self-hosting website again very shortly, merge this to
trunk, and then get on with the developer preview release by the end of June!

-anil



 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.