GitHub user bgaff opened a pull request:

    https://github.com/apache/trafficserver/pull/556

    Adding STL Allocator which uses io bufs

    This is something that seems to come up at every summit and I always 
promise to prototype it. Ahead of the next summit I'd like to begin discussions 
around the idea of actually making this happen. This pull request (while not 
yet referencing a TS ticket) adds an STL allocator which uses io bufs if 
possible falling back to std::allocator for large allocations. As an example I 
also modified the SPDY code to use this new allocator instead of the default 
allocator. So I'd love thoughts on this, should we go forward?
    
    cc. @jpeach @SolidWallOfCode @zwoop @jacksontj 
    
    The result below is from just switching out the SPDY code and with only ONE 
request, needless-to-say a large number of allocations happen that can be 
deferred to an io buf.
    ```
    [Mar  1 23:50:12.861] Server {0x7fffee0fc700} DIAG: (allocator) Allocating 
a block from iobuf index 0 (block size 128), alloc size = 30 at location 
0x7fffd004bf80
    [Mar  1 23:50:12.861] Server {0x7fffee0fc700} DIAG: (allocator) Allocating 
a block from iobuf index 0 (block size 128), alloc size = 34 at location 
0x7fffd004bf00
    [Mar  1 23:50:12.861] Server {0x7fffee0fc700} DIAG: (allocator) Allocating 
a block from iobuf index 0 (block size 128), alloc size = 16 at location 
0x7fffd004be80
    [Mar  1 23:50:12.861] Server {0x7fffee0fc700} DIAG: (allocator) Allocating 
a block from iobuf index 0 (block size 128), alloc size = 32 at location 
0x7fffd004be00
    [Mar  1 23:50:12.861] Server {0x7fffee0fc700} DIAG: (allocator) Allocating 
a block from iobuf index 0 (block size 128), alloc size = 28 at location 
0x7fffd004bd80
    [Mar  1 23:50:12.861] Server {0x7fffee0fc700} DIAG: (allocator) Allocating 
a block from iobuf index 0 (block size 128), alloc size = 32 at location 
0x7fffd004bd00
    [Mar  1 23:50:12.861] Server {0x7fffee0fc700} DIAG: (allocator) 
Deallocating a block to iobuf index 0 (block size 128), alloc size = 16 at 
location 0x7fffd004bc80
    [Mar  1 23:50:12.861] Server {0x7fffee0fc700} DIAG: (allocator) Allocating 
a block from iobuf index 0 (block size 128), alloc size = 30 at location 
0x7fffd004bc80
    [Mar  1 23:50:12.861] Server {0x7fffee0fc700} DIAG: (allocator) Allocating 
a block from iobuf index 0 (block size 128), alloc size = 26 at location 
0x7fffd004bc00
    [Mar  1 23:50:12.861] Server {0x7fffee0fc700} DIAG: (allocator) Allocating 
a block from iobuf index 0 (block size 128), alloc size = 64 at location 
0x7fffd004bb80
    [Mar  1 23:50:12.861] Server {0x7fffee0fc700} DIAG: (allocator) 
Deallocating a block to iobuf index 0 (block size 128), alloc size = 32 at 
location 0x7fffd004bb00
    [Mar  1 23:50:12.861] Server {0x7fffee0fc700} DIAG: (allocator) Allocating 
a block from iobuf index 0 (block size 128), alloc size = 32 at location 
0x7fffd004bb00
    [Mar  1 23:50:12.861] Server {0x7fffee0fc700} DIAG: (allocator) Allocating 
a block from iobuf index 0 (block size 128), alloc size = 30 at location 
0x7fffd004ba80
    [Mar  1 23:50:12.861] Server {0x7fffee0fc700} DIAG: (allocator) Allocating 
a block from iobuf index 0 (block size 128), alloc size = 33 at location 
0x7fffd004ba00
    [Mar  1 23:50:12.861] Server {0x7fffee0fc700} DIAG: (allocator) Allocating 
a block from iobuf index 0 (block size 128), alloc size = 33 at location 
0x7fffd004b980
    [Mar  1 23:50:12.861] Server {0x7fffee0fc700} DIAG: (allocator) Allocating 
a block from iobuf index 0 (block size 128), alloc size = 128 at location 
0x7fffd004b900
    [Mar  1 23:50:12.861] Server {0x7fffee0fc700} DIAG: (allocator) 
Deallocating a block to iobuf index 0 (block size 128), alloc size = 64 at 
location 0x7fffd004b880
    [Mar  1 23:50:12.861] Server {0x7fffee0fc700} DIAG: (allocator) Allocating 
a block from iobuf index 0 (block size 128), alloc size = 31 at location 
0x7fffd004b880
    [Mar  1 23:50:12.861] Server {0x7fffee0fc700} DIAG: (allocator) Allocating 
a block from iobuf index 0 (block size 128), alloc size = 28 at location 
0x7fffd004b800
    [Mar  1 23:50:12.861] Server {0x7fffee0fc700} DIAG: (allocator) Allocating 
a block from iobuf index 0 (block size 128), alloc size = 40 at location 
0x7fffd004b780
    [Mar  1 23:50:12.861] Server {0x7fffee0fc700} DIAG: (allocator) Allocating 
a block from iobuf index 0 (block size 128), alloc size = 38 at location 
0x7fffd004b700
    [Mar  1 23:50:12.861] Server {0x7fffee0fc700} DIAG: (allocator) Allocating 
a block from iobuf index 0 (block size 128), alloc size = 35 at location 
0x7fffd004b680
    [Mar  1 23:50:12.861] Server {0x7fffee0fc700} DIAG: (allocator) Allocating 
a block from iobuf index 0 (block size 128), alloc size = 42 at location 
0x7fffd004b600
    [Mar  1 23:50:12.861] Server {0x7fffee0fc700} DIAG: (allocator) Allocating 
a block from iobuf index 0 (block size 128), alloc size = 48 at location 
0x7fffd004b580
    [Mar  1 23:50:12.861] Server {0x7fffee0fc700} DIAG: (allocator) Allocating 
a block from iobuf index 0 (block size 128), alloc size = 35 at location 
0x7fffd004b500
    [Mar  1 23:50:12.861] Server {0x7fffee0fc700} DIAG: (allocator) Allocating 
a block from iobuf index 0 (block size 128), alloc size = 45 at location 
0x7fffd004b480
    [Mar  1 23:50:12.861] Server {0x7fffee0fc700} DIAG: (allocator) Allocating 
a block from iobuf index 0 (block size 128), alloc size = 43 at location 
0x7fffd004b400
    [Mar  1 23:50:12.861] Server {0x7fffee0fc700} DIAG: (allocator) 
Deallocating a block to iobuf index 0 (block size 128), alloc size = 45 at 
location 0x7fffd004b380
    [Mar  1 23:50:12.861] Server {0x7fffee0fc700} DIAG: (allocator) 
Deallocating a block to iobuf index 0 (block size 128), alloc size = 35 at 
location 0x7fffd004b380
    [Mar  1 23:50:13.309] Server {0x7fffee0fc700} DIAG: (allocator) 
Deallocating a block to iobuf index 0 (block size 128), alloc size = 30 at 
location 0x7fffd004b380
    [Mar  1 23:50:13.309] Server {0x7fffee0fc700} DIAG: (allocator) 
Deallocating a block to iobuf index 0 (block size 128), alloc size = 32 at 
location 0x7fffd004b380
    [Mar  1 23:50:13.309] Server {0x7fffee0fc700} DIAG: (allocator) 
Deallocating a block to iobuf index 0 (block size 128), alloc size = 30 at 
location 0x7fffd004b380
    [Mar  1 23:50:13.309] Server {0x7fffee0fc700} DIAG: (allocator) 
Deallocating a block to iobuf index 0 (block size 128), alloc size = 32 at 
location 0x7fffd004b380
    [Mar  1 23:50:13.309] Server {0x7fffee0fc700} DIAG: (allocator) 
Deallocating a block to iobuf index 0 (block size 128), alloc size = 33 at 
location 0x7fffd004b380
    [Mar  1 23:50:13.309] Server {0x7fffee0fc700} DIAG: (allocator) 
Deallocating a block to iobuf index 0 (block size 128), alloc size = 28 at 
location 0x7fffd004b380
    [Mar  1 23:50:13.309] Server {0x7fffee0fc700} DIAG: (allocator) 
Deallocating a block to iobuf index 0 (block size 128), alloc size = 31 at 
location 0x7fffd004b380
    [Mar  1 23:50:13.309] Server {0x7fffee0fc700} DIAG: (allocator) 
Deallocating a block to iobuf index 0 (block size 128), alloc size = 38 at 
location 0x7fffd004b380
    [Mar  1 23:50:13.309] Server {0x7fffee0fc700} DIAG: (allocator) 
Deallocating a block to iobuf index 0 (block size 128), alloc size = 40 at 
location 0x7fffd004b380
    [Mar  1 23:50:13.309] Server {0x7fffee0fc700} DIAG: (allocator) 
Deallocating a block to iobuf index 0 (block size 128), alloc size = 42 at 
location 0x7fffd004b380
    [Mar  1 23:50:13.309] Server {0x7fffee0fc700} DIAG: (allocator) 
Deallocating a block to iobuf index 0 (block size 128), alloc size = 35 at 
location 0x7fffd004b380
    [Mar  1 23:50:13.309] Server {0x7fffee0fc700} DIAG: (allocator) 
Deallocating a block to iobuf index 0 (block size 128), alloc size = 128 at 
location 0x7fffd004b380
    [Mar  1 23:50:13.309] Server {0x7fffee0fc700} DIAG: (allocator) 
Deallocating a block to iobuf index 0 (block size 128), alloc size = 43 at 
location 0x7fffd004b380
    [Mar  1 23:50:13.309] Server {0x7fffee0fc700} DIAG: (allocator) 
Deallocating a block to iobuf index 0 (block size 128), alloc size = 34 at 
location 0x7fffd004b380
    [Mar  1 23:50:13.309] Server {0x7fffee0fc700} DIAG: (allocator) 
Deallocating a block to iobuf index 0 (block size 128), alloc size = 26 at 
location 0x7fffd004b380
    [Mar  1 23:50:13.309] Server {0x7fffee0fc700} DIAG: (allocator) 
Deallocating a block to iobuf index 0 (block size 128), alloc size = 30 at 
location 0x7fffd004b380
    [Mar  1 23:50:13.309] Server {0x7fffee0fc700} DIAG: (allocator) 
Deallocating a block to iobuf index 0 (block size 128), alloc size = 28 at 
location 0x7fffd004b380
    [Mar  1 23:50:13.309] Server {0x7fffee0fc700} DIAG: (allocator) 
Deallocating a block to iobuf index 0 (block size 128), alloc size = 33 at 
location 0x7fffd004b380
    [Mar  1 23:50:13.309] Server {0x7fffee0fc700} DIAG: (allocator) 
Deallocating a block to iobuf index 0 (block size 128), alloc size = 48 at 
location 0x7fffd004b380
    ```

You can merge this pull request into a Git repository by running:

    $ git pull https://github.com/bgaff/trafficserver master

Alternatively you can review and apply these changes as the patch at:

    https://github.com/apache/trafficserver/pull/556.patch

To close this pull request, make a commit to your master/trunk branch
with (at least) the following in the commit message:

    This closes #556
    
----
commit e862fbf214a88e6fa66276de7f9dd198db5ac2ef
Author: Brian Geffon <bri...@apache.org>
Date:   2016-03-02T07:56:08Z

    Adding STL Allocator which uses IoBufs

----


---
If your project is set up for it, you can reply to this email and have your
reply appear on GitHub as well. If your project does not have this feature
enabled and wishes so, or if the feature is enabled but not working, please
contact infrastructure at infrastruct...@apache.org or file a JIRA ticket
with INFRA.
---

Reply via email to