You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@hive.apache.org by "Slim Bouguerra (Jira)" <ji...@apache.org> on 2020/01/22 03:37:00 UTC
[jira] [Updated] (HIVE-21334) Eviction of blocks is major source of
blockage for allocation request. Allocation path need to be lock-free.
[ 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)