[ https://issues.apache.org/jira/browse/HIVE-21334?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Slim Bouguerra updated HIVE-21334: ---------------------------------- Component/s: llap > 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 > Components: llap > Reporter: Slim Bouguerra > Assignee: Slim Bouguerra > Priority: Major > 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 (v8.3.4#803005)