kudu-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From t...@apache.org
Subject [1/5] kudu git commit: KUDU-1555. PBC Flush() method should be async
Date Sat, 13 Aug 2016 02:08:46 GMT
Repository: kudu
Updated Branches:
  refs/heads/master 564eb4ed1 -> 13dde92b0

KUDU-1555. PBC Flush() method should be async

WritablePBContainerFile::Flush is meant to flush the data
asynchronously. But, e6052ac accidentally regressed this functionality
and switched it to synchronous.

This caused a lack of parallelism in the LogBlockManager flush path,
since it uses PBC files for the metadata. The async flushing of LBM data
blocks ended up being basically synchronous, so each disk would have to
wait for the prior disk to complete its flush before it started any IO.

I tested this change on a YCSB workload and throughput increased almost

Change-Id: I721707070fe47e3377d791c95214f007c90d2263
Reviewed-on: http://gerrit.cloudera.org:8080/3951
Tested-by: Kudu Jenkins
Reviewed-by: Mike Percy <mpercy@apache.org>

Project: http://git-wip-us.apache.org/repos/asf/kudu/repo
Commit: http://git-wip-us.apache.org/repos/asf/kudu/commit/af5c0592
Tree: http://git-wip-us.apache.org/repos/asf/kudu/tree/af5c0592
Diff: http://git-wip-us.apache.org/repos/asf/kudu/diff/af5c0592

Branch: refs/heads/master
Commit: af5c0592ff654171eb4cd9305ab3626f9bd22e22
Parents: 564eb4e
Author: Todd Lipcon <todd@apache.org>
Authored: Thu Aug 11 17:56:02 2016 -0700
Committer: Todd Lipcon <todd@apache.org>
Committed: Fri Aug 12 02:13:12 2016 +0000

 src/kudu/util/pb_util.cc | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/src/kudu/util/pb_util.cc b/src/kudu/util/pb_util.cc
index 0ee7794..cc4ae86 100644
--- a/src/kudu/util/pb_util.cc
+++ b/src/kudu/util/pb_util.cc
@@ -622,7 +622,7 @@ Status WritablePBContainerFile::Flush() {
   DCHECK_EQ(FileState::OPEN, state_);
   // TODO: Flush just the dirty bytes.
-  RETURN_NOT_OK_PREPEND(writer_->Flush(RWFile::FLUSH_SYNC, 0, 0), "Failed to Flush() file");
+  RETURN_NOT_OK_PREPEND(writer_->Flush(RWFile::FLUSH_ASYNC, 0, 0), "Failed to Flush()
   return Status::OK();

View raw message