*** pgsql/src/tools/fsync/test_fsync.c 2009/06/11 14:49:15 1.23 --- pgsql/src/tools/fsync/test_fsync.c 2009/08/10 18:19:06 1.24 *************** *** 1,5 **** /* ! * $PostgreSQL: pgsql/src/tools/fsync/test_fsync.c,v 1.22 2009/05/08 14:06:27 momjian Exp $ * * * test_fsync.c --- 1,5 ---- /* ! * $PostgreSQL: pgsql/src/tools/fsync/test_fsync.c,v 1.23 2009/06/11 14:49:15 momjian Exp $ * * * test_fsync.c *************** *** 30,36 **** #define FSYNC_FILENAME "/var/tmp/test_fsync.out" #endif ! #define WRITE_SIZE (16 * 1024) void die(char *str); void print_elapse(struct timeval start_t, struct timeval elapse_t); --- 30,36 ---- #define FSYNC_FILENAME "/var/tmp/test_fsync.out" #endif ! #define WRITE_SIZE (16 * 1024) /* 16k */ void die(char *str); void print_elapse(struct timeval start_t, struct timeval elapse_t); *************** main(int argc, char *argv[]) *** 71,76 **** --- 71,79 ---- buf = (char *) TYPEALIGN(ALIGNOF_XLOG_BUFFER, full_buf); + /* + * Simple write + */ printf("Simple write timing:\n"); /* write only */ gettimeofday(&start_t, NULL); *************** main(int argc, char *argv[]) *** 87,94 **** print_elapse(start_t, elapse_t); printf("\n"); printf("\nCompare fsync times on write() and non-write() descriptor:\n"); ! printf("(If the times are similar, fsync() can sync data written\n on a different descriptor.)\n"); /* write, fsync, close */ gettimeofday(&start_t, NULL); --- 90,100 ---- print_elapse(start_t, elapse_t); printf("\n"); + /* + * Fsync another file descriptor? + */ printf("\nCompare fsync times on write() and non-write() descriptor:\n"); ! printf("If the times are similar, fsync() can sync data written\non a different descriptor.\n"); /* write, fsync, close */ gettimeofday(&start_t, NULL); *************** main(int argc, char *argv[]) *** 132,137 **** --- 138,146 ---- print_elapse(start_t, elapse_t); printf("\n"); + /* + * Compare 1 to 2 writes + */ printf("\nCompare one o_sync write to two:\n"); #ifdef OPEN_SYNC_FLAG *************** main(int argc, char *argv[]) *** 148,154 **** print_elapse(start_t, elapse_t); printf("\n"); ! /* 2*8k o_sync writes */ if ((tmpfile = open(filename, O_RDWR | OPEN_SYNC_FLAG, 0)) == -1) die("Cannot open output file."); gettimeofday(&start_t, NULL); --- 157,163 ---- print_elapse(start_t, elapse_t); printf("\n"); ! /* Two 8k o_sync writes */ if ((tmpfile = open(filename, O_RDWR | OPEN_SYNC_FLAG, 0)) == -1) die("Cannot open output file."); gettimeofday(&start_t, NULL); *************** main(int argc, char *argv[]) *** 163,176 **** close(tmpfile); printf("\ttwo 8k o_sync writes "); print_elapse(start_t, elapse_t); - printf("\n"); - - printf("\nCompare file sync methods with one 8k write:\n"); #else printf("\t(o_sync unavailable) "); #endif printf("\n"); #ifdef OPEN_DATASYNC_FLAG /* open_dsync, write */ if ((tmpfile = open(filename, O_RDWR | O_DSYNC, 0)) == -1) --- 172,187 ---- close(tmpfile); printf("\ttwo 8k o_sync writes "); print_elapse(start_t, elapse_t); #else printf("\t(o_sync unavailable) "); #endif printf("\n"); + /* + * Compare file sync methods with one 8k write + */ + printf("\nCompare file sync methods with one 8k write:\n"); + #ifdef OPEN_DATASYNC_FLAG /* open_dsync, write */ if ((tmpfile = open(filename, O_RDWR | O_DSYNC, 0)) == -1) *************** main(int argc, char *argv[]) *** 183,189 **** --- 194,204 ---- close(tmpfile); printf("\topen o_dsync, write "); print_elapse(start_t, elapse_t); + #else + printf("\t(o_dsync unavailable) "); + #endif printf("\n"); + #ifdef OPEN_SYNC_FLAG /* open_fsync, write */ if ((tmpfile = open(filename, O_RDWR | OPEN_SYNC_FLAG, 0)) == -1) *************** main(int argc, char *argv[]) *** 196,204 **** close(tmpfile); printf("\topen o_sync, write "); print_elapse(start_t, elapse_t); - #endif #else ! printf("\t(o_dsync unavailable) "); #endif printf("\n"); --- 211,218 ---- close(tmpfile); printf("\topen o_sync, write "); print_elapse(start_t, elapse_t); #else ! printf("\t(o_sync unavailable) "); #endif printf("\n"); *************** main(int argc, char *argv[]) *** 235,245 **** } gettimeofday(&elapse_t, NULL); close(tmpfile); ! printf("\twrite, fsync, "); print_elapse(start_t, elapse_t); printf("\n"); ! printf("\nCompare file sync methods with 2 8k writes:\n"); #ifdef OPEN_DATASYNC_FLAG /* open_dsync, write */ --- 249,262 ---- } gettimeofday(&elapse_t, NULL); close(tmpfile); ! printf("\twrite, fsync "); print_elapse(start_t, elapse_t); printf("\n"); ! /* ! * Compare file sync methods with two 8k write ! */ ! printf("\nCompare file sync methods with two 8k writes:\n"); #ifdef OPEN_DATASYNC_FLAG /* open_dsync, write */ *************** main(int argc, char *argv[]) *** 318,324 **** } gettimeofday(&elapse_t, NULL); close(tmpfile); ! printf("\twrite, fsync, "); print_elapse(start_t, elapse_t); printf("\n"); --- 335,341 ---- } gettimeofday(&elapse_t, NULL); close(tmpfile); ! printf("\twrite, fsync "); print_elapse(start_t, elapse_t); printf("\n");