Improve the svm fifo allocator 85/7885/5
authorDave Barach <dbarach@cisco.com>
Wed, 2 Aug 2017 17:56:13 +0000 (13:56 -0400)
committerFlorin Coras <florin.coras@gmail.com>
Thu, 10 Aug 2017 14:34:31 +0000 (14:34 +0000)
commit818eb54de01459ed3d823f8a9781bbed0845db82
treeb3ec3cbfb20ae371a648e9c8f5a7aaaa027b457f
parentef5dd4f2aec6df1b58aa8d07493acf486eccf802
Improve the svm fifo allocator

- Round up requested fifo size to the next power of two
- Maintain per-segment power-of-two freelists
- Allocate fifos in chunks, to amortize alignment overhead
- Detach builtin test client application after each run
  so we can use different fifo sizes each time
- Be more suspicious of session / application indices

Useful prep work for dynamically resizing fifos. As far as the svm
fifo code is concerned, it's OK to set fifo->nitems anywhere in the
interval: [0, 1<<(fifo->freelist_index) + FIFO_SEGMENT_MIN_FIFO_SIZE]

It's unlikely that setting nitems below the path MTU will work out
very well...

Change-Id: Idad73a027dfb7412056cb02988b77e300fa7e8a7
Signed-off-by: Dave Barach <dave@barachs.net>
src/svm/svm_fifo.c
src/svm/svm_fifo.h
src/svm/svm_fifo_segment.c
src/svm/svm_fifo_segment.h
src/vnet/session/session.c
src/vnet/tcp/builtin_client.c