51 #include <sys/types.h> 67 #if !defined(PATH_MAX) 83 #define _STAT_CREATE 0 87 #define _STAT_UNLINK 4 88 #define _STAT_DELETE 5 90 #define _STAT_ACCESS 7 92 #define _STAT_READDIR 9 93 #define _STAT_DIR_CREATE 10 94 #define _STAT_DIR_DELETE 11 97 #define _STAT_DIR_TRAVERSE 14 131 #define THISVERSION " $Revision$" 156 junkp=(
int *)getcwd(cwd,
sizeof(cwd));
158 strcpy(command,
"umount ");
164 for (
i = 1;
i < 10; ++
i) {
170 strcpy(command,
"mount ");
176 int main(
int argc,
char **argv)
183 while((
cret = getopt(argc,argv,
"hbwetvf:s:l:u:d:U:i: ")) != EOF){
255 printf(
"\nFileop: Working in %s, File size is %d, Output is in Ops/sec. (A=Avg, B=Best, W=Worst)\n",
thedir,
sz);
259 printf(
" . %7s %7s %7s %7s %7s %7s %7s %7s %7s %7s %7s %7s %7s %10s\n",
260 "mkdir",
"chdir",
"rmdir",
"create",
"open",
"read",
"write",
"close",
"stat",
261 "access",
"chmod",
"readdir",
"delete",
" Total_files");
264 printf(
" . %7s %7s %7s %7s %7s %7s %7s %7s %7s %7s %7s %7s %7s %7s %7s %10s\n",
265 "mkdir",
"chdir",
"rmdir",
"create",
"open",
"read",
"write",
"close",
"stat",
266 "access",
"chmod",
"readdir",
"link ",
"unlink",
"delete",
289 printf(
" Avg mkdir(s)/sec = %12.2f (%12.9f seconds/op)\n",
306 printf(
" Avg chdir(s)/sec = %12.2f (%12.9f seconds/op)\n",
323 printf(
" Avg rmdir(s)/sec = %12.2f (%12.9f seconds/op)\n",
339 printf(
" Avg create(s)/sec = %12.2f (%12.9f seconds/op)\n",
342 printf(
" Best create(s)/sec = %12.2f (%12.9f seconds/op)\n",
344 printf(
" Worst create(s)/sec = %12.2f (%12.9f seconds/op)\n\n",
348 printf(
" Avg write(s)/sec = %12.2f (%12.9f seconds/op)\n",
351 printf(
" Best write(s)/sec = %12.2f (%12.9f seconds/op)\n",
353 printf(
" Worst write(s)/sec = %12.2f (%12.9f seconds/op)\n\n",
357 printf(
" Avg close(s)/sec = %12.2f (%12.9f seconds/op)\n",
360 printf(
" Best close(s)/sec = %12.2f (%12.9f seconds/op)\n",
362 printf(
" Worst close(s)/sec = %12.2f (%12.9f seconds/op)\n\n",
376 printf(
" Avg stat(s)/sec = %12.2f (%12.9f seconds/op)\n",
379 printf(
" Best stat(s)/sec = %12.2f (%12.9f seconds/op)\n",
381 printf(
" Worst stat(s)/sec = %12.2f (%12.9f seconds/op)\n\n",
394 printf(
" Avg open(s)/sec = %12.2f (%12.9f seconds/op)\n",
397 printf(
" Best open(s)/sec = %12.2f (%12.9f seconds/op)\n",
399 printf(
" Worst open(s)/sec = %12.2f (%12.9f seconds/op)\n\n",
404 printf(
" Avg read(s)/sec = %12.2f (%12.9f seconds/op)\n",
407 printf(
" Best read(s)/sec = %12.2f (%12.9f seconds/op)\n",
409 printf(
" Worst read(s)/sec = %12.2f (%12.9f seconds/op)\n\n",
422 printf(
" Avg access(s)/sec = %12.2f (%12.9f seconds/op)\n",
425 printf(
" Best access(s)/sec = %12.2f (%12.9f seconds/op)\n",
427 printf(
" Worst access(s)/sec = %12.2f (%12.9f seconds/op)\n\n",
440 printf(
" Avg chmod(s)/sec = %12.2f (%12.9f seconds/op)\n",
443 printf(
" Best chmod(s)/sec = %12.2f (%12.9f seconds/op)\n",
445 printf(
" Worst chmod(s)/sec = %12.2f (%12.9f seconds/op)\n\n",
458 printf(
" Avg readdir(s)/sec = %12.2f (%12.9f seconds/op)\n",
461 printf(
" Best readdir(s)/sec = %12.2f (%12.9f seconds/op)\n",
463 printf(
" Worst readdir(s)/sec = %12.2f (%12.9f seconds/op)\n\n",
466 #if !defined(Windows) 476 printf(
" Avg link(s)/sec = %12.2f (%12.9f seconds/op)\n",
479 printf(
" Best link(s)/sec = %12.2f (%12.9f seconds/op)\n",
481 printf(
" Worst link(s)/sec = %12.2f (%12.9f seconds/op)\n\n",
493 printf(
" Avg unlink(s)/sec = %12.2f (%12.9f seconds/op)\n",
496 printf(
" Best unlink(s)/sec = %12.2f (%12.9f seconds/op)\n",
498 printf(
" Worst unlink(s)/sec = %12.2f (%12.9f seconds/op)\n\n",
511 printf(
" Avg delete(s)/sec = %12.2f (%12.9f seconds/op)\n",
514 printf(
" Best delete(s)/sec = %12.2f (%12.9f seconds/op)\n",
516 printf(
" Worst delete(s)/sec = %12.2f (%12.9f seconds/op)\n\n",
538 printf(
"%10d ",
x*
x*
x);
561 printf(
"%10d ",
x*
x*
x);
584 printf(
"%10d ",
x*
x*
x);
603 sprintf(
buf,
"fileop_L1_%d",
i);
608 printf(
"Mkdir failed\n");
624 sprintf(
buf,
"fileop_L1_%d_L2_%d",
i,j);
629 printf(
"Mkdir failed\n");
645 sprintf(
buf,
"fileop_dir_%d_%d_%d",
i,j,k);
650 printf(
"Mkdir failed\n");
682 sprintf(
buf,
"fileop_L1_%d",
i);
689 sprintf(
buf,
"fileop_L1_%d_L2_%d",
i,j);
696 sprintf(
buf,
"fileop_dir_%d_%d_%d",
i,j,k);
755 sprintf(
buf,
"fileop_L1_%d",
i);
759 printf(
"Mkdir failed\n");
765 sprintf(
buf,
"fileop_L1_%d_L2_%d",
i,j);
769 printf(
"Mkdir failed\n");
775 sprintf(
buf,
"fileop_file_%d_%d_%d",
i,j,k);
776 value=(char) ((
i^j^k) & 0xff);
779 fd=creat(
buf,O_RDWR|0600);
782 printf(
"Create failed\n");
839 sprintf(
buf,
"fileop_L1_%d",
i);
843 sprintf(
buf,
"fileop_L1_%d_L2_%d",
i,j);
847 sprintf(
buf,
"fileop_file_%d_%d_%d",
i,j,k);
852 printf(
"Stat failed\n");
881 sprintf(
buf,
"fileop_L1_%d",
i);
885 sprintf(
buf,
"fileop_L1_%d_L2_%d",
i,j);
889 sprintf(
buf,
"fileop_file_%d_%d_%d",
i,j,k);
891 y=access(
buf,W_OK|F_OK);
894 printf(
"access failed\n");
924 sprintf(
buf,
"fileop_L1_%d",
i);
928 sprintf(
buf,
"fileop_L1_%d_L2_%d",
i,j);
932 sprintf(
buf,
"fileop_file_%d_%d_%d",
i,j,k);
937 printf(
"chmod failed\n");
969 sprintf(
buf,
"fileop_L1_%d",
i);
973 sprintf(
buf,
"fileop_L1_%d_L2_%d",
i,j);
978 printf(
"opendir failed\n");
985 printf(
"readdir failed\n");
998 ret1=closedir(dirbuf);
1001 printf(
"closedir failed\n");
1020 sprintf(
buf,
"fileop_L1_%d",
i);
1024 sprintf(
buf,
"fileop_L1_%d_L2_%d",
i,j);
1028 sprintf(
buf,
"fileop_file_%d_%d_%d",
i,j,k);
1029 sprintf(bufn,
"fileop_file_%d_%d_%dL",
i,j,k);
1034 printf(
"Link failed\n");
1064 sprintf(
buf,
"fileop_L1_%d",
i);
1068 sprintf(
buf,
"fileop_L1_%d_L2_%d",
i,j);
1072 sprintf(
buf,
"fileop_file_%d_%d_%d",
i,j,k);
1073 sprintf(bufn,
"fileop_file_%d_%d_%dL",
i,j,k);
1078 printf(
"Unlink failed\n");
1107 sprintf(
buf,
"fileop_L1_%d",
i);
1111 sprintf(
buf,
"fileop_L1_%d_L2_%d",
i,j);
1115 sprintf(
buf,
"fileop_dir_%d_%d_%d",
i,j,k);
1132 sprintf(
buf,
"fileop_L1_%d_L2_%d",
i,j);
1147 sprintf(
buf,
"fileop_L1_%d",
i);
1172 sprintf(
buf,
"fileop_L1_%d",
i);
1176 sprintf(
buf,
"fileop_L1_%d_L2_%d",
i,j);
1180 sprintf(
buf,
"fileop_file_%d_%d_%d",
i,j,k);
1195 sprintf(
buf,
"fileop_L1_%d_L2_%d",
i,j);
1199 sprintf(
buf,
"fileop_L1_%d",
i);
1215 sprintf(
buf,
"fileop_L1_%d",
i);
1219 sprintf(
buf,
"fileop_L1_%d_L2_%d",
i,j);
1223 sprintf(
buf,
"fileop_file_%d_%d_%d",
i,j,k);
1224 value=(char)((
i^j^k) &0xff);
1229 printf(
"Open failed\n");
1247 printf(
"Read failed\n");
1251 printf(
"Error: Data Mis-compare\n");;
1283 LARGE_INTEGER freq,counter;
1284 double wintime,bigcounter;
1289 QueryPerformanceFrequency(&freq);
1290 QueryPerformanceCounter(&counter);
1291 bigcounter=(double)counter.HighPart *(
double)0xffffffff +
1292 (double)counter.LowPart;
1293 wintime = (
double)(bigcounter/(double)freq.LowPart);
1294 return((
double)wintime);
1296 #if defined (OSFV4) || defined(OSFV3) || defined(OSFV5) 1299 if (getclock(TIMEOFDAY, (
struct timespec *) &gp) == -1)
1301 return (( (
double) (gp.
tv_sec)) +
1302 ( ((
float)(gp.
tv_nsec)) * 0.000000001 ));
1307 perror(
"gettimeofday");
1308 return ((
double) (tp.
tv_sec)) +
1309 (((double) tp.
tv_usec) * 0.000001 );
1318 printf(
" --------------------------------------\n");
1319 printf(
" | Fileop | \n");
1322 printf(
" | by |\n");
1324 printf(
" | Don Capps |\n");
1325 printf(
" --------------------------------------\n");
1333 printf(
" fileop [-f X ]|[-l # -u #] [-s Y] [-e] [-b] [-w] [-d <dir>] [-t] [-v] [-h]\n");
1335 printf(
" -f # Force factor. X^3 files will be created and removed.\n");
1336 printf(
" -l # Lower limit on the value of the Force factor.\n");
1337 printf(
" -u # Upper limit on the value of the Force factor.\n");
1338 printf(
" -s # Optional. Sets filesize for the create/write. May use suffix 'K' or 'M'.\n");
1339 printf(
" -e Excel importable format.\n");
1340 printf(
" -b Output best case results.\n");
1341 printf(
" -i # Increment force factor by this increment.\n");
1342 printf(
" -w Output worst case results.\n");
1343 printf(
" -d <dir> Specify starting directory.\n");
1344 printf(
" -U <dir> Mount point to remount between tests.\n");
1345 printf(
" -t Verbose output option.\n");
1346 printf(
" -v Version information.\n");
1347 printf(
" -h Help text.\n");
1349 printf(
" The structure of the file tree is:\n");
1350 printf(
" X number of Level 1 directories, with X number of\n");
1351 printf(
" level 2 directories, with X number of files in each\n");
1352 printf(
" of the level 2 directories.\n");
1354 printf(
" Example: fileop 2\n");
1356 printf(
" dir_1 dir_2\n");
1357 printf(
" / \\ / \\ \n");
1358 printf(
" sdir_1 sdir_2 sdir_1 sdir_2\n");
1359 printf(
" / \\ / \\ / \\ / \\ \n");
1360 printf(
" file_1 file_2 file_1 file_2 file_1 file_2 file_1 file_2\n");
1362 printf(
" Each file will be created, and then Y bytes is written to the file.\n");
ssize_t read(int fd, void *buf, size_t count)
#define _STAT_DIR_TRAVERSE
struct stat_struct stats[_NUM_STATS]
__syscall_slong_t tv_nsec
int open(const char *pathname, int flags, mode_t mode)
ssize_t write(int fd, const void *buf, size_t count)
int validate(char *, int, char)
int main(int argc, char **argv)
int gettimeofday(void *ptr1, void *ptr2)
void purge_buffer_cache()
static double time_so_far(void)
volatile int buf[CACHE_FLUSH_BUFFER_SIZE_INTS]