You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@trafficserver.apache.org by "Bryan Call (JIRA)" <ji...@apache.org> on 2013/02/03 23:50:12 UTC

[jira] [Updated] (TS-1684) Reduce the usage of global allocation/free lists - switch to using local thread allocation/free lists

     [ https://issues.apache.org/jira/browse/TS-1684?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Bryan Call updated TS-1684:
---------------------------

    Description: 
When running benchmarks ink_freelist_new() normally shows up as one of if not the number one function in the code using the most CPU.  Currently ATS uses global free lists (via ClassAllocator<>, Allocator, and SparceClassAllocator<>) for memory allocation for some of its memory allocation.

Here is a list of how frequently the type of allocations are used and the "name" given to the allocator.  This is a benchmark for a small object in cache fetched 100k times.
 400000 ink_freelist_new: hdrHeap
 300000 ink_freelist_new: hdrStrHeap
 203541 ink_freelist_new: ioBlockAllocator
 199616 proxy allocator thread_alloc: eventAllocator
 103554 ink_freelist_new: ioDataAllocator
 103554 ink_freelist_new: ioBufAllocator[5]
 100100 ink_freelist_new: ioAllocator
 100000 proxy allocator thread_alloc: hdrHeap
 100000 proxy allocator thread_alloc: cacheVConnection
 100000 ink_freelist_new: httpSMAllocator
 100000 ink_freelist_new: ArenaBlock
  18507 ink_freelist_new: mutexAllocator
   4772 ink_freelist_new: eventAllocator
    162 ink_freelist_new: cacheVConnection
    102 ink_freelist_new: netVCAllocator
    100 proxy allocator init thread_alloc: httpClientSessionAllocator
    100 ink_freelist_new: httpClientSessionAllocator
      1 proxy allocator thread_alloc: RamCacheCLFUSEntry
      1 ink_freelist_new: RamCacheCLFUSEntry
      1 ink_freelist_new: hostDBContAllocator

  was:
When running benchmarks ink_freelist_new() normally shows up as one of if not the number one function in the code using the most CPU.  Currently ATS uses global free lists (via ClassAllocator<>, Allocator, and SparceClassAllocator<>) for memory allocation for some of its memory allocation.

Here is a list of how frequently the type of allocations are used and the "name" given to the allocator.  This is a benchmark for a small object in cache fetched 10k times.
 400000 ink_freelist_new: hdrHeap
 300000 ink_freelist_new: hdrStrHeap
 203541 ink_freelist_new: ioBlockAllocator
 199616 proxy allocator thread_alloc: eventAllocator
 103554 ink_freelist_new: ioDataAllocator
 103554 ink_freelist_new: ioBufAllocator[5]
 100100 ink_freelist_new: ioAllocator
 100000 proxy allocator thread_alloc: hdrHeap
 100000 proxy allocator thread_alloc: cacheVConnection
 100000 ink_freelist_new: httpSMAllocator
 100000 ink_freelist_new: ArenaBlock
  18507 ink_freelist_new: mutexAllocator
   4772 ink_freelist_new: eventAllocator
    162 ink_freelist_new: cacheVConnection
    102 ink_freelist_new: netVCAllocator
    100 proxy allocator init thread_alloc: httpClientSessionAllocator
    100 ink_freelist_new: httpClientSessionAllocator
      1 proxy allocator thread_alloc: RamCacheCLFUSEntry
      1 ink_freelist_new: RamCacheCLFUSEntry
      1 ink_freelist_new: hostDBContAllocator

    
> Reduce the usage of global allocation/free lists - switch to using local thread allocation/free lists
> -----------------------------------------------------------------------------------------------------
>
>                 Key: TS-1684
>                 URL: https://issues.apache.org/jira/browse/TS-1684
>             Project: Traffic Server
>          Issue Type: Improvement
>          Components: Core
>            Reporter: Bryan Call
>
> When running benchmarks ink_freelist_new() normally shows up as one of if not the number one function in the code using the most CPU.  Currently ATS uses global free lists (via ClassAllocator<>, Allocator, and SparceClassAllocator<>) for memory allocation for some of its memory allocation.
> Here is a list of how frequently the type of allocations are used and the "name" given to the allocator.  This is a benchmark for a small object in cache fetched 100k times.
>  400000 ink_freelist_new: hdrHeap
>  300000 ink_freelist_new: hdrStrHeap
>  203541 ink_freelist_new: ioBlockAllocator
>  199616 proxy allocator thread_alloc: eventAllocator
>  103554 ink_freelist_new: ioDataAllocator
>  103554 ink_freelist_new: ioBufAllocator[5]
>  100100 ink_freelist_new: ioAllocator
>  100000 proxy allocator thread_alloc: hdrHeap
>  100000 proxy allocator thread_alloc: cacheVConnection
>  100000 ink_freelist_new: httpSMAllocator
>  100000 ink_freelist_new: ArenaBlock
>   18507 ink_freelist_new: mutexAllocator
>    4772 ink_freelist_new: eventAllocator
>     162 ink_freelist_new: cacheVConnection
>     102 ink_freelist_new: netVCAllocator
>     100 proxy allocator init thread_alloc: httpClientSessionAllocator
>     100 ink_freelist_new: httpClientSessionAllocator
>       1 proxy allocator thread_alloc: RamCacheCLFUSEntry
>       1 ink_freelist_new: RamCacheCLFUSEntry
>       1 ink_freelist_new: hostDBContAllocator

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira