RTS/src/SFS/blastSFS.C
00001 #include <stdio.h>
00002 #include <fcntl.h>
00003 #include <stdlib.h>
00004 #include <errno.h>
00005 #include <time.h>
00006
00007 #include <SUNRT/clock.h>
00008 #include "sfs_lib.h"
00009
00010 #define BUFFSZ 100*1024*1024
00011
00012
00013 int main(int argc, char *argv[])
00014 {
00015 record_time();
00016
00017 if(argc < 2) {
00018 printf("%s filename\n",argv[0]);
00019 return 0;
00020 }
00021
00022
00023 printf("Buffer size %d bytes\n",BUFFSZ);
00024
00025 char head[256];
00026 SFS_File *file = (SFS_File *)head;
00027
00028 char *buff = (char *)malloc(BUFFSZ + 8*1024);
00029 if(!buff) {
00030 printf("Error in malloc\n");
00031 }
00032
00033 unsigned int buffx = (unsigned int) buff;
00034
00035 buffx /= 8*1024;
00036 buffx *= 8*1024;
00037 if(buffx != (unsigned int)buff) {
00038 buffx += 8*1024;
00039 printf("new 0x%x / old 0x%x\n",buffx,(unsigned int)buff);
00040 buff = (char *)buffx;
00041 }
00042
00043 for(int i=0;i<BUFFSZ;i++) {
00044 buff[i] = i % 256;
00045 }
00046
00047 double t = record_time();
00048 printf("setup: %10.8f secs\n", t);
00049
00050 double ltime = 0;
00051 double etime = 0;
00052 double sent = 0;
00053 double eventsz = 0;
00054 char fn[255];
00055 int filen=0;
00056
00057 char *fp;
00058 srand(time(NULL));
00059
00060 int fd=-1;
00061
00062 char mntname[256];
00063 for(int ii=0;ii>=0;ii++) {
00064 filen++;
00065
00066 if(ii % 1000 == 0) {
00067 if(ii > 0) close(fd);
00068
00069 sprintf(mntname, "%s_%d",argv[1], ii/1000);
00070 fd = open(mntname, O_WRONLY | O_CREAT, 0666);
00071
00072 char seedbuff[1000];
00073 SFS_desc desc;
00074 sfs_create_mimage(&desc, seedbuff, 1000);
00075
00076 write(fd, seedbuff, desc.sz);
00077 }
00078
00079
00080
00081
00082 eventsz = 0;
00083 fp = buff;
00084
00085 for(int detn=0;detn<10;detn++) {
00086
00087
00088
00089 for(int subn=0;subn<10;subn++) {
00090 if(subn == 0)
00091 sprintf(fn, "/event_%d/det_%d/sub_%d",filen,detn,subn);
00092 else
00093 sprintf(fn, "sub_%d",subn);
00094
00095 float rnd = ((float)rand()/(float)RAND_MAX) * 5000.0;
00096 int fsz = 5*1024/2;
00097 fsz = (int)rnd + fsz;
00098 fsz /= 4;
00099 fsz *= 4;
00100
00101
00102
00103 sfs_genfilerec(fn, fsz, file);
00104
00105
00106 if(fd <0) perror("Bad file?: ");
00107
00108 int ret = write(fd, (char *)file, file->head_sz);
00109 if(ret != file->head_sz) perror("Bad write?: ");
00110
00111 ret = write(fd, (char *)fp, seeksize(file->sz));
00112 if(ret != seeksize(file->sz)) perror("Bad write?: ");
00113
00114 fp += fsz;
00115
00116 eventsz += fsz;
00117 }
00118 }
00119
00120 t = record_time();
00121 etime += t;
00122 sent += eventsz;
00123
00124 if(etime - ltime > 10) {
00125 ltime = etime;
00126
00127 double rate = (sent / (1e6*etime));
00128 double lrate = ((double)eventsz) / (1e6 * t);
00129
00130 printf("%6.2f %6.2f\n",lrate, rate);
00131 }
00132 }
00133
00134 printf("sent = %d\n",(int)sent);
00135 }
Generated on Sun Mar 15 04:51:00 2009 for StRoot by
1.3.7