diff options
author | Dave Barach <dbarach@cisco.com> | 2017-08-02 13:56:13 -0400 |
---|---|---|
committer | Florin Coras <florin.coras@gmail.com> | 2017-08-10 14:34:31 +0000 |
commit | 818eb54de01459ed3d823f8a9781bbed0845db82 (patch) | |
tree | b3ec3cbfb20ae371a648e9c8f5a7aaaa027b457f /src/svm/svm_fifo.h | |
parent | ef5dd4f2aec6df1b58aa8d07493acf486eccf802 (diff) |
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>
Diffstat (limited to 'src/svm/svm_fifo.h')
-rw-r--r-- | src/svm/svm_fifo.h | 3 |
1 files changed, 2 insertions, 1 deletions
diff --git a/src/svm/svm_fifo.h b/src/svm/svm_fifo.h index f10b4d91a2a..84901d022d6 100644 --- a/src/svm/svm_fifo.h +++ b/src/svm/svm_fifo.h @@ -75,7 +75,8 @@ typedef struct _svm_fifo #if SVM_FIFO_TRACE svm_fifo_trace_elem_t *trace; #endif - i8 refcnt; + u32 freelist_index; /**< aka log2(allocated_size) - const. */ + i8 refcnt; /**< reference count */ CLIB_CACHE_LINE_ALIGN_MARK (data); } svm_fifo_t; |