[Vortex] Tuning window size in vortex to achieve more performance

Francis Brosnan Blazquez francis at aspl.es
Wed Sep 5 16:02:33 CEST 2012


> Hi

Hi Subrahmanya,

> In vortex channel window size is hard-coded to 4096. It is the same in
> Java implementation of BEEP that we are using. While testing the
> performance of Java BEEP implementation we observed that changing the
> following gives very good performance improvement.
> 1. Increasing the window size to a larger value (4 * 4096) 

Just to confirm increasing the window size to 32k (as you do) provides
important performance improvements...going over only consumes memory
without providing significant performance improvements..

> 2. Changing the condition to identify when to send sequence frames.
> After the change the peer would not wait for half of the window to
> become free to send SEQ frame instead it would send once the free
> window size reaches a particular limit which will be lesser than 2048
> (around 500 or so).

We've tested this and we always get better performance following RFC
indications about considering half of the available window as a good
limit to issue a SEQ frame...

> Now I want to make similar changes in vortex and test it. For that I
> looked at vortex source to find out the places where to make these
> changes. Below are the identified places. Can someone confirm whether
> these are the only/correct places to make the changes?
> vortex_channel.c(1495): channel->window_size                    =
> 4096;
> vortex_channel.c(1496): channel->seq_no_window
>  = 4096;
> vortex_channel.c(1497): channel->desired_window_size            =
> 4096;
> vortex_channel.c(1503): channel->remote_window                  =
> 4096 ;
> vortex_channel.c(3729): return VORTEX_MIN (remote_buffer_available,
> VORTEX_MIN (channel->window_size, VORTEX_MIN (message_size,  4096 )));
> 
> 
> And, in the following function
> axl_bool      vortex_channel_update_incoming_buffer (VortexChannel *
> channel, 
>     VortexFrame   * frame,
>     unsigned int  * ackno,
>     int           * window)
> below condition has to be modified to send SEQ frames little more
> frequently.
> bytes_available = vortex_channel_incoming_bytes_available (channel,
> frame);
>   if (bytes_available > (channel->seq_no_window / 2)) {
> 
> 
> The text marked in RED are those places to be modified.
> 
> 
> I would reply back to this forum once we perform some tests. 

Nice, 

> If we actually see a performance improvement probably these values can
> be made user configurable so that each user/developer can choose to
> set a value according to his requirement.

You can use the following functions to query/change channel window size
dynamically:

- vortex_channel_set_window_size
- vortex_channel_get_window_size

> Note that I am using vortex version 1.1.8 and hence the line numbers
> mentioned above may not match with the latest code base.

Ok, Cheers!

> Thanks
> Subrahmanya
> _______________________________________________
> Vortex mailing list
> Vortex at lists.aspl.es
> http://lists.aspl.es/cgi-bin/mailman/listinfo/vortex

-- 
Francis Brosnan Blázquez <francis.brosnan at aspl.es>
ASPL
91 134 14 22 - 91 134 14 45 - 91 116 07 57

AVISO LEGAL

Este mensaje se dirige exclusivamente a su destinatario. Los datos
incluidos en el presente correo son confidenciales y sometidos a secreto
profesional, se prohíbe divulgarlos, en virtud de las leyes vigentes. Si
usted no lo es y lo ha recibido por error o tiene conocimiento del mismo
por cualquier motivo, le rogamos que nos lo comunique por este medio y
proceda a destruirlo o borrarlo.

En virtud de lo dispuesto en la Ley Orgánica 15/1999, de 13 de
diciembre, de Protección de Datos de Carácter Personal, le informamos de
que sus datos de carácter personal, recogidos de fuentes accesibles al
público o datos que usted nos ha facilitado previamente, proceden de
bases de datos propiedad de Advanced Software Production Line, S.L.
(ASPL). No obstante, usted puede ejercitar sus derechos de acceso,
rectificación, cancelación y oposición dispuestos en la mencionada Ley
Orgánica, notificándolo por escrito a:
ASPL - Protección Datos, C/Antonio Suárez 10 A-102, 28802, Alcalá de
Henares (Madrid).



More information about the Vortex mailing list