[ 
https://issues.apache.org/jira/browse/TS-1006?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13527911#comment-13527911
 ] 

Yunkai Zhang commented on TS-1006:
----------------------------------

[~ibochkarev]

When allocator try to reclaim memory, it will harm performance. By setting 
appropriate max_mem/reclaim_factor/max_overage(they are configurable variables 
in recoreds.config file), we can let allocator running on the state that need 
not to reclaim memory.

In fact there two conditions will lead to memory reclaiming:

1) memory used by allocator exceed max_mem
In this condition, it will always reclaim memory until memory size less than 
max_mem, this reclaiming will *only* slowdown the requests which lead to the 
memory beyond max_mem, but will not affect other requests.

2) idle memory in allocator exceed chunck_size for max_overage times (see 
patch's commit log)
When allocator has so many idle memory, it means that TS is not so busy, so the 
reclaiming in this condition will not harm performance.


                
> memory management, cut down memory waste ?
> ------------------------------------------
>
>                 Key: TS-1006
>                 URL: https://issues.apache.org/jira/browse/TS-1006
>             Project: Traffic Server
>          Issue Type: Improvement
>          Components: Core
>    Affects Versions: 3.1.1
>            Reporter: Zhao Yongming
>            Assignee: Bin Chen
>             Fix For: 3.3.2
>
>         Attachments: 0001-Allocator-optimize-InkFreeList-memory-pool.patch, 
> 0002-Allocator-make-InkFreeList-memory-pool-configurable.patch, 
> Memory-Usage-After-Introduced-New-Allocator.png, memusage.ods, memusage.ods
>
>
> when we review the memory usage in the production, there is something 
> abnormal, ie, looks like TS take much memory than index data + common system 
> waste, and here is some memory dump result by set 
> "proxy.config.dump_mem_info_frequency"
> 1, the one on a not so busy forwarding system:
> physics memory: 32G
> RAM cache: 22G
> DISK: 6140 GB
> average_object_size 64000
> {code}
>      allocated      |        in-use      | type size  |   free list name
> --------------------|--------------------|------------|----------------------------------
>           671088640 |           37748736 |    2097152 | 
> memory/ioBufAllocator[14]
>          2248146944 |         2135949312 |    1048576 | 
> memory/ioBufAllocator[13]
>          1711276032 |         1705508864 |     524288 | 
> memory/ioBufAllocator[12]
>          1669332992 |         1667760128 |     262144 | 
> memory/ioBufAllocator[11]
>          2214592512 |         2211840000 |     131072 | 
> memory/ioBufAllocator[10]
>          2325741568 |         2323775488 |      65536 | 
> memory/ioBufAllocator[9]
>          2091909120 |         2089123840 |      32768 | 
> memory/ioBufAllocator[8]
>          1956642816 |         1956478976 |      16384 | 
> memory/ioBufAllocator[7]
>          2094530560 |         2094071808 |       8192 | 
> memory/ioBufAllocator[6]
>           356515840 |          355540992 |       4096 | 
> memory/ioBufAllocator[5]
>             1048576 |              14336 |       2048 | 
> memory/ioBufAllocator[4]
>              131072 |                  0 |       1024 | 
> memory/ioBufAllocator[3]
>               65536 |                  0 |        512 | 
> memory/ioBufAllocator[2]
>               32768 |                  0 |        256 | 
> memory/ioBufAllocator[1]
>               16384 |                  0 |        128 | 
> memory/ioBufAllocator[0]
>                   0 |                  0 |        576 | 
> memory/ICPRequestCont_allocator
>                   0 |                  0 |        112 | 
> memory/ICPPeerReadContAllocator
>                   0 |                  0 |        432 | 
> memory/PeerReadDataAllocator
>                   0 |                  0 |         32 | 
> memory/MIMEFieldSDKHandle
>                   0 |                  0 |        240 | 
> memory/INKVConnAllocator
>                   0 |                  0 |         96 | 
> memory/INKContAllocator
>                4096 |                  0 |         32 | 
> memory/apiHookAllocator
>                   0 |                  0 |        288 | 
> memory/FetchSMAllocator
>                   0 |                  0 |         80 | 
> memory/prefetchLockHandlerAllocator
>                   0 |                  0 |        176 | 
> memory/PrefetchBlasterAllocator
>                   0 |                  0 |         80 | 
> memory/prefetchUrlBlaster
>                   0 |                  0 |         96 | memory/blasterUrlList
>                   0 |                  0 |         96 | 
> memory/prefetchUrlEntryAllocator
>                   0 |                  0 |        128 | 
> memory/socksProxyAllocator
>                   0 |                  0 |        144 | 
> memory/ObjectReloadCont
>             3258368 |             576016 |        592 | 
> memory/httpClientSessionAllocator
>              825344 |             139568 |        208 | 
> memory/httpServerSessionAllocator
>            22597632 |            1284848 |       9808 | memory/httpSMAllocator
>                   0 |                  0 |         32 | 
> memory/CacheLookupHttpConfigAllocator
>                   0 |                  0 |       9856 | 
> memory/httpUpdateSMAllocator
>                   0 |                  0 |        128 | 
> memory/RemapPluginsAlloc
>                   0 |                  0 |         48 | 
> memory/CongestRequestParamAllocator
>                   0 |                  0 |        128 | 
> memory/CongestionDBContAllocator
>             5767168 |             704512 |       2048 | memory/hdrStrHeap
>            18350080 |            1153024 |       2048 | memory/hdrHeap
>               53248 |               2912 |        208 | 
> memory/httpCacheAltAllocator
>                   0 |                  0 |        112 | 
> memory/OneWayTunnelAllocator
>              157696 |               1232 |       1232 | 
> memory/hostDBContAllocator
>              102240 |              17040 |      17040 | memory/dnsBufAllocator
>              323584 |                  0 |       1264 | 
> memory/dnsEntryAllocator
>                   0 |                  0 |         16 | 
> memory/DNSRequestDataAllocator
>                   0 |                  0 |       1072 | memory/SRVAllocator
>                   0 |                  0 |         48 | 
> memory/ClusterVConnectionCache::Entry
>                   0 |                  0 |        560 | 
> memory/cacheContAllocator
>                   0 |                  0 |        112 | 
> memory/inControlAllocator
>                   0 |                  0 |        112 | 
> memory/outControlAllocator
>                   0 |                  0 |         32 | 
> memory/byteBankAllocator
>                   0 |                  0 |        576 | 
> memory/clusterVCAllocator
>                   0 |                  0 |         48 | memory/evacuationKey
>                6144 |                  0 |         48 | memory/cacheRemoveCont
>              270336 |             262560 |         96 | memory/evacuationBlock
>             4997120 |            3968416 |        976 | 
> memory/cacheVConnection
>              798720 |             522080 |        160 | memory/openDirEntry
>                   0 |                  0 |         64 | 
> memory/RamCacheLRUEntry
>            56426496 |           56426304 |         96 | 
> memory/RamCacheCLFUSEntry
>             9584640 |            6168000 |        960 | memory/netVCAllocator
>                   0 |                  0 |        128 | 
> memory/udpReadContAllocator
>                   0 |                  0 |        128 | 
> memory/udpWorkContinuationAllocator
>                   0 |                  0 |        160 | 
> memory/udpPacketAllocator
>                   0 |                  0 |        304 | memory/socksAllocator
>              139264 |              68544 |       1088 | 
> memory/sslNetVCAllocator
>                   0 |                  0 |        128 | 
> memory/UDPIOEventAllocator
>              671744 |             115520 |         64 | 
> memory/ioBlockAllocator
>            28305408 |           28301520 |         48 | memory/ioDataAllocator
>             2273280 |             406320 |        240 | memory/ioAllocator
>             1904640 |            1489920 |         80 | memory/mutexAllocator
>             1105920 |             188544 |         96 | memory/eventAllocator
>             2359296 |             129024 |       1024 | memory/ArenaBlock
> {code}
> this box will crash every 2days, so the memory waste may no that high
> 2, our production reverse system:
> physics memory: 16G
> RAM cache: 8G
> DISK: 1516 GB
> average_object_size 16384
> and it run for a much long time:
> {code}
>      allocated      |        in-use      | type size  |   free list name
> --------------------|--------------------|------------|----------------------------------
>           805306368 |                  0 |    2097152 | 
> memory/ioBufAllocator[14]
>           738197504 |            8388608 |    1048576 | 
> memory/ioBufAllocator[13]
>          1258291200 |           46661632 |     524288 | 
> memory/ioBufAllocator[12]
>          1300234240 |          183762944 |     262144 | 
> memory/ioBufAllocator[11]
>          1170210816 |          466223104 |     131072 | 
> memory/ioBufAllocator[10]
>          1790967808 |         1223426048 |      65536 | 
> memory/ioBufAllocator[9]
>          2970615808 |         2601418752 |      32768 | 
> memory/ioBufAllocator[8]
>          2067791872 |         2044608512 |      16384 | 
> memory/ioBufAllocator[7]
>          1169424384 |         1169121280 |       8192 | 
> memory/ioBufAllocator[6]
>           711458816 |          710463488 |       4096 | 
> memory/ioBufAllocator[5]
>             1572864 |                  0 |       2048 | 
> memory/ioBufAllocator[4]
>              131072 |                  0 |       1024 | 
> memory/ioBufAllocator[3]
>               65536 |                  0 |        512 | 
> memory/ioBufAllocator[2]
>               32768 |                  0 |        256 | 
> memory/ioBufAllocator[1]
>               16384 |                  0 |        128 | 
> memory/ioBufAllocator[0]
>                   0 |                  0 |        576 | 
> memory/ICPRequestCont_allocator
>                   0 |                  0 |        112 | 
> memory/ICPPeerReadContAllocator
>                   0 |                  0 |        432 | 
> memory/PeerReadDataAllocator
>                   0 |                  0 |         32 | 
> memory/MIMEFieldSDKHandle
>                   0 |                  0 |        240 | 
> memory/INKVConnAllocator
>                   0 |                  0 |         96 | 
> memory/INKContAllocator
>                4096 |                  0 |         32 | 
> memory/apiHookAllocator
>                   0 |                  0 |        288 | 
> memory/FetchSMAllocator
>                   0 |                  0 |         80 | 
> memory/prefetchLockHandlerAllocator
>                   0 |                  0 |        176 | 
> memory/PrefetchBlasterAllocator
>                   0 |                  0 |         80 | 
> memory/prefetchUrlBlaster
>                   0 |                  0 |         96 | memory/blasterUrlList
>                   0 |                  0 |         96 | 
> memory/prefetchUrlEntryAllocator
>                   0 |                  0 |        128 | 
> memory/socksProxyAllocator
>                   0 |                  0 |        144 | 
> memory/ObjectReloadCont
>             1136640 |             125504 |        592 | 
> memory/httpClientSessionAllocator
>              372736 |              27248 |        208 | 
> memory/httpServerSessionAllocator
>            11317248 |              39296 |       9824 | memory/httpSMAllocator
>                   0 |                  0 |         32 | 
> memory/CacheLookupHttpConfigAllocator
>                   0 |                  0 |       9888 | 
> memory/httpUpdateSMAllocator
>                   0 |                  0 |        128 | 
> memory/RemapPluginsAlloc
>                   0 |                  0 |        512 | memory/HCSMAllocator
>                   0 |                  0 |         48 | 
> memory/VCEntryAllocator
>                   0 |                  0 |         96 | 
> memory/HCEntryAllocator
>                   0 |                  0 |         64 | 
> memory/HCHandlerAllocator
>                   0 |                  0 |         48 | 
> memory/CongestRequestParamAllocator
>                   0 |                  0 |        128 | 
> memory/CongestionDBContAllocator
>             6029312 |             643072 |       2048 | memory/hdrStrHeap
>             7077888 |             657408 |       2048 | memory/hdrHeap
>               26624 |                208 |        208 | 
> memory/httpCacheAltAllocator
>                   0 |                  0 |        112 | 
> memory/OneWayTunnelAllocator
>              630784 |               1232 |       1232 | 
> memory/hostDBContAllocator
>              238560 |              17040 |      17040 | memory/dnsBufAllocator
>              161792 |                  0 |       1264 | 
> memory/dnsEntryAllocator
>                   0 |                  0 |         16 | 
> memory/DNSRequestDataAllocator
>                   0 |                  0 |       1072 | memory/SRVAllocator
>                   0 |                  0 |         48 | 
> memory/ClusterVConnectionCache::Entry
>                   0 |                  0 |        560 | 
> memory/cacheContAllocator
>                   0 |                  0 |        112 | 
> memory/inControlAllocator
>                   0 |                  0 |        112 | 
> memory/outControlAllocator
>                   0 |                  0 |         32 | 
> memory/byteBankAllocator
>                   0 |                  0 |        576 | 
> memory/clusterVCAllocator
>                   0 |                  0 |         48 | memory/evacuationKey
>                6144 |                  0 |         48 | memory/cacheRemoveCont
>            17006592 |           14972928 |         96 | memory/evacuationBlock
>             1777664 |             759872 |        992 | 
> memory/cacheVConnection
>              307200 |             111520 |        160 | memory/openDirEntry
>                   0 |                  0 |         64 | 
> memory/RamCacheLRUEntry
>           104275968 |          104274048 |         96 | 
> memory/RamCacheCLFUSEntry
>             3440640 |            1819200 |        960 | memory/netVCAllocator
>                   0 |                  0 |        128 | 
> memory/udpReadContAllocator
>                   0 |                  0 |        128 | 
> memory/udpWorkContinuationAllocator
>                   0 |                  0 |        160 | 
> memory/udpPacketAllocator
>                   0 |                  0 |        304 | memory/socksAllocator
>                   0 |                  0 |       1088 | 
> memory/sslNetVCAllocator
>                   0 |                  0 |        128 | 
> memory/UDPIOEventAllocator
>              237568 |              22528 |         64 | 
> memory/ioBlockAllocator
>            26087424 |           26081904 |         48 | memory/ioDataAllocator
>              890880 |              84240 |        240 | memory/ioAllocator
>             1525760 |            1403440 |         80 | memory/mutexAllocator
>              565248 |             129696 |         96 | memory/eventAllocator
>             1179648 |               4096 |       1024 | memory/ArenaBlock
> {code}
> our team is working on the memory free issue, trying to improve the memory 
> management. and this a big project, the more input|comment the better.

--
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

Reply via email to