On Mon, Dec 21, 2015 at 2:31 AM, 鈴木俊裕 <brfrn...@gmail.com> wrote:
> St.Ack > > I am sorry for the late reply. > > Thank you for the reply. > This is the test code: > https://github.com/brfrn169/hbase-test This helps. The test has a different character to others we currently have (a thread keeps writing its row rather than a thread writing all rows in region or all threads writing a single row). Let me try it. > > > We applied the patch you can find below to HBase-1.0.0 to resolve the > performance degradation: > https://gist.github.com/brfrn169/15a874594be2fb9d6ea0 > > It showed a good performance. > > The patch is attractive because it keeps the change in MVCC class only. It is a pretty radical change though with some changes that look like they could go upstream. There are some questions below but no problem if you are busy, I can go do my own study. It looks like advanceMemstore had a "blind spot": i.e. we could complete a WriteEntry but it might not yet have had its write numbers assigned... Is that why you added the new advancedNoWriteNumberWriteEntries Set? + if (queueFirst.getWriteNumber() == NO_WRITE_NUMBER) {+ advancedNoWriteNumberWriteEntries.add(queueFirst); Are we sure that we'll move up through the write mvcc sequence numbers in order? We seem to be able to take from the advancedNoWriteNumberWriteEntries Set w/o concern for order. You remove the writeQueue notify and seem to flip instead to wait/notify on readWaiters. Less synchronization points seems good. We should do this upstream too (and your change of > to >= looking at nextReadValue?) Do you have a notion of how much more throughput you got with this change? Thank you 鈴木俊裕, St.Ack > I think the direct cause of the performance degradation is not a region > level lock because HBase-0.98.6 also has a region level lock. > I think lock contention is caused by HBASE-8763. > > The patch mitigates that lock contention. > > Thanks, > Toshihiro Suzuki > > > 2015-12-14 15:12 GMT+09:00 Stack <st...@duboce.net>: > > > On Tue, Sep 8, 2015 at 2:01 AM, 鈴木俊裕 <brfrn...@gmail.com> wrote: > > > > > ... > > > > > > Also we wrote performance test code for increment operation that > included > > > 100 threads and ran it in local mode. > > > > > > The result is shown below: > > > > > > CDH5.3.1(HBase0.98.6) > > > Throughput(op/s): 12757, Latency(ms): 7.975072509210629 > > > > > > CDH5.4.5(HBase1.0.0) > > > Throughput(op/s): 2027, Latency(ms): 49.11840157868772 > > > > > > > > Do you have this program Toshihiro Suzuki still? May I see it? I am > > interested in seeing what the 100 threads are doing, if they are all > > updating the same Cell or if they are spread over many rows (I see master > > branch is more than 2x slower than 0.94 if all threads are contending on > a > > single Cell but if not contending, master seems faster -- I must be doing > > something wrong over in my experiments on HBASE-14460). I would also be > > interested in what you loading is like in production if you can describe > it > > at all (send me offlist if you'd rather talk about it in public). In > > production, can you tell how much slowdown you are seeing? Is it 2x or 7x > > as per your test program? > > > > Thank you, > > St.Ack > > > > > > > > > > > > Thanks, > > > > > > Toshihiro Suzuki > > > > > >