[ https://issues.apache.org/jira/browse/HBASE-14697?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14975126#comment-14975126 ]
stack commented on HBASE-14697: ------------------------------- bq. No obvious hotspot. Well, metrics update is expensive as is bloom check. setResponse takes 4% of the CPU during this sampling.... LinkedBlockingQueue in consumerLoop takes 5% of CPU.... seems like some stuff we could clean up... Can we write better (writing takes 10% of CPU). bq. Where is the code which look ups key in a block? It is a sequential scan. These are random reads. The finding in a block must be inconsequential in the scheme of things [~vrodionov] > Random Read Improvements > ------------------------ > > Key: HBASE-14697 > URL: https://issues.apache.org/jira/browse/HBASE-14697 > Project: HBase > Issue Type: Umbrella > Components: Performance > Reporter: stack > Attachments: flamegraph-32667.svg > > > I was looking at something else and then got drawn into graphs of where we > are spending time doing random reads. Interesting is that most CPU -- ~5% is > in metrics adding -- and bloomfilter look ups cost. > This is an umbrella background issue to host random read improvements as > subtasks. > Here is what perf top shows doing YCSB workloadc (all random read) against a > server that is up on a 5-node HDFS cluster hosting 7 regions loaded by YCSB. > {code} > 4.91% perf-32667.map [.] > Lorg/apache/hadoop/metrics2/lib/MutableHistogram;.add > 2.27% perf-32667.map [.] > Lorg/apache/hadoop/hbase/ipc/RpcServer$Call;.setResponse > 2.10% perf-32667.map [.] > Lorg/apache/hadoop/hbase/io/hfile/CompoundBloomFilter;.checkContains > 2.06% perf-32667.map [.] > Lorg/apache/hadoop/hbase/regionserver/HRegion$RegionScannerImpl;.<init> > 1.94% perf-32667.map [.] Lorg/apache/hadoop/hbase/ipc/CallRunner;.run > 1.89% perf-32667.map [.] > Lorg/apache/hadoop/hbase/io/hfile/CombinedBlockCache;.getBlock > 1.82% perf-32667.map [.] > Lorg/apache/hadoop/hbase/regionserver/RSRpcServices;.get > 1.66% perf-32667.map [.] Lorg/apache/hadoop/hbase/util/Counter;.add > 1.66% perf-32667.map [.] > Lorg/apache/hadoop/hbase/regionserver/StoreFileScanner;.getScannersForStoreFiles > 1.41% perf-32667.map [.] > Lorg/apache/hadoop/hbase/util/MurmurHash;.hash > 1.40% [kernel] [k] _spin_lock > 1.34% perf-32667.map [.] Lsun/nio/ch/SocketChannelImpl;.read > 1.32% perf-32667.map [.] > Ljava/util/concurrent/locks/ReentrantReadWriteLock$ReadLock;.unlock > 1.28% perf-32667.map [.] > Lorg/apache/hadoop/hbase/regionserver/StoreFileScanner;.shouldUseScanner > 1.27% perf-32667.map [.] > Lorg/apache/hadoop/hbase/regionserver/StoreFile$Reader;.checkGeneralBloomFilter > 1.17% perf-32667.map [.] > Lorg/apache/hadoop/hbase/ipc/RpcServer$Connection;.processRequest > 1.15% perf-32667.map [.] > Lorg/apache/hadoop/hbase/ipc/RpcServer$Listener$Reader;.processing > 1.14% perf-32667.map [.] Lsun/nio/ch/SocketChannelImpl;.write > 1.13% [vdso] [.] 0x00007fffbedff8d4 > 1.11% [kernel] [k] copy_user_generic_string > 1.11% perf-32667.map [.] Lsun/nio/ch/IOUtil;.write > 1.05% [nx_nic] [.] 0x000000005f49014a > 0.96% perf-32667.map [.] > Ljava/util/concurrent/ConcurrentHashMap;.replaceNode > 0.88% perf-32667.map [.] > Ljava/util/concurrent/locks/ReentrantReadWriteLock$Sync;.tryAcquireShared > 0.86% perf-32667.map [.] > Ljava/util/concurrent/ConcurrentHashMap;.putVal > 0.82% perf-32667.map [.] > Lorg/apache/hadoop/hbase/regionserver/StoreFile$Reader;.passesKeyRangeFilter > 0.81% perf-32667.map [.] Lorg/apache/hadoop/hbase/ipc/RpcServer;.call > 0.77% perf-32667.map [.] > Lorg/apache/hadoop/hbase/protobuf/ProtobufUtil;.toGet > 0.76% perf-32667.map [.] Lsun/nio/ch/Util;.getTemporaryDirectBuffer > {code} -- This message was sent by Atlassian JIRA (v6.3.4#6332)