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