After solving HBASE-3561, I successfully run hprof for RS and DN.
Since block cache is useless in my case, I disabled it. I rerun my
test with 14 RS+DNs and 1 client with 200 threads. But, the throughput
is still only about 700. No scalability shown in this case.
Below is the hot spots in RS:
CPU SAMPLES BEGIN (total = 1469756) Thu Apr 28 15:43:35 2011
rank self accum count trace method
1 44.33% 44.33% 651504 300612 sun.nio.ch.EPollArrayWrapper.epollWait
2 19.88% 64.21% 292221 301351 sun.nio.ch.EPollArrayWrapper.epollWait
3 8.88% 73.09% 130582 300554 sun.nio.ch.EPollArrayWrapper.epollWait
4 4.43% 77.52% 65106 301248 sun.nio.ch.EPollArrayWrapper.epollWait
5 4.43% 81.95% 65104 301249 sun.nio.ch.EPollArrayWrapper.epollWait
6 4.43% 86.38% 65100 301247 sun.nio.ch.EPollArrayWrapper.epollWait
7 4.43% 90.81% 65061 301266 sun.nio.ch.EPollArrayWrapper.epollWait
8 4.32% 95.13% 63465 301565 sun.nio.ch.EPollArrayWrapper.epollWait
9 2.31% 97.43% 33894 301555 sun.nio.ch.EPollArrayWrapper.epollWait
10 1.76% 99.19% 25841 301588 sun.nio.ch.EPollArrayWrapper.epollWait
11 0.48% 99.67% 7025 301443 sun.nio.ch.EPollArrayWrapper.epollWait
12 0.02% 99.69% 341 301568 sun.nio.ch.NativeThread.current
13 0.01% 99.71% 187 301535
org.apache.hadoop.hbase.io.hfile.HFile$Reader.indexSize
14 0.01% 99.72% 186 301538
org.apache.hadoop.hbase.io.hfile.HFile$Reader.indexSize
15 0.01% 99.73% 170 301625 org.apache.hadoop.util.DataChecksum.update
16 0.01% 99.74% 164 301579 sun.nio.ch.EPollArrayWrapper.epollWait
17 0.01% 99.75% 149 300938 sun.nio.ch.EPollArrayWrapper.epollWait
TRACE 300612:
sun.nio.ch.EPollArrayWrapper.epollWait(EPollArrayWrapper.java:Unknown
line)
sun.nio.ch.EPollArrayWrapper.poll(EPollArrayWrapper.java:215)
sun.nio.ch.EPollSelectorImpl.doSelect(EPollSelectorImpl.java:65)
sun.nio.ch.SelectorImpl.lockAndDoSelect(SelectorImpl.java:69)
sun.nio.ch.SelectorImpl.select(SelectorImpl.java:80)
sun.nio.ch.SelectorImpl.select(SelectorImpl.java:84)
org.apache.hadoop.hbase.ipc.HBaseServer$Listener$Reader.run(HBaseServer.java:305)
java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
java.lang.Thread.run(Thread.java:619)
TRACE 301351:
sun.nio.ch.EPollArrayWrapper.epollWait(EPollArrayWrapper.java:Unknown
line)
sun.nio.ch.EPollArrayWrapper.poll(EPollArrayWrapper.java:215)
sun.nio.ch.EPollSelectorImpl.doSelect(EPollSelectorImpl.java:65)
sun.nio.ch.SelectorImpl.lockAndDoSelect(SelectorImpl.java:69)
sun.nio.ch.SelectorImpl.select(SelectorImpl.java:80)
org.apache.hadoop.net.SocketIOWithTimeout$SelectorPool.select(SocketIOWithTimeout.java:332)
org.apache.hadoop.net.SocketIOWithTimeout.doIO(SocketIOWithTimeout.java:157)
org.apache.hadoop.net.SocketInputStream.read(SocketInputStream.java:155)
org.apache.hadoop.net.SocketInputStream.read(SocketInputStream.java:128)
java.io.BufferedInputStream.fill(BufferedInputStream.java:218)
java.io.BufferedInputStream.read1(BufferedInputStream.java:258)
java.io.BufferedInputStream.read(BufferedInputStream.java:317)
java.io.DataInputStream.read(DataInputStream.java:132)
org.apache.hadoop.io.IOUtils.readFully(IOUtils.java:102)
org.apache.hadoop.hdfs.DFSClient$BlockReader.readChunk(DFSClient.java:1389)
org.apache.hadoop.fs.FSInputChecker.readChecksumChunk(FSInputChecker.java:237)
org.apache.hadoop.fs.FSInputChecker.fill(FSInputChecker.java:176)
org.apache.hadoop.fs.FSInputChecker.read1(FSInputChecker.java:193)
org.apache.hadoop.fs.FSInputChecker.read(FSInputChecker.java:158)
org.apache.hadoop.hdfs.DFSClient$BlockReader.read(DFSClient.java:1243)
TRACE 300554:
sun.nio.ch.EPollArrayWrapper.epollWait(EPollArrayWrapper.java:Unknown
line)
sun.nio.ch.EPollArrayWrapper.poll(EPollArrayWrapper.java:215)
sun.nio.ch.EPollSelectorImpl.doSelect(EPollSelectorImpl.java:65)
sun.nio.ch.SelectorImpl.lockAndDoSelect(SelectorImpl.java:69)
sun.nio.ch.SelectorImpl.select(SelectorImpl.java:80)
org.apache.zookeeper.ClientCnxn$SendThread.run(ClientCnxn.java:1107)
TRACE 301248:
sun.nio.ch.EPollArrayWrapper.epollWait(EPollArrayWrapper.java:Unknown
line)
sun.nio.ch.EPollArrayWrapper.poll(EPollArrayWrapper.java:215)
sun.nio.ch.EPollSelectorImpl.doSelect(EPollSelectorImpl.java:65)
sun.nio.ch.SelectorImpl.lockAndDoSelect(SelectorImpl.java:69)
sun.nio.ch.SelectorImpl.select(SelectorImpl.java:80)
org.apache.hadoop.hbase.ipc.HBaseServer$Responder.run(HBaseServer.java:588)
TRACE 301249:
sun.nio.ch.EPollArrayWrapper.epollWait(EPollArrayWrapper.java:Unknown
line)
sun.nio.ch.EPollArrayWrapper.poll(EPollArrayWrapper.java:215)
sun.nio.ch.EPollSelectorImpl.doSelect(EPollSelectorImpl.java:65)
sun.nio.ch.SelectorImpl.lockAndDoSelect(SelectorImpl.java:69)
sun.nio.ch.SelectorImpl.select(SelectorImpl.java:80)
sun.nio.ch.SelectorImpl.select(SelectorImpl.java:84)
org.apache.hadoop.hbase.ipc.HBaseServer$Listener.run(HBaseServer.java:414)
TRACE 301247:
sun.nio.ch.EPollArrayWrapper.epollWait(EPollArrayWrapper.java:Unknown
line)
sun.nio.ch.EPollArrayWrapper.poll(EPollArrayWrapper.java:215)
sun.nio.ch.EPollSelectorImpl.doSelect(EPollSelectorImpl.java:65)
sun.nio.ch.SelectorImpl.lockAndDoSelect(SelectorImpl.java:69)
sun.nio.ch.SelectorImpl.select(SelectorImpl.java:80)
org.mortbay.io.nio.SelectorManager$SelectSet.doSelect(SelectorManager.java:498)
org.mortbay.io.nio.SelectorManager.doSelect(SelectorManager.java:192)
org.mortbay.jetty.nio.SelectChannelConnector.accept(SelectChannelConnector.java:124)
org.mortbay.jetty.AbstractConnector$Acceptor.run(AbstractConnector.java:708)
org.mortbay.thread.QueuedThreadPool$PoolThread.run(QueuedThreadPool.java:582)
TRACE 301266:
sun.nio.ch.EPollArrayWrapper.epollWait(EPollArrayWrapper.java:Unknown
line)
sun.nio.ch.EPollArrayWrapper.poll(EPollArrayWrapper.java:215)
sun.nio.ch.EPollSelectorImpl.doSelect(EPollSelectorImpl.java:65)
sun.nio.ch.SelectorImpl.lockAndDoSelect(SelectorImpl.java:69)
sun.nio.ch.SelectorImpl.select(SelectorImpl.java:80)
org.apache.hadoop.net.SocketIOWithTimeout$SelectorPool.select(SocketIOWithTimeout.java:332)
org.apache.hadoop.net.SocketIOWithTimeout.doIO(SocketIOWithTimeout.java:157)
org.apache.hadoop.net.SocketInputStream.read(SocketInputStream.java:155)
org.apache.hadoop.net.SocketInputStream.read(SocketInputStream.java:128)
java.io.DataInputStream.readFully(DataInputStream.java:178)
java.io.DataInputStream.readLong(DataInputStream.java:399)
org.apache.hadoop.hdfs.protocol.DataTransferProtocol$PipelineAck.readFields(DataTransferProtocol.java:120)
org.apache.hadoop.hdfs.DFSClient$DFSOutputStream$ResponseProcessor.run(DFSClient.java:2638)
TRACE 301565:
sun.nio.ch.EPollArrayWrapper.epollWait(EPollArrayWrapper.java:Unknown
line)
sun.nio.ch.EPollArrayWrapper.poll(EPollArrayWrapper.java:215)
sun.nio.ch.EPollSelectorImpl.doSelect(EPollSelectorImpl.java:65)
sun.nio.ch.SelectorImpl.lockAndDoSelect(SelectorImpl.java:69)
sun.nio.ch.SelectorImpl.select(SelectorImpl.java:80)
org.apache.hadoop.net.SocketIOWithTimeout$SelectorPool.select(SocketIOWithTimeout.java:332)
org.apache.hadoop.net.SocketIOWithTimeout.doIO(SocketIOWithTimeout.java:157)
org.apache.hadoop.net.SocketInputStream.read(SocketInputStream.java:155)
org.apache.hadoop.net.SocketInputStream.read(SocketInputStream.java:128)
java.io.BufferedInputStream.fill(BufferedInputStream.java:218)
java.io.BufferedInputStream.read1(BufferedInputStream.java:258)
java.io.BufferedInputStream.read(BufferedInputStream.java:317)
java.io.DataInputStream.read(DataInputStream.java:132)
org.apache.hadoop.io.IOUtils.readFully(IOUtils.java:102)
org.apache.hadoop.hdfs.DFSClient$BlockReader.readChunk(DFSClient.java:1389)
org.apache.hadoop.fs.FSInputChecker.readChecksumChunk(FSInputChecker.java:237)
org.apache.hadoop.fs.FSInputChecker.read1(FSInputChecker.java:189)
org.apache.hadoop.fs.FSInputChecker.read(FSInputChecker.java:158)
org.apache.hadoop.hdfs.DFSClient$BlockReader.read(DFSClient.java:1249)
org.apache.hadoop.fs.FSInputChecker.readFully(FSInputChecker.java:384)
And the hot spot of DN is:
CPU SAMPLES BEGIN (total = 1123925) Thu Apr 28 15:43:49 2011
rank self accum count trace method
1 12.38% 12.38% 139155 301547 sun.nio.ch.EPollArrayWrapper.epollWait
2 12.38% 24.76% 139154 301548 sun.nio.ch.EPollArrayWrapper.epollWait
3 10.76% 35.53% 120969 300368 java.net.PlainSocketImpl.socketAccept
4 10.74% 46.27% 120753 301213 sun.nio.ch.EPollArrayWrapper.epollWait
5 10.74% 57.01% 120744 301381 sun.nio.ch.EPollArrayWrapper.epollWait
6 10.74% 67.76% 120744 301384 sun.nio.ch.EPollArrayWrapper.epollWait
7 10.74% 78.50% 120743 301386 sun.nio.ch.EPollArrayWrapper.epollWait
8 10.68% 89.18% 120019 301383 sun.nio.ch.ServerSocketChannelImpl.accept0
9 8.11% 97.29% 91174 301475 sun.nio.ch.FileChannelImpl.transferTo0
10 1.44% 98.73% 16172 301479 java.io.FileInputStream.readBytes
11 0.40% 99.13% 4496 301477 java.io.FileInputStream.readBytes
12 0.23% 99.35% 2531 301497 sun.nio.ch.EPollArrayWrapper.epollWait
13 0.17% 99.53% 1958 301461 java.io.FileInputStream.readBytes
14 0.04% 99.57% 458 301468 java.io.UnixFileSystem.delete0
15 0.03% 99.59% 289 301520 java.lang.Thread.start0
16 0.02% 99.62% 278 301471 org.apache.hadoop.util.DataChecksum.update
17 0.02% 99.64% 204 301562 java.io.UnixFileSystem.getBooleanAttributes0
18 0.01% 99.65% 117 301587 sun.nio.ch.EPollArrayWrapper.epollCtl
19 0.01% 99.66% 113 301493 sun.nio.ch.FileDispatcher.write0
TRACE 301547:
sun.nio.ch.EPollArrayWrapper.epollWait(EPollArrayWrapper.java:Unknown
line)
sun.nio.ch.EPollArrayWrapper.poll(EPollArrayWrapper.java:215)
sun.nio.ch.EPollSelectorImpl.doSelect(EPollSelectorImpl.java:65)
sun.nio.ch.SelectorImpl.lockAndDoSelect(SelectorImpl.java:69)
sun.nio.ch.SelectorImpl.select(SelectorImpl.java:80)
org.apache.hadoop.net.SocketIOWithTimeout$SelectorPool.select(SocketIOWithTimeout.java:332)
org.apache.hadoop.net.SocketIOWithTimeout.doIO(SocketIOWithTimeout.java:157)
org.apache.hadoop.net.SocketInputStream.read(SocketInputStream.java:155)
org.apache.hadoop.net.SocketInputStream.read(SocketInputStream.java:128)
java.io.BufferedInputStream.fill(BufferedInputStream.java:218)
java.io.BufferedInputStream.read1(BufferedInputStream.java:258)
java.io.BufferedInputStream.read(BufferedInputStream.java:317)
java.io.DataInputStream.read(DataInputStream.java:132)
org.apache.hadoop.hdfs.server.datanode.BlockReceiver.readToBuf(BlockReceiver.java:267)
org.apache.hadoop.hdfs.server.datanode.BlockReceiver.readNextPacket(BlockReceiver.java:314)
org.apache.hadoop.hdfs.server.datanode.BlockReceiver.receivePacket(BlockReceiver.java:378)
org.apache.hadoop.hdfs.server.datanode.BlockReceiver.receiveBlock(BlockReceiver.java:534)
org.apache.hadoop.hdfs.server.datanode.DataXceiver.writeBlock(DataXceiver.java:417)
org.apache.hadoop.hdfs.server.datanode.DataXceiver.run(DataXceiver.java:122)
TRACE 301548:
sun.nio.ch.EPollArrayWrapper.epollWait(EPollArrayWrapper.java:Unknown
line)
sun.nio.ch.EPollArrayWrapper.poll(EPollArrayWrapper.java:215)
sun.nio.ch.EPollSelectorImpl.doSelect(EPollSelectorImpl.java:65)
sun.nio.ch.SelectorImpl.lockAndDoSelect(SelectorImpl.java:69)
sun.nio.ch.SelectorImpl.select(SelectorImpl.java:80)
org.apache.hadoop.net.SocketIOWithTimeout$SelectorPool.select(SocketIOWithTimeout.java:332)
org.apache.hadoop.net.SocketIOWithTimeout.doIO(SocketIOWithTimeout.java:157)
org.apache.hadoop.net.SocketInputStream.read(SocketInputStream.java:155)
org.apache.hadoop.net.SocketInputStream.read(SocketInputStream.java:128)
java.io.DataInputStream.readFully(DataInputStream.java:178)
java.io.DataInputStream.readLong(DataInputStream.java:399)
org.apache.hadoop.hdfs.protocol.DataTransferProtocol$PipelineAck.readFields(DataTransferProtocol.java:120)
org.apache.hadoop.hdfs.server.datanode.BlockReceiver$PacketResponder.run(BlockReceiver.java:894)
java.lang.Thread.run(Thread.java:619)
TRACE 300368:
java.net.PlainSocketImpl.socketAccept(PlainSocketImpl.java:Unknown line)
java.net.PlainSocketImpl.accept(PlainSocketImpl.java:390)
java.net.ServerSocket.implAccept(ServerSocket.java:453)
java.net.ServerSocket.accept(ServerSocket.java:421)
sun.management.jmxremote.LocalRMIServerSocketFactory$1.accept(LocalRMIServerSocketFactory.java:34)
sun.rmi.transport.tcp.TCPTransport$AcceptLoop.executeAcceptLoop(TCPTransport.java:369)
sun.rmi.transport.tcp.TCPTransport$AcceptLoop.run(TCPTransport.java:341)
java.lang.Thread.run(Thread.java:619)
TRACE 301213:
sun.nio.ch.EPollArrayWrapper.epollWait(EPollArrayWrapper.java:Unknown
line)
sun.nio.ch.EPollArrayWrapper.poll(EPollArrayWrapper.java:215)
sun.nio.ch.EPollSelectorImpl.doSelect(EPollSelectorImpl.java:65)
sun.nio.ch.SelectorImpl.lockAndDoSelect(SelectorImpl.java:69)
sun.nio.ch.SelectorImpl.select(SelectorImpl.java:80)
org.mortbay.io.nio.SelectorManager$SelectSet.doSelect(SelectorManager.java:498)
org.mortbay.io.nio.SelectorManager.doSelect(SelectorManager.java:192)
org.mortbay.jetty.nio.SelectChannelConnector.accept(SelectChannelConnector.java:124)
org.mortbay.jetty.AbstractConnector$Acceptor.run(AbstractConnector.java:708)
org.mortbay.thread.QueuedThreadPool$PoolThread.run(QueuedThreadPool.java:582)
TRACE 301381:
sun.nio.ch.EPollArrayWrapper.epollWait(EPollArrayWrapper.java:Unknown
line)
sun.nio.ch.EPollArrayWrapper.poll(EPollArrayWrapper.java:215)
sun.nio.ch.EPollSelectorImpl.doSelect(EPollSelectorImpl.java:65)
sun.nio.ch.SelectorImpl.lockAndDoSelect(SelectorImpl.java:69)
sun.nio.ch.SelectorImpl.select(SelectorImpl.java:80)
sun.nio.ch.SelectorImpl.select(SelectorImpl.java:84)
org.apache.hadoop.ipc.Server$Listener$Reader.run(Server.java:352)
TRACE 301384:
sun.nio.ch.EPollArrayWrapper.epollWait(EPollArrayWrapper.java:Unknown
line)
sun.nio.ch.EPollArrayWrapper.poll(EPollArrayWrapper.java:215)
sun.nio.ch.EPollSelectorImpl.doSelect(EPollSelectorImpl.java:65)
sun.nio.ch.SelectorImpl.lockAndDoSelect(SelectorImpl.java:69)
sun.nio.ch.SelectorImpl.select(SelectorImpl.java:80)
org.apache.hadoop.ipc.Server$Responder.run(Server.java:636)
TRACE 301386:
sun.nio.ch.EPollArrayWrapper.epollWait(EPollArrayWrapper.java:Unknown
line)
sun.nio.ch.EPollArrayWrapper.poll(EPollArrayWrapper.java:215)
sun.nio.ch.EPollSelectorImpl.doSelect(EPollSelectorImpl.java:65)
sun.nio.ch.SelectorImpl.lockAndDoSelect(SelectorImpl.java:69)
sun.nio.ch.SelectorImpl.select(SelectorImpl.java:80)
sun.nio.ch.SelectorImpl.select(SelectorImpl.java:84)
org.apache.hadoop.ipc.Server$Listener.run(Server.java:468)
TRACE 301383:
sun.nio.ch.ServerSocketChannelImpl.accept0(ServerSocketChannelImpl.java:Unknown
line)
sun.nio.ch.ServerSocketChannelImpl.accept(ServerSocketChannelImpl.java:145)
sun.nio.ch.ServerSocketAdaptor.accept(ServerSocketAdaptor.java:84)
org.apache.hadoop.hdfs.server.datanode.DataXceiverServer.run(DataXceiverServer.java:130)
java.lang.Thread.run(Thread.java:619)
TRACE 301475:
sun.nio.ch.FileChannelImpl.transferTo0(FileChannelImpl.java:Unknown
line)
sun.nio.ch.FileChannelImpl.transferToDirectly(FileChannelImpl.java:415)
sun.nio.ch.FileChannelImpl.transferTo(FileChannelImpl.java:516)
org.apache.hadoop.net.SocketOutputStream.transferToFully(SocketOutputStream.java:199)
org.apache.hadoop.hdfs.server.datanode.BlockSender.sendChunks(BlockSender.java:350)
org.apache.hadoop.hdfs.server.datanode.BlockSender.sendBlock(BlockSender.java:436)
org.apache.hadoop.hdfs.server.datanode.DataXceiver.readBlock(DataXceiver.java:214)
org.apache.hadoop.hdfs.server.datanode.DataXceiver.run(DataXceiver.java:114)
TRACE 301479:
java.io.FileInputStream.readBytes(FileInputStream.java:Unknown line)
java.io.FileInputStream.read(FileInputStream.java:199)
java.io.FilterInputStream.read(FilterInputStream.java:116)
java.io.BufferedInputStream.fill(BufferedInputStream.java:218)
java.io.BufferedInputStream.read1(BufferedInputStream.java:258)
java.io.BufferedInputStream.read(BufferedInputStream.java:317)
java.io.DataInputStream.readFully(DataInputStream.java:178)
org.apache.hadoop.hdfs.server.datanode.BlockSender.sendChunks(BlockSender.java:271)
org.apache.hadoop.hdfs.server.datanode.BlockSender.sendBlock(BlockSender.java:436)
org.apache.hadoop.hdfs.server.datanode.DataXceiver.readBlock(DataXceiver.java:214)
org.apache.hadoop.hdfs.server.datanode.DataXceiver.run(DataXceiver.java:114)
Thanks
Weihua
2011/4/28 Weihua JIANG <[email protected]>:
> I am using CDH3U0. It is HBase 0.90.1, I think.
>
> Thanks
> Weihua
>
> 2011/4/28 Stack <[email protected]>:
>> On Tue, Apr 26, 2011 at 6:02 PM, Weihua JIANG <[email protected]> wrote:
>>> I tried to enable HPROF on RS, but failed. If I added the HPROF agent
>>> in hbase-env.sh, RS startup reports an error said HPROF can't be
>>> loaded twice. But, I am sure I only enabled it once. I don't know
>>> where the problem is.
>>>
>>
>> This sounds like 'HBASE-3561 OPTS arguments are duplicated' Are you
>> running 0.90.2?
>>
>> St.Ack
>>
>