Bryan Beaudreault created HBASE-29012: -----------------------------------------
Summary: Performance regression in hot reads after split/merge Key: HBASE-29012 URL: https://issues.apache.org/jira/browse/HBASE-29012 Project: HBase Issue Type: Bug Reporter: Bryan Beaudreault We noticed a significant performance regression which comes from HBASE-27474. In that ticket, logic is added so that we don't cache blocks that exist within a reference or a link if compactions are enabled. The issue we noticed is that we had a cluster which had compactions enabled, but compactions were a bit delayed. During the time, there were some regions which were recently split/merged and they contained references. This cluster is very hot reads and relies heavily on bloom filters. I noticed through profiles that we were spending a lot of time fetching BLOOM_CHUNK blocks from hdfs. This is almost never the case since we continually rightside the block cache to ensure all blooms are cached. In fact, we had no evictions at the time. So why weren't they getting cached? With trace logging enabled I noticed that all of the blocks being read over and over happened to come from hfiles that looked to be references. This led me to the ticket in question. This feels like a very serious regression, as it leads to substantantial impact to both hdfs and hbase in terms of request times and GC time and the host becomes fully hosed. I sort of wonder if we should revert that issue, or at the very least make it configurable. I'm not sure how to preserve the intended behavior of the ticket while also protecting the regionserver performance. In our case this happened for bloom blocks, but it could just as easily happen to a hot data block. -- This message was sent by Atlassian Jira (v8.20.10#820010)