[RFC] Use mutexes by default in db_open()

Ralph Böhme slow at samba.org
Mon Apr 24 14:16:45 UTC 2017


Hi!

Is there any reason not to use mutexes by default? Maybe for 4.7?

-slow
-------------- next part --------------
From 9aff7e4bc481e7b7517cb97149a841de45e68d90 Mon Sep 17 00:00:00 2001
From: Ralph Boehme <slow at samba.org>
Date: Mon, 24 Apr 2017 16:10:23 +0200
Subject: [PATCH] s3/dbwrap: enable mutexes by default

For small file copy workloads this makes a huge difference in the number
of fcntl() syscalls.

Eg copying 10,000 files, without mutexes:

% time     seconds  usecs/call     calls    errors syscall
------ ----------- ----------- --------- --------- ----------------
...
 32.16    3.149828           6    498574           fcntl
...

Enabling mutexes by setting "dbwrap_tdb_mutexes:* = yes":

% time     seconds  usecs/call     calls    errors syscall
------ ----------- ----------- --------- --------- ----------------
...
  7.37    0.577316           7     81998           fcntl
...

So 500k vs 80k.

Signed-off-by: Ralph Boehme <slow at samba.org>
---
 source3/lib/dbwrap/dbwrap_open.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/source3/lib/dbwrap/dbwrap_open.c b/source3/lib/dbwrap/dbwrap_open.c
index feb9f5e..5e9a7b0 100644
--- a/source3/lib/dbwrap/dbwrap_open.c
+++ b/source3/lib/dbwrap/dbwrap_open.c
@@ -97,7 +97,7 @@ struct db_context *db_open(TALLOC_CTX *mem_ctx,
 
 	if (tdb_flags & TDB_CLEAR_IF_FIRST) {
 		const char *base;
-		bool try_mutex = false;
+		bool try_mutex = true;
 		bool require_mutex = false;
 
 		base = strrchr_m(name, '/');
-- 
2.9.3



More information about the samba-technical mailing list