63 #define THISVERSION " Version $Revision$" 73 #if defined(linux) || defined(solaris) || defined(macosx) || defined(__AIX__) || defined(FreeBSD) || defined(_HPUX_SOURCE) 82 #include <sys/types.h> 84 #if defined (__LP64__) || defined(OSF_64) || defined(__alpha__) || defined(__arch64__) || defined(_LP64) || defined(__s390x__) || defined(__AMD64__) 85 #define MODE "\tCompiled for 64 bit mode." 88 #define MODE "\tCompiled for 32 bit mode." 95 #if defined(HAVE_ANSIC_C) && defined(linux) 130 " Usage: iozone [-s filesize_Kb] [-r record_size_Kb] [-f [path]filename] [-h]",
131 " [-i test] [-E] [-p] [-a] [-A] [-z] [-Z] [-m] [-M] [-t children]",
132 " [-l min_number_procs] [-u max_number_procs] [-v] [-R] [-x] [-o]",
133 " [-d microseconds] [-F path1 path2...] [-V pattern] [-j stride]",
134 " [-T] [-C] [-B] [-D] [-G] [-I] [-H depth] [-k depth] [-U mount_point]",
135 " [-S cache_size] [-O] [-L cacheline_size] [-K] [-g maxfilesize_Kb]",
136 " [-n minfilesize_Kb] [-N] [-Q] [-P start_cpu] [-e] [-c] [-b Excel.xls]",
137 " [-J milliseconds] [-X write_telemetry_filename] [-w] [-W]",
138 " [-Y read_telemetry_filename] [-y minrecsize_Kb] [-q maxrecsize_Kb]",
139 " [-+u] [-+m cluster_filename] [-+d] [-+x multiplier] [-+p # ]",
140 " [-+r] [-+t] [-+X] [-+Z] [-+w percent dedupable] [-+y percent_interior_dedup]",
141 " [-+C percent_dedup_within]",
145 " -b Filename Create Excel worksheet file",
146 " -B Use mmap() files",
147 " -c Include close in the timing calculations",
148 " -C Show bytes transferred by each child in throughput testing",
149 " -d # Microsecond delay out of barrier",
150 " -D Use msync(MS_ASYNC) on mmap files",
151 " -e Include flush (fsync,fflush) in the timing calculations",
152 " -E Run extension tests",
153 " -f filename to use",
154 " -F filenames for each process/thread in throughput test",
155 " -g # Set maximum file size (in Kbytes) for auto mode (or #m or #g)",
156 " -G Use msync(MS_SYNC) on mmap files",
158 " -H # Use POSIX async I/O with # async operations",
159 " -i # Test to run (0=write/rewrite, 1=read/re-read, 2=random-read/write",
160 " 3=Read-backwards, 4=Re-write-record, 5=stride-read, 6=fwrite/re-fwrite",
161 " 7=fread/Re-fread, 8=random_mix, 9=pwrite/Re-pwrite, 10=pread/Re-pread",
162 " 11=pwritev/Re-pwritev, 12=preadv/Re-preadv)",
163 " -I Use VxFS VX_DIRECT, O_DIRECT,or O_DIRECTIO for all file operations",
164 " -j # Set stride of file accesses to (# * record size)",
165 " -J # milliseconds of compute cycle before each I/O operation",
166 " -k # Use POSIX async I/O (no bcopy) with # async operations",
167 " -K Create jitter in the access pattern for readers",
168 " -l # Lower limit on number of processes to run",
169 " -L # Set processor cache line size to value (in bytes)",
170 " -m Use multiple buffers",
171 " -M Report uname -a output",
172 " -n # Set minimum file size (in Kbytes) for auto mode (or #m or #g)",
173 " -N Report results in microseconds per operation",
174 " -o Writes are synch (O_SYNC)",
175 " -O Give results in ops/sec.",
177 " -P # Bind processes/threads to processors, starting with this cpu",
178 " -q # Set maximum record size (in Kbytes) for auto mode (or #m or #g)",
179 " -Q Create offset/latency files",
180 " -r # record size in Kb",
181 " or -r #k .. size in Kb",
182 " or -r #m .. size in Mb",
183 " or -r #g .. size in Gb",
184 " -R Generate Excel report",
185 " -s # file size in Kb",
186 " or -s #k .. size in Kb",
187 " or -s #m .. size in Mb",
188 " or -s #g .. size in Gb",
189 " -S # Set processor cache size to value (in Kbytes)",
190 " -t # Number of threads or processes to use in throughput test",
191 " -T Use POSIX pthreads for throughput tests",
192 " -u # Upper limit on number of processes to run",
193 " -U Mount point to remount between tests",
194 " -v version information",
195 " -V # Verify data pattern write/read",
196 " -w Do not unlink temporary file",
197 " -W Lock file when reading or writing",
198 " -x Turn off stone-walling",
199 " -X filename Write telemetry file. Contains lines with (offset reclen compute_time) in ascii",
200 " -y # Set minimum record size (in Kbytes) for auto mode (or #m or #g)",
201 " -Y filename Read telemetry file. Contains lines with (offset reclen compute_time) in ascii",
202 " -z Used in conjunction with -a to test all possible record sizes",
203 " -Z Enable mixing of mmap I/O and file I/O",
204 " -+E Use existing non-Iozone file for read-only testing",
205 " -+K Sony special. Manual control of test 8.",
206 " -+m Cluster_filename Enable Cluster testing",
207 " -+d File I/O diagnostic mode. (To troubleshoot a broken file I/O subsystem)",
208 " -+u Enable CPU utilization output (Experimental)",
209 " -+x # Multiplier to use for incrementing file and record sizes",
210 " -+p # Percentage of mix to be reads",
211 " -+r Enable O_RSYNC|O_SYNC for all testing.",
212 " -+t Enable network performance test. Requires -+m ",
213 " -+n No retests selected.",
214 " -+k Use constant aggregate data set size.",
215 " -+q Delay in seconds between tests.",
216 " -+l Enable record locking mode.",
217 " -+L Enable record locking mode, with shared file.",
218 " -+B Sequential mixed workload.",
220 " -+D Enable O_DSYNC mode.",
223 " -+A # Enable madvise. 0 = normal, 1=random, 2=sequential",
224 " 3=dontneed, 4=willneed",
226 " -+N Do not truncate existing files on sequential writes.",
227 " -+S # Dedup-able data is limited to sharing within each numerically",
228 " identified file set",
229 " -+V Enable shared file. No locking.",
231 " -+U Windows Unbufferd I/O API (Very Experimental)",
233 " -+X Enable short circuit mode for filesystem testing ONLY",
234 " ALL Results are NOT valid in this mode.",
235 " -+Z Enable old data set compatibility mode. WARNING.. Published",
236 " hacks may invalidate these results and generate bogus, high",
237 " values for results.",
238 " -+w ## Percent of dedup-able data in buffers.",
239 " -+y ## Percent of dedup-able within & across files in buffers.",
240 " -+C ## Percent of dedup-able within & not across files in buffers.",
241 " -+H Hostname Hostname of the PIT server.",
242 " -+P Service Service of the PIT server.",
243 " -+z Enable latency histogram logging.",
247 " 'Iozone' Filesystem Benchmark Program",
252 " Original Author: William Norcott (wnorcott@us.oracle.com)",
256 " Enhancements: Don Capps (capps@iozone.org)",
260 " Copyright 1991, 1992, 1994, 1998, 1999, 2002 William D. Norcott",
262 " License to freely use and distribute this software is hereby granted ",
263 " by the author, subject to the condition that this copyright notice ",
264 " remains intact. The author retains the exclusive right to publish ",
265 " derivative works based on this work, including, but not limited to, ",
266 " revised versions of this work",
268 " Other contributors:",
270 " Don Capps (Network Appliance) capps@iozone.org",
279 #include <sys/mman.h> 285 #if !defined(__FreeBSD__) && !defined(__OpenBSD__) && !defined(__APPLE__) && !defined(__DragonFly__) 288 #if defined(__FreeBSD__) || defined(__OpenBSD__) || defined(__APPLE__) || defined(__DragonFly__) 293 #if defined (__FreeBSD__) || defined(__OpenBSD__) || defined(__bsdi__) || defined(__APPLE__) || defined(__DragonFly__) 295 #define O_SYNC O_FSYNC 299 #if defined (__FreeBSD__) 301 #define O_RSYNC O_FSYNC 305 #if ((defined(solaris) && defined(__LP64__)) || defined(__s390x__)) 315 #include <sys/socket.h> 316 #include <netinet/in.h> 317 #include <arpa/inet.h> 320 #if ( defined(solaris) && defined(studio11) ) 325 #if defined(OSFV5) || defined(linux) 330 #include <sys/socket.h> 331 #include <netinet/in.h> 332 #include <arpa/inet.h> 336 #define MAP_FAILED -1 343 #if defined(__DragonFly__) 344 #define __off64_t_defined 353 #ifndef __off64_t_defined 354 #ifndef SCO_Unixware_gcc 356 #ifndef __DragonFly__ 372 #include <sys/fs/vx_ioctl.h> 376 #if defined (__APPLE__) || defined(__FreeBSD__) || defined(__DragonFly__) \ 378 #include <sys/time.h> 380 #include <sys/times.h> 381 #include <sys/file.h> 382 #include <sys/resource.h> 393 #define VOLATILE volatile 398 #include <sys/time.h> 404 #if defined(bsd4_2) && !defined(MS_SYNC) 409 #if defined(bsd4_4) || defined(__DragonFly__) 410 #define MAP_ANONYMOUS MAP_ANON 413 #if defined(SCO_Unixware_gcc) || defined(solaris) || defined(UWIN) || defined(SCO) 417 #if defined(IRIX) || defined(IRIX64) || defined(Windows) || defined(bsd4_2) || defined(bsd4_4) || defined(SCO) || defined(Solaris) || defined(SCO_Unixware_gcc) 419 #define GOT_PAGESIZE 1 422 #define GOT_PAGESIZE 1 423 #elif defined(old_linux) 424 #include <asm/page.h> 426 #define GOT_PAGESIZE 1 427 #elif !defined(GOT_PAGESIZE) 436 #define PER_VECTOR_OFFSET 437 #include <sys/puio.h> 438 struct piovec piov[PVECMAX];
441 struct iovec piov[PVECMAX];
442 #define piov_base iov_base 443 #define piov_len iov_len 449 #define DEDUPSEED 0x2719362 476 #include <sys/cnx_ail.h> 479 #include <sys/socket.h> 480 #include <netinet/in.h> 731 #define R_CHILD_JOIN 1 732 #define R_STAT_DATA 2 733 #define R_FLAG_DATA 3 742 #define R_STOP_FLAG 5 743 #define R_TERMINATE 6 750 #define CACHE_LINE_SIZE 32 751 #define CACHE_SIZE ( 1024 * 1024 ) 754 #define MEG (1024 * 1024) 786 #define LARGE_REC 65536 789 #define KILOBYTES 512 795 #define FILESIZE (KILOBYTES*1024) 798 #define NUMRECS FILESIZE/RECLEN 802 #define CROSSOVER (8*1024) 804 #define MAXBUFFERSIZE (8*1024*1024) 807 #define CROSSOVER (16*1024) 809 #define MAXBUFFERSIZE (16*1024*1024) 813 #define MAXSTREAMS 256 816 #define MINBUFFERSIZE 128 822 #define PATTERN get_pattern(); 823 #define PATTERN1 0xBB 829 #define USAGE "\tUsage: For usage information type iozone -h \n\n" 833 #define MAXNAMESIZE 1000 841 #include <sys/times.h> 842 #if defined(HAVE_PREAD) && defined(HAVE_PREADV) 843 #define CONTROL_STRING1 "%16ld%8ld%8ld%8ld%8ld%8ld%8ld%8ld%8ld %8ld %8ld%8ld%8ld%9ld%9ld%8ld%10ld%9ld%10ld%9ld%10ld%10ld%9ld\n" 844 #define CONTROL_STRING2 "%16s%8s%8s%8s%8s%10s%8s%8s%8s %8s %8s%9s%9s%8s%9s%8s%9s%7s%10s%10s%10s%9s%9s\n" 845 #define CONTROL_STRING3 "%16s%8s%8s%8s%8s%10s%8s%8s%8s %8s %8s%9s%9s%8s%9s\n" 846 #define CONTROL_STRING4 "%16s%8s%8s%8s%8s%10s\n" 848 #define CONTROL_STRING1 "%16ld%8ld%8ld%8ld%8ld%8ld%8ld%8ld%8ld %8ld %8ld%8ld%8ld%9ld%9ld%8ld%10ld%9ld%10ld\n" 849 #define CONTROL_STRING2 "%16s%8s%8s%8s%8s%10s%8s%8s%8s %8s %8s%9s%9s%8s%9s%8s%9s%7s%10s\n" 850 #define CONTROL_STRING3 "%16s%8s%8s%8s%8s%10s%8s%8s%8s %8s %8s\n" 851 #define CONTROL_STRING4 "%16s%8s%8s%8s%8s%10s\n" 854 #define CONTROL_STRING1 "%16ld%8ld%8ld%8ld%8ld%8ld%8ld%8ld%8ld %8ld %8ld%8ld%8ld%9ld%9ld\n" 855 #define CONTROL_STRING2 "%16s%8s%8s%8s%8s%10s%8s%8s%8s %8s %8s%9s%9s%8s%9s\n" 856 #define CONTROL_STRING3 "%16s%8s%8s%8s%8s%10s%8s%8s%8s %8s %8s%9s%9s%8s%9s\n" 857 #define CONTROL_STRING4 "%16s%8s%8s%8s%8s%10s\n" 863 #include <sys/times.h> 864 #if defined(HAVE_PREAD) && defined(HAVE_PREADV) 865 #define CONTROL_STRING1 "%16lld%8ld%8ld%8ld%8ld%8ld%8ld%8ld%8ld %8ld %8ld%8ld%8ld%9ld%9ld%8ld%10ld%9ld%10ld%9ld%10ld%10ld%9ld\n" 866 #define CONTROL_STRING2 "%16s%8s%8s%8s%8s%10s%8s%8s%8s %8s %8s%9s%9s%8s%9s%8s%9s%7s%10s%10s%10s%9s%9s\n" 867 #define CONTROL_STRING3 "%16s%8s%8s%8s%8s%10s%8s%8s%8s %8s %8s%9s%9s%8s%9s\n" 868 #define CONTROL_STRING4 "%16s%8s%8s%8s%8s%10s\n" 870 #define CONTROL_STRING1 "%16lld%8ld%8ld%8ld%8ld%8ld%8ld%8ld%8ld %8ld %8ld%8ld%8ld%9ld%9ld%8ld%10ld%9ld%10ld\n" 871 #define CONTROL_STRING2 "%16s%8s%8s%8s%8s%10s%8s%8s%8s %8s %8s%9s%9s%8s%9s%8s%9s%7s%10s\n" 872 #define CONTROL_STRING3 "%16s%8s%8s%8s%8s%10s%8s%8s%8s %8s %8s%9s%9s%8s%9s\n" 873 #define CONTROL_STRING4 "%16s%8s%8s%8s%8s%10s\n" 876 #define CONTROL_STRING1 "%16lld%8ld%8ld%8ld%8ld%8ld%8ld%8ld %8ld %8ld%8ld%8ld%8ld%9ld%9ld\n" 877 #define CONTROL_STRING2 "%16s%8s%8s%8s%8s%10s%8s%8s%8s %8s %8s%9s%9s%8s%9s\n" 878 #define CONTROL_STRING3 "%16s%8s%8s%8s%8s%10s%8s%8s%8s %8s %8s%9s%9s%8s%9s\n" 879 #define CONTROL_STRING4 "%16s%8s%8s%8s%8s%10s\n" 889 #define KILOBYTES_START 64 891 #define KILOBYTES_END (1024*512) 893 #define RECLEN_START 4096 895 #define RECLEN_END (MAXBUFFERSIZE) 902 #define WRITER_TEST 0 903 #define READER_TEST 1 904 #define RANDOM_RW_TEST 2 905 #define REVERSE_TEST 3 906 #define REWRITE_REC_TEST 4 907 #define STRIDE_READ_TEST 5 908 #define FWRITER_TEST 6 909 #define FREADER_TEST 7 910 #define RANDOM_MIX_TEST 8 912 #define PWRITER_TEST 9 913 #define PREADER_TEST 10 916 #define PWRITEV_TEST 11 917 #define PREADV_TEST 12 920 #define WRITER_MASK (1 << WRITER_TEST) 921 #define READER_MASK (1 << READER_TEST) 922 #define RANDOM_RW_MASK (1 << RANDOM_RW_TEST) 923 #define RANDOM_MIX_MASK (1 << RANDOM_MIX_TEST) 924 #define REVERSE_MASK (1 << REVERSE_TEST) 925 #define REWRITE_REC_MASK (1 << REWRITE_REC_TEST) 926 #define STRIDE_READ_MASK (1 << STRIDE_READ_TEST) 927 #define FWRITER_MASK (1 << FWRITER_TEST) 928 #define FREADER_MASK (1 << FREADER_TEST) 930 #define PWRITER_MASK (1 << PWRITER_TEST) 931 #define PREADER_MASK (1 << PREADER_TEST) 934 #define PWRITEV_MASK (1 << PWRITEV_TEST) 935 #define PREADV_MASK (1 << PREADV_TEST) 942 #define CHILD_STATE_HOLD 0 944 #define CHILD_STATE_READY 1 946 #define CHILD_STATE_BEGIN 2 948 #define CHILD_STATE_DONE 3 960 static int openSckt(
const char *,
const char *,
unsigned int );
968 static double utime_so_far();
969 static double stime_so_far();
970 static double clk_tck();
973 #define cputime_so_far() time_so_far() 1002 void pread_perf_test();
1003 void pwrite_perf_test();
1006 void preadv_perf_test();
1007 void pwritev_perf_test();
1015 #if defined (HAVE_PREAD) && defined(_LARGEFILE64_SOURCE) 1047 void srand(
unsigned int);
1056 void fill_area(
long long *,
long long *,
long long);
1057 void fill_buffer(
char *,
long long ,
long long ,
char,
long long );
1060 static double cpu_util(
double,
double);
1070 void *(thread_pread_test)(
void*);
1071 void *(thread_pwrite_test)(
void*);
1074 void *(thread_cleanup_quick)(
void*);
1084 #if defined(Windows) 1085 void disruptw(HANDLE);
1087 long long get_traj(FILE *,
long long *,
float *,
long);
1170 #ifdef _LARGEFILE64_SOURCE 1171 #define I_LSEEK(x,y,z) lseek64(x,(off64_t)(y),z) 1172 #define I_OPEN(x,y,z) open64(x,(int)(y),(int)(z)) 1173 #define I_CREAT(x,y) creat64(x,(int)(y)) 1174 #define I_FOPEN(x,y) fopen64(x,y) 1175 #define I_STAT(x,y) stat64(x,y) 1177 #define I_PREAD(a,b,c,d) pread64(a,b,(size_t)(c),(off64_t)(d)) 1178 #define I_PWRITE(a,b,c,d) pwrite64(a,b,(size_t)(c),(off64_t)(d)) 1180 #define I_MMAP(a,b,c,d,e,f) mmap64((void *)(a),(size_t)(b),(int)(c),(int)(d),(int)(e),(off64_t)(f)) 1182 #define I_LSEEK(x,y,z) lseek(x,(off_t)(y),z) 1183 #define I_OPEN(x,y,z) open(x,(int)(y),(int)(z)) 1184 #define I_CREAT(x,y) creat(x,(int)(y)) 1185 #define I_FOPEN(x,y) fopen(x,y) 1186 #define I_STAT(x,y) stat(x,y) 1188 #define I_PREAD(a,b,c,d) pread(a,b,(size_t)(c),(off_t)(d)) 1189 #define I_PWRITE(a,b,c,d) pwrite(a,b,(size_t)(c),(off_t)(d)) 1191 #define I_MMAP(a,b,c,d,e,f) mmap((void *)(a),(size_t)(b),(int)(c),(int)(d),(int)(e),(off_t)(f)) 1250 long long test_soutput[] = {2,2,2,1,1,1,2,2,2,2,2,2,2,2};
1263 #define SHMSIZE ((( sizeof(struct child_stats) * MAXSTREAMS) )+4096 ) 1386 "Reverse Read",
"Stride read",
"Random read",
"Mixed workload",
"Random write",
"Pwrite",
"Pread",
"Fwrite",
"Fread"};
1407 #define HOST_LIST_PORT 20000 1408 #define HOST_ESEND_PORT (HOST_LIST_PORT+MAXSTREAMS) 1409 #define HOST_ASEND_PORT (HOST_ESEND_PORT+MAXSTREAMS) 1415 #define CHILD_ESEND_PORT (HOST_ASEND_PORT+MAXSTREAMS) 1416 #define CHILD_LIST_PORT (CHILD_ESEND_PORT+MAXSTREAMS) 1419 #define CHILD_ALIST_PORT (CHILD_LIST_PORT+MAXSTREAMS) 1422 #define SP_CHILD_LISTEN_PORT 31000 1423 #define SP_CHILD_ESEND_PORT (SP_CHILD_LISTEN_PORT+10) 1424 #define SP_MASTER_LISTEN_PORT (SP_CHILD_ESEND_PORT+10) 1425 #define SP_MASTER_ESEND_PORT (SP_MASTER_LISTEN_PORT+10) 1426 #define SP_MASTER_RESULTS_PORT (SP_MASTER_ESEND_PORT+10) 1429 #define THREAD_WRITE_TEST 1 1430 #define THREAD_REWRITE_TEST 2 1431 #define THREAD_READ_TEST 3 1432 #define THREAD_REREAD_TEST 4 1433 #define THREAD_STRIDE_TEST 5 1434 #define THREAD_RANDOM_READ_TEST 6 1435 #define THREAD_RANDOM_WRITE_TEST 7 1436 #define THREAD_REVERSE_READ_TEST 8 1437 #define THREAD_RANDOM_MIX_TEST 9 1438 #define THREAD_PWRITE_TEST 10 1439 #define THREAD_PREAD_TEST 11 1440 #define THREAD_FWRITE_TEST 12 1441 #define THREAD_FREAD_TEST 13 1442 #define THREAD_CLEANUP_TEST 14 1449 #define C_STATE_ZERO 1 1450 #define C_STATE_WAIT_WHO 2 1451 #define C_STATE_WAIT_BARRIER 3 1541 #if defined(Windows) 1613 long long fileindx,
i,tval;
1618 unsigned char inp_pat;
1620 char *port,*m,*subarg;
1623 int anwser,bind_cpu;
1629 setvbuf( stdout, NULL, _IONBF, (
size_t) NULL );
1630 setvbuf( stderr, NULL, _IONBF, (
size_t) NULL );
1636 evalue = (
char *)NULL;
1637 evalue=(
char *)
getenv(
"CDEBUG");
1640 evalue = (
char *)NULL;
1641 evalue=(
char *)
getenv(
"MDEBUG");
1649 #if defined (solaris) || defined (_HPUX_SOURCE) || defined (linux) || defined(IRIX) || defined (IRIX64) 1650 #ifndef __convex_spp 1656 sc_clk_tck = clk_tck();
1662 myid=(
long long)getpid();
1674 sprintf(
splash[
splash_line++],
"\tContributors:William Norcott, Don Capps, Isom Crawford, Kirby Collins\n");
1675 sprintf(
splash[
splash_line++],
"\t Al Slater, Scott Rhine, Mike Wisner, Ken Goss\n");
1676 sprintf(
splash[
splash_line++],
"\t Steve Landherr, Brad Smith, Mark Kelly, Dr. Alain CYR,\n");
1677 sprintf(
splash[
splash_line++],
"\t Randy Dunlap, Mark Montague, Dan Million, Gavin Brebner,\n");
1678 sprintf(
splash[
splash_line++],
"\t Jean-Marc Zucconi, Jeff Blomberg, Benny Halevy, Dave Boone,\n");
1679 sprintf(
splash[
splash_line++],
"\t Erik Habbinga, Kris Strecker, Walter Wong, Joshua Root,\n");
1680 sprintf(
splash[
splash_line++],
"\t Fabrice Bacchella, Zhenghua Xue, Qin Li, Darren Sawyer.\n");
1696 perror(
"Memory allocation failed:");
1712 perror(
"Memory allocation failed:");
1730 perror(
"Memory allocation failed:");
1754 pattern = ((inp_pat << 24) | (inp_pat << 16) | (inp_pat << 8) | inp_pat);
1759 while((
cret = getopt(argc,argv,
"ZQNIBDGCTOMREWovAxamwphcezKJ:j:k:V:r:t:s:f:F:d:l:u:U:S:L:H:+:P:i:b:X:Y:g:n:y:q: ")) != EOF){
1782 printf(
"\tThreads not supported in this version\n");
1809 sprintf(
splash[
splash_line++],
"\tVxFS advanced feature SET_CACHE, VX_DIRECT enabled\n");
1812 #if ! defined(DONT_HAVE_O_DIRECT) 1813 #if defined(linux) || defined(__AIX__) || defined(IRIX) || defined(IRIX64) || defined(Windows) || defined(__FreeBSD__) || defined(solaris) 1826 #if defined(Windows) 1827 sprintf(
splash[
splash_line++],
"\tO_DIRECTIO feature not available in Windows version.\n");
1880 sprintf(
splash[
splash_line++],
"\tAuto Mode 2. This option is obsolete. Use -az -i0 -i1 \n");
1928 printf(
"Invalid options: maximum streams for ");
1929 printf(
"throughput is MAXSTREAMS\n");
1936 printf(
"Can not run throughput tests with unmount & remounts.\n");
1945 printf(
"Invalid options: maximum streams for ");
1946 printf(
"throughput is MAXSTREAMS\n");
1953 printf(
"Can not run throughput tests with unmount & remounts.\n");
1963 perror(
"Memory allocation failed:");
1970 bzero(reply,
sizeof(reply));
1971 pi=popen(
"uname -a",
"r");
1995 #if defined(_HPUX_SOURCE) || defined(linux) 1996 #if defined(_HPUX_SOURCE) 2009 sprintf(
splash[
splash_line++],
"\tProcessor binding not available in this version\n");
2036 sprintf(
splash[
splash_line++],
"\tOPS Mode. Output is in operations per second.\n");
2040 sprintf(
splash[
splash_line++],
"\tMicroseconds/op Mode. Output is in microseconds per operation.\n");
2048 pattern = ((inp_pat << 24) | (inp_pat << 16) | (inp_pat << 8)
2052 sprintf(
splash[
splash_line++],
"\tPerformance measurements are invalid in this mode.\n");
2066 printf(
"invalid options: -f and -F are mutually exclusive\n");
2081 printf(
"invalid options: -f and -F are mutually exclusive\n");
2085 printf(
"invalid options: must specify -t N before -F\n");
2089 for(fileindx=0;fileindx<
maxt;fileindx++) {
2093 printf(
"invalid options: not enough filenames for %ld streams\n",
num_child);
2095 printf(
"invalid options: not enough filenames for %lld streams\n",
num_child);
2129 printf(
"Error: maximum record size %ld KB is greater than maximum buffer size %ld KB\n ",
2132 printf(
"Error: maximum record size %lld KB is greater than maximum buffer size %lld KB\n ",
2157 printf(
"invalid options: maximum streams for throughput is MAXSTREAMS\n");
2174 printf(
"Can not run throughput tests with unmount & remounts.\n");
2185 if(tval < 0) tval=0;
2189 printf(
"\tPread tests not available on this operating system.\n");
2193 if(tval >
sizeof(
func)/
sizeof(
char *))
2196 sprintf(
splash[
splash_line++],
"\tSelected test not available on the version.\n");
2202 for(ind=0; strlen(
head1[ind]); ind++)
2204 printf(
"%s\n",
head1[ind]);
2213 printf(
"Can not run throughput tests with unmount & remounts.\n");
2353 printf(
"Error: maximum record size %ld KB is greater than maximum buffer size %ld KB\n ",
2356 printf(
"Error: maximum record size %lld KB is greater than maximum buffer size %lld KB\n ",
2377 switch (*((
char *)
optarg))
2389 if(subarg==(
char *)0)
2391 printf(
"-+c takes an operand !!\n");
2401 if(subarg==(
char *)0)
2403 printf(
"-+h takes an operand !!\n");
2412 if(subarg==(
char *)0)
2414 printf(
"-+m takes an operand. ( filename )\n");
2421 printf(
"Error reading client file\n");
2445 sprintf(
splash[
splash_line++],
"\tPerformance measurements are invalid in this mode.\n");
2451 if(subarg==(
char *)0)
2453 printf(
"-+c takes an operand !!\n");
2462 if(subarg==(
char *)0)
2464 printf(
"-+i takes an operand !!\n");
2471 if(subarg==(
char *)0)
2473 printf(
"-+p takes an operand !!\n");
2486 #if defined(_HPUX_SOURCE) || defined(linux) || defined(solaris) 2495 if(subarg==(
char *)0)
2497 printf(
"-+A take an operand !!\n");
2514 if(subarg==(
char *)0)
2516 printf(
"-+q takes an operand !!\n");
2525 #if defined(O_DSYNC) 2536 sprintf(
splash[
splash_line++],
"\t>>> Record locking, shared file mode enabled. <<<\n");
2569 (inp_pat << 16) | (inp_pat << 8) |
2580 (inp_pat << 16) | (inp_pat << 8) |
2583 sprintf(
splash[
splash_line++],
"\t Performance measurements may be invalid in this\n");
2586 #if defined(Windows) 2589 sprintf(
splash[
splash_line++],
"\tUnbuffered Windows API usage. >>> Very Experimental <<<\n");
2594 if(subarg==(
char *)0)
2596 printf(
"-+K takes an operand !!\n");
2603 sprintf(
splash[
splash_line++],
"\tManual control of test 8. >>> Very Experimental. Sony special <<<\n");
2608 if(subarg==(
char *)0)
2610 printf(
"-+w takes an operand !!\n");
2623 if(subarg==(
char *)0)
2625 printf(
"-+y takes an operand !!\n");
2638 if(subarg==(
char *)0)
2640 printf(
"-+C takes an operand !!\n");
2652 if(subarg==(
char *)0)
2654 printf(
"-+S takes an operand !!\n");
2664 if(subarg==(
char *)0)
2666 printf(
"-+H takes operand !!\n");
2675 if(subarg==(
char *)0)
2677 printf(
"-+P takes operand !!\n");
2689 if(subarg==(
char *)0)
2691 printf(
"-+O takes an operand !!\n");
2701 printf(
"Unsupported Plus option -> %s <-\n",
optarg);
2707 printf(
"Unsupported option -> %s <-\n",
optarg);
2748 printf(
"You can not specify more threads/processes than you have in the client file list\n");
2755 if(!
silent) printf(
"\tOutput is in Kbytes/sec\n");
2759 printf(
"Error: minimum record size %ld KB is greater than maximum record size %ld KB\n ",
2762 printf(
"Error: minimum record size %lld KB is greater than maximum record size %lld KB\n ",
2773 if(!
silent) printf(
"\tCompute time %f seconds for reads and writes.\n",
compute_time);
2781 if(!
silent) printf(
"\tCompute time from telemetry files for reads.\n");
2798 if(!
silent) printf(
"\tCompute time from telemetry files for writes.\n");
2812 if(!
silent) printf(
"\tCompute time from telemetry files for reads.\n");
2820 if(!
silent) printf(
"\tCompute time from telemetry files for writes.\n");
2831 if(!
silent) printf(
"\tCompute time from telemetry files for reads.\n");
2835 if(!
silent) printf(
"\tNo compute time for reads.\n");
2840 if(!
silent) printf(
"\tCompute time from telemetry files for writes.\n");
2844 if(!
silent) printf(
"\tNo compute time for writes.\n");
2851 for(
i=2;
i<
sizeof(
func)/
sizeof(
char *);
i++)
2884 printf(
"\n\tFull verification not supported in telemetry mode.\n\n");
2890 printf(
"\n\tDisrupt not supported in telemetry mode.\n\n");
2895 printf(
"\n\tAuto mode not supported in telemetry mode.\n");
2896 printf(
"\tTry: -i 0 -i 1 \n\n");
2901 printf(
"\n\tSize of file is determined by telemetry file.\n\n");
2906 printf(
"\n\tRecord size of file is determined by telemetry file.\n\n");
2911 printf(
"\n\tStride size is determined by telemetry file.\n\n");
2916 printf(
"\n\tMicrosecond mode not supported in throughput mode.\n\n");
2922 printf(
"\n\tCan not mix throughput mode and auto-mode flags.\n\n");
2927 printf(
"\n\tYou must use -F when using multiple threads or processes.\n\n");
2932 printf(
"\n\tYou must use -f when using auto mode.\n\n");
2937 printf(
"\n\tSorry ... Only mmap or async but not both\n\n");
2943 printf(
"\n\tSorry ... This version does not support async I/O\n\n");
2951 printf(
"You must specify which tests ( -i # ) when using -+E\n");
2957 for(
i=0;
i<
sizeof(
func)/
sizeof(
char *);
i++)
2968 printf(
"You must disable any test that writes when using -+E\n");
2976 printf(
"You must use -f or -F when using -+E\n");
2982 printf(
"\n\tCan not do both -H and -k\n");
2987 printf(
"\n\tCan not do both -+d and -+w\n");
2995 if(!
silent) printf(
"\tTime Resolution = %1.6f seconds.\n",
time_res);
2997 if(!
silent) printf(
"\tProcessor cache size set to %ld Kbytes.\n",
cache_size/1024);
2999 if(!
silent) printf(
"\tFile stride size set to %ld * record size.\n",
stride);
3001 if(!
silent) printf(
"\tProcessor cache size set to %ld Kbytes.\n",
cache_size/1024);
3003 if(!
silent) printf(
"\tFile stride size set to %lld * record size.\n",
stride);
3018 if(!
silent) printf(
"\tMin %s = %ld \n",port,
mint);
3019 if(!
silent) printf(
"\tMax %s = %ld \n",port,
maxt);
3021 if(!
silent) printf(
"\tMin %s = %lld \n",port,
mint);
3022 if(!
silent) printf(
"\tMax %s = %lld \n",port,
maxt);
3040 if(!
silent) printf(
"\tThroughput test with %ld %s\n",
num_child,port);
3042 if(!
silent) printf(
"\tThroughput test with %lld %s\n",
num_child,port);
3048 printf(
"Error: Maximum record length is %ld bytes\n",
3051 printf(
"Error: Maximum record length is %lld bytes\n",
3058 printf(
"Error: Minimum record length is %ld bytes\n",
3061 printf(
"Error: Minimum record length is %lld bytes\n",
3081 #if defined( _HPUX_SOURCE ) || defined ( linux ) 3085 #if defined( _HPUX_SOURCE ) 3086 pthread_processor_bind_np(PTHREAD_BIND_FORCED_NP,
3087 (pthread_spu_t *)&anwser, (pthread_spu_t)bind_cpu, pthread_self());
3091 CPU_SET(bind_cpu, &cpuset);
3093 pthread_setaffinity_np(pthread_self(),
sizeof(cpuset),&cpuset);
3126 if(!
silent) printf(
"\niozone test complete.\n");
3129 printf(
"Timer resolution is poor. Some small transfers may have \n");
3130 printf(
"reported inaccurate results. Sizes %ld Kbytes and below.\n",
3153 if(!
silent) printf(
"\tCommand line used:");
3154 for (ix=0; ix < argc; ix++) {
3155 if(!
silent) printf(
" %s", argv[ix]);
3159 len += strlen(argv[ix]) + 1;
3162 printf (
"Command line too long to save completely.\n");
3166 if(!
silent) printf(
"\n");
3181 long long reclength;
3187 #if defined(HAVE_PREAD) 3190 #if defined(HAVE_PREAD) && defined(HAVE_PREADV) 3203 #if defined(HAVE_PREAD) && defined(HAVE_PREADV) 3232 if(!
silent) printf(
"%8ld",0);
3242 if(!
silent) printf(
"%8lld",(
long long )0);
3266 for(test_num=0;test_num <
num_tests;test_num++)
3271 if(!
silent) printf(
"\n");
3273 if(data1[1]!=0 && data2[1] != 0)
3279 printf(
"\nThe test completed too quickly to give a good result\n");
3280 printf(
"You will get a more precise measure of this machine's\n");
3281 printf(
"performance by re-running iozone using the command:\n");
3284 printf(
"\t(i.e., file size = %ld kilobytes64)\n",
goodkilos);
3287 printf(
"\t(i.e., file size = %lld kilobytes64)\n",
goodkilos);
3292 printf(
"\nI/O error during read. Try again with the command:\n");
3295 printf(
"\t(i.e. record size = %ld bytes)\n",
goodrecl);
3298 printf(
"\t(i.e. record size = %lld bytes)\n",
goodrecl);
3322 if(!
silent) printf(
"iozone: help mode\n\n");
3323 for(
i=0; strlen(
help[
i]);
i++)
3345 if((
long long)getpid()==
myid)
3347 if(!
silent) printf(
"\niozone: interrupted\n\n");
3373 if(!
silent) printf(
"exiting iozone\n\n");
3376 printf(
"Timer resolution is poor. Some small transfers may have \n");
3377 printf(
"reported inaccurate results. Sizes %ld Kbytes and below.\n",
3408 long long recszi,count1;
3434 printf(
"Error: record length %ld is greater than filesize %ld KB\n ",
3437 printf(
"Error: record length %lld is greater than filesize %lld KB\n ",
3473 mult <= (kilosi*1024)) ;
3479 for(xx=0;xx<20;xx++)
3491 if(recszi > (kilosi*1024))
3493 begin(kilosi, recszi );
3534 double starttime1 = 0;
3535 double jstarttime = 0;
3537 double walltime = 0;
3545 off64_t written_so_far, read_so_far, re_written_so_far,re_read_so_far;
3547 double min_throughput = 0;
3548 double max_throughput = 0;
3549 double avg_throughput = 0;
3550 double min_xfer = 0;
3555 ptotal=written_so_far=read_so_far=re_written_so_far=re_read_so_far=0 ;
3566 if((
long long)
shmaddr==(
long long)-1)
3571 printf(
"\nShared memory not working\n");
3610 if(!
silent) printf(
"\tEach %s writes a %ld Kbyte file in telemetry controlled records\n",
3613 if(!
silent) printf(
"\tEach %s writes a %lld Kbyte file in telemetry controlled records\n",
3620 if(!
silent) printf(
"\tEach %s writes a %ld Kbyte file in %ld Kbyte records\n",
3623 if(!
silent) printf(
"\tEach %s writes a %lld Kbyte file in %lld Kbyte records\n",
3631 myid = (
long long)getpid();
3660 printf(
"\nFork failed\n");
3661 for(xy = 0; xy< xx ; xy++){
3669 printf(
"Parent starting slot %ld\n",xx);
3671 printf(
"Parent starting slot %lld\n",xx);
3702 perror(
"Memory allocation failed:");
3715 printf(
"Thread create failed\n");
3716 for(xy = 0; xy< xx ; xy++){
3724 if((
long long)getpid() ==
myid)
3753 if((
long long)getpid() ==
myid) {
3759 printf(
"\n\tTest running:");
3778 if(jtime < (
double).000001)
3793 if(!
silent) printf(
"\nJoin time %10.2f\n",jtime);
3800 if(!
silent) printf(
"\n");
3846 if(!
silent) printf(
"\tMin throughput per %s \t\t\t= %10.2f %s/sec \n", port,min_throughput,unit);
3847 if(!
silent) printf(
"\tMax throughput per %s \t\t\t= %10.2f %s/sec\n", port,max_throughput,unit);
3848 if(!
silent) printf(
"\tAvg throughput per %s \t\t\t= %10.2f %s/sec\n", port,avg_throughput,unit);
3849 if(!
silent) printf(
"\tMin xfer \t\t\t\t\t= %10.2f %s\n", min_xfer,unit);
3855 if(!
silent) printf(
"\tCPU utilization: Wall time %8.3f CPU time %8.3f CPU utilization %6.2f %%\n\n",
3860 if(!
silent) printf(
"\tCPU Utilization: Wall time %8.3f CPU time %8.3f CPU utilization %6.2f %%\n\n",
3872 printf(
"\tChild[%ld] xfer count = %10.2f %s, Throughput = %10.2f %s/sec, wall=%6.3f, cpu=%6.3f, %%=%6.2f\n",
3878 if(!
silent) printf(
"\tChild[%ld] xfer count = %10.2f %s, Throughput = %10.2f %s/sec\n",
3930 printf(
"\nFork failed\n");
3931 for(xy = 0; xy< xx ; xy++){
3953 perror(
"Memory allocation failed:");
3965 printf(
"\nThread create failed\n");
3966 for(xy = 0; xy< xx ; xy++){
3967 Kill((
long long)
myid,(
long long)SIGTERM);
3974 if((
long long)
myid == getpid())
4001 if((
long long)
myid == getpid()){
4006 printf(
"\n\tTest running:");
4025 if(jtime < (
double).000001)
4040 if(!
silent) printf(
"\nJoin time %10.2f\n",jtime);
4047 min_throughput=max_throughput=min_xfer=0;
4048 if(!
silent) printf(
"\n");
4095 if(!
silent) printf(
"\tMin throughput per %s \t\t\t= %10.2f %s/sec \n", port,min_throughput,unit);
4096 if(!
silent) printf(
"\tMax throughput per %s \t\t\t= %10.2f %s/sec\n", port,max_throughput,unit);
4097 if(!
silent) printf(
"\tAvg throughput per %s \t\t\t= %10.2f %s/sec\n", port,avg_throughput,unit);
4098 if(!
silent) printf(
"\tMin xfer \t\t\t\t\t= %10.2f %s\n", min_xfer,unit);
4104 if(!
silent) printf(
"\tCPU utilization: Wall time %8.3f CPU time %8.3f CPU utilization %6.2f %%\n\n",
4109 if(!
silent) printf(
"\tCPU utilization: Wall time %8.3f CPU time %8.3f CPU utilization %6.2f %%\n\n",
4120 if(!
silent) printf(
"\tChild[%ld] xfer count = %10.2f %s, Throughput = %10.2f %s/sec, wall=%6.3f, cpu=%6.3f, %%=%6.2f\n",
4126 if(!
silent) printf(
"\tChild[%ld] xfer count = %10.2f %s, Throughput = %10.2f %s/sec\n",
4175 printf(
"\nFork failed\n");
4176 for(xy = 0; xy< xx ; xy++){
4198 perror(
"Memory allocation failed:");
4210 printf(
"\nThread create failed\n");
4211 for(xy = 0; xy< xx ; xy++){
4219 if(
myid == (
long long)getpid()){
4243 if(
myid == (
long long)getpid()){
4248 printf(
"\n\tTest running:");
4267 if(jtime < (
double).000001)
4282 if(!
silent) printf(
"\nJoin time %10.2f\n",jtime);
4287 min_throughput=max_throughput=min_xfer=0;
4288 if(!
silent) printf(
"\n");
4326 if(!
silent) printf(
"\tMin throughput per %s \t\t\t= %10.2f %s/sec \n", port,min_throughput,unit);
4327 if(!
silent) printf(
"\tMax throughput per %s \t\t\t= %10.2f %s/sec\n", port,max_throughput,unit);
4328 if(!
silent) printf(
"\tAvg throughput per %s \t\t\t= %10.2f %s/sec\n", port,avg_throughput,unit);
4329 if(!
silent) printf(
"\tMin xfer \t\t\t\t\t= %10.2f %s\n", min_xfer,unit);
4335 if(!
silent) printf(
"\tCPU utilization: Wall time %8.3f CPU time %8.3f CPU utilization %6.2f %%\n\n",
4340 if(!
silent) printf(
"\tCPU utilization: Wall time %8.3f CPU time %8.3f CPU utilization %6.2f %%\n\n",
4351 if(!
silent) printf(
"\tChild[%ld] xfer count = %10.2f %s, Throughput = %10.2f %s/sec, wall=%6.3f, cpu=%6.3f, %%=%6.2f\n",
4357 if(!
silent) printf(
"\tChild[%ld] xfer count = %10.2f %s, Throughput = %10.2f %s/sec\n",
4409 printf(
"\nFork failed\n");
4410 for(xy = 0; xy< xx ; xy++){
4433 perror(
"Memory allocation failed:");
4445 printf(
"\nThread create failed\n");
4446 for(xy = 0; xy< xx ; xy++){
4454 if(
myid == (
long long)getpid()){
4478 if(
myid == (
long long)getpid()){
4483 printf(
"\n\tTest running:");
4502 if(jtime < (
double).000001)
4517 if(!
silent) printf(
"\nJoin time %10.2f\n",jtime);
4519 min_throughput=max_throughput=min_xfer=0;
4522 if(!
silent) printf(
"\n");
4564 if(!
silent) printf(
"\tMin throughput per %s \t\t\t= %10.2f %s/sec \n", port,min_throughput,unit);
4565 if(!
silent) printf(
"\tMax throughput per %s \t\t\t= %10.2f %s/sec\n", port,max_throughput,unit);
4566 if(!
silent) printf(
"\tAvg throughput per %s \t\t\t= %10.2f %s/sec\n", port,avg_throughput,unit);
4567 if(!
silent) printf(
"\tMin xfer \t\t\t\t\t= %10.2f %s\n", min_xfer,unit);
4573 if(!
silent) printf(
"\tCPU utilization: Wall time %8.3f CPU time %8.3f CPU utilization %6.2f %%\n\n",
4578 if(!
silent) printf(
"\tCPU utilization: Wall time %8.3f CPU time %8.3f CPU utilization %6.2f %%\n\n",
4589 if(!
silent) printf(
"\tChild[%ld] xfer count = %10.2f %s, Throughput = %10.2f %s/sec, wall=%6.3f, cpu=%6.3f, %%=%6.2f\n",
4595 if(!
silent) printf(
"\tChild[%ld] xfer count = %10.2f %s, Throughput = %10.2f %s/sec\n",
4649 printf(
"\nFork failed\n");
4650 for(xy = 0; xy< xx ; xy++){
4673 perror(
"Memory allocation failed:");
4685 printf(
"\nThread create failed\n");
4686 for(xy = 0; xy< xx ; xy++){
4694 if(
myid == (
long long)getpid()){
4716 if(
myid == (
long long)getpid()){
4721 printf(
"\n\tTest running:");
4740 if(jtime < (
double).000001)
4755 if(!
silent) printf(
"\nJoin time %10.2f\n",jtime);
4759 min_throughput=max_throughput=min_xfer=0;
4760 if(!
silent) printf(
"\n");
4803 if(!
silent) printf(
"\tMin throughput per %s \t\t\t= %10.2f %s/sec \n", port,min_throughput,unit);
4804 if(!
silent) printf(
"\tMax throughput per %s \t\t\t= %10.2f %s/sec\n", port,max_throughput,unit);
4805 if(!
silent) printf(
"\tAvg throughput per %s \t\t\t= %10.2f %s/sec\n", port,avg_throughput,unit);
4806 if(!
silent) printf(
"\tMin xfer \t\t\t\t\t= %10.2f %s\n", min_xfer,unit);
4812 if(!
silent) printf(
"\tCPU utilization: Wall time %8.3f CPU time %8.3f CPU utilization %6.2f %%\n\n",
4817 if(!
silent) printf(
"\tCPU utilization: Wall time %8.3f CPU time %8.3f CPU utilization %6.2f %%\n\n",
4828 if(!
silent) printf(
"\tChild[%ld] xfer count = %10.2f %s, Throughput = %10.2f %s/sec, wall=%6.3f, cpu=%6.3f, %%=%6.2f\n",
4834 if(!
silent) printf(
"\tChild[%ld] xfer count = %10.2f %s, Throughput = %10.2f %s/sec\n",
4883 printf(
"\nFork failed\n");
4884 for(xy = 0; xy< xx ; xy++){
4907 perror(
"Memory allocation failed:");
4919 printf(
"\nThread create failed\n");
4920 for(xy = 0; xy< xx ; xy++){
4928 if(
myid == (
long long)getpid()){
4950 if(
myid == (
long long)getpid()){
4955 printf(
"\n\tTest running:");
4974 if(jtime < (
double).000001)
4989 if(!
silent) printf(
"\nJoin time %10.2f\n",jtime);
4993 min_throughput=max_throughput=min_xfer=0;
4994 if(!
silent) printf(
"\n");
5037 if(!
silent) printf(
"\tMin throughput per %s \t\t\t= %10.2f %s/sec \n", port,min_throughput,unit);
5038 if(!
silent) printf(
"\tMax throughput per %s \t\t\t= %10.2f %s/sec\n", port,max_throughput,unit);
5039 if(!
silent) printf(
"\tAvg throughput per %s \t\t\t= %10.2f %s/sec\n", port,avg_throughput,unit);
5040 if(!
silent) printf(
"\tMin xfer \t\t\t\t\t= %10.2f %s\n", min_xfer,unit);
5046 if(!
silent) printf(
"\tCPU utilization: Wall time %8.3f CPU time %8.3f CPU utilization %6.2f %%\n\n",
5051 if(!
silent) printf(
"\tCPU utilization: Wall time %8.3f CPU time %8.3f CPU utilization %6.2f %%\n\n",
5062 if(!
silent) printf(
"\tChild[%ld] xfer count = %10.2f %s, Throughput = %10.2f %s/sec, wall=%6.3f, cpu=%6.3f, %%=%6.2f\n",
5068 if(!
silent) printf(
"\tChild[%ld] xfer count = %10.2f %s, Throughput = %10.2f %s/sec\n",
5118 printf(
"\nFork failed\n");
5119 for(xy = 0; xy< xx ; xy++){
5142 perror(
"Memory allocation failed:");
5154 printf(
"\nThread create failed\n");
5155 for(xy = 0; xy< xx ; xy++){
5163 if(
myid == (
long long)getpid()){
5185 if(
myid == (
long long)getpid()){
5190 printf(
"\n\tTest running:");
5209 if(jtime < (
double).000001)
5224 if(!
silent) printf(
"\nJoin time %10.2f\n",jtime);
5228 min_throughput=max_throughput=min_xfer=0;
5229 if(!
silent) printf(
"\n");
5267 if(!
silent) printf(
"\tMin throughput per %s \t\t\t= %10.2f %s/sec \n", port,min_throughput,unit);
5268 if(!
silent) printf(
"\tMax throughput per %s \t\t\t= %10.2f %s/sec\n", port,max_throughput,unit);
5269 if(!
silent) printf(
"\tAvg throughput per %s \t\t\t= %10.2f %s/sec\n", port,avg_throughput,unit);
5270 if(!
silent) printf(
"\tMin xfer \t\t\t\t\t= %10.2f %s\n", min_xfer,unit);
5276 if(!
silent) printf(
"\tCPU utilization: Wall time %8.3f CPU time %8.3f CPU utilization %6.2f %%\n\n",
5281 if(!
silent) printf(
"\tCPU utilization: Wall time %8.3f CPU time %8.3f CPU utilization %6.2f %%\n\n",
5292 if(!
silent) printf(
"\tChild[%ld] xfer count = %10.2f %s, Throughput = %10.2f %s/sec, wall=%6.3f, cpu=%6.3f, %%=%6.2f\n",
5298 if(!
silent) printf(
"\tChild[%ld] xfer count = %10.2f %s, Throughput = %10.2f %s/sec\n",
5348 printf(
"\nFork failed\n");
5349 for(xy = 0; xy< xx ; xy++){
5372 perror(
"Memory allocation failed:");
5384 printf(
"\nThread create failed\n");
5385 for(xy = 0; xy< xx ; xy++){
5393 if(
myid == (
long long)getpid()){
5415 if(
myid == (
long long)getpid()){
5420 printf(
"\n\tTest running:");
5439 if(jtime < (
double).000001)
5454 if(!
silent) printf(
"\nJoin time %10.2f\n",jtime);
5458 min_throughput=max_throughput=min_xfer=0;
5459 if(!
silent) printf(
"\n");
5497 if(!
silent) printf(
"\tMin throughput per %s \t\t\t= %10.2f %s/sec \n", port,min_throughput,unit);
5498 if(!
silent) printf(
"\tMax throughput per %s \t\t\t= %10.2f %s/sec\n", port,max_throughput,unit);
5499 if(!
silent) printf(
"\tAvg throughput per %s \t\t\t= %10.2f %s/sec\n", port,avg_throughput,unit);
5500 if(!
silent) printf(
"\tMin xfer \t\t\t\t\t= %10.2f %s\n", min_xfer,unit);
5506 if(!
silent) printf(
"\tCPU utilization: Wall time %8.3f CPU time %8.3f CPU utilization %6.2f %%\n\n",
5511 if(!
silent) printf(
"\tCPU utilization: Wall time %8.3f CPU time %8.3f CPU utilization %6.2f %%\n\n",
5522 if(!
silent) printf(
"\tChild[%ld] xfer count = %10.2f %s, Throughput = %10.2f %s/sec, wall=%6.3f, cpu=%6.3f, %%=%6.2f\n",
5528 if(!
silent) printf(
"\tChild[%ld] xfer count = %10.2f %s, Throughput = %10.2f %s/sec\n",
5578 printf(
"\nFork failed\n");
5579 for(xy = 0; xy< xx ; xy++){
5602 perror(
"Memory allocation failed:");
5614 printf(
"\nThread create failed\n");
5615 for(xy = 0; xy< xx ; xy++){
5623 if(
myid == (
long long)getpid()){
5645 if(
myid == (
long long)getpid()){
5650 printf(
"\n\tTest running:");
5669 if(jtime < (
double).000001)
5684 if(!
silent) printf(
"\nJoin time %10.2f\n",jtime);
5688 min_throughput=max_throughput=min_xfer=0;
5689 if(!
silent) printf(
"\n");
5727 if(!
silent) printf(
"\tMin throughput per %s \t\t\t= %10.2f %s/sec \n", port,min_throughput,unit);
5728 if(!
silent) printf(
"\tMax throughput per %s \t\t\t= %10.2f %s/sec\n", port,max_throughput,unit);
5729 if(!
silent) printf(
"\tAvg throughput per %s \t\t\t= %10.2f %s/sec\n", port,avg_throughput,unit);
5730 if(!
silent) printf(
"\tMin xfer \t\t\t\t\t= %10.2f %s\n", min_xfer,unit);
5736 if(!
silent) printf(
"\tCPU utilization: Wall time %8.3f CPU time %8.3f CPU utilization %6.2f %%\n\n",
5741 if(!
silent) printf(
"\tCPU utilization: Wall time %8.3f CPU time %8.3f CPU utilization %6.2f %%\n\n",
5752 if(!
silent) printf(
"\tChild[%ld] xfer count = %10.2f %s, Throughput = %10.2f %s/sec, wall=%6.3f, cpu=%6.3f, %%=%6.2f\n",
5758 if(!
silent) printf(
"\tChild[%ld] xfer count = %10.2f %s, Throughput = %10.2f %s/sec\n",
5811 printf(
"\nFork failed\n");
5812 for(xy = 0; xy< xx ; xy++){
5819 thread_pwrite_test((
void *)xx);
5821 thread_pwrite_test((
void *)((
long)xx));
5835 perror(
"Memory allocation failed:");
5847 printf(
"\nThread create failed\n");
5848 for(xy = 0; xy< xx ; xy++){
5856 if(
myid == (
long long)getpid()){
5878 if(
myid == (
long long)getpid()){
5883 printf(
"\n\tTest running:");
5902 if(jtime < (
double).000001)
5917 if(!
silent) printf(
"\nJoin time %10.2f\n",jtime);
5921 min_throughput=max_throughput=min_xfer=0;
5922 if(!
silent) printf(
"\n");
5960 if(!
silent) printf(
"\tMin throughput per %s \t\t\t= %10.2f %s/sec \n", port,min_throughput,unit);
5961 if(!
silent) printf(
"\tMax throughput per %s \t\t\t= %10.2f %s/sec\n", port,max_throughput,unit);
5962 if(!
silent) printf(
"\tAvg throughput per %s \t\t\t= %10.2f %s/sec\n", port,avg_throughput,unit);
5963 if(!
silent) printf(
"\tMin xfer \t\t\t\t\t= %10.2f %s\n", min_xfer,unit);
5969 if(!
silent) printf(
"\tCPU utilization: Wall time %8.3f CPU time %8.3f CPU utilization %6.2f %%\n\n",
5974 if(!
silent) printf(
"\tCPU utilization: Wall time %8.3f CPU time %8.3f CPU utilization %6.2f %%\n\n",
5985 if(!
silent) printf(
"\tChild[%ld] xfer count = %10.2f %s, Throughput = %10.2f %s/sec, wall=%6.3f, cpu=%6.3f, %%=%6.2f\n",
5991 if(!
silent) printf(
"\tChild[%ld] xfer count = %10.2f %s, Throughput = %10.2f %s/sec\n",
6046 printf(
"\nFork failed\n");
6047 for(xy = 0; xy< xx ; xy++){
6054 thread_pread_test((
void *)xx);
6056 thread_pread_test((
void *)((
long)xx));
6070 perror(
"Memory allocation failed:");
6082 printf(
"\nThread create failed\n");
6083 for(xy = 0; xy< xx ; xy++){
6091 if(
myid == (
long long)getpid()){
6113 if(
myid == (
long long)getpid()){
6118 printf(
"\n\tTest running:");
6137 if(jtime < (
double).000001)
6152 if(!
silent) printf(
"\nJoin time %10.2f\n",jtime);
6156 min_throughput=max_throughput=min_xfer=0;
6157 if(!
silent) printf(
"\n");
6195 if(!
silent) printf(
"\tMin throughput per %s \t\t\t= %10.2f %s/sec \n", port,min_throughput,unit);
6196 if(!
silent) printf(
"\tMax throughput per %s \t\t\t= %10.2f %s/sec\n", port,max_throughput,unit);
6197 if(!
silent) printf(
"\tAvg throughput per %s \t\t\t= %10.2f %s/sec\n", port,avg_throughput,unit);
6198 if(!
silent) printf(
"\tMin xfer \t\t\t\t\t= %10.2f %s\n", min_xfer,unit);
6204 if(!
silent) printf(
"\tCPU utilization: Wall time %8.3f CPU time %8.3f CPU utilization %6.2f %%\n\n",
6209 if(!
silent) printf(
"\tCPU utilization: Wall time %8.3f CPU time %8.3f CPU utilization %6.2f %%\n\n",
6220 if(!
silent) printf(
"\tChild[%ld] xfer count = %10.2f %s, Throughput = %10.2f %s/sec, wall=%6.3f, cpu=%6.3f, %%=%6.2f\n",
6226 if(!
silent) printf(
"\tChild[%ld] xfer count = %10.2f %s, Throughput = %10.2f %s/sec\n",
6272 printf(
"\nFork failed\n");
6273 for(xy = 0; xy< xx ; xy++){
6295 perror(
"Memory allocation failed:");
6307 printf(
"\nThread create failed\n");
6308 for(xy = 0; xy< xx ; xy++){
6316 if(
myid == (
long long)getpid()){
6340 if(
myid == (
long long)getpid()){
6345 printf(
"\n\tTest running:");
6364 if(jtime < (
double).000001)
6379 if(!
silent) printf(
"\nJoin time %10.2f\n",jtime);
6384 min_throughput=max_throughput=min_xfer=0;
6385 if(!
silent) printf(
"\n");
6423 if(!
silent) printf(
"\tMin throughput per %s \t\t\t= %10.2f %s/sec \n", port,min_throughput,unit);
6424 if(!
silent) printf(
"\tMax throughput per %s \t\t\t= %10.2f %s/sec\n", port,max_throughput,unit);
6425 if(!
silent) printf(
"\tAvg throughput per %s \t\t\t= %10.2f %s/sec\n", port,avg_throughput,unit);
6426 if(!
silent) printf(
"\tMin xfer \t\t\t\t\t= %10.2f %s\n", min_xfer,unit);
6432 if(!
silent) printf(
"\tCPU utilization: Wall time %8.3f CPU time %8.3f CPU utilization %6.2f %%\n\n",
6437 if(!
silent) printf(
"\tCPU utilization: Wall time %8.3f CPU time %8.3f CPU utilization %6.2f %%\n\n",
6448 if(!
silent) printf(
"\tChild[%ld] xfer count = %10.2f %s, Throughput = %10.2f %s/sec, wall=%6.3f, cpu=%6.3f, %%=%6.2f\n",
6454 if(!
silent) printf(
"\tChild[%ld] xfer count = %10.2f %s, Throughput = %10.2f %s/sec\n",
6502 printf(
"\nFork failed\n");
6503 for(xy = 0; xy< xx ; xy++){
6525 perror(
"Memory allocation failed:");
6537 printf(
"\nThread create failed\n");
6538 for(xy = 0; xy< xx ; xy++){
6546 if(
myid == (
long long)getpid()){
6570 if(
myid == (
long long)getpid()){
6575 printf(
"\n\tTest running:");
6594 if(jtime < (
double).000001)
6609 if(!
silent) printf(
"\nJoin time %10.2f\n",jtime);
6614 min_throughput=max_throughput=min_xfer=0;
6615 if(!
silent) printf(
"\n");
6653 if(!
silent) printf(
"\tMin throughput per %s \t\t\t= %10.2f %s/sec \n", port,min_throughput,unit);
6654 if(!
silent) printf(
"\tMax throughput per %s \t\t\t= %10.2f %s/sec\n", port,max_throughput,unit);
6655 if(!
silent) printf(
"\tAvg throughput per %s \t\t\t= %10.2f %s/sec\n", port,avg_throughput,unit);
6656 if(!
silent) printf(
"\tMin xfer \t\t\t\t\t= %10.2f %s\n", min_xfer,unit);
6662 if(!
silent) printf(
"\tCPU utilization: Wall time %8.3f CPU time %8.3f CPU utilization %6.2f %%\n\n",
6667 if(!
silent) printf(
"\tCPU utilization: Wall time %8.3f CPU time %8.3f CPU utilization %6.2f %%\n\n",
6678 if(!
silent) printf(
"\tChild[%ld] xfer count = %10.2f %s, Throughput = %10.2f %s/sec, wall=%6.3f, cpu=%6.3f, %%=%6.2f\n",
6684 if(!
silent) printf(
"\tChild[%ld] xfer count = %10.2f %s, Throughput = %10.2f %s/sec\n",
6728 printf(
"\nFork failed\n");
6729 for(xy = 0; xy< xx ; xy++){
6753 printf(
"\nThread create failed\n");
6754 for(xy = 0; xy< xx ; xy++){
6755 Kill((
long long)
myid,(
long long)SIGTERM);
6762 if((
long long)
myid == getpid())
6786 if((
long long)
myid == getpid()){
6791 printf(
"\n\tTest cleanup:");
6829 if(!
silent) printf(
"\n");
6830 if(!
silent) printf(
"\n");
6848 LARGE_INTEGER freq,counter;
6849 double wintime,bigcounter;
6859 perror(
"pit_gettimeofday");
6860 return ((
double) (tp.
tv_sec)) + (((double) tp.
tv_usec) * 0.000001 );
6864 QueryPerformanceFrequency(&freq);
6865 QueryPerformanceCounter(&counter);
6866 bigcounter=(double)counter.HighPart *(
double)0xffffffff +
6867 (double)counter.LowPart;
6868 wintime = (
double)(bigcounter/(double)freq.LowPart);
6869 return((
double)wintime);
6872 #if defined (OSFV4) || defined(OSFV3) || defined(OSFV5) 6875 if (getclock(TIMEOFDAY, (
struct timespec *) &gp) == -1)
6877 return (( (
double) (gp.
tv_sec)) +
6878 ( ((
float)(gp.
tv_nsec)) * 0.000000001 ));
6884 perror(
"pit_gettimeofday");
6885 return ((
double) (tp.
tv_sec)) + (((double) tp.
tv_usec) * 0.000001 );
6890 perror(
"gettimeofday");
6891 return ((
double) (tp.
tv_sec)) + (((double) tp.
tv_usec) * 0.000001 );
6915 volatile long long x[4];
6920 x[(
i & 3)]=*(where);
6945 unsigned long long patt;
6949 volatile unsigned long long *where;
6950 volatile unsigned long long dummy;
6951 long *de_ibuf, *de_obuf;
6957 long long mpattern,xx2;
6960 unsigned long long value,value1;
6961 unsigned long long a= 0x01020304;
6962 unsigned long long b = 0x05060708;
6963 unsigned long long c= 0x01010101;
6964 unsigned long long d = 0x01010101;
6965 unsigned long long pattern_buf;
6969 value = (
a<<32) |
b;
6970 value1 = (
c<<32) | d;
6979 where=(
unsigned long long *)
buffer;
6992 de_ibuf = (
long *)
buffer;
6995 length = (long)
sizeof(
long);
6998 if(de_ibuf[
i]!= de_obuf[
i])
7002 printf(
"\nDedup mis-compare at %ld\n",
7003 (
long long)((recnum*recsize)+(
i*
sizeof(
long))) );
7005 printf(
"\nDedup mis-compare at %lld\n",
7006 (
long long)((recnum*recsize)+(
i*
sizeof(
long))) );
7007 printf(
"Found %.lx Expecting %.lx \n",de_ibuf[
i], de_obuf[
i]);
7018 seed= (
unsigned int)(
base_time+xx2+recnum);
7020 mpattern=(
long long)
rand();
7021 mpattern=(mpattern<<48) | (mpattern<<32) | (mpattern<<16) | mpattern;
7022 mpattern=mpattern+value;
7027 where=(
unsigned long long *)
buffer;
7030 printf(
"\nOOPS You have entered verify_buffer unexpectedly !!! \n");
7036 if((
unsigned long long)(*where) != (
unsigned long long)((pattern_buf<<32) | pattern_buf))
7038 file_position = (
off64_t)( (recnum * recsize)+
i);
7041 printf(
"Error in file: Found ?%lx? Expecting ?%lx? addr %lx\n",*where, (
long long)((pattern_buf<<32)|pattern_buf),where);
7042 printf(
"Error in file: Position %ld \n",file_position);
7043 printf(
"Record # %ld Record size %ld kb \n",recnum,recsize/1024);
7044 printf(
"where %8.8llx loop %ld\n",where,
i);
7046 printf(
"Error in file: Found ?%llx? Expecting ?%llx? addr %lx\n",*where, (
long long)((pattern_buf<<32)|pattern_buf),((
long)where));
7047 printf(
"Error in file: Position %lld \n",file_position);
7048 printf(
"Record # %lld Record size %lld kb \n",recnum,recsize/1024);
7049 printf(
"where %8.8lx loop %lld\n",(
long)where,(
long long)
i);
7064 pattern_buf=mpattern;
7068 pattern_buf= mpattern<<32 | mpattern;
7071 pattern_ptr =(
char *)&pattern_buf;
7073 if(*where != (
unsigned long long)pattern_buf)
7075 file_position = (
off64_t)( (recnum * recsize))+
7077 where2=(
char *)where;
7078 for(k=0;k<
sizeof(
long long);k++){
7079 if(*where2 != *pattern_ptr)
7087 printf(
"Error in file: Position %ld %ld %ld \n",
i,j,k);
7088 printf(
"Error in file: Position %ld \n",file_position);
7089 printf(
"Record # %ld Record size %ld kb \n",recnum,recsize/1024);
7091 printf(
"Error in file: Position %lld %lld %lld \n",
i,j,k);
7092 printf(
"Error in file: Position %lld \n",file_position);
7093 printf(
"Record # %lld Record size %lld kb \n",recnum,recsize/1024);
7095 printf(
"Found pattern: Char >>%c<< Expecting >>%c<<\n", *where2,*pattern_ptr);
7096 printf(
"Found pattern: Hex >>%x<< Expecting >>%x<<\n", *where2,*pattern_ptr);
7101 mpattern=mpattern+value1;
7123 unsigned long long *where;
7128 unsigned long long value,value1;
7129 unsigned long long a = 0x01020304;
7130 unsigned long long b = 0x05060708;
7131 unsigned long long c = 0x01010101;
7132 unsigned long long d = 0x01010101;
7134 value = (
a << 32) |
b;
7135 value1 = (
c << 32) | d;
7155 seed= (
unsigned int)(
base_time+xx2+recnum);
7157 mpattern=(
long long)
rand();
7158 mpattern=(mpattern<<48) | (mpattern<<32) | (mpattern<<16) | mpattern;
7159 mpattern=mpattern+value;
7161 where=(
unsigned long long *)
buffer;
7179 *where = (
long long)(mpattern);
7180 mpattern=mpattern+value1;
7212 long i,cache_lines_per_rec;
7213 long cache_lines_per_cache;
7217 rsize = (long)
l_min((
long long)cache_lines_per_rec,(
long long)cache_lines_per_cache);
7223 for(
i=0;
i<(rsize);
i++)
7225 x[
i%tsize]=*(where);
7266 double writetime[2];
7267 double walltime[2], cputime[2];
7268 double qtime_start,qtime_stop;
7270 double compute_val = (double)0;
7272 double qtime_u_start,qtime_u_stop;
7273 double qtime_s_start,qtime_s_stop;
7278 long long Index = 0;
7279 long long file_flags = 0;
7280 long long traj_size;
7281 unsigned long long writerate[2];
7285 char *wmaddr,*free_addr;
7298 qtime_u_start=qtime_u_stop=0;
7299 qtime_s_start=qtime_s_stop=0;
7301 nbuff=wmaddr=free_addr=0;
7304 hist_time=qtime_start=qtime_stop=0;
7321 wqfd=fopen(
"wol.dat",
"a");
7324 printf(
"Unable to open wol.dat\n");
7327 fprintf(
wqfd,
"Offset in Kbytes Latency in microseconds Transfer size in bytes\n");
7328 rwqfd=fopen(
"rwol.dat",
"a");
7331 printf(
"Unable to open rwol.dat\n");
7334 fprintf(
rwqfd,
"Offset in Kbytes Latency in microseconds Transfer size in bytes\n");
7338 file_flags = O_RDWR|O_SYNC;
7340 file_flags = O_RDWR;
7341 #if defined(O_DSYNC) 7343 file_flags |= O_DSYNC;
7345 #if defined(_HPUX_SOURCE) || defined(linux) || defined(__FreeBSD__) || defined(__DragonFly__) 7347 file_flags |=O_RSYNC|O_SYNC;
7350 #if ! defined(DONT_HAVE_O_DIRECT) 7351 #if defined(linux) || defined(__AIX__) || defined(IRIX) || defined(IRIX64) || defined(Windows) || defined (__FreeBSD__) 7353 file_flags |=O_DIRECT;
7357 file_flags |=O_DIRECTIO;
7381 printf(
"\nCan not open temp file: %s\n",
7390 wval=ftruncate(
fd,0);
7393 printf(
"\n\nSanity check failed. Do not deploy this filesystem in a production environment !\n");
7410 for( j=0; j<ltest; j++)
7423 #if defined(Windows) 7427 GENERIC_READ|GENERIC_WRITE,
7428 FILE_SHARE_WRITE|FILE_SHARE_READ,
7429 NULL,OPEN_ALWAYS,FILE_FLAG_NO_BUFFERING|
7430 FILE_FLAG_WRITE_THROUGH|FILE_FLAG_POSIX_SEMANTICS,
7440 printf(
"\nCan not create temp file: %s\n",
7446 #if defined(Windows) 7450 #if defined(Windows) 7458 #if defined(Windows) 7462 #if defined(Windows) 7466 GENERIC_READ|GENERIC_WRITE,
7467 FILE_SHARE_WRITE|FILE_SHARE_READ,
7468 NULL,OPEN_EXISTING,FILE_FLAG_NO_BUFFERING|
7469 FILE_FLAG_WRITE_THROUGH|FILE_FLAG_POSIX_SEMANTICS,
7477 printf(
"\nCan not open temp file: %s\n",
7482 #if defined(Windows) 7488 ioctl(
fd,VX_SETCACHE,VX_DIRECT);
7489 ioctl(
fd,VX_GETCACHE,&test_foo);
7493 printf(
"\nVxFS advanced setcache feature not available.\n");
7498 #if defined(solaris) 7501 test_foo = directio(
fd, DIRECTIO_ON);
7505 printf(
"\ndirectio not available.\n");
7512 if(
mylockf((
int)
fd, (
int) 1, (
int)0)!=0)
7513 printf(
"File lock for write failed. %d\n",
errno);
7524 printf(
"\nError writing block %ld, fd= %d\n", (
long long)0,
fd);
7526 printf(
"\nError writing block %lld, fd= %d\n", (
long long)0,
fd);
7552 qtime_u_start=utime_so_far();
7553 qtime_s_start=stime_so_far();
7560 compute_val=(double)0;
7568 #if defined(Windows) 7570 SetFilePointer(hand,(LONG)traj_offset,0,FILE_BEGIN);
7577 #if defined(Windows) 7579 traj_offset=SetFilePointer(hand,(LONG)0,0,FILE_CURRENT);
7625 msync(wmaddr,(
size_t)
reclen,MS_ASYNC);
7627 msync(wmaddr,(
size_t)
reclen,MS_SYNC);
7641 #if defined(Windows) 7644 WriteFile(hand, pbuff,
reclen,(LPDWORD)&wval,
7654 printf(
"\nError writing block %ld, fd= %d\n",
i,
7657 printf(
"\nError writing block %lld, fd= %d\n",
i,
7664 #if defined(Windows) 7672 hist_time =(qtime_stop-qtime_start-
time_res);
7680 fprintf(
wqfd,
"%10.1ld %10.0f %10.1ld\n",(traj_offset)/1024,((qtime_stop-qtime_start-
time_res))*1000000,
reclen);
7682 fprintf(
rwqfd,
"%10.1ld %10.0f %10.1ld\n",(traj_offset)/1024,((qtime_stop-qtime_start-
time_res))*1000000,
reclen);
7684 fprintf(
wqfd,
"%10.1lld %10.0f %10.1lld\n",(traj_offset)/1024,((qtime_stop-qtime_start-
time_res))*1000000,
reclen);
7686 fprintf(
rwqfd,
"%10.1lld %10.0f %10.1lld\n",(traj_offset)/1024,((qtime_stop-qtime_start-
time_res))*1000000,
reclen);
7700 qtime_u_stop=utime_so_far();
7701 qtime_s_stop=stime_so_far();
7703 fprintf(
wqfd,
"\nSystem time %10.3f User time %10.3f Real %10.3f (seconds)\n",
7704 (qtime_s_stop-qtime_s_start)/sc_clk_tck,
7705 (qtime_u_stop-qtime_u_start)/sc_clk_tck,
7708 fprintf(
rwqfd,
"\nSystem time %10.3f User time %10.3f Real %10.3f (seconds)\n",
7709 (qtime_s_stop-qtime_s_start)/sc_clk_tck,
7710 (qtime_u_stop-qtime_u_start)/sc_clk_tck,
7738 printf(
"Unlock failed %d\n",
errno);
7745 #if defined(Windows) 7758 if(writetime[j] < (
double).000001)
7781 #if defined(Windows) 7798 if (walltime[j] < cputime[j])
7799 walltime[j] = cputime[j];
7810 for(j=0;j<ltest;j++)
7814 writerate[j]=1000000.0*(writetime[j] / (double)
filebytes64);
7820 (
unsigned long long) ((
double)
filebytes64 / writetime[j]);
7823 writerate[j] >>= 10;
7825 data1[0]=writerate[0];
7828 writerate[1]=(
long long) 0;
7843 if(!
silent) printf(
"%8ld",writerate[0]);
7844 if(!
silent) printf(
"%8ld",writerate[1]);
7845 if(!
silent) fflush(stdout);
7847 if(!
silent) printf(
"%8lld",writerate[0]);
7848 if(!
silent) printf(
"%8lld",writerate[1]);
7849 if(!
silent) fflush(stdout);
7867 double writetime[2];
7868 double walltime[2], cputime[2];
7869 double compute_val = (double)0;
7872 long long Index = 0;
7873 unsigned long long writerate[2];
7875 FILE *stream = NULL;
7886 stdio_buf=(
char *)malloc((
size_t)
reclen);
7892 for( j=0; j<ltest; j++)
7913 if((stream=(FILE *)fopen(
filename,how)) == 0)
7915 printf(
"\nCan not fdopen temp file: %s %lld\n",
7924 printf(
"\nCan not fdopen temp file: %s %d\n",
7927 printf(
"\nCan not fdopen temp file: %s %d\n",
7943 compute_val=(double)0;
7961 printf(
"\nError fwriting block %ld, fd= %d\n",
i,
7964 printf(
"\nError fwriting block %lld, fd= %d\n",
i,
7983 wval=fclose(stream);
7991 if(writetime[j] < (
double).000001)
8000 wval=fflush(stream);
8010 wval=fclose(stream);
8023 if (walltime[j] < cputime[j])
8024 walltime[j] = cputime[j];
8033 for(j=0;j<ltest;j++)
8037 writerate[j]=1000000.0*(writetime[j] / (double)
filebytes64);
8043 (
unsigned long long) ((
double)
filebytes64 / writetime[j]);
8046 writerate[j] >>= 10;
8051 writerate[1]=(
long long)0;
8064 data1[0]=writerate[0];
8066 if(!
silent) printf(
"%9ld",writerate[0]);
8067 if(!
silent) printf(
"%9ld",writerate[1]);
8068 if(!
silent) fflush(stdout);
8070 if(!
silent) printf(
"%9lld",writerate[0]);
8071 if(!
silent) printf(
"%9lld",writerate[1]);
8072 if(!
silent) fflush(stdout);
8086 long long *data1,*data2;
8091 double walltime[2], cputime[2];
8092 double compute_val = (double)0;
8095 long long Index = 0;
8096 unsigned long long readrate[2];
8106 stdio_buf=(
char *)malloc((
size_t)
reclen);
8113 for( j=0; j<ltest; j++ )
8126 if((stream=(FILE *)fopen(
filename,
"r")) == 0)
8128 printf(
"\nCan not fdopen temp file: %s\n",
8136 printf(
"\nCan not fdopen temp file: %s\n",
8149 compute_val=(double)0;
8168 printf(
"\nError freading block %lu %lx\n",
i,
8169 (
unsigned long long)
buffer);
8171 printf(
"\nError freading block %llu %llx\n",
i,
8172 (
unsigned long long)
buffer);
8176 printf(
"\nError freading block %lu %lx\n",
i,
8179 printf(
"\nError freading block %llu %lx\n",
i,
8200 if(readtime[j] < (
double).000001)
8219 if (walltime[j] < cputime[j])
8220 walltime[j] = cputime[j];
8229 for(j=0;j<ltest;j++)
8233 readrate[j]=1000000.0*(readtime[j] / (double)
filebytes64);
8239 (
unsigned long long) ((
double)
filebytes64 / readtime[j]);
8244 data1[0]=readrate[0];
8248 readrate[1]=(
long long)0;
8263 if(!
silent) printf(
"%8ld",readrate[0]);
8264 if(!
silent) printf(
"%9ld",readrate[1]);
8265 if(!
silent) fflush(stdout);
8267 if(!
silent) printf(
"%8lld",readrate[0]);
8268 if(!
silent) printf(
"%9lld",readrate[1]);
8269 if(!
silent) fflush(stdout);
8285 long long *data1,*data2;
8289 double compute_val = (double)0;
8291 double walltime[2], cputime[2];
8293 double qtime_u_start,qtime_u_stop;
8294 double qtime_s_start,qtime_s_stop;
8297 long long traj_size;
8300 long long Index = 0;
8301 unsigned long long readrate[2];
8310 double qtime_start,qtime_stop;
8319 qtime_u_start=qtime_u_stop=0;
8320 qtime_s_start=qtime_s_stop=0;
8322 hist_time=qtime_start=qtime_stop=0;
8328 open_flags = O_RDONLY;
8329 #if defined(_HPUX_SOURCE) || defined(linux) 8331 open_flags |=O_RSYNC|O_SYNC;
8333 #if ! defined(DONT_HAVE_O_DIRECT) 8334 #if defined(linux) || defined(__AIX__) || defined(IRIX) || defined(IRIX64) || defined(Windows) || defined (__FreeBSD__) 8336 open_flags |=O_DIRECT;
8340 open_flags |=O_DIRECTIO;
8353 rqfd=fopen(
"rol.dat",
"a");
8356 printf(
"Unable to open rol.dat\n");
8359 fprintf(
rqfd,
"Offset in Kbytes Latency in microseconds Transfer size in bytes\n");
8360 rrqfd=fopen(
"rrol.dat",
"a");
8363 printf(
"Unable to open rrol.dat\n");
8366 fprintf(
rrqfd,
"Offset in Kbytes Latency in microseconds Transfer size in bytes\n");
8376 for( j=0; j<ltest; j++ )
8389 #if defined(Windows) 8393 GENERIC_READ|GENERIC_WRITE,
8394 FILE_SHARE_WRITE|FILE_SHARE_READ,
8395 NULL,OPEN_EXISTING,FILE_FLAG_NO_BUFFERING|
8396 FILE_FLAG_WRITE_THROUGH|FILE_FLAG_POSIX_SEMANTICS,
8404 printf(
"\nCan not open temporary file %s for read\n",
filename);
8408 #if defined(Windows) 8419 ioctl(
fd,VX_SETCACHE,VX_DIRECT);
8420 ioctl(
fd,VX_GETCACHE,&test_foo);
8424 printf(
"\nVxFS advanced setcache feature not available.\n");
8429 #if defined(solaris) 8432 test_foo = directio(
fd, DIRECTIO_ON);
8436 printf(
"\ndirectio not available.\n");
8442 if(
mylockf((
int)
fd, (
int) 1, (
int)1) != 0)
8443 printf(
"File lock for read failed. %d\n",
errno);
8448 #if defined(Windows) 8458 #if defined(Windows) 8465 printf(
"\nError reading block %d %llx\n", 0,
8466 (
unsigned long long)nbuff);
8468 printf(
"\nError reading block %d %lx\n", 0,
8475 #if defined(Windows) 8478 SetFilePointer(hand,(LONG)0,0,FILE_BEGIN);
8488 qtime_u_start=utime_so_far();
8489 qtime_s_start=stime_so_far();
8496 compute_val=(double)0;
8503 #if defined(Windows) 8517 #if defined(Windows) 8519 SetFilePointer(hand,(LONG)traj_offset,0,FILE_BEGIN);
8526 #if defined(Windows) 8528 traj_offset=SetFilePointer(hand,(LONG)0,0,FILE_CURRENT);
8570 #if defined(Windows) 8573 ReadFile(hand, nbuff,
reclen,(LPDWORD)&wval,
8583 printf(
"\nError reading block %ld %lx\n",
i,
8584 (
unsigned long long)nbuff);
8586 printf(
"\nError reading block %lld %llx\n",
i,
8587 (
unsigned long long)nbuff);
8591 printf(
"\nError reading block %ld %x\n",
i,
8594 printf(
"\nError reading block %lld %lx\n",
i,
8623 hist_time =(qtime_stop-qtime_start-
time_res);
8631 fprintf(
rqfd,
"%10.1ld %10.0f %10.1ld\n",(traj_offset)/1024,(qtime_stop-qtime_start-
time_res)*1000000,
reclen);
8633 fprintf(
rrqfd,
"%10.1ld %10.0f %10.1ld\n",(traj_offset)/1024,(qtime_stop-qtime_start-
time_res)*1000000,
reclen);
8635 fprintf(
rqfd,
"%10.1lld %10.0f %10.1lld\n",(traj_offset)/1024,(qtime_stop-qtime_start-
time_res)*1000000,
reclen);
8637 fprintf(
rrqfd,
"%10.1lld %10.0f %10.1lld\n",(traj_offset)/1024,(qtime_stop-qtime_start-
time_res)*1000000,
reclen);
8650 printf(
"Read unlock failed. %d\n",
errno);
8654 qtime_u_stop=utime_so_far();
8655 qtime_s_stop=stime_so_far();
8657 fprintf(
rqfd,
"\nSystem time %10.3f User time %10.3f Real %10.3f (seconds)\n",
8658 (qtime_s_stop-qtime_s_start)/sc_clk_tck,
8659 (qtime_u_stop-qtime_u_start)/sc_clk_tck,
8662 fprintf(
rrqfd,
"\nSystem time %10.3f User time %10.3f Real %10.3f (seconds)\n",
8663 (qtime_s_stop-qtime_s_start)/sc_clk_tck,
8664 (qtime_u_stop-qtime_u_start)/sc_clk_tck,
8688 #if defined(Windows) 8696 if(readtime[j] < (
double).000001)
8713 #if defined(Windows) 8726 if (walltime[j] < cputime[j])
8727 walltime[j] = cputime[j];
8738 for(j=0;j<ltest;j++)
8742 readrate[j]=1000000.0*(readtime[j] / (double)
filebytes64);
8748 (
unsigned long long) ((
double)
filebytes64 / readtime[j]);
8754 data1[0]=readrate[0];
8758 readrate[1]=(
long long)0;
8773 if(!
silent) printf(
"%9ld",readrate[0]);
8774 if(!
silent) printf(
"%9ld",readrate[1]);
8775 if(!
silent) fflush(stdout);
8777 if(!
silent) printf(
"%9lld",readrate[0]);
8778 if(!
silent) printf(
"%9lld",readrate[1]);
8779 if(!
silent) fflush(stdout);
8794 long long *data1, *data2;
8797 double randreadtime[2];
8799 double walltime[2], cputime[2];
8800 double compute_val = (double)0;
8801 #if defined (bsd4_2) || defined(Windows) 8802 long long rand1,rand2,rand3;
8804 unsigned long long big_rand;
8809 unsigned long long randreadrate[2];
8813 char *wmaddr,*nbuff;
8814 char *maddr,*free_addr;
8816 long long *recnum= 0;
8817 #if defined(VXFS) || defined(solaris) 8826 unsigned long long init[4]={0x12345ULL, 0x23456ULL, 0x34567ULL, 0x45678ULL};
8827 unsigned long long length=4;
8845 recnum = (
long long *)malloc(
sizeof(*recnum)*
numrecs64);
8858 rand1=(
long long)
rand();
8859 rand2=(
long long)
rand();
8860 rand3=(
long long)
rand();
8861 big_rand=(rand1<<32)|(rand2<<16)|(rand3);
8864 rand1=(
long long)
rand();
8865 rand2=(
long long)
rand();
8866 rand3=(
long long)
rand();
8867 big_rand=(rand1<<32)|(rand2<<16)|(rand3);
8875 recnum[
i] = recnum[big_rand];
8876 recnum[big_rand] =
tmp;
8881 fprintf(stderr,
"Random uniqueness fallback.\n");
8884 #if ! defined(DONT_HAVE_O_DIRECT) 8885 #if defined(linux) || defined(__AIX__) || defined(IRIX) || defined(IRIX64) || defined(Windows) || defined (__FreeBSD__) 8897 #if defined(O_DSYNC) 8901 #if defined(_HPUX_SOURCE) || defined(linux) 8903 flags |=O_RSYNC|O_SYNC;
8906 for( j=0; j<2; j++ )
8922 printf(
"\nCan not open temporary file for read/write\n");
8934 ioctl(
fd,VX_SETCACHE,VX_DIRECT);
8935 ioctl(
fd,VX_GETCACHE,&test_foo);
8939 printf(
"\nVxFS advanced setcache feature not available.\n");
8944 #if defined(solaris) 8947 test_foo = directio(
fd, DIRECTIO_ON);
8951 printf(
"\ndirectio not available.\n");
8976 compute_val=(double)0;
9002 rand1=(
long long)
rand();
9003 rand2=(
long long)
rand();
9004 rand3=(
long long)
rand();
9005 big_rand=(rand1<<32)|(rand2<<16)|(rand3);
9009 rand1=(
long long)
rand();
9010 rand2=(
long long)
rand();
9011 rand3=(
long long)
rand();
9012 big_rand=(rand1<<32)|(rand2<<16)|(rand3);
9056 printf(
"\nError reading block at %ld\n",
9059 printf(
"\nError reading block at %lld\n",
9112 rand1=(
long long)
rand();
9113 rand2=(
long long)
rand();
9114 rand3=(
long long)
rand();
9115 big_rand=(rand1<<32)|(rand2<<16)|(rand3);
9119 rand1=(
long long)
rand();
9120 rand2=(
long long)
rand();
9121 rand3=(
long long)
rand();
9122 big_rand=(rand1<<32)|(rand2<<16)|(rand3);
9159 msync(wmaddr,(
size_t)
reclen,MS_ASYNC);
9161 msync(wmaddr,(
size_t)
reclen,MS_SYNC);
9180 printf(
"\nError writing block at %ld\n",
9183 printf(
"\nError writing block at %lld\n",
9233 if(randreadtime[j] < (
double).000001)
9268 if (walltime[j] < cputime[j])
9269 walltime[j] = cputime[j];
9281 randreadrate[1] = 0.0;
9286 randreadrate[j]=1000000.0*(randreadtime[j] / (double)
filebytes64);
9292 (
unsigned long long) ((
double)
filebytes64 / randreadtime[j]);
9295 randreadrate[j] >>= 10;
9305 if(!
silent) printf(
"%8ld",randreadrate[0]);
9306 if(!
silent) printf(
"%8ld",randreadrate[1]);
9307 if(!
silent) fflush(stdout);
9309 if(!
silent) printf(
"%8lld",randreadrate[0]);
9310 if(!
silent) printf(
"%8lld",randreadrate[1]);
9311 if(!
silent) fflush(stdout);
9327 long long *data1,*data2;
9330 double revreadtime[2];
9332 double walltime[2], cputime[2];
9333 double compute_val = (double)0;
9336 long long Index = 0;
9337 unsigned long long revreadrate[2];
9341 char *maddr,*wmaddr;
9345 #if defined(VXFS) || defined(solaris) 9355 open_flags=O_RDONLY;
9356 #if ! defined(DONT_HAVE_O_DIRECT) 9357 #if defined(linux) || defined(__AIX__) || defined(IRIX) || defined(IRIX64) || defined(Windows) || defined (__FreeBSD__) 9359 open_flags |=O_DIRECT;
9363 open_flags |=O_DIRECTIO;
9366 #if defined(_HPUX_SOURCE) || defined(linux) 9368 open_flags |=O_RSYNC|O_SYNC;
9377 for( j=0; j<ltest; j++ )
9389 printf(
"\nCan not open temporary file for read\n");
9401 ioctl(
fd,VX_SETCACHE,VX_DIRECT);
9402 ioctl(
fd,VX_GETCACHE,&test_foo);
9406 printf(
"\nVxFS advanced setcache feature not available.\n");
9411 #if defined(solaris) 9414 test_foo = directio(
fd, DIRECTIO_ON);
9418 printf(
"\ndirectio not available.\n");
9452 compute_val=(double)0;
9492 printf(
"\nError reading block %ld\n",
i);
9494 printf(
"\nError reading block %lld\n",
i);
9550 if(revreadtime[j] < (
double).000001)
9575 if (walltime[j] < cputime[j])
9576 walltime[j] = cputime[j];
9584 for(j=0;j<ltest;j++){
9587 revreadrate[j]=1000000.0*(revreadtime[j] / (double)
filebytes64);
9593 (
unsigned long long) ((
double)
filebytes64 / revreadtime[j]);
9596 revreadrate[j] >>= 10;
9603 if(!
silent) printf(
"%8ld",revreadrate[0]);
9605 if(!
silent) printf(
"%8lld",revreadrate[0]);
9607 if(!
silent) fflush(stdout);
9620 long long *data1,*data2;
9625 double walltime, cputime;
9626 double compute_val = (double)0;
9631 unsigned long long writeinrate;
9636 char *wmaddr,*free_addr,*nbuff;
9637 #if defined(VXFS) || defined(solaris) 9647 maddr=wmaddr=free_addr=nbuff=0;
9651 flags = O_RDWR|O_CREAT;
9652 #if ! defined(DONT_HAVE_O_DIRECT) 9653 #if defined(linux) || defined(__AIX__) || defined(IRIX) || defined(IRIX64) || defined(Windows) || defined (__FreeBSD__) 9664 #if defined(O_DSYNC) 9668 #if defined(_HPUX_SOURCE) || defined(linux) 9670 flags |=O_RSYNC|O_SYNC;
9685 printf(
"\nCan not open temporary file %s for write.\n",
filename);
9692 ioctl(
fd,VX_SETCACHE,VX_DIRECT);
9693 ioctl(
fd,VX_GETCACHE,&test_foo);
9697 printf(
"\nVxFS advanced setcache feature not available.\n");
9702 #if defined(solaris) 9705 test_foo = directio(
fd, DIRECTIO_ON);
9709 printf(
"\ndirectio not available.\n");
9787 msync(wmaddr,(
size_t)
reclen,MS_ASYNC);
9789 msync(wmaddr,(
size_t)
reclen,MS_SYNC);
9807 printf(
"\nError writing block %ld, fd= %d\n",
i,
fd);
9809 printf(
"\nError writing block %lld, fd= %d\n",
i,
fd);
9866 if (walltime < cputime)
9869 if(writeintime < (
double).000001)
9904 writeinrate=1000000.0*(writeintime / (double)
filebytes64);
9908 writeinrate = (
unsigned long long) ((
double)
filebytes64 / writeintime);
9917 if(!
silent) printf(
" %8ld",writeinrate);
9919 if(!
silent) printf(
" %8lld",writeinrate);
9921 if(!
silent) fflush(stdout);
9936 long long *data1, *data2;
9939 double strideintime;
9941 double compute_val = (double)0;
9942 double walltime, cputime;
9944 long long Index = 0;
9946 unsigned long long strideinrate;
9956 #if defined(VXFS) || defined(solaris) 9966 nbuff=maddr=wmaddr=0;
9967 open_flags=O_RDONLY;
9968 #if ! defined(DONT_HAVE_O_DIRECT) 9969 #if defined(linux) || defined(__AIX__) || defined(IRIX) || defined(IRIX64) || defined(Windows) || defined (__FreeBSD__) 9971 open_flags |=O_DIRECT;
9975 open_flags |=O_DIRECTIO;
9978 #if defined(_HPUX_SOURCE) || defined(linux) 9980 open_flags |=O_RSYNC|O_SYNC;
9991 printf(
"\nCan not open temporary file for read\n");
10003 ioctl(
fd,VX_SETCACHE,VX_DIRECT);
10004 ioctl(
fd,VX_GETCACHE,&test_foo);
10008 printf(
"\nVxFS advanced setcache feature not available.\n");
10013 #if defined(solaris) 10016 test_foo = directio(
fd, DIRECTIO_ON);
10020 printf(
"\ndirectio not available.\n");
10030 current_position=0;
10061 savepos64=current_position/
reclen;
10065 wmaddr = &maddr[current_position];
10083 #ifdef NO_PRINT_LLD 10084 printf(
"\nError reading block %ld, fd= %d Filename %s Read returned %ld\n",
i,
fd,
filename,uu);
10085 printf(
"\nSeeked to %ld Reclen = %ld\n", savepos64,
reclen);
10087 printf(
"\nError reading block %lld, fd= %d Filename %s Read returned %lld\n",
i,
fd,
filename,uu);
10088 printf(
"\nSeeked to %lld Reclen = %lld\n", savepos64,
reclen);
10100 current_position+=
reclen;
10129 current_position=0;
10135 current_position=0;
10144 if(
I_LSEEK(
fd,current_position,SEEK_SET)<0)
10156 if(
I_LSEEK(
fd,current_position,SEEK_SET)<0)
10170 if (walltime < cputime)
10171 walltime = cputime;
10198 if(strideintime < (
double).000001)
10224 strideinrate=1000000.0*(strideintime / (double)
filebytes64);
10228 strideinrate = (
unsigned long long) ((
double)
filebytes64 / strideintime);
10231 strideinrate >>= 10;
10236 #ifdef NO_PRINT_LLD 10237 if(!
silent) printf(
" %8ld",strideinrate);
10239 if(!
silent) printf(
" %8lld",strideinrate);
10241 if(!
silent) fflush(stdout);
10251 #ifdef HAVE_ANSIC_C 10252 void pwrite_perf_test(
off64_t kilos64,
long long reclen,
long long *data1,
long long *data2)
10254 void pwrite_perf_test(kilos64,
reclen,data1,data2)
10257 long long *data1,*data2;
10260 double pwritetime[2];
10262 double walltime[2], cputime[2];
10263 double compute_val = (double)0;
10265 long long Index = 0;
10266 unsigned long long pwriterate[2];
10268 long long flags_here = 0;
10272 long long traj_size;
10273 #if defined(VXFS) || defined(solaris) 10292 flags_here = O_SYNC|O_RDWR;
10296 flags_here = O_RDWR;
10298 #if defined(O_DSYNC) 10300 flags_here |= O_DSYNC;
10303 #if defined(_HPUX_SOURCE) || defined(linux) 10305 flags_here |=O_RSYNC|O_SYNC;
10308 #if ! defined(DONT_HAVE_O_DIRECT) 10309 #if defined(linux) || defined(__AIX__) || defined(IRIX) || defined(IRIX64) || defined(Windows) || defined (__FreeBSD__) 10311 flags_here |=O_DIRECT;
10315 flags_here |=O_DIRECTIO;
10322 for( j=0; j<ltest; j++)
10325 flags_here |=O_CREAT;
10337 printf(
"\nCan not open temp file: %s\n",
10345 ioctl(
fd,VX_SETCACHE,VX_DIRECT);
10346 ioctl(
fd,VX_GETCACHE,&test_foo);
10350 printf(
"\nVxFS advanced setcache feature not available.\n");
10355 #if defined(solaris) 10358 test_foo = directio(
fd, DIRECTIO_ON);
10362 printf(
"\ndirectio not available.\n");
10375 compute_val=(double)0;
10390 lock_offset=traj_offset;
10409 #ifdef NO_PRINT_LLD 10410 printf(
"\nError pwriting block %ld, fd= %d\n",
i,
10413 printf(
"\nError pwriting block %lld, fd= %d\n",
i,
10443 if(pwritetime[j] < (
double).000001)
10470 if (walltime[j] < cputime[j])
10471 walltime[j] = cputime[j];
10479 for(j=0;j<ltest;j++){
10482 pwriterate[j]=1000000.0*(pwritetime[j] / (double)
filebytes64);
10488 (
unsigned long long) ((
double)
filebytes64 / pwritetime[j]);
10491 pwriterate[j] >>= 10;
10496 pwriterate[1]=(
long long)0;
10510 #ifdef NO_PRINT_LLD 10511 if(!
silent) printf(
"%8ld",pwriterate[0]);
10512 if(!
silent) printf(
"%9ld",pwriterate[1]);
10513 if(!
silent) fflush(stdout);
10515 if(!
silent) printf(
"%8lld",pwriterate[0]);
10516 if(!
silent) printf(
"%9lld",pwriterate[1]);
10517 if(!
silent) fflush(stdout);
10526 #ifdef HAVE_ANSIC_C 10527 void pread_perf_test(
off64_t kilos64,
long long reclen,
long long *data1,
long long *data2)
10529 void pread_perf_test(kilos64,
reclen,data1,data2)
10532 long long *data1, *data2;
10536 double preadtime[2];
10537 double walltime[2], cputime[2];
10538 double compute_val = (double)0;
10541 long long Index = 0;
10542 unsigned long long preadrate[2];
10548 long long traj_size;
10549 #if defined(VXFS) || defined(solaris) 10556 open_flags=O_RDONLY;
10557 #if ! defined(DONT_HAVE_O_DIRECT) 10558 #if defined(linux) || defined(__AIX__) || defined(IRIX) || defined(IRIX64) || defined(Windows) || defined (__FreeBSD__) 10560 open_flags |=O_DIRECT;
10564 open_flags |=O_DIRECTIO;
10567 #if defined(_HPUX_SOURCE) || defined(linux) || defined(__FreeBSD__) || defined(__DragonFly__) 10569 open_flags |=O_RSYNC|O_SYNC;
10587 for( j=0; j<ltest; j++ )
10600 printf(
"\nCan not open temporary file %s for read\n",
filename);
10607 ioctl(
fd,VX_SETCACHE,VX_DIRECT);
10608 ioctl(
fd,VX_GETCACHE,&test_foo);
10612 printf(
"\nVxFS advanced setcache feature not available.\n");
10617 #if defined(solaris) 10620 test_foo = directio(
fd, DIRECTIO_ON);
10624 printf(
"\ndirectio not available.\n");
10634 compute_val=(double)0;
10650 lock_offset=traj_offset;
10666 if(I_PREAD(((
int)
fd), ((
void*)nbuff), ((
size_t)
reclen),traj_offset )
10669 #ifdef NO_PRINT_LLD 10670 printf(
"\nError reading block %ld %lx\n",
i,(
unsigned long)nbuff);
10672 printf(
"\nError reading block %lld %lx\n",
i,(
unsigned long)nbuff);
10695 if(preadtime[j] < (
double).000001)
10714 if (walltime[j] < cputime[j])
10715 walltime[j] = cputime[j];
10725 for(j=0;j<ltest;j++){
10728 preadrate[j]=1000000.0*(preadtime[j] / (double)
filebytes64);
10734 (
unsigned long long) ((
double)
filebytes64 / preadtime[j]);
10737 preadrate[j] >>= 10;
10741 preadrate[1]=(
long long)0;
10756 #ifdef NO_PRINT_LLD 10757 if(!
silent) printf(
"%8ld",preadrate[0]);
10758 if(!
silent) printf(
"%9ld",preadrate[1]);
10759 if(!
silent) fflush(stdout);
10761 if(!
silent) printf(
"%8lld",preadrate[0]);
10762 if(!
silent) printf(
"%9lld",preadrate[1]);
10763 if(!
silent) fflush(stdout);
10773 #ifdef HAVE_ANSIC_C 10774 void pwritev_perf_test(
off64_t kilos64,
long long reclen,
long long *data1,
long long *data2)
10776 void pwritev_perf_test(kilos64,
reclen,data1,data2)
10779 long long *data1,*data2;
10784 double pwritevtime[2];
10785 double walltime[2], cputime[2];
10786 double compute_val = (double)0;
10787 long long list_off[PVECMAX];
10788 long long numvecs,j,xx;
10789 unsigned long long pwritevrate[2];
10793 #if defined(VXFS) || defined(solaris) 10796 long long flags_here;
10799 unsigned long long init[4]={0x12345ULL, 0x23456ULL, 0x34567ULL, 0x45678ULL},
length=4;
10807 flags_here = O_SYNC|O_RDWR;
10809 flags_here = O_RDWR;
10810 #if defined(O_DSYNC) 10812 flags_here |= O_DSYNC;
10814 #if defined(_HPUX_SOURCE) || defined(linux) 10816 flags_here |=O_RSYNC|O_SYNC;
10819 #if ! defined(DONT_HAVE_O_DIRECT) 10820 #if defined(linux) || defined(__AIX__) || defined(IRIX) || defined(IRIX64) || defined(Windows) || defined (__FreeBSD__) 10822 flags_here |=O_DIRECT;
10826 flags_here |=O_DIRECTIO;
10835 for( j=0; j<ltest; j++)
10838 flags_here |=O_CREAT;
10850 printf(
"\nCan not open temp file: %s\n",
10858 ioctl(
fd,VX_SETCACHE,VX_DIRECT);
10859 ioctl(
fd,VX_GETCACHE,&test_foo);
10863 printf(
"\nVxFS advanced setcache feature not available.\n");
10868 #if defined(solaris) 10871 test_foo = directio(
fd, DIRECTIO_ON);
10875 printf(
"\ndirectio not available.\n");
10902 compute_val=(double)0;
10909 for(xx=0;xx<numvecs;xx++)
10911 piov[xx].piov_base =
10915 piov[xx].piov_len =
reclen;
10916 #ifdef PER_VECTOR_OFFSET 10917 piov[xx].piov_offset = list_off[xx];
10922 if(pwritev(
fd, piov,numvecs
10923 #ifndef PER_VECTOR_OFFSET
10928 #ifdef NO_PRINT_LLD 10929 printf(
"\nError pwriteving block %ld, fd= %d\n",
i,
10932 printf(
"\nError pwriteving block %lld, fd= %d\n",
i,
10958 if(pwritevtime[j] < (
double).000001)
10985 if (walltime[j] < cputime[j])
10986 walltime[j] = cputime[j];
10994 for(j=0;j<ltest;j++){
10997 pwritevrate[j]=1000000.0*(pwritevtime[j] / (double)
filebytes64);
11003 (
unsigned long long) ((
double)
filebytes64 / pwritevtime[j]);
11006 pwritevrate[j] >>= 10;
11010 pwritevrate[1]=(
long long)0;
11024 #ifdef NO_PRINT_LLD 11025 if(!
silent) printf(
"%9ld",pwritevrate[0]);
11026 if(!
silent) printf(
"%10ld",pwritevrate[1]);
11027 if(!
silent) fflush(stdout);
11029 if(!
silent) printf(
"%9lld",pwritevrate[0]);
11030 if(!
silent) printf(
"%10lld",pwritevrate[1]);
11031 if(!
silent) fflush(stdout);
11043 #ifdef HAVE_ANSIC_C 11047 long long *list_off;
11052 long long found,
i,j;
11054 unsigned long long big_rand = -1;
11055 #if defined (bsd4_2) || defined(Windows) 11056 long long rand1,rand2,rand3;
11062 for(j=0;j<numvecs;j++)
11064 for(j=0;j<numvecs;j++)
11073 rand1=(
long long)
rand();
11074 rand2=(
long long)
rand();
11075 rand3=(
long long)
rand();
11076 big_rand=(rand1<<32)|(rand2<<16)|(rand3);
11080 rand1=(
long long)
rand();
11081 rand2=(
long long)
rand();
11082 rand3=(
long long)
rand();
11083 big_rand=(rand1<<32)|(rand2<<16)|(rand3);
11114 #ifdef HAVE_ANSIC_C 11115 void preadv_perf_test(
off64_t kilos64,
long long reclen,
long long *data1,
long long *data2)
11117 void preadv_perf_test(kilos64,
reclen,data1,data2)
11120 long long *data1,*data2;
11124 double preadvtime[2];
11125 double walltime[2], cputime[2];
11126 double compute_val = (double)0;
11127 long long list_off[PVECMAX];
11128 long long numvecs,
i,j,xx;
11130 unsigned long long preadvrate[2];
11132 int fd,open_flags,ltest;
11133 #if defined(VXFS) || defined(solaris) 11138 unsigned long long init[4]={0x12345ULL, 0x23456ULL, 0x34567ULL, 0x45678ULL},
length=4;
11141 open_flags=O_RDONLY;
11142 #if ! defined(DONT_HAVE_O_DIRECT) 11143 #if defined(linux) || defined(__AIX__) || defined(IRIX) || defined(IRIX64) || defined(Windows) || defined (__FreeBSD__) 11145 open_flags |=O_DIRECT;
11149 open_flags |=O_DIRECTIO;
11152 #if defined(_HPUX_SOURCE) || defined(linux) 11154 open_flags |=O_RSYNC|O_SYNC;
11165 for( j=0; j<ltest; j++ )
11179 printf(
"\nCan not open temporary file for preadv\n");
11186 ioctl(
fd,VX_SETCACHE,VX_DIRECT);
11187 ioctl(
fd,VX_GETCACHE,&test_foo);
11191 printf(
"\nVxFS advanced setcache feature not available.\n");
11196 #if defined(solaris) 11199 test_foo = directio(
fd, DIRECTIO_ON);
11203 printf(
"\ndirectio not available.\n");
11230 compute_val=(double)0;
11238 for(xx=0;xx<numvecs;xx++)
11240 piov[xx].piov_base =
11242 piov[xx].piov_len =
reclen;
11243 #ifdef PER_VECTOR_OFFSET 11244 piov[xx].piov_offset = list_off[xx];
11249 if(preadv(
fd, piov, numvecs
11250 #ifndef PER_VECTOR_OFFSET
11253 ) != (numvecs *
reclen))
11255 #ifdef NO_PRINT_LLD 11256 printf(
"\nError preadving block %ld \n",
i);
11258 printf(
"\nError preadving block %lld \n",
i);
11270 if(preadvtime[j] < (
double).000001)
11289 if (walltime[j] < cputime[j])
11290 walltime[j] = cputime[j];
11298 for(j=0;j<ltest;j++){
11301 preadvrate[j]=1000000.0*(preadvtime[j] / (double)
filebytes64);
11307 (
unsigned long long) ((
double)
filebytes64 / preadvtime[j]);
11310 preadvrate[j] >>= 10;
11314 preadvrate[1]=(
long long)0;
11329 #ifdef NO_PRINT_LLD 11330 if(!
silent) printf(
"%10ld",preadvrate[0]);
11331 if(!
silent) printf(
"%9ld",preadvrate[1]);
11332 if(!
silent) printf(
"\n");
11333 if(!
silent) fflush(stdout);
11335 if(!
silent) printf(
"%10lld",preadvrate[0]);
11336 if(!
silent) printf(
"%9lld",preadvrate[1]);
11337 if(!
silent) printf(
"\n");
11338 if(!
silent) fflush(stdout);
11348 #ifdef HAVE_ANSIC_C 11514 #ifdef HAVE_ANSIC_C 11530 printf(
"\nMAX_X too small\n");
11535 printf(
"\nMAX_Y too small\n");
11547 #ifdef HAVE_ANSIC_C 11552 double walltime, cputime;
11564 #ifdef HAVE_ANSIC_C 11577 if(!
silent) printf(
" ");
11589 if (rec_size == 0)
break;
11592 #ifdef NO_PRINT_LLD 11593 if(!
silent) printf(
" %c%ld%c",
'"',rec_size/1024,
'"');
11595 if(!
silent) printf(
" %c%lld%c",
'"',rec_size/1024,
'"');
11598 if(!
silent) printf(
"\n");
11610 #ifdef NO_PRINT_LLD 11611 if(!
silent) printf(
"%c%ld%c ",
'"',current_file_size,
'"');
11613 if(!
silent) printf(
"%c%lld%c ",
'"',current_file_size,
'"');
11617 if(!
silent) printf(
"\n");
11625 #ifdef NO_PRINT_LLD 11626 if(!
silent) printf(
"%c%ld%c ",
'"',current_file_size,
'"');
11628 if(!
silent) printf(
"%c%lld%c ",
'"',current_file_size,
'"');
11633 #ifdef NO_PRINT_LLD 11644 if(!
silent) printf(
"\n");
11650 #ifdef HAVE_ANSIC_C 11663 if(!
silent) printf(
"Excel output is below:\n");
11668 if(!
silent) printf(
"\n%cWriter report%c\n",
'"',
'"');
11672 if(!
silent) printf(
"\n%cRe-writer report%c\n",
'"',
'"');
11679 if(!
silent) printf(
"\n%cReader report%c\n",
'"',
'"');
11683 if(!
silent) printf(
"\n%cRe-Reader report%c\n",
'"',
'"');
11690 if(!
silent) printf(
"\n%cRandom read report%c\n",
'"',
'"');
11694 if(!
silent) printf(
"\n%cRandom write report%c\n",
'"',
'"');
11701 if(!
silent) printf(
"\n%cBackward read report%c\n",
'"',
'"');
11708 if(!
silent) printf(
"\n%cRecord rewrite report%c\n",
'"',
'"');
11715 if(!
silent) printf(
"\n%cStride read report%c\n",
'"',
'"');
11722 if(!
silent) printf(
"\n%cFwrite report%c\n",
'"',
'"');
11726 if(!
silent) printf(
"\n%cRe-Fwrite report%c\n",
'"',
'"');
11733 if(!
silent) printf(
"\n%cFread report%c\n",
'"',
'"');
11737 if(!
silent) printf(
"\n%cRe-Fread report%c\n",
'"',
'"');
11747 if(!
silent) printf(
"\n%cPwrite report%c\n",
'"',
'"');
11751 if(!
silent) printf(
"\n%cRe-Pwrite report%c\n",
'"',
'"');
11758 if(!
silent) printf(
"\n%cPread report%c\n",
'"',
'"');
11762 if(!
silent) printf(
"\n%cRe-Pread report%c\n",
'"',
'"');
11770 if(!
silent) printf(
"\n%cPwritev report%c\n",
'"',
'"');
11774 if(!
silent) printf(
"\n%cRe-Pwritev report%c\n",
'"',
'"');
11781 if(!
silent) printf(
"\n%cPreadv report%c\n",
'"',
'"');
11785 if(!
silent) printf(
"\n%cRe-Preadv report%c\n",
'"',
'"');
11801 #ifdef HAVE_ANSIC_C 11814 if(!
silent) printf(
" ");
11819 if (rec_size == 0)
break;
11822 #ifdef NO_PRINT_LLD 11823 if(!
silent) printf(
" %c%ld%c",
'"',rec_size/1024,
'"');
11825 if(!
silent) printf(
" %c%lld%c",
'"',rec_size/1024,
'"');
11828 if(!
silent) printf(
"\n");
11840 #ifdef NO_PRINT_LLD 11841 if(!
silent) printf(
"%c%ld%c ",
'"',current_file_size,
'"');
11843 if(!
silent) printf(
"%c%lld%c ",
'"',current_file_size,
'"');
11847 if(!
silent) printf(
"\n");
11855 #ifdef NO_PRINT_LLD 11856 if(!
silent) printf(
"%c%ld%c ",
'"',current_file_size,
'"');
11858 if(!
silent) printf(
"%c%lld%c ",
'"',current_file_size,
'"');
11865 if(!
silent) printf(
"\n");
11877 #ifdef HAVE_ANSIC_C 11889 if(!
silent) printf(
"\n%cWriter CPU utilization report (Zero values should be ignored)%c\n",
'"',
'"');
11893 if(!
silent) printf(
"\n%cRe-writer CPU utilization report (Zero values should be ignored)%c\n",
'"',
'"');
11900 if(!
silent) printf(
"\n%cReader CPU utilization report (Zero values should be ignored)%c\n",
'"',
'"');
11904 if(!
silent) printf(
"\n%cRe-Reader CPU utilization report (Zero values should be ignored)%c\n",
'"',
'"');
11911 if(!
silent) printf(
"\n%cRandom read CPU utilization report (Zero values should be ignored)%c\n",
'"',
'"');
11915 if(!
silent) printf(
"\n%cRandom write CPU utilization report (Zero values should be ignored)%c\n",
'"',
'"');
11922 if(!
silent) printf(
"\n%cBackward read CPU utilization report (Zero values should be ignored)%c\n",
'"',
'"');
11929 if(!
silent) printf(
"\n%cRecord rewrite CPU utilization report (Zero values should be ignored)%c\n",
'"',
'"');
11936 if(!
silent) printf(
"\n%cStride read CPU utilization report (Zero values should be ignored)%c\n",
'"',
'"');
11943 if(!
silent) printf(
"\n%cFwrite CPU utilization report (Zero values should be ignored)%c\n",
'"',
'"');
11947 if(!
silent) printf(
"\n%cRe-Fwrite CPU utilization report (Zero values should be ignored)%c\n",
'"',
'"');
11954 if(!
silent) printf(
"\n%cFread CPU utilization report (Zero values should be ignored)%c\n",
'"',
'"');
11958 if(!
silent) printf(
"\n%cRe-Fread CPU utilization report (Zero values should be ignored)%c\n",
'"',
'"');
11968 if(!
silent) printf(
"\n%cPwrite CPU utilization report (Zero values should be ignored)%c\n",
'"',
'"');
11972 if(!
silent) printf(
"\n%cRe-Pwrite CPU utilization report (Zero values should be ignored)%c\n",
'"',
'"');
11979 if(!
silent) printf(
"\n%cPread CPU utilization report (Zero values should be ignored)%c\n",
'"',
'"');
11983 if(!
silent) printf(
"\n%cRe-Pread CPU utilization report (Zero values should be ignored)%c\n",
'"',
'"');
11991 if(!
silent) printf(
"\n%cPwritev CPU utilization report (Zero values should be ignored)%c\n",
'"',
'"');
11995 if(!
silent) printf(
"\n%cRe-Pwritev CPU utilization report (Zero values should be ignored)%c\n",
'"',
'"');
12002 if(!
silent) printf(
"\n%cPreadv CPU utilization report (Zero values should be ignored)%c\n",
'"',
'"');
12006 if(!
silent) printf(
"\n%cRe-Preadv CPU utilization report (Zero values should be ignored)%c\n",
'"',
'"');
12017 #ifdef HAVE_ANSIC_C 12019 alloc_mem(
long long size,
int shared_flag)
12032 #if defined(solaris) 12033 char mmapFileName[]=
"mmap_tmp_XXXXXX";
12044 addr=(
char *)malloc((
size_t)size1);
12049 addr=(
char *)malloc((
size_t)size1);
12055 addr=(
char *)malloc((
size_t)size1);
12061 shmid=(int)shmget((key_t)(IPC_PRIVATE), (
size_t)size1 , (int)(IPC_CREAT|0666));
12064 printf(
"\nUnable to get shared memory segment(shmget)\n");
12065 #ifdef NO_PRINT_LLD 12066 printf(
"shmid = %d, size = %ld, size1 = %lu, Error %d\n",shmid,size,(
size_t)size1,
errno);
12068 printf(
"shmid = %d, size = %lld, size1 = %lu, Error %d\n",shmid,size,(
unsigned long)size1,
errno);
12079 addr = (
char *)shmat((
int)shmid, 0, 0);
12080 #ifdef _64BIT_ARCH_ 12081 if((
long long)addr == (
long long)-1)
12083 if((
long)addr == (long)-1)
12086 printf(
"\nUnable to get shared memory segment\n");
12087 printf(
"..Error %d\n",
errno);
12090 shmctl(shmid, IPC_RMID, 0);
12096 #if defined(bsd4_2) && !defined(macosx) 12097 if((tfd = creat(
"mmap.tmp", 0666))<0)
12099 printf(
"Unable to create tmp file\n");
12102 addr=(
char *)mmap(0,&size1,PROT_WRITE|PROT_READ,
12103 MAP_ANON|MAP_SHARED, tfd, 0);
12108 #if defined(solaris) 12109 tfd=mkstemp(mmapFileName);
12112 printf(
"Unable to create tmp file\n");
12115 dumb=(
char *)malloc((
size_t)size1);
12117 write(tfd,dumb,size1);
12119 addr=(
char *)mmap(0,(
size_t)size1,PROT_WRITE|PROT_READ,
12120 MAP_SHARED, tfd, 0);
12123 #if defined(SCO) || defined(SCO_Unixware_gcc) || defined(Windows) 12124 char mmapFileName[]=
"mmap_tmp_XXXXXX";
12125 tfd=mkstemp(mmapFileName);
12128 printf(
"Unable to create tmp file\n");
12131 dumb=(
char *)malloc((
size_t)size1);
12133 write(tfd,dumb,size1);
12135 addr=(
char *)mmap(0,(
size_t)size1,PROT_WRITE|PROT_READ,
12136 MAP_SHARED, tfd, 0);
12139 addr=(
char *)mmap(0,(
size_t)size1,PROT_WRITE|PROT_READ,
12140 MAP_ANONYMOUS|MAP_SHARED, -1, 0);
12144 if((
char *)addr == (
char *)-1)
12146 printf(
"\nUnable to get memory segment\n");
12147 printf(
"Error %d\n",
errno);
12151 printf(
"Got shared memory for size %d\n",size1);
12160 #ifdef HAVE_ANSIC_C 12161 void Poll(
long long time1)
12168 howlong.
tv_sec=(int)(time1/100000);
12169 howlong.
tv_usec=(int)(time1%100000);
12170 select(0, 0, 0, 0, &howlong);
12176 #ifdef HAVE_ANSIC_C 12177 long long l_max(
long long one,
long long two)
12192 #ifdef HAVE_ANSIC_C 12193 void Kill(
long long pid,
long long sig)
12209 #ifdef HAVE_ANSIC_C 12210 long long l_min(
long long num1,
long long num2)
12213 long long num1,num2;
12226 #ifdef HAVE_ANSIC_C 12234 int *t_rangeptr, *t_rangecurs;
12235 int *saveptr = (
int *)0;
12240 t_rangeptr = (
int *) malloc((
size_t)
sizeof(int)*
t_count);
12241 saveptr = t_rangeptr;
12243 t_rangecurs = t_rangeptr;
12245 *(t_rangecurs++) =
i;
12270 #ifdef HAVE_ANSIC_C 12277 char command[1024];
12279 strcpy(command,
"umount ");
12285 for (
i = 1;
i < 200; ++
i) {
12291 strcpy(command,
"mount ");
12297 for (
i = 1;
i < 10; ++
i) {
12308 #ifdef HAVE_ANSIC_C 12318 double starttime1 = 0;
12321 double compute_val = (double)0;
12322 float delay = (float)0;
12323 double thread_qtime_stop,thread_qtime_start;
12325 double desired_op_rate_time;
12326 double actual_rate;
12330 long long flags,traj_size;
12335 long long recs_per_buffer;
12336 long long stopped,
i;
12337 off64_t written_so_far, read_so_far, re_written_so_far,re_read_so_far;
12342 char *wmaddr,*free_addr;
12343 char now_string[30];
12344 int anwser,bind_cpu,wval;
12345 #if defined(VXFS) || defined(solaris) 12351 FILE *thread_Lwqfd;
12354 struct cache *gc=0;
12362 nbuff=maddr=wmaddr=free_addr=0;
12363 hist_time=thread_qtime_stop=thread_qtime_start=0;
12364 thread_wqfd=
w_traj_fd=thread_Lwqfd=(FILE *)0;
12365 traj_offset=walltime=cputime=0;
12376 written_so_far=read_so_far=re_written_so_far=re_read_so_far=0;
12384 xx = (
long long)((
long)
x);
12392 #if defined(_HPUX_SOURCE) || defined(linux) 12396 #if defined(_HPUX_SOURCE) 12397 pthread_processor_bind_np(PTHREAD_BIND_FORCED_NP,
12398 (pthread_spu_t *)&anwser, (pthread_spu_t)bind_cpu, pthread_self());
12403 CPU_SET(bind_cpu, &cpuset);
12405 pthread_setaffinity_np(pthread_self(),
sizeof(cpuset),&cpuset);
12418 #ifdef NO_PRINT_LLD 12419 printf(
"\nStarting child %ld\n",xx);
12421 printf(
"\nStarting child %lld\n",xx);
12424 #ifdef NO_PRINT_LLD 12425 printf(
"\nStarting process %d slot %ld\n",getpid(),xx);
12427 printf(
"\nStarting process %d slot %lld\n",getpid(),xx);
12437 #ifdef NO_PRINT_LLD 12445 #ifdef NO_PRINT_LLD 12456 #if defined(Windows) 12460 GENERIC_READ|GENERIC_WRITE,
12461 FILE_SHARE_WRITE|FILE_SHARE_READ,
12462 NULL,OPEN_ALWAYS,FILE_FLAG_NO_BUFFERING|
12463 FILE_FLAG_WRITE_THROUGH|FILE_FLAG_POSIX_SEMANTICS,
12469 flags=O_RDWR|O_SYNC|O_CREAT;
12471 flags=O_RDWR|O_CREAT;
12472 #if defined(O_DSYNC) 12476 #if defined(_HPUX_SOURCE) || defined(linux) 12478 flags |=O_RSYNC|O_SYNC;
12481 #if ! defined(DONT_HAVE_O_DIRECT) 12482 #if defined(linux) || defined(__AIX__) || defined(IRIX) || defined(IRIX64) || defined(Windows) || defined (__FreeBSD__) 12488 flags |=O_DIRECTIO;
12491 #if defined(Windows) 12495 GENERIC_READ|GENERIC_WRITE,
12496 FILE_SHARE_WRITE|FILE_SHARE_READ,
12497 NULL,OPEN_EXISTING,FILE_FLAG_NO_BUFFERING|
12498 FILE_FLAG_WRITE_THROUGH|FILE_FLAG_POSIX_SEMANTICS,
12509 printf(
"\nCan not open temp file: %s\n",
12514 #if defined(Windows) 12520 ioctl(
fd,VX_SETCACHE,VX_DIRECT);
12521 ioctl(
fd,VX_GETCACHE,&test_foo);
12525 printf(
"\nVxFS advanced setcache feature not available.\n");
12530 #if defined(solaris) 12533 test_foo = directio(
fd, DIRECTIO_ON);
12537 printf(
"\ndirectio not available.\n");
12553 nbuff=&nbuff[(xx%recs_per_buffer)*
reclen];
12573 fprintf(
newstdout,
"Child %d waiting for go from master\n",(
int)xx);
12579 fprintf(
newstdout,
"Child %d received go from master\n",(
int)xx);
12586 Poll((
long long)1);
12595 if(
mylockf((
int)
fd, (
int) 1, (
int)0) != 0)
12596 printf(
"File lock for write failed. %d\n",
errno);
12599 sprintf(tmpname,
"Child_%d_wol.dat",(
int)xx);
12600 thread_wqfd=fopen(tmpname,
"a");
12606 printf(
"Unable to open %s\n",tmpname);
12609 fprintf(thread_wqfd,
"Offset in Kbytes Latency in microseconds Transfer size in bytes\n");
12613 sprintf(tmpname,
"Child_%d.log",(
int)xx);
12614 thread_Lwqfd=fopen(tmpname,
"a");
12615 if(thread_Lwqfd==0)
12620 printf(
"Unable to open %s\n",tmpname);
12624 fprintf(thread_Lwqfd,
"%-25s %s",
"Write test start: ",now_string);
12639 #if defined(Windows) 12641 SetFilePointer(hand,(LONG)traj_offset,0,FILE_BEGIN);
12648 #if defined(Windows) 12650 traj_offset=SetFilePointer(hand,0,0,FILE_CURRENT);
12688 printf(
"\nCan not open temp file: %s\n",
12712 printf(
"\n(%ld) Stopped by another\n", (
long)xx);
12731 msync(wmaddr,(
size_t)
reclen,MS_ASYNC);
12733 msync(wmaddr,(
size_t)
reclen,MS_SYNC);
12753 #if defined(Windows) 12756 WriteFile(hand,nbuff,
reclen, (LPDWORD)&wval,0);
12762 #if defined(Windows) 12795 printf(
"\n(%ld) Stopped by another\n", (
long)xx);
12806 #ifdef NO_PRINT_LLD 12807 printf(
"\nError writing block %ld, fd= %d\n",
i,
12810 printf(
"\nError writing block %lld, fd= %d\n",
i,
12828 hist_time =(thread_qtime_stop-thread_qtime_start);
12834 desired_op_rate_time = ((double)1.0/(
double)
op_rate);
12835 actual_rate = (double)(thread_qtime_stop-thread_qtime_start);
12840 if( actual_rate < desired_op_rate_time)
12841 my_unap((
unsigned long long)((desired_op_rate_time-actual_rate)*1000000.0 ));
12846 #ifdef NO_PRINT_LLD 12847 fprintf(thread_wqfd,
"%10.1ld %10.0f %10.1ld\n",(traj_offset)/1024,((thread_qtime_stop-thread_qtime_start-
time_res))*1000000,
reclen);
12849 fprintf(thread_wqfd,
"%10.1lld %10.0f %10.1lld\n",(traj_offset)/1024,((thread_qtime_stop-thread_qtime_start-
time_res))*1000000,
reclen);
12854 written_so_far+=
reclen/1024;
12857 written_so_far-=
reclen/1024;
12870 printf(
"Write unlock failed. %d\n",
errno);
12897 #if defined(Windows) 12947 printf(
" child/slot: %lld, wall-cpu: %8.3f %8.3fC" " -> %6.2f%%\n",
12957 #ifdef NO_PRINT_LLD 12958 printf(
"\nChild finished %ld\n",xx);
12960 printf(
"\nChild finished %lld\n",xx);
12971 #if defined(Windows) 12978 if(
Q_flag && (thread_wqfd !=0) )
12979 fclose(thread_wqfd);
12987 fprintf(thread_Lwqfd,
"%-25s %s",
"Write test finished: ",now_string);
12988 fclose(thread_Lwqfd);
13009 #ifdef HAVE_ANSIC_C 13011 thread_pwrite_test(
void *
x)
13014 thread_pwrite_test(
x)
13019 double starttime1 = 0;
13022 double compute_val = (double)0;
13023 float delay = (float)0;
13024 double thread_qtime_stop,thread_qtime_start;
13026 double desired_op_rate_time;
13027 double actual_rate;
13030 long long flags,traj_size;
13035 long long recs_per_buffer;
13036 long long stopped,
i;
13037 off64_t written_so_far, read_so_far, re_written_so_far,re_read_so_far;
13042 char *wmaddr,*free_addr;
13043 char now_string[30];
13044 int anwser,bind_cpu,wval;
13045 #if defined(VXFS) || defined(solaris) 13051 FILE *thread_Lwqfd;
13054 struct cache *gc=0;
13062 nbuff=maddr=wmaddr=free_addr=0;
13063 hist_time=thread_qtime_stop=thread_qtime_start=0;
13064 thread_wqfd=
w_traj_fd=thread_Lwqfd=(FILE *)0;
13065 traj_offset=walltime=cputime=0;
13076 written_so_far=read_so_far=re_written_so_far=re_read_so_far=0;
13084 xx = (
long long)((
long)
x);
13092 #if defined( _HPUX_SOURCE ) || defined ( linux ) 13096 #if defined( _HPUX_SOURCE ) 13097 pthread_processor_bind_np(PTHREAD_BIND_FORCED_NP,
13098 (pthread_spu_t *)&anwser, (pthread_spu_t)bind_cpu, pthread_self());
13102 CPU_SET(bind_cpu, &cpuset);
13104 pthread_setaffinity_np(pthread_self(),
sizeof(cpuset),&cpuset);
13117 #ifdef NO_PRINT_LLD 13118 printf(
"\nStarting child %ld\n",xx);
13120 printf(
"\nStarting child %lld\n",xx);
13123 #ifdef NO_PRINT_LLD 13124 printf(
"\nStarting process %d slot %ld\n",getpid(),xx);
13126 printf(
"\nStarting process %d slot %lld\n",getpid(),xx);
13136 #ifdef NO_PRINT_LLD 13144 #ifdef NO_PRINT_LLD 13168 flags=O_RDWR|O_SYNC|O_CREAT;
13170 flags=O_RDWR|O_CREAT;
13171 #if defined(O_DSYNC) 13175 #if defined(_HPUX_SOURCE) || defined(linux) 13177 flags |=O_RSYNC|O_SYNC;
13180 #if ! defined(DONT_HAVE_O_DIRECT) 13181 #if defined(linux) || defined(__AIX__) || defined(IRIX) || defined(IRIX64) || defined(Windows) || defined (__FreeBSD__) 13187 flags |=O_DIRECTIO;
13195 printf(
"\nCan not open temp file: %s\n",
13203 ioctl(
fd,VX_SETCACHE,VX_DIRECT);
13204 ioctl(
fd,VX_GETCACHE,&test_foo);
13208 printf(
"\nVxFS advanced setcache feature not available.\n");
13213 #if defined(solaris) 13216 test_foo = directio(
fd, DIRECTIO_ON);
13220 printf(
"\ndirectio not available.\n");
13236 nbuff=&nbuff[(xx%recs_per_buffer)*
reclen];
13256 fprintf(
newstdout,
"Child %d waiting for go from master\n",(
int)xx);
13262 fprintf(
newstdout,
"Child %d received go from master\n",(
int)xx);
13269 Poll((
long long)1);
13278 if(
mylockf((
int)
fd, (
int) 1, (
int)0) != 0)
13279 printf(
"File lock for write failed. %d\n",
errno);
13282 sprintf(tmpname,
"Child_%d_pwol.dat",(
int)xx);
13283 thread_wqfd=fopen(tmpname,
"a");
13289 printf(
"Unable to open %s\n",tmpname);
13292 fprintf(thread_wqfd,
"Offset in Kbytes Latency in microseconds Transfer size in bytes\n");
13296 sprintf(tmpname,
"Child_%d.log",(
int)xx);
13297 thread_Lwqfd=fopen(tmpname,
"a");
13298 if(thread_Lwqfd==0)
13303 printf(
"Unable to open %s\n",tmpname);
13307 fprintf(thread_Lwqfd,
"%-25s %s",
"Pwrite test start: ",now_string);
13361 printf(
"\n(%ld) Stopped by another\n", (
long)xx);
13374 wmaddr = &maddr[traj_offset];
13380 msync(wmaddr,(
size_t)
reclen,MS_ASYNC);
13382 msync(wmaddr,(
size_t)
reclen,MS_SYNC);
13402 wval=I_PWRITE(
fd, nbuff,
reclen, traj_offset);
13433 printf(
"\n(%ld) Stopped by another\n", (
long)xx);
13444 #ifdef NO_PRINT_LLD 13445 printf(
"\nError pwriting block %ld, fd= %d\n",
i,
13448 printf(
"\nError pwriting block %lld, fd= %d\n",
i,
13471 hist_time =(thread_qtime_stop-thread_qtime_start-
time_res);
13477 desired_op_rate_time = ((double)1.0/(
double)
op_rate);
13478 actual_rate = (double)(thread_qtime_stop-thread_qtime_start);
13483 if( actual_rate < desired_op_rate_time)
13484 my_unap((
unsigned long long) ((desired_op_rate_time-actual_rate)*1000000.0 ));
13489 #ifdef NO_PRINT_LLD 13490 fprintf(thread_wqfd,
"%10.1ld %10.0f %10.1ld\n",(traj_offset)/1024,((thread_qtime_stop-thread_qtime_start-
time_res))*1000000,
reclen);
13492 fprintf(thread_wqfd,
"%10.1lld %10.0f %10.1lld\n",(traj_offset)/1024,((thread_qtime_stop-thread_qtime_start-
time_res))*1000000,
reclen);
13497 written_so_far+=
reclen/1024;
13500 written_so_far-=
reclen/1024;
13508 printf(
"Write unlock failed. %d\n",
errno);
13580 printf(
" child/slot: %lld, wall-cpu: %8.3f %8.3fC" " -> %6.2f%%\n",
13590 #ifdef NO_PRINT_LLD 13591 printf(
"\nChild finished %ld\n",xx);
13593 printf(
"\nChild finished %lld\n",xx);
13606 if(
Q_flag && (thread_wqfd !=0) )
13607 fclose(thread_wqfd);
13615 fprintf(thread_Lwqfd,
"%-25s %s",
"Pwrite test finished: ",now_string);
13616 fclose(thread_Lwqfd);
13637 #ifdef HAVE_ANSIC_C 13650 double compute_val = (double)0;
13652 float delay = (float)0;
13653 double thread_qtime_stop,thread_qtime_start;
13655 double desired_op_rate_time;
13656 double actual_rate;
13663 long long flags = 0;
13664 double starttime1 = 0;
13666 long long recs_per_buffer,traj_size;
13668 off64_t written_so_far, read_so_far, re_written_so_far,re_read_so_far=0;
13671 char *maddr,*free_addr;
13673 char now_string[30];
13674 int anwser,bind_cpu,wval;
13675 FILE *thread_rwqfd,*thread_Lwqfd;
13677 #if defined(VXFS) || defined(solaris) 13681 struct cache *gc=0;
13689 wmaddr=nbuff=maddr=free_addr=0;
13690 thread_rwqfd=
w_traj_fd=thread_Lwqfd=(FILE *)0;
13691 hist_time=traj_offset=thread_qtime_stop=thread_qtime_start=0;
13692 walltime=cputime=0;
13695 written_so_far=read_so_far=re_written_so_far=re_read_so_far=0;
13710 xx=(
long long)((
long)
x);
13717 #if defined( _HPUX_SOURCE ) || defined ( linux ) 13721 #if defined( _HPUX_SOURCE ) 13722 pthread_processor_bind_np(PTHREAD_BIND_FORCED_NP,
13723 (pthread_spu_t *)&anwser, (pthread_spu_t)bind_cpu, pthread_self());
13727 CPU_SET(bind_cpu, &cpuset);
13729 pthread_setaffinity_np(pthread_self(),
sizeof(cpuset),&cpuset);
13745 #ifdef NO_PRINT_LLD 13746 printf(
"\nStarting child %ld\n",xx);
13748 printf(
"\nStarting child %lld\n",xx);
13751 #ifdef NO_PRINT_LLD 13752 printf(
"\nStarting process %d slot %ld\n",getpid(),xx);
13754 printf(
"\nStarting process %d slot %lld\n",getpid(),xx);
13764 #ifdef NO_PRINT_LLD 13772 #ifdef NO_PRINT_LLD 13781 #if defined(O_DSYNC) 13785 #if defined(_HPUX_SOURCE) || defined(linux) 13787 flags |=O_RSYNC|O_SYNC;
13790 #if ! defined(DONT_HAVE_O_DIRECT) 13791 #if defined(linux) || defined(__AIX__) || defined(IRIX) || defined(IRIX64) || defined(Windows) || defined (__FreeBSD__) 13797 flags |=O_DIRECTIO;
13801 #if defined(Windows) 13805 GENERIC_READ|GENERIC_WRITE,
13806 FILE_SHARE_WRITE|FILE_SHARE_READ,
13807 NULL,OPEN_ALWAYS,FILE_FLAG_NO_BUFFERING|
13808 FILE_FLAG_WRITE_THROUGH|FILE_FLAG_POSIX_SEMANTICS,
13819 #ifdef NO_PRINT_LLD 13820 printf(
"\nChild %ld\n",xx);
13822 printf(
"\nChild %lld\n",xx);
13828 #if defined(Windows) 13834 ioctl(
fd,VX_SETCACHE,VX_DIRECT);
13835 ioctl(
fd,VX_GETCACHE,&test_foo);
13839 printf(
"\nVxFS advanced setcache feature not available.\n");
13844 #if defined(solaris) 13847 test_foo = directio(
fd, DIRECTIO_ON);
13851 printf(
"\ndirectio not available.\n");
13870 sprintf(tmpname,
"Child_%d_rwol.dat",(
int)xx);
13871 thread_rwqfd=fopen(tmpname,
"a");
13872 if(thread_rwqfd==0)
13874 printf(
"Unable to open %s\n",tmpname);
13880 fprintf(thread_rwqfd,
"Offset in Kbytes Latency in microseconds Transfer size in bytes\n");
13884 sprintf(tmpname,
"Child_%d.log",(
int)xx);
13885 thread_Lwqfd=fopen(tmpname,
"a");
13886 if(thread_Lwqfd==0)
13891 printf(
"Unable to open %s\n",tmpname);
13895 fprintf(thread_Lwqfd,
"%-25s %s",
"Rewrite test start: ",now_string);
13904 fprintf(
newstdout,
"Child %d waiting for go from master\n",(
int)xx);
13910 fprintf(
newstdout,
"Child %d received go from master\n",(
int)xx);
13917 Poll((
long long)1);
13926 if(
mylockf((
int)
fd, (
int) 1, (
int)0) != 0)
13927 printf(
"File lock for write failed. %d\n",
errno);
13943 #if defined(Windows) 13945 SetFilePointer(hand,(LONG)traj_offset,0,FILE_BEGIN);
13952 #if defined(Windows) 13954 traj_offset=SetFilePointer(hand,(LONG)0,0,FILE_CURRENT);
13970 printf(
"\nStop_flag 1\n");
13995 msync(wmaddr,(
size_t)
reclen,MS_ASYNC);
13997 msync(wmaddr,(
size_t)
reclen,MS_SYNC);
14017 #if defined(Windows) 14020 WriteFile(hand,nbuff,
reclen,(LPDWORD)&wval,0);
14030 printf(
"\nStop_flag 2\n");
14033 #ifdef NO_PRINT_LLD 14034 printf(
"\nError writing block %ld, fd= %d\n",
i,
14037 printf(
"\nError writing block %lld, fd= %d\n",
i,
14052 re_written_so_far+=
reclen/1024;
14057 re_written_so_far-=
reclen/1024;
14063 hist_time =(thread_qtime_stop-thread_qtime_start-
time_res);
14069 desired_op_rate_time = ((double)1.0/(
double)
op_rate);
14070 actual_rate = (double)(thread_qtime_stop-thread_qtime_start);
14075 if( actual_rate < desired_op_rate_time)
14076 my_unap((
unsigned long long) ((desired_op_rate_time-actual_rate)*1000000.0 ));
14081 #ifdef NO_PRINT_LLD 14082 fprintf(thread_rwqfd,
"%10.1ld %10.0f %10.1ld\n",(traj_offset)/1024,((thread_qtime_stop-thread_qtime_start-
time_res))*1000000,
reclen);
14084 fprintf(thread_rwqfd,
"%10.1lld %10.0f %10.1lld\n",(traj_offset)/1024,((thread_qtime_stop-thread_qtime_start-
time_res))*1000000,
reclen);
14095 printf(
"Write unlock failed. %d\n",
errno);
14117 #if defined(Windows) 14180 #if defined(Windows) 14189 if(
Q_flag && (thread_rwqfd !=0) )
14190 fclose(thread_rwqfd);
14195 #ifdef NO_PRINT_LLD 14196 printf(
"\nChild Stopping %ld\n",xx);
14198 printf(
"\nChild Stopping %lld\n",xx);
14204 fprintf(thread_Lwqfd,
"%-25s %s",
"Rewrite test finished: ",now_string);
14205 fclose(thread_Lwqfd);
14225 #ifdef HAVE_ANSIC_C 14240 FILE *thread_Lwqfd;
14241 long long flags = 0;
14244 double starttime1 = 0;
14247 double thread_qtime_start,thread_qtime_stop;
14249 double desired_op_rate_time;
14250 double actual_rate;
14251 double compute_val = (double)0;
14252 off64_t written_so_far, read_so_far, re_written_so_far,re_read_so_far;
14253 long long recs_per_buffer,traj_size;
14261 char now_string[30];
14262 int anwser,bind_cpu;
14264 #if defined(VXFS) || defined(solaris) 14268 struct cache *gc=0;
14275 thread_rqfd=thread_Lwqfd=
r_traj_fd=(FILE *)0;
14276 hist_time=traj_offset=thread_qtime_stop=thread_qtime_start=0;
14277 walltime=cputime=0;
14280 written_so_far=read_so_far=re_written_so_far=re_read_so_far=0;
14296 xx = (
long long)((
long)
x);
14303 #if defined( _HPUX_SOURCE ) || defined ( linux ) 14307 #if defined(_HPUX_SOURCE) 14308 pthread_processor_bind_np(PTHREAD_BIND_FORCED_NP,
14309 (pthread_spu_t *)&anwser, (pthread_spu_t)bind_cpu, pthread_self());
14314 CPU_SET(bind_cpu, &cpuset);
14316 pthread_setaffinity_np(pthread_self(),
sizeof(cpuset),&cpuset);
14332 #ifdef NO_PRINT_LLD 14340 #ifdef NO_PRINT_LLD 14347 flags=O_RDONLY|O_SYNC;
14350 #if defined(_HPUX_SOURCE) || defined(linux) 14352 flags |=O_RSYNC|O_SYNC;
14355 #if ! defined(DONT_HAVE_O_DIRECT) 14356 #if defined(linux) || defined(__AIX__) || defined(IRIX) || defined(IRIX64) || defined(Windows) || defined (__FreeBSD__) 14362 flags |=O_DIRECTIO;
14365 #if defined(Windows) 14369 GENERIC_READ|GENERIC_WRITE,
14370 FILE_SHARE_WRITE|FILE_SHARE_READ,
14371 NULL,OPEN_EXISTING,FILE_FLAG_NO_BUFFERING|
14372 FILE_FLAG_WRITE_THROUGH|FILE_FLAG_POSIX_SEMANTICS,
14374 SetFilePointer(hand,(LONG)0,0,FILE_BEGIN);
14387 #if defined(Windows) 14397 ioctl(
fd,VX_SETCACHE,VX_DIRECT);
14398 ioctl(
fd,VX_GETCACHE,&test_foo);
14402 printf(
"\nVxFS advanced setcache feature not available.\n");
14407 #if defined(solaris) 14410 test_foo = directio(
fd, DIRECTIO_ON);
14414 printf(
"\ndirectio not available.\n");
14429 #ifdef NO_PRINT_LLD 14430 printf(
"\nStarting child %ld\n",xx);
14432 printf(
"\nStarting child %lld\n",xx);
14435 #ifdef NO_PRINT_LLD 14436 printf(
"\nStarting process %d slot %ld\n",getpid(),xx);
14438 printf(
"\nStarting process %d slot %lld\n",getpid(),xx);
14447 sprintf(tmpname,
"Child_%d_rol.dat",(
int)xx);
14448 thread_rqfd=fopen(tmpname,
"a");
14454 printf(
"Unable to open %s\n",tmpname);
14457 fprintf(thread_rqfd,
"Offset in Kbytes Latency in microseconds Transfer size in bytes\n");
14461 sprintf(tmpname,
"Child_%d.log",(
int)xx);
14462 thread_Lwqfd=fopen(tmpname,
"a");
14463 if(thread_Lwqfd==0)
14468 printf(
"Unable to open %s\n",tmpname);
14472 fprintf(thread_Lwqfd,
"%-25s %s",
"Read test start: ",now_string);
14490 Poll((
long long)1);
14493 if(
mylockf((
int)
fd, (
int) 1, (
int)1) != 0)
14494 printf(
"File lock for read failed. %d\n",
errno);
14508 #if defined(Windows) 14522 #if defined(Windows) 14524 SetFilePointer(hand,(LONG)traj_offset,0,FILE_BEGIN);
14531 #if defined(Windows) 14533 traj_offset=SetFilePointer(hand,0,0,FILE_CURRENT);
14549 printf(
"\n(%ld) Stopped by another 2\n", (
long)xx);
14576 #if defined(Windows) 14579 ReadFile(hand,nbuff,
reclen,(LPDWORD)&wval,0);
14589 printf(
"\n(%ld) Stopped by another 2\n", (
long)xx);
14592 #ifdef NO_PRINT_LLD 14593 printf(
"\nError reading block %ld, fd= %d\n",
i,
14596 printf(
"\nError reading block %lld, fd= %d\n",
i,
14638 read_so_far+=
reclen/1024;
14643 read_so_far-=
reclen/1024;
14649 hist_time =(thread_qtime_stop-thread_qtime_start-
time_res);
14655 desired_op_rate_time = ((double)1.0/(
double)
op_rate);
14656 actual_rate = (double)(thread_qtime_stop-thread_qtime_start);
14661 if( actual_rate < desired_op_rate_time)
14662 my_unap((
unsigned long long) ((desired_op_rate_time-actual_rate)*1000000.0 ));
14667 #ifdef NO_PRINT_LLD 14668 fprintf(thread_rqfd,
"%10.1ld %10.0f %10.1ld\n",(traj_offset)/1024,((thread_qtime_stop-thread_qtime_start-
time_res))*1000000,
reclen);
14670 fprintf(thread_rqfd,
"%10.1lld %10.0f %10.1lld\n",(traj_offset)/1024,((thread_qtime_stop-thread_qtime_start-
time_res))*1000000,
reclen);
14682 printf(
"Read unlock failed. %d\n",
errno);
14704 #if defined(Windows) 14766 #if defined(Windows) 14773 if(
Q_flag && (thread_rqfd !=0) )
14774 fclose(thread_rqfd);
14779 #ifdef NO_PRINT_LLD 14780 printf(
"\nChild finished %ld\n",xx);
14782 printf(
"\nChild finished %lld\n",xx);
14788 fprintf(thread_Lwqfd,
"%-25s %s",
"Read test finished: ",now_string);
14789 fclose(thread_Lwqfd);
14810 #ifdef HAVE_ANSIC_C 14812 thread_pread_test(
void *
x)
14815 thread_pread_test(
x)
14825 FILE *thread_Lwqfd;
14826 long long flags = 0;
14829 double starttime1 = 0;
14832 double thread_qtime_start,thread_qtime_stop;
14834 double desired_op_rate_time;
14835 double actual_rate;
14836 double compute_val = (double)0;
14837 off64_t written_so_far, read_so_far, re_written_so_far,re_read_so_far;
14838 long long recs_per_buffer,traj_size;
14845 char now_string[30];
14847 int anwser,bind_cpu;
14848 #if defined(VXFS) || defined(solaris) 14852 struct cache *gc=0;
14859 thread_rqfd=thread_Lwqfd=
r_traj_fd=(FILE *)0;
14860 hist_time=traj_offset=thread_qtime_stop=thread_qtime_start=0;
14861 walltime=cputime=0;
14864 written_so_far=read_so_far=re_written_so_far=re_read_so_far=0;
14880 xx = (
long long)((
long)
x);
14887 #ifdef _HPUX_SOURCE 14891 pthread_processor_bind_np(PTHREAD_BIND_FORCED_NP,
14892 (pthread_spu_t *)&anwser, (pthread_spu_t)bind_cpu, pthread_self());
14907 #ifdef NO_PRINT_LLD 14915 #ifdef NO_PRINT_LLD 14922 flags=O_RDONLY|O_SYNC;
14925 #if defined(_HPUX_SOURCE) || defined(linux) 14927 flags |=O_RSYNC|O_SYNC;
14930 #if ! defined(DONT_HAVE_O_DIRECT) 14931 #if defined(linux) || defined(__AIX__) || defined(IRIX) || defined(IRIX64) || defined(Windows) || defined (__FreeBSD__) 14937 flags |=O_DIRECTIO;
14955 ioctl(
fd,VX_SETCACHE,VX_DIRECT);
14956 ioctl(
fd,VX_GETCACHE,&test_foo);
14960 printf(
"\nVxFS advanced setcache feature not available.\n");
14965 #if defined(solaris) 14968 test_foo = directio(
fd, DIRECTIO_ON);
14972 printf(
"\ndirectio not available.\n");
14987 #ifdef NO_PRINT_LLD 14988 printf(
"\nStarting child %ld\n",xx);
14990 printf(
"\nStarting child %lld\n",xx);
14993 #ifdef NO_PRINT_LLD 14994 printf(
"\nStarting process %d slot %ld\n",getpid(),xx);
14996 printf(
"\nStarting process %d slot %lld\n",getpid(),xx);
15005 sprintf(tmpname,
"Child_%d_prol.dat",(
int)xx);
15006 thread_rqfd=fopen(tmpname,
"a");
15012 printf(
"Unable to open %s\n",tmpname);
15015 fprintf(thread_rqfd,
"Offset in Kbytes Latency in microseconds Transfer size in bytes\n");
15019 sprintf(tmpname,
"Child_%d.log",(
int)xx);
15020 thread_Lwqfd=fopen(tmpname,
"a");
15021 if(thread_Lwqfd==0)
15026 printf(
"Unable to open %s\n",tmpname);
15030 fprintf(thread_Lwqfd,
"%-25s %s",
"Pread test start: ",now_string);
15048 Poll((
long long)1);
15051 if(
mylockf((
int)
fd, (
int) 1, (
int)1) != 0)
15052 printf(
"File lock for read failed. %d\n",
errno);
15089 printf(
"\n(%ld) Stopped by another 2\n", (
long)xx);
15100 wmaddr = &maddr[traj_offset];
15116 if(I_PREAD((
int)
fd, (
void*)nbuff, (
size_t)
reclen,(traj_offset) ) !=
reclen)
15121 printf(
"\n(%ld) Stopped by another 2\n", (
long)xx);
15124 #ifdef NO_PRINT_LLD 15125 printf(
"\nError preading block %ld, fd= %d\n",
i,
15128 printf(
"\nError preading block %lld, fd= %d\n",
i,
15170 read_so_far+=
reclen/1024;
15175 read_so_far-=
reclen/1024;
15181 hist_time =(thread_qtime_stop-thread_qtime_start-
time_res);
15187 desired_op_rate_time = ((double)1.0/(
double)
op_rate);
15188 actual_rate = (double)(thread_qtime_stop-thread_qtime_start);
15193 if( actual_rate < desired_op_rate_time)
15194 my_unap((
unsigned long long) ((desired_op_rate_time-actual_rate)*1000000.0 ));
15199 #ifdef NO_PRINT_LLD 15200 fprintf(thread_rqfd,
"%10.1ld %10.0f %10.1ld\n",(traj_offset)/1024,((thread_qtime_stop-thread_qtime_start-
time_res))*1000000,
reclen);
15202 fprintf(thread_rqfd,
"%10.1lld %10.0f %10.1lld\n",(traj_offset)/1024,((thread_qtime_stop-thread_qtime_start-
time_res))*1000000,
reclen);
15214 printf(
"Read unlock failed. %d\n",
errno);
15295 if(
Q_flag && (thread_rqfd !=0) )
15296 fclose(thread_rqfd);
15301 #ifdef NO_PRINT_LLD 15302 printf(
"\nChild finished %ld\n",xx);
15304 printf(
"\nChild finished %lld\n",xx);
15310 fprintf(thread_Lwqfd,
"%-25s %s",
"Pread test finished: ",
15312 fclose(thread_Lwqfd);
15333 #ifdef HAVE_ANSIC_C 15346 FILE *thread_Lwqfd;
15352 long long flags = 0;
15353 double starttime1 = 0;
15356 double thread_qtime_start,thread_qtime_stop;
15358 double desired_op_rate_time;
15359 double actual_rate;
15360 double compute_val = (double)0;
15361 long long recs_per_buffer,traj_size;
15363 off64_t written_so_far, read_so_far, re_written_so_far,
15368 char now_string[30];
15370 int anwser,bind_cpu;
15373 #if defined(VXFS) || defined(solaris) 15377 struct cache *gc=0;
15386 hist_time=thread_qtime_stop=thread_qtime_start=0;
15387 thread_rrqfd=
r_traj_fd=thread_Lwqfd=(FILE *)0;
15388 traj_offset=walltime=cputime=0;
15391 written_so_far=read_so_far=re_written_so_far=re_read_so_far=0;
15406 xx = (
long long)((
long)
x);
15413 #if defined( _HPUX_SOURCE ) || defined ( linux ) 15417 #if defined(_HPUX_SOURCE) 15418 pthread_processor_bind_np(PTHREAD_BIND_FORCED_NP,
15419 (pthread_spu_t *)&anwser, (pthread_spu_t)bind_cpu, pthread_self());
15424 CPU_SET(bind_cpu, &cpuset);
15426 pthread_setaffinity_np(pthread_self(),
sizeof(cpuset),&cpuset);
15439 #ifdef NO_PRINT_LLD 15440 printf(
"\nStarting child %ld\n",xx);
15442 printf(
"\nStarting child %lld\n",xx);
15445 #ifdef NO_PRINT_LLD 15446 printf(
"\nStarting process %d slot %ld\n",getpid(),xx);
15448 printf(
"\nStarting process %d slot %lld\n",getpid(),xx);
15458 #ifdef NO_PRINT_LLD 15466 #ifdef NO_PRINT_LLD 15473 flags=O_RDONLY|O_SYNC;
15476 #if defined(_HPUX_SOURCE) || defined(linux) 15478 flags |=O_RSYNC|O_SYNC;
15481 #if ! defined(DONT_HAVE_O_DIRECT) 15482 #if defined(linux) || defined(__AIX__) || defined(IRIX) || defined(IRIX64) || defined(Windows) || defined (__FreeBSD__) 15488 flags |=O_DIRECTIO;
15492 #if defined(Windows) 15496 GENERIC_READ|GENERIC_WRITE,
15497 FILE_SHARE_WRITE|FILE_SHARE_READ,
15498 NULL,OPEN_EXISTING,FILE_FLAG_NO_BUFFERING|
15499 FILE_FLAG_WRITE_THROUGH|FILE_FLAG_POSIX_SEMANTICS,
15501 SetFilePointer(hand,(LONG)0,0,FILE_BEGIN);
15514 #if defined(Windows) 15524 ioctl(
fd,VX_SETCACHE,VX_DIRECT);
15525 ioctl(
fd,VX_GETCACHE,&test_foo);
15529 printf(
"\nVxFS advanced setcache feature not available.\n");
15534 #if defined(solaris) 15537 test_foo = directio(
fd, DIRECTIO_ON);
15541 printf(
"\ndirectio not available.\n");
15556 sprintf(tmpname,
"Child_%d_rrol.dat",(
int)xx);
15557 thread_rrqfd=fopen(tmpname,
"a");
15558 if(thread_rrqfd==0)
15563 printf(
"Unable to open %s\n",tmpname);
15566 fprintf(thread_rrqfd,
"Offset in Kbytes Latency in microseconds Transfer size in bytes\n");
15570 sprintf(tmpname,
"Child_%d.log",(
int)xx);
15571 thread_Lwqfd=fopen(tmpname,
"a");
15572 if(thread_Lwqfd==0)
15577 printf(
"Unable to open %s\n",tmpname);
15581 fprintf(thread_Lwqfd,
"%-25s %s",
"Reread test start: ",now_string);
15598 Poll((
long long)1);
15600 if(
mylockf((
int)
fd, (
int) 1, (
int)1) != 0)
15601 printf(
"File lock for read failed. %d\n",
errno);
15615 #if defined(Windows) 15629 #if defined(Windows) 15631 SetFilePointer(hand,(LONG)traj_offset,0,FILE_BEGIN);
15638 #if defined(Windows) 15640 traj_offset=SetFilePointer(hand,(LONG)0,0,FILE_CURRENT);
15656 printf(
"\n(%ld) Stopped by another 3\n", (
long)xx);
15683 #if defined(Windows) 15686 ReadFile(hand,nbuff,
reclen,(LPDWORD)&wval,0);
15696 printf(
"\n(%ld) Stopped by another 4\n", (
long)xx);
15699 #ifdef NO_PRINT_LLD 15700 printf(
"\nError writing block %ld, fd= %d\n",
i,
15703 printf(
"\nError writing block %lld, fd= %d\n",
i,
15745 re_read_so_far+=
reclen/1024;
15750 re_read_so_far-=
reclen/1024;
15756 hist_time =(thread_qtime_stop-thread_qtime_start-
time_res);
15762 desired_op_rate_time = ((double)1.0/(
double)
op_rate);
15763 actual_rate = (double)(thread_qtime_stop-thread_qtime_start);
15768 if( actual_rate < desired_op_rate_time)
15769 my_unap((
unsigned long long) ((desired_op_rate_time-actual_rate)*1000000.0 ));
15774 #ifdef NO_PRINT_LLD 15775 fprintf(thread_rrqfd,
"%10.1ld %10.0f %10.1ld\n",(traj_offset)/1024,((thread_qtime_stop-thread_qtime_start-
time_res))*1000000,
reclen);
15777 fprintf(thread_rrqfd,
"%10.1lld %10.0f %10.1lld\n",(traj_offset)/1024,((thread_qtime_stop-thread_qtime_start-
time_res))*1000000,
reclen);
15789 printf(
"Read unlock failed. %d\n",
errno);
15812 #if defined(Windows) 15868 #if defined(Windows) 15875 if(
Q_flag && (thread_rrqfd !=0) )
15876 fclose(thread_rrqfd);
15881 #ifdef NO_PRINT_LLD 15882 printf(
"\nChild finished %ld\n",xx);
15884 printf(
"\nChild finished %lld\n",xx);
15890 fprintf(thread_Lwqfd,
"%-25s %s",
"Reread test finished: ",now_string);
15891 fclose(thread_Lwqfd);
15912 #ifdef HAVE_ANSIC_C 15924 long long flags = 0;
15926 double thread_qtime_stop,thread_qtime_start;
15928 double desired_op_rate_time;
15929 double actual_rate;
15930 double starttime2 = 0;
15933 double compute_val = (double)0;
15934 long long recs_per_buffer;
15938 off64_t written_so_far, reverse_read, re_read_so_far,read_so_far;
15942 char now_string[30];
15944 int anwser,bind_cpu;
15947 FILE *thread_revqfd=0;
15948 FILE *thread_Lwqfd=0;
15949 #if defined(VXFS) || defined(solaris) 15953 struct cache *gc=0;
15962 hist_time=thread_qtime_stop=thread_qtime_start=0;
15963 traj_offset=walltime=cputime=0;
15965 written_so_far=read_so_far=reverse_read=re_read_so_far=0;
15971 xx = (
long long)((
long)
x);
15978 #if defined( _HPUX_SOURCE ) || defined ( linux ) 15982 #if defined(_HPUX_SOURCE) 15983 pthread_processor_bind_np(PTHREAD_BIND_FORCED_NP,
15984 (pthread_spu_t *)&anwser, (pthread_spu_t)bind_cpu, pthread_self());
15989 CPU_SET(bind_cpu, &cpuset);
15991 pthread_setaffinity_np(pthread_self(),
sizeof(cpuset),&cpuset);
16004 #ifdef NO_PRINT_LLD 16005 printf(
"\nStarting child %ld\n",xx);
16007 printf(
"\nStarting child %lld\n",xx);
16010 #ifdef NO_PRINT_LLD 16011 printf(
"\nStarting process %d slot %ld\n",getpid(),xx);
16013 printf(
"\nStarting process %d slot %lld\n",getpid(),xx);
16023 #ifdef NO_PRINT_LLD 16031 #ifdef NO_PRINT_LLD 16038 flags=O_RDONLY|O_SYNC;
16041 #if defined(_HPUX_SOURCE) || defined(linux) 16043 flags |=O_RSYNC|O_SYNC;
16046 #if ! defined(DONT_HAVE_O_DIRECT) 16047 #if defined(linux) || defined(__AIX__) || defined(IRIX) || defined(IRIX64) || defined(Windows) || defined (__FreeBSD__) 16053 flags |=O_DIRECTIO;
16056 #if defined(Windows) 16060 GENERIC_READ|GENERIC_WRITE,
16061 FILE_SHARE_WRITE|FILE_SHARE_READ,
16062 NULL,OPEN_EXISTING,FILE_FLAG_NO_BUFFERING|
16063 FILE_FLAG_WRITE_THROUGH|FILE_FLAG_POSIX_SEMANTICS,
16083 ioctl(
fd,VX_SETCACHE,VX_DIRECT);
16084 ioctl(
fd,VX_GETCACHE,&test_foo);
16088 printf(
"\nVxFS advanced setcache feature not available.\n");
16093 #if defined(solaris) 16096 test_foo = directio(
fd, DIRECTIO_ON);
16100 printf(
"\ndirectio not available.\n");
16113 sprintf(tmpname,
"Child_%d_revol.dat",(
int)xx);
16114 thread_revqfd=fopen(tmpname,
"a");
16115 if(thread_revqfd==0)
16120 printf(
"Unable to open %s\n",tmpname);
16123 fprintf(thread_revqfd,
"Offset in Kbytes Latency in microseconds Transfer size in bytes\n");
16127 sprintf(tmpname,
"Child_%d.log",(
int)xx);
16128 thread_Lwqfd=fopen(tmpname,
"a");
16129 if(thread_Lwqfd==0)
16134 printf(
"Unable to open %s\n",tmpname);
16138 fprintf(thread_Lwqfd,
"%-25s %s",
"Reverse read start: ",now_string);
16152 Poll((
long long)1);
16166 if((
I_LSEEK(
fd, -t_offset, SEEK_END ))<0)
16189 if(
mylockf((
int)
fd, (
int) 1, (
int)1)!=0)
16190 printf(
"File lock for read failed. %d\n",
errno);
16212 printf(
"\n(%ld) Stopped by another 3\n", (
long)xx);
16223 wmaddr = &maddr[current_position];
16244 printf(
"\n(%ld) Stopped by another 4\n", (
long)xx);
16247 #ifdef NO_PRINT_LLD 16248 printf(
"\nError reading block %ld\n",
i);
16250 printf(
"\nError reading block %lld\n",
i);
16294 current_position+=
reclen;
16302 current_position-=(2 *
reclen);
16303 reverse_read +=
reclen/1024;
16306 reverse_read -=
reclen/1024;
16311 hist_time =(thread_qtime_stop-thread_qtime_start-
time_res);
16317 desired_op_rate_time = ((double)1.0/(
double)
op_rate);
16318 actual_rate = (double)(thread_qtime_stop-thread_qtime_start);
16323 if( actual_rate < desired_op_rate_time)
16324 my_unap((
unsigned long long) ((desired_op_rate_time-actual_rate)*1000000.0 ));
16329 #ifdef NO_PRINT_LLD 16330 fprintf(thread_revqfd,
"%10.1ld %10.0f %10.1ld\n",(traj_offset)/1024,((thread_qtime_stop-thread_qtime_start-
time_res))*1000000,
reclen);
16332 fprintf(thread_revqfd,
"%10.1lld %10.0f %10.1lld\n",(traj_offset)/1024,((thread_qtime_stop-thread_qtime_start-
time_res))*1000000,
reclen);
16338 printf(
"Read unlock failed %d\n",
errno);
16373 reverse_read=(reverse_read*1024)/
reclen;
16410 if(
Q_flag && (thread_revqfd !=0) )
16411 fclose(thread_revqfd);
16413 #ifdef NO_PRINT_LLD 16414 printf(
"\nChild finished %ld\n",xx);
16416 printf(
"\nChild finished %lld\n",xx);
16422 fprintf(thread_Lwqfd,
"%-25s %s",
"Reverse read finished: ",
16424 fclose(thread_Lwqfd);
16443 #ifdef HAVE_ANSIC_C 16456 long long flags = 0;
16457 double thread_qtime_stop,thread_qtime_start;
16459 double desired_op_rate_time;
16460 double actual_rate;
16461 double starttime2 = 0;
16463 double compute_val = (double)0;
16465 long long recs_per_buffer;
16469 off64_t written_so_far, stride_read,re_read_so_far,read_so_far;
16471 off64_t current_position = 0;
16476 int anwser,bind_cpu;
16479 char now_string[30];
16480 FILE *thread_strqfd=0;
16481 FILE *thread_Lwqfd=0;
16482 #if defined(VXFS) || defined(solaris) 16486 struct cache *gc=0;
16495 hist_time=thread_qtime_stop=thread_qtime_start=0;
16496 traj_offset=walltime=cputime=0;
16498 written_so_far=read_so_far=stride_read=re_read_so_far=0;
16504 xx = (
long long)((
long)
x);
16511 #if defined( _HPUX_SOURCE ) || defined ( linux ) 16515 #if defined(_HPUX_SOURCE) 16516 pthread_processor_bind_np(PTHREAD_BIND_FORCED_NP,
16517 (pthread_spu_t *)&anwser, (pthread_spu_t)bind_cpu, pthread_self());
16522 CPU_SET(bind_cpu, &cpuset);
16524 pthread_setaffinity_np(pthread_self(),
sizeof(cpuset),&cpuset);
16537 #ifdef NO_PRINT_LLD 16538 printf(
"\nStarting child %ld\n",xx);
16540 printf(
"\nStarting child %lld\n",xx);
16543 #ifdef NO_PRINT_LLD 16544 printf(
"\nStarting process %d slot %ld\n",getpid(),xx);
16546 printf(
"\nStarting process %d slot %lld\n",getpid(),xx);
16556 #ifdef NO_PRINT_LLD 16564 #ifdef NO_PRINT_LLD 16571 flags=O_RDONLY|O_SYNC;
16574 #if defined(_HPUX_SOURCE) || defined(linux) 16576 flags |=O_RSYNC|O_SYNC;
16578 #if ! defined(DONT_HAVE_O_DIRECT) 16579 #if defined(linux) || defined(__AIX__) || defined(IRIX) || defined(IRIX64) || defined(Windows) || defined (__FreeBSD__) 16585 flags |=O_DIRECTIO;
16589 #if defined(Windows) 16593 GENERIC_READ|GENERIC_WRITE,
16594 FILE_SHARE_WRITE|FILE_SHARE_READ,
16595 NULL,OPEN_EXISTING,FILE_FLAG_NO_BUFFERING|
16596 FILE_FLAG_WRITE_THROUGH|FILE_FLAG_POSIX_SEMANTICS,
16615 ioctl(
fd,VX_SETCACHE,VX_DIRECT);
16616 ioctl(
fd,VX_GETCACHE,&test_foo);
16620 printf(
"\nVxFS advanced setcache feature not available.\n");
16625 #if defined(solaris) 16628 test_foo = directio(
fd, DIRECTIO_ON);
16632 printf(
"\ndirectio not available.\n");
16646 sprintf(tmpname,
"Child_%d_strol.dat",(
int)xx);
16647 thread_strqfd=fopen(tmpname,
"a");
16648 if(thread_strqfd==0)
16653 printf(
"Unable to open %s\n",tmpname);
16656 fprintf(thread_strqfd,
"Offset in Kbytes Latency in microseconds Transfer size in bytes\n");
16660 sprintf(tmpname,
"Child_%d.log",(
int)xx);
16661 thread_Lwqfd=fopen(tmpname,
"a");
16662 if(thread_Lwqfd==0)
16667 printf(
"Unable to open %s\n",tmpname);
16671 fprintf(thread_Lwqfd,
"%-25s %s",
"Stride test start: ",
16687 Poll((
long long)1);
16689 if(
mylockf((
int)
fd, (
int) 1, (
int)1)!=0)
16690 printf(
"File lock for write failed. %d\n",
errno);
16717 printf(
"\n(%ld) Stopped by another 3\n", (
long)xx);
16730 wmaddr = &maddr[current_position];
16751 printf(
"\n(%ld) Stopped by another 4\n", (
long)xx);
16754 #ifdef NO_PRINT_LLD 16755 printf(
"\nError reading block %ld, fd= %d\n",
i,
fd);
16757 printf(
"\nError reading block %lld, fd= %d\n",
i,
fd);
16775 current_position+=
reclen;
16806 current_position=0;
16812 current_position=0;
16820 if(
I_LSEEK(
fd,current_position,SEEK_SET)<0)
16835 if(
I_LSEEK(
fd,current_position,SEEK_SET)<0)
16845 stride_read +=
reclen/1024;
16848 stride_read -=
reclen/1024;
16853 hist_time =(thread_qtime_stop-thread_qtime_start-
time_res);
16859 desired_op_rate_time = ((double)1.0/(
double)
op_rate);
16860 actual_rate = (double)(thread_qtime_stop-thread_qtime_start);
16865 if( actual_rate < desired_op_rate_time)
16866 my_unap((
unsigned long long) ((desired_op_rate_time-actual_rate)*1000000.0 ));
16871 #ifdef NO_PRINT_LLD 16872 fprintf(thread_strqfd,
"%10.1ld %10.0f %10.1ld\n",(traj_offset)/1024,((thread_qtime_stop-thread_qtime_start-
time_res))*1000000,
reclen);
16874 fprintf(thread_strqfd,
"%10.1lld %10.0f %10.1lld\n",(traj_offset)/1024,((thread_qtime_stop-thread_qtime_start-
time_res))*1000000,
reclen);
16880 printf(
"Read unlock failed %d\n",
errno);
16915 stride_read=(stride_read*1024)/
reclen;
16953 if(
Q_flag && (thread_strqfd !=0) )
16954 fclose(thread_strqfd);
16957 #ifdef NO_PRINT_LLD 16958 printf(
"\nChild finished %ld\n",xx);
16960 printf(
"\nChild finished %lld\n",xx);
16966 fprintf(thread_Lwqfd,
"%-25s %s",
"Stride test finished: ",
16968 fclose(thread_Lwqfd);
16988 #ifdef HAVE_ANSIC_C 17015 if(xx < num_readers)
17032 selector= ((int)xx) % 2;
17054 #ifdef HAVE_ANSIC_C 17066 long long flags = 0;
17067 double thread_qtime_stop,thread_qtime_start;
17069 double desired_op_rate_time;
17070 double actual_rate;
17071 double starttime1 = 0;
17074 double compute_val = (double)0;
17075 off64_t written_so_far, ranread_so_far, re_written_so_far,re_read_so_far;
17076 long long recs_per_buffer;
17084 int anwser,bind_cpu;
17088 char now_string[30];
17089 FILE *thread_randrfd=0;
17090 FILE *thread_Lwqfd=0;
17091 long long *recnum=0;
17092 #if defined(VXFS) || defined(solaris) 17095 long long save_pos;
17096 #if defined (bsd4_2) || defined(Windows) 17097 long long rand1,rand2,rand3;
17099 unsigned long long big_rand;
17101 struct cache *gc=0;
17106 unsigned long long init[4]={0x12345ULL, 0x23456ULL, 0x34567ULL, 0x45678ULL},
length=4;
17122 recnum = (
long long *)malloc(
sizeof(*recnum)*
numrecs64);
17130 long long tmp = recnum[
i];
17135 rand1=(
long long)
rand();
17136 rand2=(
long long)
rand();
17137 rand3=(
long long)
rand();
17138 big_rand=(rand1<<32)|(rand2<<16)|(rand3);
17141 rand1=(
long long)
rand();
17142 rand2=(
long long)
rand();
17143 rand3=(
long long)
rand();
17144 big_rand=(rand1<<32)|(rand2<<16)|(rand3);
17152 recnum[
i] = recnum[big_rand];
17153 recnum[big_rand] =
tmp;
17158 fprintf(stderr,
"Random uniqueness fallback.\n");
17162 hist_time=thread_qtime_stop=thread_qtime_start=0;
17163 traj_offset=walltime=cputime=0;
17165 written_so_far=ranread_so_far=re_written_so_far=re_read_so_far=0;
17171 xx = (
long long)((
long)
x);
17178 #if defined( _HPUX_SOURCE ) || defined ( linux ) 17182 #if defined(_HPUX_SOURCE) 17183 pthread_processor_bind_np(PTHREAD_BIND_FORCED_NP,
17184 (pthread_spu_t *)&anwser, (pthread_spu_t)bind_cpu, pthread_self());
17189 CPU_SET(bind_cpu, &cpuset);
17191 pthread_setaffinity_np(pthread_self(),
sizeof(cpuset),&cpuset);
17207 #ifdef NO_PRINT_LLD 17215 #ifdef NO_PRINT_LLD 17223 flags=O_RDONLY|O_SYNC;
17227 #if defined(_HPUX_SOURCE) || defined(linux) 17229 flags |=O_RSYNC|O_SYNC;
17232 #if ! defined(DONT_HAVE_O_DIRECT) 17233 #if defined(linux) || defined(__AIX__) || defined(IRIX) || defined(IRIX64) || defined(Windows) || defined (__FreeBSD__) 17239 flags |=O_DIRECTIO;
17243 #if defined(Windows) 17247 GENERIC_READ|GENERIC_WRITE,
17248 FILE_SHARE_WRITE|FILE_SHARE_READ,
17249 NULL,OPEN_EXISTING,FILE_FLAG_NO_BUFFERING|
17250 FILE_FLAG_WRITE_THROUGH|FILE_FLAG_POSIX_SEMANTICS,
17270 ioctl(
fd,VX_SETCACHE,VX_DIRECT);
17271 ioctl(
fd,VX_GETCACHE,&test_foo);
17275 printf(
"\nVxFS advanced setcache feature not available.\n");
17280 #if defined(solaris) 17283 test_foo = directio(
fd, DIRECTIO_ON);
17287 printf(
"\ndirectio not available.\n");
17303 #ifdef NO_PRINT_LLD 17304 printf(
"\nStarting child %ld\n",xx);
17306 printf(
"\nStarting child %lld\n",xx);
17309 #ifdef NO_PRINT_LLD 17310 printf(
"\nStarting process %d slot %ld\n",getpid(),xx);
17312 printf(
"\nStarting process %d slot %lld\n",getpid(),xx);
17323 sprintf(tmpname,
"Child_%d_randrol.dat",(
int)xx);
17324 thread_randrfd=fopen(tmpname,
"a");
17325 if(thread_randrfd==0)
17330 printf(
"Unable to open %s\n",tmpname);
17333 fprintf(thread_randrfd,
"Offset in Kbytes Latency in microseconds Transfer size in bytes\n");
17337 sprintf(tmpname,
"Child_%d.log",(
int)xx);
17338 thread_Lwqfd=fopen(tmpname,
"a");
17339 if(thread_Lwqfd==0)
17344 printf(
"Unable to open %s\n",tmpname);
17348 fprintf(thread_Lwqfd,
"%-25s %s",
"Random read start: ",
17361 Poll((
long long)1);
17384 if(
mylockf((
int)
fd, (
int) 1, (
int)1)!=0)
17385 printf(
"File lock for read failed. %d\n",
errno);
17392 printf(
"\n(%ld) Stopped by another 2\n", (
long)xx);
17398 current_offset =
reclen * (
long long)recnum[
i];
17405 rand1=(
long long)
rand();
17406 rand2=(
long long)
rand();
17407 rand3=(
long long)
rand();
17408 big_rand=(rand1<<32)|(rand2<<16)|(rand3);
17412 rand1=(
long long)
rand();
17413 rand2=(
long long)
rand();
17414 rand3=(
long long)
rand();
17415 big_rand=(rand1<<32)|(rand2<<16)|(rand3);
17426 if(
I_LSEEK(
fd, current_offset, SEEK_SET )<0)
17448 wmaddr = &maddr[current_offset];
17469 printf(
"\n(%ld) Stopped by another 2\n", (
long)xx);
17472 #ifdef NO_PRINT_LLD 17473 printf(
"\nError reading block at %ld\n",
17476 printf(
"\nError reading block at %lld\n",
17495 save_pos=current_offset/
reclen;
17525 ranread_so_far+=
reclen/1024;
17528 ranread_so_far-=
reclen/1024;
17533 hist_time =(thread_qtime_stop-thread_qtime_start-
time_res);
17539 desired_op_rate_time = ((double)1.0/(
double)
op_rate);
17540 actual_rate = (double)(thread_qtime_stop-thread_qtime_start);
17545 if( actual_rate < desired_op_rate_time)
17546 my_unap((
unsigned long long) ((desired_op_rate_time-actual_rate)*1000000.0 ));
17551 #ifdef NO_PRINT_LLD 17552 fprintf(thread_randrfd,
"%10.1ld %10.0f %10.1ld\n",(traj_offset)/1024,((thread_qtime_stop-thread_qtime_start-
time_res))*1000000,
reclen);
17554 fprintf(thread_randrfd,
"%10.1lld %10.0f %10.1lld\n",(traj_offset)/1024,((thread_qtime_stop-thread_qtime_start-
time_res))*1000000,
reclen);
17560 printf(
"Read unlock failed %d\n",
errno);
17596 ranread_so_far=(ranread_so_far*1024)/
reclen;
17638 if(
Q_flag && (thread_randrfd !=0) )
17639 fclose(thread_randrfd);
17642 #ifdef NO_PRINT_LLD 17643 printf(
"\nChild finished %ld\n",xx);
17645 printf(
"\nChild finished %lld\n",xx);
17651 fprintf(thread_Lwqfd,
"%-25s %s",
"Random read finished: ",now_string);
17652 fclose(thread_Lwqfd);
17674 #ifdef HAVE_ANSIC_C 17684 double starttime1 = 0;
17687 double compute_val = (double)0;
17688 float delay = (double)0;
17689 double thread_qtime_stop,thread_qtime_start;
17691 double desired_op_rate_time;
17692 double actual_rate;
17699 long long recs_per_buffer;
17700 long long stopped,
i;
17701 off64_t written_so_far, read_so_far, re_written_so_far,re_read_so_far;
17708 int anwser,bind_cpu,wval;
17712 char now_string[30];
17713 FILE *thread_randwqfd=0;
17714 FILE *thread_Lwqfd=0;
17715 long long *recnum = 0;
17716 #if defined(VXFS) || defined(solaris) 17719 #if defined (bsd4_2) || defined(Windows) 17720 long long rand1,rand2,rand3;
17722 unsigned long long big_rand;
17725 struct cache *gc=0;
17731 unsigned long long init[4]={0x12345ULL, 0x23456ULL, 0x34567ULL, 0x45678ULL},
length=4;
17736 hist_time=thread_qtime_stop=thread_qtime_start=0;
17737 traj_offset=walltime=cputime=0;
17740 written_so_far=read_so_far=re_written_so_far=re_read_so_far=0;
17756 recnum = (
long long *) malloc(
sizeof(*recnum)*
numrecs64);
17764 long long tmp = recnum[
i];
17769 rand1=(
long long)
rand();
17770 rand2=(
long long)
rand();
17771 rand3=(
long long)
rand();
17772 big_rand=(rand1<<32)|(rand2<<16)|(rand3);
17775 rand1=(
long long)
rand();
17776 rand2=(
long long)
rand();
17777 rand3=(
long long)
rand();
17778 big_rand=(rand1<<32)|(rand2<<16)|(rand3);
17786 recnum[
i] = recnum[big_rand];
17787 recnum[big_rand] =
tmp;
17792 fprintf(stderr,
"Random uniqueness fallback.\n");
17799 xx = (
long long)((
long)
x);
17807 #if defined( _HPUX_SOURCE ) || defined ( linux ) 17811 #if defined(_HPUX_SOURCE) 17812 pthread_processor_bind_np(PTHREAD_BIND_FORCED_NP,
17813 (pthread_spu_t *)&anwser, (pthread_spu_t)bind_cpu, pthread_self());
17818 CPU_SET(bind_cpu, &cpuset);
17820 pthread_setaffinity_np(pthread_self(),
sizeof(cpuset),&cpuset);
17833 #ifdef NO_PRINT_LLD 17834 printf(
"\nStarting child %ld\n",xx);
17836 printf(
"\nStarting child %lld\n",xx);
17839 #ifdef NO_PRINT_LLD 17840 printf(
"\nStarting process %d slot %ld\n",getpid(),xx);
17842 printf(
"\nStarting process %d slot %lld\n",getpid(),xx);
17852 #ifdef NO_PRINT_LLD 17860 #ifdef NO_PRINT_LLD 17872 flags=O_RDWR|O_SYNC|O_CREAT;
17874 flags=O_RDWR|O_CREAT;
17875 #if defined(O_DSYNC) 17879 #if defined(_HPUX_SOURCE) || defined(linux) 17881 flags |=O_RSYNC|O_SYNC;
17884 #if ! defined(DONT_HAVE_O_DIRECT) 17885 #if defined(linux) || defined(__AIX__) || defined(IRIX) || defined(IRIX64) || defined(Windows) || defined (__FreeBSD__) 17891 flags |=O_DIRECTIO;
17894 #if defined(Windows) 17898 GENERIC_READ|GENERIC_WRITE,
17899 FILE_SHARE_WRITE|FILE_SHARE_READ,
17900 NULL,OPEN_EXISTING,FILE_FLAG_NO_BUFFERING|
17901 FILE_FLAG_WRITE_THROUGH|FILE_FLAG_POSIX_SEMANTICS,
17910 printf(
"\nCan not open temp file: %s\n",
17918 ioctl(
fd,VX_SETCACHE,VX_DIRECT);
17919 ioctl(
fd,VX_GETCACHE,&test_foo);
17923 printf(
"\nVxFS advanced setcache feature not available.\n");
17928 #if defined(solaris) 17931 test_foo = directio(
fd, DIRECTIO_ON);
17935 printf(
"\ndirectio not available.\n");
17951 nbuff=&nbuff[(xx%recs_per_buffer)*
reclen];
17968 Poll((
long long)1);
17976 if(
mylockf((
int)
fd, (
int) 1, (
int)0) != 0)
17977 printf(
"File lock for write failed. %d\n",
errno);
17980 sprintf(tmpname,
"Child_%d_randwol.dat",(
int)xx);
17981 thread_randwqfd=fopen(tmpname,
"a");
17982 if(thread_randwqfd==0)
17987 printf(
"Unable to open %s\n",tmpname);
17990 fprintf(thread_randwqfd,
"Offset in Kbytes Latency in microseconds Transfer size in bytes\n");
17994 sprintf(tmpname,
"Child_%d.log",(
int)xx);
17995 thread_Lwqfd=fopen(tmpname,
"a");
17996 if(thread_Lwqfd==0)
18001 printf(
"Unable to open %s\n",tmpname);
18005 fprintf(thread_Lwqfd,
"%-25s %s",
"Random write start: ",
18020 current_offset =
reclen * (
long long)recnum[
i];
18026 big_rand=(rand1<<32)|(rand2<<16)|(rand3);
18033 big_rand=(rand1<<32)|(rand2<<16)|(rand3);
18043 if(
I_LSEEK(
fd, current_offset, SEEK_SET )<0)
18092 printf(
"\n(%ld) Stopped by another\n", (
long)xx);
18105 wmaddr = &maddr[current_offset];
18110 msync(wmaddr,(
size_t)
reclen,MS_ASYNC);
18112 msync(wmaddr,(
size_t)
reclen,MS_SYNC);
18163 printf(
"\n(%ld) Stopped by another\n", (
long)xx);
18174 #ifdef NO_PRINT_LLD 18175 printf(
"\nError writing block %ld, fd= %d\n",
i,
18178 printf(
"\nError writing block %lld, fd= %d\n",
i,
18201 hist_time =(thread_qtime_stop-thread_qtime_start-
time_res);
18207 desired_op_rate_time = ((double)1.0/(
double)
op_rate);
18208 actual_rate = (double)(thread_qtime_stop-thread_qtime_start);
18213 if( actual_rate < desired_op_rate_time)
18214 my_unap((
unsigned long long) ((desired_op_rate_time-actual_rate)*1000000.0 ));
18219 #ifdef NO_PRINT_LLD 18220 fprintf(thread_randwqfd,
"%10.1ld %10.0f %10.1ld\n",(traj_offset)/1024,((thread_qtime_stop-thread_qtime_start-
time_res))*1000000,
reclen);
18222 fprintf(thread_randwqfd,
"%10.1lld %10.0f %10.1lld\n",(traj_offset)/1024,((thread_qtime_stop-thread_qtime_start-
time_res))*1000000,
reclen);
18227 written_so_far+=
reclen/1024;
18230 written_so_far-=
reclen/1024;
18238 printf(
"Write unlock failed. %d\n",
errno);
18314 #ifdef NO_PRINT_LLD 18315 printf(
"\nChild finished %ld\n",xx);
18317 printf(
"\nChild finished %lld\n",xx);
18330 if(
Q_flag && (thread_randwqfd !=0) )
18331 fclose(thread_randwqfd);
18337 fprintf(thread_Lwqfd,
"%-25s %s",
"Random write finished: ",
18339 fclose(thread_Lwqfd);
18364 #ifdef HAVE_ANSIC_C 18381 xx = (
long long)((
long)
x);
18390 #ifdef NO_PRINT_LLD 18398 #ifdef NO_PRINT_LLD 18424 Poll((
long long)1);
18457 #ifdef HAVE_ANSIC_C 18463 void *(*func)(
void *);
18471 #ifdef _64BIT_ARCH_ 18473 meme = (
long long)
x;
18483 xx=(int )pthread_create(&ts, pthread_attr_default,
18487 pthread_attr_init(&attr);
18493 printf(
"Thread create failed. Returned %d Errno = %d\n",xx,
errno);
18496 printf(
"\nthread created has an id of %lx\n",ts);
18497 printf(
"meme %ld\n",meme);
18499 return((
long long)meme);
18502 #ifdef HAVE_ANSIC_C 18508 void *(*func)(
void *);
18512 printf(
"This version does not support threads\n");
18521 #ifdef HAVE_ANSIC_C 18529 pthread_exit((
void *)NULL);
18533 #ifdef HAVE_ANSIC_C 18541 printf(
"This version does not support threads\n");
18550 #ifdef HAVE_ANSIC_C 18559 xx = pthread_self();
18563 #ifdef HAVE_ANSIC_C 18571 printf(
"This version does not support threads\n");
18580 #ifdef HAVE_ANSIC_C 18595 xx=pthread_join(eek,(
void **)&foo);
18597 printf(
"Thread join returned error %d\n",
errno);
18601 #ifdef HAVE_ANSIC_C 18611 printf(
"This version does not support threads\n");
18612 return((
void *)-1);
18620 #ifdef HAVE_ANSIC_C 18631 char print_str[300];
18635 port =
use_thread ?
"threads" :
"processes";
18636 printf(
"\n\"CPU utilization report Y-axis is type of test X-axis is number of %s\"\n",port);
18639 sprintf(print_str,
"CPU utilization report Y-axis is type of test X-axis is number of %s", port);
18643 MS_flag ?
"microseconds/op" :
"Kbytes/sec";
18644 #ifdef NO_PRINT_LLD 18645 if(!
silent) printf(
"\"Record size = %ld Kbytes \"\n",
reclen/1024);
18647 if(!
silent) printf(
"\"Record size = %lld Kbytes \"\n",
reclen/1024);
18649 if(!
silent) printf(
"\"Output is in CPU%%\"\n\n");
18652 #ifdef NO_PRINT_LLD 18653 sprintf(print_str,
"Record size = %ld Kbytes",
reclen/1024);
18655 sprintf(print_str,
"Record size = %lld Kbytes",
reclen/1024);
18658 sprintf(print_str,
"Output is in CPU%%");
18661 for (
i = 0;
i <
x;
i++)
18670 for (j = 0; j <=
y; j++)
18676 if(!
silent) printf(
"\n\n");
18689 #ifdef HAVE_ANSIC_C 18700 char print_str[300];
18708 if(!
silent) printf(
"\n\"Throughput report Y-axis is type of test X-axis is number of %s\"\n",port);
18713 sprintf(print_str,
"Throughput report Y-axis is type of test X-axis is number of %s",port);
18720 label=
"microseconds/op";
18722 label=
"Kbytes/sec";
18723 #ifdef NO_PRINT_LLD 18724 if(!
silent) printf(
"\"Record size = %ld Kbytes \"\n",
reclen/1024);
18726 if(!
silent) printf(
"\"Record size = %lld Kbytes \"\n",
reclen/1024);
18728 if(!
silent) printf(
"\"Output is in %s\"\n\n",label);
18731 #ifdef NO_PRINT_LLD 18732 sprintf(print_str,
"Record size = %ld Kbytes",
reclen/1024);
18734 sprintf(print_str,
"Record size = %lld Kbytes",
reclen/1024);
18737 sprintf(print_str,
"Output is in %s",label);
18745 sprintf(print_str,
"%15s ",
toutput[
i]);
18757 if(!
silent) printf(
"\n\n");
18775 #ifdef HAVE_ANSIC_C 18792 printf(
"\nMAX_X too small\n");
18797 printf(
"\nMAXSTREAMS too small\n");
18805 #ifdef HAVE_ANSIC_C 18828 #ifdef _HPUX_SOURCE 18833 prealloc(
fd,filebytes);
18839 tmp=(
char *)malloc((
size_t)
reclen * 2);
18850 file_flags=fcntl(
fd,F_GETFL);
18852 #if ! defined(DONT_HAVE_O_DIRECT) 18853 #if defined(linux) || defined(__AIX__) || defined(IRIX) || defined(IRIX64) || defined(Windows) || defined (__FreeBSD__) 18858 dflag = O_DIRECTIO;
18861 if((file_flags & dflag) !=0)
18864 for (
i =0;
i<recs ;
i++)
18869 printf(
"Unable to write file\n");
18881 printf(
"Unable to write file\n");
18891 if((prot & PROT_WRITE)==PROT_WRITE)
18894 mflags=MAP_PRIVATE;
18897 if((prot & PROT_WRITE)==PROT_WRITE)
18900 mflags=MAP_PRIVATE;
18902 if((prot & PROT_WRITE)==PROT_WRITE)
18903 mflags=MAP_FILE|MAP_SHARED;
18905 mflags=MAP_FILE|MAP_PRIVATE;
18909 #if defined(bsd4_2) && !defined(macosx) 18910 pa = (
char *)mmap( 0,&filebytes, (
int)prot,
18911 (int)mflags, (
int)
fd, 0);
18913 pa = (
char *)
I_MMAP( ((
char *)0),filebytes, prot,
18916 #ifdef __convex_spp 18917 if(pa == (
char *)-1)
18919 printf(
"\nMmap failed, errno %d Flags %x\n",
errno,(
int)mflags);
18924 if(pa == (
char *)-1)
18926 printf(
"Mapping failed, errno %d\n",
errno);
18931 if(pa == (
char *)-1)
18933 printf(
"Mapping failed, errno %d\n",
errno);
18939 printf(
"\nMapping failed, errno %d Flags = %x\n",
errno,mflags);
18950 madvise( (
char *)pa, (
size_t) filebytes, MADV_NORMAL);
18953 madvise( (
char *)pa, (
size_t) filebytes, MADV_RANDOM);
18956 madvise( (
char *)pa, (
size_t) filebytes, MADV_SEQUENTIAL);
18959 madvise( (
char *)pa, (
size_t) filebytes, MADV_DONTNEED);
18962 madvise( (
char *)pa, (
size_t) filebytes, MADV_WILLNEED);
18978 #ifdef HAVE_ANSIC_C 18988 if(munmap(
buffer,(
size_t)size)<0)
18989 #ifdef NO_PRINT_LLD 18990 printf(
"munmap buffer %lx, size %ld failed.\n",(
long)
buffer,size);
18992 printf(
"munmap buffer %lx, size %lld failed.\n",(
long)
buffer,size);
19010 #ifdef HAVE_ANSIC_C 19012 fill_area(
long long *src_buffer,
long long *dest_buffer,
long long length)
19015 long long *src_buffer;
19016 long long *dest_buffer;
19021 bcopy((
void *)src_buffer,(
void *)dest_buffer,(
size_t)
length);
19028 printf(
"Your system does not support async I/O\n");
19034 printf(
"Your system does not support async I/O\n");
19040 printf(
"Your system does not support async I/O\n");
19046 printf(
"Your system does not support async I/O\n");
19052 printf(
"Your system does not support async I/O\n");
19058 printf(
"Your system does not support async I/O\n");
19066 #ifdef HAVE_ANSIC_C 19076 int seconds, microsecs;
19077 seconds = ntime/1000;
19078 microsecs = (ntime*1000)%1000000;
19079 nap_time.
tv_sec=seconds;
19081 select(0,0,0,0,&nap_time);
19088 #ifdef HAVE_ANSIC_C 19090 my_unap(
unsigned long long microsecs )
19094 unsigned long long microsecs;
19099 double timein, timeout;
19101 seconds = (int)(microsecs/1000000.0);
19102 nap_time.
tv_sec=seconds;
19103 nap_time.
tv_usec=(int)microsecs;
19110 if(timeout-timein > microsecs)
19126 #ifdef HAVE_ANSIC_C 19134 double starttime, finishtime, besttime = 0;
19146 for(j=0;j<
delay;j++)
19149 if(starttime==finishtime)
19154 besttime=(finishtime-starttime);
19155 if((finishtime-starttime) < besttime)
19156 besttime=(finishtime-starttime);
19169 #ifdef HAVE_ANSIC_C 19177 double starttime, finishtime;
19186 for(j=0;j<
delay;j++)
19189 if(starttime==finishtime)
19202 #ifdef HAVE_ANSIC_C 19216 LARGE_INTEGER freq,counter;
19224 return ((
double) (tp.
tv_sec)*1000000.0)+(((double)tp.
tv_usec));
19229 QueryPerformanceFrequency(&freq);
19230 QueryPerformanceCounter(&counter);
19231 bigcounter=(double)counter.HighPart *(
double)0xffffffff +
19232 (double)counter.LowPart;
19233 wintime = (
double)(bigcounter/(double)freq.LowPart);
19234 return((
double)wintime*1000000.0);
19237 #if defined (OSFV4) || defined(OSFV3) || defined(OSFV5) 19240 if (getclock(TIMEOFDAY, (
struct timespec *) &gp) == -1)
19241 perror(
"getclock");
19242 return (( (
double) (gp.
tv_sec)*1000000.0) +
19243 ( ((
float)(gp.
tv_nsec)) * 0.001 ));
19250 perror(
"pit_gettimeofday");
19251 return ((
double) (tp.
tv_sec)*1000000.0) + (((double) tp.
tv_usec) );
19255 if (
gettimeofday(&tp, (
struct timezone *) NULL) == -1)
19256 perror(
"gettimeofday");
19257 return ((
double) (tp.
tv_sec)*1000000.0) + (((double) tp.
tv_usec) );
19267 #ifdef HAVE_ANSIC_C 19275 return((
double)sysconf(_SC_CLK_TCK));
19281 #ifdef HAVE_ANSIC_C 19292 return ((
double) (tp.tms_utime));
19298 #ifdef HAVE_ANSIC_C 19309 return ((
double) (tp.tms_stime));
19315 #ifdef HAVE_ANSIC_C 19327 return ((
double) (tp.tms_utime + tp.tms_stime) / sc_clk_tck);
19331 if (getrusage (RUSAGE_SELF, &ru))
19332 perror (
"getrusage");
19333 return ((
double)(ru.ru_utime.tv_sec + ru.ru_stime.tv_sec) +
19334 .000001 *(ru.ru_utime.tv_usec + ru.ru_stime.tv_usec));
19342 #ifdef HAVE_ANSIC_C 19344 cpu_util(
double cputime,
double walltime)
19348 double cputime, walltime;
19353 if (walltime <= (
double)0.0)
19358 if (cputime <= (
double)0.0)
19360 if (walltime <= (
double)0.0)
19361 cpu = (double)100.0;
19363 cpu = (((double)100.0 * cputime) / walltime);
19383 #ifdef HAVE_ANSIC_C 19392 struct flock myflock;
19396 myflock.l_type=F_UNLCK;
19397 myflock.l_whence=SEEK_SET;
19400 myflock.l_pid=getpid();
19401 ret=fcntl(
fd,F_SETLKW, &myflock);
19407 myflock.l_type=F_WRLCK;
19409 myflock.l_type=F_RDLCK;
19410 myflock.l_whence=SEEK_SET;
19413 myflock.l_pid=getpid();
19414 ret=fcntl(
fd,F_SETLKW, &myflock);
19419 #ifdef HAVE_ANSIC_C 19430 struct flock myflock;
19435 myflock.l_type=F_UNLCK;
19436 myflock.l_whence=SEEK_SET;
19438 myflock.l_len=size;
19439 myflock.l_pid=getpid();
19440 ret=fcntl(
fd,F_SETLKW, &myflock);
19447 myflock.l_type=F_WRLCK;
19452 myflock.l_type=F_RDLCK;
19456 myflock.l_whence=SEEK_SET;
19458 myflock.l_len=size;
19459 myflock.l_pid=getpid();
19460 ret=fcntl(
fd,F_SETLKW, &myflock);
19469 #ifdef HAVE_ANSIC_C 19478 double starttime,tmptime;
19479 if(comp_delay == (
float)0.0)
19485 if(tmptime >= (
double)comp_delay)
19497 #ifdef HAVE_ANSIC_C 19506 char *nbuff,*free_addr;
19539 #if defined(Windows) 19546 #ifdef HAVE_ANSIC_C 19548 disruptw(HANDLE hand)
19555 char *nbuff,*free_addr;
19563 current=SetFilePointer(hand,(LONG)0,0,FILE_CURRENT);
19566 SetFilePointer(hand,(LONG)0,0,FILE_BEGIN);
19572 SetFilePointer(hand,(LONG)
page_size,0,FILE_BEGIN);
19578 SetFilePointer(hand,(LONG)current,0,FILE_BEGIN);
19591 #ifdef HAVE_ANSIC_C 19593 get_traj(FILE *traj_fd,
long long *traj_size,
float *
delay,
long which)
19598 long long *traj_size;
19603 long long traj_offset = 0;
19604 long long tmp2 = 0;
19618 ret1=fgets(
buf,200,traj_fd);
19619 if(ret1==(
char *)0)
19621 printf(
"\n\n\tEarly end of telemetry file. Results not accurate.\n");
19624 where=(
char *)&
buf[0];
19626 if((*where==
'#') || (*where==
'\n'))
19630 while( (
char *)(strtok( (
char *)0,
" ")) != (
char *)0)
19638 #ifdef NO_PRINT_LLD 19639 ret=sscanf(sbuf,
"%ld %ld %d\n",&traj_offset,&tmp2,&
tmp);
19641 ret=sscanf(sbuf,
"%lld %lld %d\n",&traj_offset,&tmp2,&
tmp);
19649 #ifdef NO_PRINT_LLD 19650 ret=sscanf(sbuf,
"%ld %ld\n",&traj_offset,traj_size);
19652 ret=sscanf(sbuf,
"%lld %lld\n",&traj_offset,traj_size);
19657 if((tokens != 2) && (tokens !=3))
19659 printf(
"\n\tInvalid entry in telemetry file. > %s <\n",sbuf);
19664 printf(
"\n\n\tEarly end of telemetry file. Results not accurate.\n");
19668 #ifdef NO_PRINT_LLD 19669 if(!
silent) printf(
"\nOffset %lld Size %ld Compute delay %f\n",traj_offset, *traj_size,*
delay);
19671 if(!
silent) printf(
"\nOffset %lld Size %lld Compute delay %f\n",traj_offset, *traj_size,*
delay);
19674 return(traj_offset);
19680 #ifdef HAVE_ANSIC_C 19690 if(
fd == (FILE *)0)
19692 printf(
"Unable to open read telemetry file \"%s\"\n",
19702 #ifdef HAVE_ANSIC_C 19712 if(
fd == (FILE *)0)
19714 printf(
"Unable to open write telemetry file \"%s\"\n",
19727 #ifdef HAVE_ANSIC_C 19737 long long traj_offset = 0;
19738 long long traj_size = 0;
19739 long long max_offset = 0;
19749 if(
fd == (FILE *)0)
19751 printf(
"Unable to open read telemetry file \"%s\"\n",
19758 ret1=fgets(
buf,200,
fd);
19759 if(ret1==(
char *)0)
19761 where=(
char *)&
buf[0];
19764 if((*where==
'#') || (*where==
'\n'))
19768 while( (
char *)(strtok( (
char *)0,
" ")) != (
char *)0)
19774 printf(
"\n\tInvalid read telemetry file entry. Line %d",
19779 printf(
"Tokens = %d\n",tokens);
19783 #ifdef NO_PRINT_LLD 19784 ret=sscanf(sbuf,
"%ld %ld %d\n",&traj_offset,&traj_size,&
dummy);
19786 ret=sscanf(sbuf,
"%lld %lld %d\n",&traj_offset,&traj_size,&
dummy);
19791 #ifdef NO_PRINT_LLD 19792 ret=sscanf(sbuf,
"%ld %ld\n",&traj_offset,&traj_size);
19794 ret=sscanf(sbuf,
"%lld %lld\n",&traj_offset,&traj_size);
19797 if((tokens != 2) && (tokens !=3))
19799 printf(
"\n\tInvalid read telemetry file. Line %d\n",lines);
19802 if(traj_offset + traj_size > max_offset)
19803 max_offset=traj_offset + traj_size;
19820 #ifdef HAVE_ANSIC_C 19830 long long traj_offset = 0;
19831 long long traj_size = 0;
19832 long long max_offset = 0;
19843 if(
fd == (FILE *)0)
19845 printf(
"Unable to open write telemetry file \"%s\"\n",
19852 ret1=fgets(
buf,200,
fd);
19853 if(ret1==(
char *)0)
19856 where=(
char *)&
buf[0];
19858 if((*where==
'#') || (*where==
'\n'))
19862 while( (
char *)(strtok( (
char *)0,
" ")) != (
char *)0)
19868 printf(
"\n\tInvalid write telemetry file entry. Line %d\n",
19874 #ifdef NO_PRINT_LLD 19875 ret=sscanf(sbuf,
"%ld %ld %d\n",&traj_offset,&traj_size,&
dummy);
19877 ret=sscanf(sbuf,
"%lld %lld %d",&traj_offset,&traj_size,&
dummy);
19882 #ifdef NO_PRINT_LLD 19883 ret=sscanf(sbuf,
"%ld %ld\n",&traj_offset,&traj_size);
19885 ret=sscanf(sbuf,
"%lld %lld\n",&traj_offset,&traj_size);
19890 printf(
"\n\tInvalid write telemetry file entry. Line %d\n",
19894 if(traj_offset + traj_size > max_offset)
19895 max_offset=traj_offset + traj_size;
19904 return(max_offset);
19911 #ifdef HAVE_ANSIC_C 19929 if(
fd == (FILE *)0)
19935 ret1=fgets(
buf,200,
fd);
19936 if(ret1==(
char *)0)
19941 where=(
char *)&
buf[0];
19942 if((*where==
'#') || (*where==
'\n'))
19946 while( (
char *)(strtok( (
char *)0,
" ")) != (
char *)0)
19952 printf(
"Found %d items in the read telemetry file\n",things);
19959 if(
fd == (FILE *)0)
19965 ret1=fgets(
buf,200,
fd);
19966 if(ret1==(
char *)0)
19971 where=(
char *)&
buf[0];
19972 if((*where==
'#') || (*where==
'\n'))
19976 while( (
char *)(strtok( (
char *)0,
" ")) != (
char *)0)
19983 printf(
"Found %d items in the write telemetry file\n",things);
19995 #ifdef HAVE_ANSIC_C 20017 for(kilosi=min_f_size;kilosi<=max_f_size;kilosi*=
multiplier)
20027 #ifdef HAVE_ANSIC_C 20043 if(size_listp->
next)
20044 while(size_listp->
next!=0)
20045 size_listp=size_listp->
next;
20050 printf(
"Malloc failed in add_file_size\n");
20053 nsize_list->
next=0;
20058 size_listp->
next=nsize_list;
20065 #ifdef HAVE_ANSIC_C 20078 for( ; size_listp ; size_listp=size_listp->
next )
20081 return(size_listp->
size);
20094 #ifdef HAVE_ANSIC_C 20123 #ifdef HAVE_ANSIC_C 20137 while(size_listp!=0)
20139 save_item=size_listp->
next;
20141 size_listp=save_item;
20150 #ifdef HAVE_ANSIC_C 20166 if(size_listp->
next)
20167 while(size_listp->
next!=0)
20168 size_listp=size_listp->
next;
20173 printf(
"Malloc failed in add_file_size\n");
20176 nsize_list->
next=0;
20181 size_listp->
next=nsize_list;
20188 #ifdef HAVE_ANSIC_C 20201 for( ; size_listp ; size_listp=size_listp->
next )
20204 return(size_listp->
size);
20272 #ifdef HAVE_ANSIC_C 20284 struct sockaddr_in addr;
20285 int recv_buf_size=65536*4;
20287 struct linger
dummy={1,0};
20289 s = socket(AF_INET, SOCK_STREAM, 0);
20292 perror(
"socket failed:");
20295 sockerr = setsockopt (
s, SOL_SOCKET, SO_RCVBUF, (
char *)
20296 &recv_buf_size,
sizeof(
int));
20297 if ( sockerr == -1 ) {
20298 perror(
"Error in setsockopt 1\n");
20300 sockerr = setsockopt (
s, SOL_SOCKET, SO_REUSEADDR, (
char *)
20301 &optval,
sizeof(
int));
20302 if ( sockerr == -1 ) {
20303 perror(
"Error in setsockopt 2\n");
20305 sockerr = setsockopt (
s, SOL_SOCKET, SO_LINGER, (
char *)
20306 &
dummy,
sizeof(
struct linger));
20307 if ( sockerr == -1 ) {
20308 perror(
"Error in setsockopt 2\n");
20311 bzero(&addr,
sizeof(
struct sockaddr_in));
20312 addr.sin_port = htons(tmp_port);
20313 addr.sin_family = AF_INET;
20314 addr.sin_addr.s_addr = INADDR_ANY;
20318 rc = bind(
s, (
struct sockaddr *)&addr,
20319 sizeof(
struct sockaddr_in));
20323 addr.sin_port=htons(tmp_port);
20330 perror(
"bind failed\n");
20335 printf(
"Master listening on socket %d Port %d\n",
s,tmp_port);
20345 #ifdef HAVE_ANSIC_C 20351 int sock, size_of_message;
20356 struct sockaddr_in *addr;
20362 tsize = size_of_message;
20365 me=
sizeof(
struct sockaddr_in);
20368 printf(
"Master in listening mode on socket %d\n",
s);
20373 perror(
"Master: listen returned error\n");
20376 printf(
"Master in accepting connection\n");
20377 ns=accept(
s,(
void *)addr,&me);
20380 printf(
"Master socket %d\n",
s);
20381 perror(
"Master: ***** accept returned error *****\n");
20386 printf(
"Master in reading from connection\n");
20391 printf(
"Master read failed. Ret %d Errno %d\n",
ret,
errno);
20401 #ifdef HAVE_ANSIC_C 20413 int rc,child_socket_val;
20414 struct hostent *he;
20416 struct in_addr *ip;
20417 struct sockaddr_in cs_addr,cs_raddr;
20436 ip = (
struct in_addr *)he->h_addr_list[0];
20439 cs_raddr.sin_family = AF_INET;
20441 cs_raddr.sin_addr.s_addr = ip->s_addr;
20442 child_socket_val = socket(AF_INET, SOCK_STREAM, 0);
20443 if (child_socket_val < 0)
20445 perror(
"Child: socket failed:");
20448 bzero(&cs_addr,
sizeof(
struct sockaddr_in));
20450 cs_addr.sin_port = htons(tmp_port);
20451 cs_addr.sin_family = AF_INET;
20452 cs_addr.sin_addr.s_addr = INADDR_ANY;
20456 rc = bind(child_socket_val, (
struct sockaddr *)&cs_addr,
20457 sizeof(
struct sockaddr_in));
20461 cs_addr.sin_port=htons(tmp_port);
20467 perror(
"Child: bind failed\n");
20476 nanosleep(&req,&rem);
20477 rc = connect(child_socket_val, (
struct sockaddr *)&cs_raddr,
20478 sizeof(
struct sockaddr_in));
20483 nanosleep(&req,&rem);
20492 close(child_socket_val);
20493 nanosleep(&req,&rem);
20501 fprintf(
newstdout,
"Child connected\n");
20531 #ifdef NO_PRINT_LLD 20538 perror(
"write failed\n");
20541 close(child_socket_val);
20550 #ifdef HAVE_ANSIC_C 20556 int child_socket_val;
20648 #ifdef NO_PRINT_LLD 20675 printf(
"Master sending message to %s \n",host_name);
20680 perror(
"write failed\n");
20688 #ifdef HAVE_ANSIC_C 20694 int child_socket_val;
20697 close(child_socket_val);
20703 #ifdef HAVE_ANSIC_C 20709 int child_socket_val;
20712 close(child_socket_val);
20718 #ifdef HAVE_ANSIC_C 20724 int master_socket_val;
20728 printf(
"Stop master listen\n");
20732 close(master_socket_val);
20733 master_socket_val = 0;
20739 #ifdef HAVE_ANSIC_C 20745 int child_socket_val;
20748 close(child_socket_val);
20754 #ifdef HAVE_ANSIC_C 20760 int size_of_message;
20769 int recv_buf_size=65536;
20771 struct linger
dummy={1,0};
20773 tsize=size_of_message;
20774 s = socket(AF_INET, SOCK_STREAM, 0);
20777 perror(
"socket failed:");
20780 sockerr = setsockopt (
s, SOL_SOCKET, SO_RCVBUF, (
char *)
20781 &recv_buf_size,
sizeof(
int));
20782 if ( sockerr == -1 ) {
20783 perror(
"Error in setsockopt 3\n");
20785 sockerr = setsockopt (
s, SOL_SOCKET, SO_REUSEADDR, (
char *)
20786 &optval,
sizeof(
int));
20787 if ( sockerr == -1 ) {
20788 perror(
"Error in setsockopt 4\n");
20790 sockerr = setsockopt (
s, SOL_SOCKET, SO_LINGER, (
char *)
20791 &
dummy,
sizeof(
struct linger));
20792 if ( sockerr == -1 ) {
20793 perror(
"Error in setsockopt 4\n");
20795 bzero(&child_sync_sock,
sizeof(
struct sockaddr_in));
20797 child_sync_sock.sin_port = htons(tmp_port);
20798 child_sync_sock.sin_family = AF_INET;
20799 child_sync_sock.sin_addr.s_addr = INADDR_ANY;
20803 rc = bind(
s, (
struct sockaddr *)&child_sync_sock,
20804 sizeof(
struct sockaddr_in));
20808 child_sync_sock.sin_port=htons(tmp_port);
20812 child_port = ntohs(child_sync_sock.sin_port);
20815 fprintf(
newstdout,
"Child %d: Listen: Bound at port %d\n",(
int)
chid, tmp_port);
20826 #ifdef HAVE_ANSIC_C 20837 struct sockaddr_in *addr;
20849 addr=&child_sync_sock;
20856 me=
sizeof(
struct sockaddr_in);
20859 printf(
"Child %d enters listen\n",(
int)
chid);
20868 ns=accept(
s,(
void *)addr,&me);
20871 fprintf(
newstdout,
"Child %d attached for receive. Sock %d %d\n",
20883 #ifdef HAVE_ANSIC_C 20889 int sock, size_of_message;
20901 tsize=size_of_message;
20903 while(rcvd < tsize)
20910 rc=
read(
s,cnc,size_of_message);
20927 fprintf(
newstdout,
"Child %d: return from listen\n",(
int)
chid);
20934 #ifdef HAVE_ANSIC_C 20940 int size_of_message;
20949 int recv_buf_size=65536;
20952 tsize=size_of_message;
20953 s = socket(AF_INET, SOCK_STREAM, 0);
20956 perror(
"socket failed:");
20959 sockerr = setsockopt (
s, SOL_SOCKET, SO_RCVBUF, (
char *)
20960 &recv_buf_size,
sizeof(
int));
20961 if ( sockerr == -1 ) {
20962 perror(
"Error in setsockopt 5\n");
20964 sockerr = setsockopt (
s, SOL_SOCKET, SO_REUSEADDR, (
char *)
20965 &optval,
sizeof(
int));
20966 if ( sockerr == -1 ) {
20967 perror(
"Error in setsockopt 6\n");
20978 sizeof(
struct sockaddr_in));
20989 fprintf(
newstdout,
"Child %d: Async Listen: Bound at port %d\n",
20990 (
int)
chid,tmp_port);
21005 #ifdef HAVE_ANSIC_C 21011 int sock, size_of_message;
21022 tsize=size_of_message;
21024 while(rcvd < tsize)
21028 fprintf(
newstdout,
"Child %d In async recieve \n",(
int)
chid);
21031 rc=
read(
s,cnc,size_of_message);
21055 fprintf(
newstdout,
"Child %d: return from async listen\n",(
int)
chid);
21065 #ifdef HAVE_ANSIC_C 21071 char *child_host_name;
21073 struct in_addr *my_s_addr;
21076 int rc,master_socket_val;
21077 struct sockaddr_in addr,raddr;
21078 struct hostent *he;
21081 struct in_addr *ip;
21089 he = gethostbyname(child_host_name);
21092 printf(
"Master: Bad hostname >%s<\n",child_host_name);
21098 printf(
"Master: start master send: %s\n", he->h_name);
21101 ip = (
struct in_addr *)he->h_addr_list[0];
21105 printf(
"Master: child name: %s\n", (
char *)
inet_ntoa(*ip));
21106 printf(
"Master: child Port: %d\n",
child_port);
21112 my_s_addr->s_addr = ip->s_addr;
21115 raddr.sin_family = AF_INET;
21116 raddr.sin_port = htons(port);
21117 raddr.sin_addr.s_addr = ip->s_addr;
21118 master_socket_val = socket(AF_INET, SOCK_STREAM, 0);
21119 if (master_socket_val < 0)
21121 perror(
"Master: socket failed:");
21124 bzero(&addr,
sizeof(
struct sockaddr_in));
21126 addr.sin_port = htons(tmp_port);
21127 addr.sin_family = AF_INET;
21128 addr.sin_addr.s_addr = INADDR_ANY;
21132 rc = bind(master_socket_val, (
struct sockaddr *)&addr,
21133 sizeof(
struct sockaddr_in));
21137 addr.sin_port=htons(tmp_port);
21143 printf(
"Master: Bound port\n");
21148 perror(
"Master: bind failed for sync channel to child.\n");
21151 nanosleep(&req,&rem);
21153 rc = connect(master_socket_val, (
struct sockaddr *)&raddr,
21154 sizeof(
struct sockaddr_in));
21159 nanosleep(&req,&rem);
21163 perror(
"Master: connect failed\n");
21164 printf(
"Error %d\n",
errno);
21169 printf(
"Master Connected\n");
21172 return (master_socket_val);
21179 #ifdef HAVE_ANSIC_C 21185 char *child_host_name;
21187 struct in_addr my_s_addr;
21190 int rc,master_socket_val;
21191 struct sockaddr_in addr,raddr;
21197 req.tv_nsec = 10000000;
21199 rem.tv_nsec = 10000000;
21203 nanosleep(&req,&rem);
21206 raddr.sin_family = AF_INET;
21207 raddr.sin_port = htons(port);
21208 raddr.sin_addr.s_addr = my_s_addr.s_addr;
21209 master_socket_val = socket(AF_INET, SOCK_STREAM, 0);
21210 if (master_socket_val < 0)
21212 perror(
"Master: async socket failed:");
21215 bzero(&addr,
sizeof(
struct sockaddr_in));
21217 addr.sin_port = htons(tmp_port);
21218 addr.sin_family = AF_INET;
21219 addr.sin_addr.s_addr = INADDR_ANY;
21223 rc = bind(master_socket_val, (
struct sockaddr *)&addr,
21224 sizeof(
struct sockaddr_in));
21228 addr.sin_port=htons(tmp_port);
21234 printf(
"Master: Bound async port\n");
21239 perror(
"Master: bind async failed\n");
21244 rc = connect(master_socket_val, (
struct sockaddr *)&raddr,
21245 sizeof(
struct sockaddr_in));
21251 #if defined (Windows) 21254 nanosleep(&req,&rem);
21258 perror(
"Master: async connect failed\n");
21259 close(master_socket_val);
21260 #if defined (Windows) 21263 nanosleep(&req,&rem);
21271 printf(
"Master async Connected\n");
21274 return (master_socket_val);
21281 #ifdef HAVE_ANSIC_C 21298 x=(
long long)fork();
21301 printf(
"Starting proc %d\n",(
int)
x);
21314 #ifdef HAVE_ANSIC_C 21325 int c_command,child_index;
21330 struct in_addr my_s_addr;
21331 char my_port_num[10];
21347 strcat(command,
" -n '");
21349 strcat(command,
" -+s -t 1 -r 4 -s 4 -+c ");
21354 strcat(command,my_port_num);
21356 strcat(command,
" '");
21363 printf(
"%s",command);
21375 printf(
"\nMaster listening for child to send join message.\n");
21396 printf(
"Master back from listen child Joined.\n");
21397 printf(
"Master: Command %d\n",c_command);
21402 printf(
"Starting master send channel\n");
21406 printf(
"Starting master send async channel\n");
21504 printf(
"Master sending client who he is\n");
21513 printf(
"Master listening for child to send at barrier message.\n");
21520 #ifdef NO_PRINT_LLD 21530 printf(
"Master sees child %d at barrier message.\n",child_index);
21550 #ifdef HAVE_ANSIC_C 21562 char client_name[100];
21572 (void)gethostname(client_name,100);
21578 newstdin=freopen(
"/tmp/don_in",
"r+",stdin);
21579 newstdout=freopen(
"/tmp/don_out",
"a+",stdout);
21580 newstderr=freopen(
"/tmp/don_err",
"a+",stderr);
21610 fprintf(
newstdout,
"Child %s sends JOIN to master %s Host Port %d\n",
21624 fprintf(
newstdout,
"Child %s waiting for who am I\n",client_name);
21642 fprintf(
newstdout,
"Child %d received terminate on sync channel !!\n",(
int)
chid);
21650 fprintf(
newstdout,
"Child sees: \n Client name %s \n Client_num # %d \n Host_name %s\n" 21662 #ifdef NO_PRINT_LLD 21844 fprintf(
newstdout,
"Child %d change directory to %s\n",(
int)
chid,workdir);
21852 if(chdir(workdir)<0)
21865 printf(
"Child got HISTORY flag\n");
21874 fprintf(
newstdout,
"Child %d running thread_write_test\n",(
int)
chid);
21883 fprintf(
newstdout,
"Child %d running thread_pwrite_test\n",(
int)
chid);
21886 thread_pwrite_test((
long)0);
21892 fprintf(
newstdout,
"Child %d running thread_rewrite_test\n",(
int)
chid);
21900 fprintf(
newstdout,
"Child %d running thread_read_test\n",(
int)
chid);
21909 fprintf(
newstdout,
"Child %d running thread_read_test\n",(
int)
chid);
21912 thread_pread_test((
long)0);
21918 fprintf(
newstdout,
"Child %d running thread_reread_test\n",(
int)
chid);
21926 fprintf(
newstdout,
"Child %d running thread_stride_read_test\n",(
int)
chid);
21934 fprintf(
newstdout,
"Child %d running random read test\n",(
int)
chid);
21942 fprintf(
newstdout,
"Child %d running random write test\n",(
int)
chid);
21950 fprintf(
newstdout,
"Child %d running reverse read test\n",(
int)
chid);
21958 fprintf(
newstdout,
"Child %d running mixed workload test\n",(
int)
chid);
21966 fprintf(
newstdout,
"Child %d running thread_fwrite_test\n",(
int)
chid);
21974 fprintf(
newstdout,
"Child %d running thread_fread_test\n",(
int)
chid);
21990 fprintf(
newstdout,
"Child %d finished running test.\n",(
int)
chid);
22004 #ifdef HAVE_ANSIC_C 22007 cpu_time, wall_time,
stop_flag, child_flag)
22010 double throughput, actual, wall_time;
22013 long long child_flag;
22026 double throughput, actual, wall_time;
22029 long long child_flag;
22048 fprintf(
newstdout,
"Child %d: Tell master stats and terminate\n",(
int)
chid);
22059 #ifdef HAVE_ANSIC_C 22068 printf(
"Stopping Master listen loop");
22077 #ifdef HAVE_ANSIC_C 22090 fprintf(
newstdout,
"Child %d: Tell master to go\n",(
int)
chid);
22106 #ifdef HAVE_ANSIC_C 22125 fprintf(
newstdout,
"Child %d received terminate on sync channel at barrier !!\n",(
int)
chid);
22132 fprintf(
newstdout,
"Child %d return from wait_for_master_go\n",(
int)
chid);
22145 #ifdef HAVE_ANSIC_C 22172 printf(
"Starting Master listen loop m %d c %d count %d\n",
master_iozone,
22190 printf(
"Client # %d is not running the same version of Iozone !\n",
22195 printf(
"\nClient # %d reporting an error %s !\n",
22198 #ifdef NO_PRINT_LLD 22219 printf(
"*** Unknown Iozone children responding !!! ***\n");
22224 printf(
"loop: R_STAT_DATA for client %d\n",
i);
22238 printf(
"*** Unknown Iozone children responding !!! ***\n");
22242 printf(
"loop: R_FLAG_DATA: Client %d flag %d \n",
22253 printf(
"*** Unknown Iozone children responding !!! ***\n");
22257 printf(
"Master loop: R_STOP_FLAG: Client %d STOP_FLAG \n",
22270 #if defined(Windows) 22273 nanosleep(&req,&rem);
22282 #ifdef HAVE_ANSIC_C 22300 fprintf(
newstdout,
"Child %d starting client listen loop\n",(
int)
chid);
22320 fprintf(
newstdout,
"child loop: R_STOP_FLAG for client %d\n",
i);
22330 fprintf(
newstdout,
"Child loop: R_TERMINATE: Client %d \n",
22341 fprintf(
newstdout,
"Child loop: R_DEATH: Client %d \n",
22360 #ifdef HAVE_ANSIC_C 22366 long long childnum;
22372 x = (int) childnum;
22374 printf(
"Master: Tell child %d to begin\n",
x);
22386 #ifdef HAVE_ANSIC_C 22396 printf(
"Master: All children have finished. Sending terminate\n");
22412 #ifdef HAVE_ANSIC_C 22426 if(
fd == (FILE *)NULL)
22428 printf(
"Unable to open client file \"%s\"\n",
22435 printf(
"Too many lines in client file - max of %d supported\n",
22440 if(ret1== (
char *)NULL)
22459 #ifdef HAVE_ANSIC_C 22475 num=sscanf(
buffer,
"%s %s %s %s\n",
22480 if((num > 0) && (num !=3) && (num !=4))
22482 printf(
"Bad Client Identity at entry %d\n",line_num);
22483 printf(
"Client: -> %s Workdir: -> %s Execute_path: -> %s \n",
22499 #ifdef HAVE_ANSIC_C 22533 #ifdef HAVE_ANSIC_C 22550 printf(
"Master terminating async channels to children.\n");
22559 #ifdef HAVE_ANSIC_C 22582 printf(
"Master not send stop %d\n",
s_count);
22593 printf(
"Master distributing stop flag to child %d\n",
i);
22602 #ifdef HAVE_ANSIC_C 22620 fprintf(
newstdout,
"Child %d sending stop flag to master\n",(
int)
chid);
22642 #ifdef HAVE_ANSIC_C 22664 printf(
"Master sending signaled death to child !!\n");
22671 printf(
"Master sending signaled death to child !!\n");
22674 printf(
"Master sending signaled death to child async !!\n");
22685 #ifdef HAVE_ANSIC_C 22701 #ifdef HAVE_ANSIC_C 22711 value=(
char *)
getenv(
"RSH");
22714 strcpy(shell,value);
22717 #ifdef _HPUX_SOURCE 22718 strcpy(shell,
"remsh");
22720 strcpy(shell,
"rsh");
22724 #ifdef HAVE_ANSIC_C 22733 char *
start,*stop,*sync;
22741 stop=(
char *)
getenv(
"IMON_STOP");
22746 sync=(
char *)
getenv(
"IMON_SYNC");
22759 #ifdef HAVE_ANSIC_C 22767 long long *data1,*data2;
22806 void speed_main(
char *,
char *,
long long ,
long long ,
int);
22816 #ifdef HAVE_ANSIC_C 22819 long long kilos,
int client_flag)
22855 newstdin=freopen(
"/tmp/don_in",
"r+",stdin);
22856 newstdout=freopen(
"/tmp/don_out",
"a+",stdout);
22857 newstderr=freopen(
"/tmp/don_err",
"a+",stderr);
22868 sprintf(
sp_command,
"%s %s %s -+s -t 1 -r %d -s %d -+c %s -+t ",
22880 printf(
"***************************************************\n");
22881 printf(
"* >>>>> Client Network Speed check <<<<< *\n");
22882 printf(
"***************************************************\n\n");
22884 printf(
"Transfer size %d bytes \n",
sp_msize);
22886 printf(
"Total size %d kbytes \n\n",
22900 #ifdef HAVE_ANSIC_C 22917 while(sp_offset < 1024)
22919 xx=
read(tcfd,&mybuf[sp_offset],1024);
22922 sscanf(mybuf,
"%d %f",&
count,&throughput);
22924 printf(
"%-20s received %10d Kbytes @ %10.2f Kbytes/sec \n",
22927 printf(
"%-20s sent %10d Kbytes @ %10.2f Kbytes/sec \n",
22935 #ifdef HAVE_ANSIC_C 22947 sprintf(mybuf,
"%d %f",
count, throughput);
22963 #ifdef HAVE_ANSIC_C 22969 char *sp_child_host_name;
22974 int rc,master_socket_val;
22975 struct sockaddr_in addr,raddr;
22976 struct hostent *he;
22979 struct in_addr *ip;
22987 he = gethostbyname(sp_child_host_name);
22990 printf(
"Master: Bad hostname >%s<\n",sp_child_host_name);
22996 printf(
"Master: start master send: %s\n", he->h_name);
22999 ip = (
struct in_addr *)he->h_addr_list[0];
23003 printf(
"Master: child name: %s\n", (
char *)
inet_ntoa(*ip));
23013 raddr.sin_family = AF_INET;
23014 raddr.sin_port = htons(port);
23015 raddr.sin_addr.s_addr = ip->s_addr;
23016 master_socket_val = socket(AF_INET, SOCK_STREAM, 0);
23017 if (master_socket_val < 0)
23019 perror(
"Master: socket failed:");
23022 bzero(&addr,
sizeof(
struct sockaddr_in));
23024 addr.sin_port = htons(tmp_port);
23025 addr.sin_family = AF_INET;
23026 addr.sin_addr.s_addr = INADDR_ANY;
23030 rc = bind(master_socket_val, (
struct sockaddr *)&addr,
23031 sizeof(
struct sockaddr_in));
23035 addr.sin_port=htons(tmp_port);
23041 printf(
"Master: Bound port\n");
23046 perror(
"Master: bind failed for sync channel to child.\n");
23049 #if defined(Windows) 23052 nanosleep(&req,&rem);
23056 rc = connect(master_socket_val, (
struct sockaddr *)&raddr,
23057 sizeof(
struct sockaddr_in));
23062 #if defined(Windows) 23065 nanosleep(&req,&rem);
23070 perror(
"Master: connect failed\n");
23071 printf(
"Error %d\n",
errno);
23076 printf(
"Master Connected\n");
23079 return (master_socket_val);
23085 #ifdef HAVE_ANSIC_C 23092 int size_of_message;
23101 struct sockaddr_in *addr;
23103 int recv_buf_size=65536;
23106 me=
sizeof(
struct sockaddr_in);
23107 tsize=size_of_message;
23108 s = socket(AF_INET, SOCK_STREAM, 0);
23111 perror(
"socket failed:");
23114 sockerr = setsockopt (
s, SOL_SOCKET, SO_RCVBUF, (
char *)
23115 &recv_buf_size,
sizeof(
int));
23116 if ( sockerr == -1 ) {
23117 perror(
"Error in setsockopt 7\n");
23119 sockerr = setsockopt (
s, SOL_SOCKET, SO_REUSEADDR, (
char *)
23120 &optval,
sizeof(
int));
23121 if ( sockerr == -1 ) {
23122 perror(
"Error in setsockopt 8\n");
23124 bzero(&sp_child_sync_sock,
sizeof(
struct sockaddr_in));
23126 sp_child_sync_sock.sin_port = htons(tmp_port);
23127 sp_child_sync_sock.sin_family = AF_INET;
23128 sp_child_sync_sock.sin_addr.s_addr = INADDR_ANY;
23132 rc = bind(
s, (
struct sockaddr *)&sp_child_sync_sock,
23133 sizeof(
struct sockaddr_in));
23137 sp_child_sync_sock.sin_port=htons(tmp_port);
23144 fprintf(
newstdout,
"Child: Listen: Bound at port %d\n", tmp_port);
23161 fprintf(
newstdout,
"Child enters accept\n");
23164 ns=accept(
s,(
void *)addr,&me);
23167 fprintf(
newstdout,
"Child attached for receive. Sock %d %d\n", ns,
errno);
23178 #ifdef HAVE_ANSIC_C 23205 fprintf(
newstdout,
"Child error %d offset %d\n",
23256 #ifdef HAVE_ANSIC_C 23283 printf(
"%-20s sent %10d kbytes @ %10.2f Kbytes/sec \n",
23303 printf(
"Master error %d offset %d\n",
errno,
23314 printf(
"%-20s received %10d kbytes @ %10.2f Kbytes/sec \n",
23326 #ifdef HAVE_ANSIC_C 23332 int sp_size_of_message;
23342 struct sockaddr_in *addr;
23344 int recv_buf_size=65536;
23347 me=
sizeof(
struct sockaddr_in);
23348 tsize=sp_size_of_message;
23349 s = socket(AF_INET, SOCK_STREAM, 0);
23352 perror(
"socket failed:");
23355 sockerr = setsockopt (
s, SOL_SOCKET, SO_RCVBUF, (
char *)
23356 &recv_buf_size,
sizeof(
int));
23357 if ( sockerr == -1 ) {
23358 perror(
"Error in setsockopt 9\n");
23360 sockerr = setsockopt (
s, SOL_SOCKET, SO_REUSEADDR, (
char *)
23361 &optval,
sizeof(
int));
23362 if ( sockerr == -1 ) {
23363 perror(
"Error in setsockopt 10\n");
23365 bzero(&sp_master_sync_sock,
sizeof(
struct sockaddr_in));
23367 sp_master_sync_sock.sin_port = htons(tmp_port);
23368 sp_master_sync_sock.sin_family = AF_INET;
23369 sp_master_sync_sock.sin_addr.s_addr = INADDR_ANY;
23373 rc = bind(
s, (
struct sockaddr *)&sp_master_sync_sock,
23374 sizeof(
struct sockaddr_in));
23378 sp_master_sync_sock.sin_port=htons(tmp_port);
23385 printf(
"Master: Listen: Bound at port %d\n", tmp_port);
23390 perror(
"bind failed\n");
23398 printf(
"Master enters accept\n");
23401 ns=accept(
s,(
void *)addr,&me);
23404 printf(
"Master attached for receive. Sock %d %d\n", ns,
errno);
23415 #ifdef HAVE_ANSIC_C 23421 char *sp_master_host_name;
23426 int rc,sp_child_socket_val;
23427 struct sockaddr_in addr,raddr;
23428 struct hostent *he;
23430 struct in_addr *ip;
23439 he = gethostbyname(sp_master_host_name);
23442 printf(
"Child: Bad hostname >%s<\n",sp_master_host_name);
23448 fprintf(
newstdout,
"Child: start child send: %s\n", he->h_name);
23449 fprintf(
newstdout,
"To: %s at port %d\n",sp_master_host_name,
23453 ip = (
struct in_addr *)he->h_addr_list[0];
23458 raddr.sin_family = AF_INET;
23459 raddr.sin_port = htons(port);
23460 raddr.sin_addr.s_addr = ip->s_addr;
23461 sp_child_socket_val = socket(AF_INET, SOCK_STREAM, 0);
23462 if (sp_child_socket_val < 0)
23464 perror(
"child: socket failed:");
23467 bzero(&addr,
sizeof(
struct sockaddr_in));
23469 addr.sin_port = htons(tmp_port);
23470 addr.sin_family = AF_INET;
23471 addr.sin_addr.s_addr = INADDR_ANY;
23475 rc = bind(sp_child_socket_val, (
struct sockaddr *)&addr,
23476 sizeof(
struct sockaddr_in));
23480 addr.sin_port=htons(tmp_port);
23486 fprintf(
newstdout,
"Child: Bound port %d\n",tmp_port);
23491 perror(
"Child: bind failed for sync channel to child.\n");
23494 #if defined(Windows) 23497 nanosleep(&req,&rem);
23500 rc = connect(sp_child_socket_val, (
struct sockaddr *)&raddr,
23501 sizeof(
struct sockaddr_in));
23506 #if defined(Windows) 23509 nanosleep(&req,&rem);
23520 fprintf(
newstdout,
"child Connected\n");
23523 return (sp_child_socket_val);
23526 #ifdef HAVE_ANSIC_C 23552 #ifdef HAVE_ANSIC_C 23563 value=(
char *)ctime(&t);
23564 strcpy(where,value);
23580 #ifdef HAVE_ANSIC_C 23590 unsigned char inp_pat;
23600 pat=(
rand()& 0xff);
23609 temp =((inp_pat << 24) | (inp_pat << 16) | (inp_pat << 8) | inp_pat);
23616 #ifdef HAVE_ANSIC_C 23625 perror(
"Memory allocation failed:");
23628 #ifdef _64BIT_ARCH_ 23643 #ifdef HAVE_ANSIC_C 23651 #ifdef _LARGEFILE64_SOURCE 23652 struct stat64 mystat;
23654 struct stat mystat;
23657 if(strlen(
name)==0)
23666 if(mystat.st_mode & S_IFREG)
23674 #ifdef HAVE_ANSIC_C 23692 #ifdef HAVE_ANSIC_C 23732 int percent_interior,
int percent_compress,
int all)
23734 register long *ip, *op;
23735 register long iseed;
23736 register long isize;
23737 register long cseed;
23739 register int value;
23740 register int interior_size;
23741 register int compress_size;
23746 if((percent > 100) || (percent < 0))
23752 isize = (size * percent)/100;
23753 interior_size = ((isize * percent_interior)/100);
23754 compress_size =((interior_size * percent_compress)/100);
23758 isize =
sizeof(long);
23760 for(w=0;w<interior_size;w+=
sizeof(long))
23768 w=interior_size - compress_size;
23769 op=(
long *)&obuf[w];
23770 ip=(
long *)&ibuf[w];
23773 for(w=(interior_size-compress_size);w<interior_size;w+=
sizeof(long))
23780 for(
x=interior_size;
x<isize;
x+=
sizeof(long))
23789 if(100-percent > 0)
23794 for( ;
x<size;
x+=
sizeof(long))
23795 *op++=(*ip++)^value;
23810 for(
x=0;
x<size/
sizeof(long);
x++)
23876 #define MATRIX_A 0xB5026F5AA96619E9ULL 23877 #define UM 0xFFFFFFFF80000000ULL 23878 #define LM 0x7FFFFFFFULL 23898 unsigned long long key_length)
23900 unsigned long long i, j, k;
23903 k = (
NN>key_length ?
NN : key_length);
23905 mt[
i] = (
mt[
i] ^ ((
mt[
i-1] ^ (
mt[
i-1] >> 62)) * 3935559000370003845ULL))
23909 if (j>=key_length) j=0;
23911 for (k=
NN-1; k; k--) {
23912 mt[
i] = (
mt[
i] ^ ((
mt[
i-1] ^ (
mt[
i-1] >> 62)) * 2862933555777941757ULL))
23918 mt[0] = 1ULL << 63;
23925 unsigned long long x;
23926 static unsigned long long mag01[2]={0ULL,
MATRIX_A};
23937 mt[
i] =
mt[
i+
MM] ^ (
x>>1) ^ mag01[(
int)(
x&1ULL)];
23939 for (;
i<
NN-1;
i++) {
23941 mt[
i] =
mt[
i+(
MM-
NN)] ^ (
x>>1) ^ mag01[(int)(
x&1ULL)];
23944 mt[
NN-1] =
mt[
MM-1] ^ (
x>>1) ^ mag01[(
int)(
x&1ULL)];
23951 x ^= (
x >> 29) & 0x5555555555555555ULL;
23952 x ^= (
x << 17) & 0x71D67FFFEDA60000ULL;
23953 x ^= (
x << 37) & 0xFFF7EEE000000000ULL;
23988 unsigned long long init[4]={0x12345ULL, 0x23456ULL, 0x34567ULL, 0x45678ULL},
length=4;
23990 printf(
"1000 outputs of genrand64_int64()\n");
23991 for (
i=0;
i<1000;
i++) {
23993 if (
i%5==4) printf(
"\n");
23995 printf(
"\n1000 outputs of genrand64_real2()\n");
23996 for (
i=0;
i<1000;
i++) {
23998 if (
i%5==4) printf(
"\n");
24038 #define DFLT_SERVICE "PIT" 24039 #define INVALID_DESC -1 24040 #define MAXBFRSIZE 256 24045 #if defined(Windows) 24059 int tz_minuteswest;
24069 unsigned scopeId = 0;
24083 "Sorry... a connectionless socket could " 24084 "not be set up.\n");
24100 const char *service,
24101 unsigned int scopeId )
24103 struct addrinfo *ai;
24105 struct addrinfo *aiHead;
24106 struct addrinfo hints;
24112 memset( &hints, 0,
sizeof( hints ) );
24113 hints.ai_family = PF_UNSPEC;
24114 hints.ai_socktype = SOCK_STREAM;
24115 hints.ai_protocol = IPPROTO_TCP;
24119 if ( ( aiErr = getaddrinfo( host,
24124 fprintf( stderr,
"(line %d): ERROR - %s.\n", __LINE__,
24125 gai_strerror( aiErr ) );
24139 if ( ai->ai_family == PF_INET6 )
24142 if ( pSadrIn6->sin6_scope_id == 0 )
24144 pSadrIn6->sin6_scope_id = scopeId;
24150 sckt = socket( ai->ai_family, ai->ai_socktype, ai->ai_protocol );
24160 if (connect( sckt, ai->ai_addr, ai->ai_addrlen ) )
24162 (void)
close( sckt );
24171 freeaddrinfo( aiHead );
24189 junk=
write( sckt,
"Are you there?", 14 );
24194 bfr[ inBytes ] =
'\0';
24198 sscanf(bfr,
"%llu\n",&value);
24199 tp->
tv_sec = (long)(value / 1000000);
24200 tp->
tv_usec = (long)(value % 1000000);
24215 200,400,600,800,1000,
24216 2000,4000,6000,8000,10000,
24217 12000,14000,16000,18000,20000,
24218 40000,60000,80000,100000,
24219 200000,400000,600000,800000,1000000,
24220 2000000,4000000,6000000,8000000,10000000,
24221 20000000,30000000,60000000,90000000,120000000,120000001};
24261 value = (
long long)(my_value * 1000000);
24290 sprintf(
name,
"%s_child_%d.txt",
"Iozone_histogram",
id);
24294 #ifndef NO_PRINT_LLD 24295 fprintf(
fp,
"Child: %d Op: %s\n",
id,what);
24296 fprintf(
fp,
"Band 1: ");
24297 fprintf(
fp,
" 20us:%-7.1lld ",
buckets[0]);
24298 fprintf(
fp,
" 40us:%-7.1lld ",
buckets[1]);
24299 fprintf(
fp,
" 60us:%-7.1lld ",
buckets[2]);
24300 fprintf(
fp,
" 80us:%-7.1lld ",
buckets[3]);
24301 fprintf(
fp,
"100us:%-7.1lld \n",
buckets[4]);
24303 fprintf(
fp,
"Band 2: ");
24304 fprintf(
fp,
"200us:%-7.1lld ",
buckets[5]);
24305 fprintf(
fp,
"400us:%-7.1lld ",
buckets[6]);
24306 fprintf(
fp,
"600us:%-7.1lld ",
buckets[7]);
24307 fprintf(
fp,
"800us:%-7.1lld ",
buckets[8]);
24308 fprintf(
fp,
" 1ms:%-7.1lld \n",
buckets[9]);
24310 fprintf(
fp,
"Band 3: ");
24311 fprintf(
fp,
" 2ms:%-7.1lld ",
buckets[10]);
24312 fprintf(
fp,
" 4ms:%-7.1lld ",
buckets[11]);
24313 fprintf(
fp,
" 6ms:%-7.1lld ",
buckets[12]);
24314 fprintf(
fp,
" 8ms:%-7.1lld ",
buckets[13]);
24315 fprintf(
fp,
" 10ms:%-7.1lld \n",
buckets[14]);
24317 fprintf(
fp,
"Band 4: ");
24318 fprintf(
fp,
" 12ms:%-7.1lld ",
buckets[15]);
24319 fprintf(
fp,
" 14ms:%-7.1lld ",
buckets[16]);
24320 fprintf(
fp,
" 16ms:%-7.1lld ",
buckets[17]);
24321 fprintf(
fp,
" 18ms:%-7.1lld ",
buckets[18]);
24322 fprintf(
fp,
" 20ms:%-7.1lld \n",
buckets[19]);
24324 fprintf(
fp,
"Band 5: ");
24325 fprintf(
fp,
" 40ms:%-7.1lld ",
buckets[20]);
24326 fprintf(
fp,
" 60ms:%-7.1lld ",
buckets[21]);
24327 fprintf(
fp,
" 80ms:%-7.1lld ",
buckets[22]);
24328 fprintf(
fp,
"100ms:%-7.1lld \n",
buckets[23]);
24330 fprintf(
fp,
"Band 6: ");
24331 fprintf(
fp,
"200ms:%-7.1lld ",
buckets[24]);
24332 fprintf(
fp,
"400ms:%-7.1lld ",
buckets[25]);
24333 fprintf(
fp,
"600ms:%-7.1lld ",
buckets[26]);
24334 fprintf(
fp,
"800ms:%-7.1lld ",
buckets[27]);
24335 fprintf(
fp,
" 1s:%-7.1lld \n",
buckets[28]);
24337 fprintf(
fp,
"Band 7: ");
24338 fprintf(
fp,
" 2s:%-7.1lld ",
buckets[29]);
24339 fprintf(
fp,
" 4s:%-7.1lld ",
buckets[30]);
24340 fprintf(
fp,
" 6s:%-7.1lld ",
buckets[31]);
24341 fprintf(
fp,
" 8s:%-7.1lld ",
buckets[32]);
24342 fprintf(
fp,
" 10s:%-7.1lld \n",
buckets[33]);
24344 fprintf(
fp,
"Band 8: ");
24345 fprintf(
fp,
" 20s:%-7.1lld ",
buckets[34]);
24346 fprintf(
fp,
" 40s:%-7.1lld ",
buckets[35]);
24347 fprintf(
fp,
" 60s:%-7.1lld ",
buckets[36]);
24348 fprintf(
fp,
" 80s:%-7.1lld ",
buckets[37]);
24349 fprintf(
fp,
" 120s:%-7.1lld \n",
buckets[38]);
24351 fprintf(
fp,
"Band 9: ");
24352 fprintf(
fp,
"120+s:%-7.1lld \n\n",
buckets[39]);
24354 fprintf(
fp,
"Child: %d Op: %s\n",
id,what);
24355 fprintf(
fp,
"Band 1: ");
24356 fprintf(
fp,
" 20us:%-7.1ld ",
buckets[0]);
24357 fprintf(
fp,
" 40us:%-7.1ld ",
buckets[1]);
24358 fprintf(
fp,
" 60us:%-7.1ld ",
buckets[2]);
24359 fprintf(
fp,
" 80us:%-7.1ld ",
buckets[3]);
24360 fprintf(
fp,
"100us:%-7.1ld \n",
buckets[4]);
24362 fprintf(
fp,
"Band 2: ");
24363 fprintf(
fp,
"200us:%-7.1ld ",
buckets[5]);
24364 fprintf(
fp,
"400us:%-7.1ld ",
buckets[6]);
24365 fprintf(
fp,
"600us:%-7.1ld ",
buckets[7]);
24366 fprintf(
fp,
"800us:%-7.1ld ",
buckets[8]);
24367 fprintf(
fp,
" 1ms:%-7.1ld \n",
buckets[9]);
24369 fprintf(
fp,
"Band 3: ");
24370 fprintf(
fp,
" 2ms:%-7.1ld ",
buckets[10]);
24371 fprintf(
fp,
" 4ms:%-7.1ld ",
buckets[11]);
24372 fprintf(
fp,
" 6ms:%-7.1ld ",
buckets[12]);
24373 fprintf(
fp,
" 8ms:%-7.1ld ",
buckets[13]);
24374 fprintf(
fp,
" 10ms:%-7.1ld \n",
buckets[14]);
24376 fprintf(
fp,
"Band 4: ");
24377 fprintf(
fp,
" 12ms:%-7.1ld ",
buckets[15]);
24378 fprintf(
fp,
" 14ms:%-7.1ld ",
buckets[16]);
24379 fprintf(
fp,
" 16ms:%-7.1ld ",
buckets[17]);
24380 fprintf(
fp,
" 18ms:%-7.1ld ",
buckets[18]);
24381 fprintf(
fp,
" 20ms:%-7.1ld \n",
buckets[19]);
24383 fprintf(
fp,
"Band 5: ");
24384 fprintf(
fp,
" 40ms:%-7.1ld ",
buckets[20]);
24385 fprintf(
fp,
" 60ms:%-7.1ld ",
buckets[21]);
24386 fprintf(
fp,
" 80ms:%-7.1ld ",
buckets[22]);
24387 fprintf(
fp,
"100ms:%-7.1ld \n",
buckets[23]);
24389 fprintf(
fp,
"Band 6: ");
24390 fprintf(
fp,
"200ms:%-7.1ld ",
buckets[24]);
24391 fprintf(
fp,
"400ms:%-7.1ld ",
buckets[25]);
24392 fprintf(
fp,
"600ms:%-7.1ld ",
buckets[26]);
24393 fprintf(
fp,
"800ms:%-7.1ld ",
buckets[27]);
24394 fprintf(
fp,
" 1s:%-7.1ld \n",
buckets[28]);
24396 fprintf(
fp,
"Band 7: ");
24397 fprintf(
fp,
" 2s:%-7.1ld ",
buckets[29]);
24398 fprintf(
fp,
" 4s:%-7.1ld ",
buckets[30]);
24399 fprintf(
fp,
" 6s:%-7.1ld ",
buckets[31]);
24400 fprintf(
fp,
" 8s:%-7.1ld ",
buckets[32]);
24401 fprintf(
fp,
" 10s:%-7.1ld \n",
buckets[33]);
24403 fprintf(
fp,
"Band 8: ");
24404 fprintf(
fp,
" 20s:%-7.1ld ",
buckets[34]);
24405 fprintf(
fp,
" 40s:%-7.1ld ",
buckets[35]);
24406 fprintf(
fp,
" 60s:%-7.1ld ",
buckets[36]);
24407 fprintf(
fp,
" 80s:%-7.1ld ",
buckets[37]);
24408 fprintf(
fp,
" 120s:%-7.1ld \n",
buckets[38]);
24410 fprintf(
fp,
"Band 9: ");
24411 fprintf(
fp,
"120+s:%-7.1ld \n\n",
buckets[39]);
24416 #ifdef HAVE_ANSIC_C 24424 double starttime1 = 0;
24427 double desired_op_rate_time;
24428 double actual_rate;
24430 double compute_val = (double)0;
24431 float delay = (float)0;
24432 double thread_qtime_stop,thread_qtime_start;
24438 long long recs_per_buffer;
24439 long long stopped,
i;
24440 off64_t written_so_far, read_so_far, re_written_so_far,re_read_so_far;
24445 char *wmaddr,*free_addr;
24446 char now_string[30];
24447 int anwser,bind_cpu,wval;
24448 #if defined(VXFS) || defined(solaris) 24454 FILE *thread_Lwqfd;
24459 long long Index = 0;
24460 FILE *stream = NULL;
24461 static int First_Run = 1;
24465 nbuff=maddr=wmaddr=free_addr=0;
24466 thread_qtime_stop=thread_qtime_start=0;
24467 thread_wqfd=
w_traj_fd=thread_Lwqfd=(FILE *)0;
24480 written_so_far=read_so_far=re_written_so_far=re_read_so_far=0;
24488 xx = (
long long)((
long)
x);
24496 #ifdef _HPUX_SOURCE 24500 pthread_processor_bind_np(PTHREAD_BIND_FORCED_NP,
24501 (pthread_spu_t *)&anwser, (pthread_spu_t)bind_cpu, pthread_self());
24513 #ifdef NO_PRINT_LLD 24514 printf(
"\nStarting child %ld\n",xx);
24516 printf(
"\nStarting child %lld\n",xx);
24519 #ifdef NO_PRINT_LLD 24520 printf(
"\nStarting process %d slot %ld\n",getpid(),xx);
24522 printf(
"\nStarting process %d slot %lld\n",getpid(),xx);
24532 #ifdef NO_PRINT_LLD 24540 #ifdef NO_PRINT_LLD 24551 stdio_buf=(
char *)malloc((
size_t)
reclen);
24570 if((stream=(FILE *)fopen(
filename,how)) == 0)
24572 printf(
"\nCan not fdopen temp file: %s %lld\n",
24580 #ifdef NO_PRINT_LLD 24581 printf(
"\nCan not fdopen temp file: %s %d\n",
24584 printf(
"\nCan not fdopen temp file: %s %d\n",
24604 compute_val=(double)0;
24619 printf(
"Child %d waiting for go from master\n",(
int)xx);
24625 printf(
"Child %d received go from master\n",(
int)xx);
24632 Poll((
long long)1);
24642 sprintf(tmpname,
"Child_%d_fwol.dat",(
int)xx);
24643 thread_wqfd=fopen(tmpname,
"a");
24649 printf(
"Unable to open %s\n",tmpname);
24652 fprintf(thread_wqfd,
"Offset in Kbytes Latency in microseconds Transfer size in bytes\n");
24656 sprintf(tmpname,
"Child_%d.log",(
int)xx);
24657 thread_Lwqfd=fopen(tmpname,
"a");
24658 if(thread_Lwqfd==0)
24663 printf(
"Unable to open %s\n",tmpname);
24667 fprintf(thread_Lwqfd,
"%-25s %s",
"fwrite test start: ",now_string);
24696 #ifdef NO_PRINT_LLD 24697 printf(
"\nError fwriting block %ld, fd= %d\n",
i,
24700 printf(
"\nError fwriting block %lld, fd= %d\n",
i,
24709 hist_time =(thread_qtime_stop-thread_qtime_start);
24715 desired_op_rate_time = ((double)1.0/(
double)
op_rate);
24716 actual_rate = (double)(thread_qtime_stop-thread_qtime_start);
24717 if( actual_rate < desired_op_rate_time)
24718 my_unap((
unsigned long long)((desired_op_rate_time-actual_rate)*1000000.0 ));
24723 #ifdef NO_PRINT_LLD 24724 fprintf(thread_wqfd,
"%10.1ld %10.0f %10.1ld\n",(traj_offset)/1024,((thread_qtime_stop-thread_qtime_start-
time_res))*1000000,
reclen);
24726 fprintf(thread_wqfd,
"%10.1lld %10.0f %10.1lld\n",(traj_offset)/1024,((thread_qtime_stop-thread_qtime_start-
time_res))*1000000,
reclen);
24731 written_so_far+=
reclen/1024;
24744 wval=fclose(stream);
24794 printf(
" child/slot: %lld, wall-cpu: %8.3f %8.3fC" " -> %6.2f%%\n",
24806 #ifdef NO_PRINT_LLD 24807 printf(
"\nChild finished %ld\n",xx);
24809 printf(
"\nChild finished %lld\n",xx);
24811 if(
Q_flag && (thread_wqfd !=0) )
24812 fclose(thread_wqfd);
24820 fprintf(thread_Lwqfd,
"%-25s %s",
"Fwrite test finished: ",now_string);
24821 fclose(thread_Lwqfd);
24826 wval=fflush(stream);
24836 wval=fclose(stream);
24868 #ifdef HAVE_ANSIC_C 24875 double starttime1 = 0;
24878 double desired_op_rate_time;
24879 double actual_rate;
24881 double compute_val = (double)0;
24882 float delay = (float)0;
24883 double thread_qtime_stop,thread_qtime_start;
24889 long long recs_per_buffer;
24890 long long stopped,
i;
24891 off64_t written_so_far, read_so_far, re_written_so_far,re_read_so_far;
24896 char *wmaddr,*free_addr;
24897 char now_string[30];
24898 int anwser,bind_cpu;
24899 #if defined(VXFS) || defined(solaris) 24905 FILE *thread_Lwqfd;
24909 nbuff=maddr=wmaddr=free_addr=0;
24910 thread_qtime_stop=thread_qtime_start=0;
24911 thread_wqfd=
w_traj_fd=thread_Lwqfd=(FILE *)0;
24915 long long Index = 0;
24916 FILE *stream = NULL;
24928 written_so_far=read_so_far=re_written_so_far=re_read_so_far=0;
24936 xx = (
long long)((
long)
x);
24944 #ifdef _HPUX_SOURCE 24948 pthread_processor_bind_np(PTHREAD_BIND_FORCED_NP,
24949 (pthread_spu_t *)&anwser, (pthread_spu_t)bind_cpu, pthread_self());
24961 #ifdef NO_PRINT_LLD 24962 printf(
"\nStarting child %ld\n",xx);
24964 printf(
"\nStarting child %lld\n",xx);
24967 #ifdef NO_PRINT_LLD 24968 printf(
"\nStarting process %d slot %ld\n",getpid(),xx);
24970 printf(
"\nStarting process %d slot %lld\n",getpid(),xx);
24980 #ifdef NO_PRINT_LLD 24988 #ifdef NO_PRINT_LLD 25000 stdio_buf=(
char *)malloc((
size_t)
reclen);
25007 if((stream=(FILE *)fopen(
filename,
"r")) == 0)
25009 printf(
"\nCan not fdopen temp file: %s\n",
25017 printf(
"\nCan not fdopen temp file: %s\n",
25034 compute_val=(double)0;
25050 printf(
"Child %d waiting for go from master\n",(
int)xx);
25056 printf(
"Child %d received go from master\n",(
int)xx);
25063 Poll((
long long)1);
25073 sprintf(tmpname,
"Child_%d_frol.dat",(
int)xx);
25074 thread_wqfd=fopen(tmpname,
"a");
25080 printf(
"Unable to open %s\n",tmpname);
25083 fprintf(thread_wqfd,
"Offset in Kbytes Latency in microseconds Transfer size in bytes\n");
25087 sprintf(tmpname,
"Child_%d.log",(
int)xx);
25088 thread_Lwqfd=fopen(tmpname,
"a");
25089 if(thread_Lwqfd==0)
25094 printf(
"Unable to open %s\n",tmpname);
25098 fprintf(thread_Lwqfd,
"%-25s %s",
"fread test start: ",now_string);
25130 #ifdef _64BIT_ARCH_ 25131 #ifdef NO_PRINT_LLD 25132 printf(
"\nError freading block %ld %x\n",
i,
25135 printf(
"\nError freading block %lld %llx\n",
i,
25136 (
unsigned long long)
buffer);
25139 #ifdef NO_PRINT_LLD 25140 printf(
"\nError freading block %ld %lx\n",
i,
25143 printf(
"\nError freading block %lld %lx\n",
i,
25158 hist_time =(thread_qtime_stop-thread_qtime_start);
25164 desired_op_rate_time = ((double)1.0/(
double)
op_rate);
25165 actual_rate = (double)(thread_qtime_stop-thread_qtime_start);
25166 if( actual_rate < desired_op_rate_time)
25167 my_unap((
unsigned long long)((desired_op_rate_time-actual_rate)*1000000.0 ));
25172 #ifdef NO_PRINT_LLD 25173 fprintf(thread_wqfd,
"%10.1ld %10.0f %10.1ld\n",(traj_offset)/1024,((thread_qtime_stop-thread_qtime_start-
time_res))*1000000,
reclen);
25175 fprintf(thread_wqfd,
"%10.1lld %10.0f %10.1lld\n",(traj_offset)/1024,((thread_qtime_stop-thread_qtime_start-
time_res))*1000000,
reclen);
25180 written_so_far+=
reclen/1024;
25235 printf(
" child/slot: %lld, wall-cpu: %8.3f %8.3fC" " -> %6.2f%%\n",
25247 #ifdef NO_PRINT_LLD 25248 printf(
"\nChild finished %ld\n",xx);
25250 printf(
"\nChild finished %lld\n",xx);
25252 if(
Q_flag && (thread_wqfd !=0) )
25253 fclose(thread_wqfd);
25261 fprintf(thread_Lwqfd,
"%-25s %s",
"Fread test finished: ",now_string);
25262 fclose(thread_Lwqfd);
long long orig_max_rec_size
ssize_t read(int fd, void *buf, size_t count)
long long bucket_val[BUCKETS]
void find_external_mon(char *imon_start, char *imon_stop)
long long genrand64_int63(void)
unsigned long cache_line_size
store_times(double walltime, double cputime)
long long include_test[50]
int current_client_number
int sp_master_listen_port
int controlling_host_port
int sp_start_child_send()
size_t fwrite(const void *ptr, size_t size, size_t nmemb, FILE *stream)
void *() thread_rread_test()
store_value(off64_t value)
char controlling_host_name[100]
unsigned long int pthread_t
void sp_do_master_t(void)
struct child_stats * child_stat
off64_t get_next_file_size()
int sp_start_master_send(char *sp_child_host_name, int sp_child_listen_port, struct in_addr *sp_my_ms_addr)
long long w_traj_bytes_completed
#define I_MMAP(a, b, c, d, e, f)
start_monitor(char *test)
void *() thread_reverse_read_test()
#define THREAD_PWRITE_TEST
void speed_main(char *, char *, long long, long long, int)
void *() thread_fread_test()
VOLATILE struct child_stats * shmaddr
void O_stop_child_send(int child_socket_val)
struct sockaddr_in6 sockaddr_in6_t
void *() thread_stride_read_test()
void sp_send_result(int, int, float)
#define THREAD_PREAD_TEST
#define THREAD_RANDOM_WRITE_TEST
void *() thread_fwrite_test()
void *() thread_rwrite_test()
int master_send_async_sockets[MAXSTREAMS]
char mountname[MAXNAMESIZE]
char * barray[MAXSTREAMS]
size_t fread(void *ptr, size_t size, size_t nmemb, FILE *stream)
int master_async_socket_num
dump_times(long long who)
char dummyfile[MAXSTREAMS][MAXNAMESIZE]
char filename[MAXNAMESIZE]
char master_rcv_buf[4096]
#define THREAD_REREAD_TEST
char c_read_traj_filename[200]
char sp_remote_shell[100]
#define THREAD_WRITE_TEST
#define CHILD_STATE_BEGIN
static struct timeval start
#define THREAD_FREAD_TEST
char child_send_buf[4096]
struct size_entry * size_list
#define SP_MASTER_ESEND_PORT
int sp_master_results_port
struct sockaddr_in sockaddr_in_t
long long w_traj_ops_completed
void init_genrand64(unsigned long long seed)
struct size_entry * rec_size_list
char master_send_buf[4096]
void *() thread_ranread_test()
char c_read_traj_filename[200]
unsigned long long genrand64_int64(void)
off64_t get_next_record_size()
int sp_start_child_listen(int listen_port, int size_of_message)
void sp_get_result(int, int)
#define C_STATE_WAIT_BARRIER
#define THREAD_RANDOM_READ_TEST
__syscall_slong_t tv_nsec
#define THREAD_REVERSE_READ_TEST
struct runtime runtimes[MAX_X][MAX_Y]
int start_master_listen()
void *() thread_ranwrite_test()
void child_listen_async()
dump_report(long long who)
ssize_t write(int fd, const void *buf, size_t count)
void stop_master_listen()
long long throughput_array[MAX_X]
void wait_for_master_go()
void get_rusage_resolution()
off64_t maximum_file_size
static unsigned long long mt[NN]
size_t async_write_no_copy()
struct child_ident child_idents[MAXSTREAMS]
void init_by_array64(unsigned long long *, unsigned long long)
int select(int nfds, fd_set *readfds, fd_set *writefds, fd_set *exceptfds, struct timeval *timeout)
#define SP_MASTER_RESULTS_PORT
unsigned long long goodkilos
void multi_throughput_test()
fill_area(long long *src_buffer, long long *dest_buffer, long long length)
double genrand64_real3(void)
static int openSckt(const char *, const char *, unsigned int)
void *() thread_mix_test()
void dump_throughput_cpu()
#define THREAD_RANDOM_MIX_TEST
#define SP_CHILD_ESEND_PORT
void child_remove_files()
void start_child_listen_loop()
struct sockaddr_in sp_child_sync_sock sp_child_async_sock
#define THREAD_FWRITE_TEST
char dummyfile1[MAXNAMESIZE]
void terminate_child_async()
VOLATILE char * stop_flag
char * throughput_tests[]
char * filearray[MAXSTREAMS]
char m_child_async_port[20]
int sp_start_master_listen()
void tell_children_begin()
#define THREAD_CLEANUP_TEST
long long mythread_create()
long long start_child_proc()
char write_traj_filename[MAXNAMESIZE]
off64_t minimum_file_size
long long verify_buffer(char *buffer, long long length, off64_t recnum, long long recsize, unsigned long long patt, char sverify)
long long childids[MAXSTREAMS+1]
__sighandler_t signal(int __sig, __sighandler_t __handler) __attribute__((__nothrow__
int kill(__pid_t __pid, int __sig) __attribute__((__nothrow__
void record_command_line()
long long buckets[BUCKETS]
char c_write_traj_filename[200]
int gettimeofday(void *ptr1, void *ptr2)
char c_write_traj_filename[200]
static double time_so_far1()
pthread_t mythread_self()
int start_master_send_async(char *child_host_name, int child_port, struct in_addr my_s_addr)
off64_t report_array[MAX_X][MAX_Y]
void start_master_listen_loop()
int child_listen_socket_async
void *() thread_read_test()
struct in_addr sp_my_ms_addr
#define THREAD_REWRITE_TEST
struct sockaddr_in child_sync_sock child_async_sock
void *() thread_write_test()
char bif_filename[MAXNAMESIZE]
char read_traj_filename[MAXNAMESIZE]
#define SP_MASTER_LISTEN_PORT
double genrand64_real1(void)
static void pit(int, struct timeval *)
double report_darray[MAX_X][MAXSTREAMS]
struct sockaddr_in listener_sync_sock
void *() thread_set_base()
void read_stride_perf_test()
#define SP_CHILD_LISTEN_PORT
long long r_traj_ops_completed
char child_async_rcv_buf[4096]
static double time_so_far()
pthread_t p_childids[MAXSTREAMS+1]
#define THREAD_STRIDE_TEST
struct sockaddr_in sp_master_sync_sock sp_master_async_sock
void *() thread_cleanup_test()
int master_send_sockets[MAXSTREAMS]
volatile int buf[CACHE_FLUSH_BUFFER_SIZE_INTS]
char client_filename[256]
double genrand64_real2(void)
int child_attach(int s, int flag)
void stop_master_listen_loop()
static double b[MATRIX_SIZE][MATRIX_SIZE]
void rewriterec_perf_test()
setvbuf(file, file_buf, _IOFBF, sizeof(file_buf))
int start_child_listen_async()
static double a[MATRIX_SIZE][MATRIX_SIZE]
struct in_addr sp_my_cs_addr
long long orig_min_rec_size
long long r_traj_bytes_completed
#define CHILD_STATE_READY