slim bouguerra created HIVE-21334:
-------------------------------------

             Summary: Eviction of blocks is major source of blockage for 
allocation request. Allocation path need to be lock-free.
                 Key: HIVE-21334
                 URL: https://issues.apache.org/jira/browse/HIVE-21334
             Project: Hive
          Issue Type: Improvement
            Reporter: slim bouguerra
            Assignee: slim bouguerra
         Attachments: lock_profile.png

Eviction is getting in the way of memory allocation when the query fragment has 
no cache entry.
This is cause major bottleneck and waist lot of cpu cycles.
To fix this is first we can batch the evictions to avoid taking the lock 
multiple times.
The memory manager need to be able to anticipate such issue and keep some spare 
space for queries that do not have any hit.

{code}
IO-Elevator-Thread-12  Blocked CPU usage on sample: 692ms
  
org.apache.hadoop.hive.llap.cache.LowLevelLrfuCachePolicy.evictSomeBlocks(long) 
LowLevelLrfuCachePolicy.java:264
  org.apache.hadoop.hive.llap.cache.CacheContentsTracker.evictSomeBlocks(long) 
CacheContentsTracker.java:194
  
org.apache.hadoop.hive.llap.cache.LowLevelCacheMemoryManager.reserveMemory(long,
 boolean, AtomicBoolean) LowLevelCacheMemoryManager.java:87
  
org.apache.hadoop.hive.llap.cache.LowLevelCacheMemoryManager.reserveMemory(long,
 AtomicBoolean) LowLevelCacheMemoryManager.java:63
  
org.apache.hadoop.hive.llap.cache.BuddyAllocator.allocateMultiple(MemoryBuffer[],
 int, Allocator$BufferObjectFactory, AtomicBoolean) BuddyAllocator.java:263
  
org.apache.hadoop.hive.ql.io.orc.encoded.EncodedReaderImpl.allocateMultiple(MemoryBuffer[],
 int) EncodedReaderImpl.java:1295
  
org.apache.hadoop.hive.ql.io.orc.encoded.EncodedReaderImpl.readEncodedStream(long,
 DiskRangeList, long, long, EncodedColumnBatch$ColumnStreamData, long, long, 
IdentityHashMap) EncodedReaderImpl.java:923
  
org.apache.hadoop.hive.ql.io.orc.encoded.EncodedReaderImpl.readEncodedColumns(int,
 StripeInformation, OrcProto$RowIndex[], List, List, boolean[], boolean[], 
Consumer) EncodedReaderImpl.java:501
  org.apache.hadoop.hive.llap.io.encoded.OrcEncodedDataReader.performDataRead() 
OrcEncodedDataReader.java:407
  org.apache.hadoop.hive.llap.io.encoded.OrcEncodedDataReader$4.run() 
OrcEncodedDataReader.java:266
  org.apache.hadoop.hive.llap.io.encoded.OrcEncodedDataReader$4.run() 
OrcEncodedDataReader.java:263
  java.security.AccessController.doPrivileged(PrivilegedExceptionAction, 
AccessControlContext) AccessController.java (native)
  javax.security.auth.Subject.doAs(Subject, PrivilegedExceptionAction) 
Subject.java:422
  
org.apache.hadoop.security.UserGroupInformation.doAs(PrivilegedExceptionAction) 
UserGroupInformation.java:1688
  org.apache.hadoop.hive.llap.io.encoded.OrcEncodedDataReader.callInternal() 
OrcEncodedDataReader.java:263
  org.apache.hadoop.hive.llap.io.encoded.OrcEncodedDataReader.callInternal() 
OrcEncodedDataReader.java:110
  org.apache.tez.common.CallableWithNdc.call() CallableWithNdc.java:36
  
org.apache.hadoop.hive.llap.daemon.impl.StatsRecordingThreadPool$WrappedCallable.call()
 StatsRecordingThreadPool.java:110
  java.util.concurrent.FutureTask.run() FutureTask.java:266
  java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor$Worker) 
ThreadPoolExecutor.java:1142
  java.util.concurrent.ThreadPoolExecutor$Worker.run() 
ThreadPoolExecutor.java:617
  java.lang.Thread.run() Thread.java:745 
{code}



--
This message was sent by Atlassian JIRA
(v7.6.3#76005)

Reply via email to