[Vortex] Using vortex for IPC
mishadm at mail.ru
Tue Oct 7 06:04:32 CEST 2008
I'm trying to use vortex for exchanging large amount of data between two processes on the same computer. I have found 2 problems.
1. Very low transfer speed (about 20-30 Mb/sec)
After some changes in vortex I have speed about 100 Mb/sec, and it looks much better than 30 Mb/sec. I was trying to extend channel window size with vortex_channel_set_window_size function, but it was no effect, may be because of some bugs and mistakes in vortex. Here are some of them:
- max_seq_no_accepted and max_seq_no_remote_accepted from VortexChannel inits in vortex_channel_empty_new function and doesn't changes their values after vortex_channel_set_window_size.
- vortex_channel_get_next_frame_size always truncates frame size to 4k (see code after comment /* use default implementation */)
- sequencer_send_buffer and sequencer_send_buffer_size from VortexCtx inits only once in vortex_sequencer_run function and after extending channel window size sequencer_send_buffer seems to be too small.
Have anyone some ideas how to fix vortex for extending window size?
2. Transfer limit is 2Gb.
As I understand, the problem is that vortex uses variables of "int" type instead of "unsigned int" for saving sequence numbers. Then the transfer size becomes more that 2Gb, vortex tries to increase sequence number and it becomes greater than INT_MAX, so we get sequence number value near -INT_MAX. After that vortex closes connection.
To fix this problem I made a lot of changes in vortex sources (about 30 places in 10 files), but I'm not sure that I did all necessary changes. If someone want to fix this bug in vortex, I can send my changes to him.
More information about the Vortex