X-Git-Url: http://git.vrable.net/?a=blobdiff_plain;f=logbench%2Flogbench.c;h=8ab082cc9d91ec52ed8ab56b740707adf2a5f89a;hb=8ff0fd08d6e1cc97cdb7e94b7cd97dc28c29e674;hp=6cdd5ec1184c89c0b3135c6d6cbb2707bb078224;hpb=2b2c91ae1e2d8f26d554a7c90216bf88dcdc0bc2;p=bluesky.git diff --git a/logbench/logbench.c b/logbench/logbench.c index 6cdd5ec..8ab082c 100644 --- a/logbench/logbench.c +++ b/logbench/logbench.c @@ -1,3 +1,33 @@ +/* Blue Sky: File Systems in the Cloud + * + * Copyright (C) 2010 The Regents of the University of California + * Written by Michael Vrable + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * 3. Neither the name of the University nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + */ + /* A simple tool for benchmarking various logging strategies. * * We want to log a series of key/value pairs. Approaches that we try include: @@ -84,14 +114,14 @@ void writebuf(int fd, const char *buf, size_t len) } /************************ Direct-to-filesystem logging ***********************/ -static int dirfd = -1; +static int dir_fd = -1; gpointer fslog_thread(gpointer d) { while (TRUE) { struct item *item = get_item(); - int fd = openat(dirfd, item->key, O_CREAT|O_WRONLY|O_TRUNC, 0666); + int fd = openat(dir_fd, item->key, O_CREAT|O_WRONLY|O_TRUNC, 0666); g_assert(fd >= 0); writebuf(fd, item->data, item->len); @@ -99,7 +129,7 @@ gpointer fslog_thread(gpointer d) finish_item(item); fsync(fd); - fsync(dirfd); + fsync(dir_fd); close(fd); } @@ -108,8 +138,8 @@ gpointer fslog_thread(gpointer d) void launch_fslog() { - dirfd = open(".", O_DIRECTORY); - g_assert(dirfd >= 0); + dir_fd = open(".", O_DIRECTORY); + g_assert(dir_fd >= 0); for (int i = 0; i < 1; i++) g_thread_create(fslog_thread, NULL, FALSE, NULL); @@ -233,6 +263,7 @@ int main(int argc, char *argv[]) case 'a': // Make BDB log writes more asynchronous opt_bdb_async = TRUE; + break; case 't': // Set number of log worker threads opt_threads = atoi(optarg);