2 #include "rfs_assert.h"
4 #define EVEN_CHUNK_SIZE_MAX 2
5 #define CHUNK_NUM_MAX 17
6 #define FS_SIZE_MB_MAX 81
7 #define STAGE_NUM_MAX 65
11 int avg_frag_distance;
12 int avg_block_distance;
14 result_t result[EVEN_CHUNK_SIZE_MAX][CHUNK_NUM_MAX][FS_SIZE_MB_MAX][STAGE_NUM_MAX];
16 int range_check (int i, int min, int max)
25 int file_ratio, active_ratio, chunk_num, fs_size_MB, even_chunk_size, stage_num;
27 int frag_num[SEQ_NUM], td_MB[SEQ_NUM], td[SEQ_NUM], tblock_num[SEQ_NUM], file_num;
28 main(int argc, char ** argv)
32 unsigned long long distance;
33 unsigned long long tll;
34 int avg_frag_distance = 0;
35 int max_blockno=0, avg_block_distance=0;
37 int sequence[SEQ_NUM]={1,2,5,10,20,30,50,100,200,250,500};
40 result_t * resultp= NULL;
43 memset (result, 0, sizeof(result));
45 fp = fopen (argv[1], "r");
51 while (fgets(line, sizeof(line), fp)) {
54 if (strstr(line, "==>")) {
55 RFS_ASSERT (resultp == NULL);
57 p = strrchr (line, '/');
65 sscanf (p, "_%d_%d_%d_%d_%d_%d_%s.5 <==\n", &even_chunk_size, &file_ratio, &active_ratio, &chunk_num, &fs_size_MB, &stage_num, fhmap);
67 RFS_ASSERT (range_check (even_chunk_size, 0, EVEN_CHUNK_SIZE_MAX-1));
68 RFS_ASSERT (range_check (chunk_num, 0, CHUNK_NUM_MAX-1));
69 RFS_ASSERT (range_check (fs_size_MB/100, 0, FS_SIZE_MB_MAX-1));
70 RFS_ASSERT (range_check (stage_num, 0, STAGE_NUM_MAX-1));
71 resultp = & (result[even_chunk_size][chunk_num][fs_size_MB/100][stage_num]);
72 RFS_ASSERT (resultp->flag == 0);
74 if (strstr(line, "****")) {
78 sscanf(line, "****total FRAG_NUM %d td_MB %d td %d tblock_num %d max_blockno %d file_num %d avg_frag_distance %d avg_block_distance %d", &frag_num[0], &td_MB[0], &td[0], &tblock_num[0], &max_blockno, &file_num, &avg_frag_distance, &avg_block_distance);
79 sscanf(line, "****total FRAG_NUM %d td_MB %d td %d tblock_num %d max_blockno %d file_num %d avg_frag_distance %d avg_block_distance %d", &(resultp->frag_num), &td_MB[0], &td[0], &tblock_num[0], &max_blockno, &file_num, &(resultp->avg_frag_distance), &(resultp->avg_block_distance));
82 //printf("%d %d %d %d %d %d\n", chunk_num, frag_num[0], avg_frag_distance, td_MB[0], tblock_num[0], avg_block_distance);
88 print_xmgr ("avg_block_distance");
89 print_xmgr ("frag_num");
90 print_xmgr ("frag_size");
91 print_xmgr ("avg_frag_distance");
92 print_xmgr_chunk_stage ("avg_block_distance");
95 int print_y(FILE * fp, result_t * resultp, char * y_axis)
97 if (!strcmp (y_axis, "avg_block_distance")) {
98 fprintf (fp, "%d ", resultp->avg_block_distance);
99 } else if (!strcmp (y_axis, "frag_num")) {
100 fprintf (fp, "%d ", resultp->frag_num);
101 } else if (!strcmp (y_axis, "frag_size")) {
102 fprintf (fp, "%f ", (float)tblock_num[0]/(float)resultp->frag_num);
103 } else if (!strcmp (y_axis, "avg_frag_distance")) {
104 fprintf (fp, "%d ", resultp->avg_frag_distance);
109 /* statistics for avg_block_distance */
110 int print_xmgr (char * y_axis)
118 for (even_chunk_size = 0; even_chunk_size < EVEN_CHUNK_SIZE_MAX; even_chunk_size ++) {
119 for (fs_size_MB = 0; fs_size_MB < FS_SIZE_MB_MAX; fs_size_MB ++) {
121 sprintf (name, "xmgr.%d_%d.stage.%s", even_chunk_size, fs_size_MB*100, y_axis);
124 for (stage_num = 0; stage_num < STAGE_NUM_MAX; stage_num++) {
126 for (chunk_num = 0; chunk_num < CHUNK_NUM_MAX; chunk_num++) {
127 resultp = &(result[even_chunk_size][chunk_num][fs_size_MB][stage_num]);
130 printf ("*** even %d fs_size_MB %d X: stage_num Y: %s Lines: different chunk_num ***\n", even_chunk_size, fs_size_MB*100, y_axis);
133 fp = fopen (name, "w");
139 //fprintf (fp, "%d ", file_num/stage_num);
140 fprintf (fp, "%f ", 1/((float)stage_num));
143 print_y (fp, resultp, y_axis);
154 for (even_chunk_size = 0; even_chunk_size < EVEN_CHUNK_SIZE_MAX; even_chunk_size ++) {
155 for (fs_size_MB = 0; fs_size_MB < FS_SIZE_MB_MAX; fs_size_MB ++) {
156 sprintf (name, "xmgr.%d_%d.chunk.%s", even_chunk_size, fs_size_MB*100, y_axis);
159 for (chunk_num = 0; chunk_num < CHUNK_NUM_MAX; chunk_num++) {
161 for (stage_num = 0; stage_num < STAGE_NUM_MAX; stage_num++) {
162 resultp = &(result[even_chunk_size][chunk_num][fs_size_MB][stage_num]);
165 printf ("*** even %d fs_size_MB %d X: chunk_num Y: %s Lines: different stage_num ***\n", even_chunk_size, fs_size_MB*100, y_axis);
168 fp = fopen (name, "w");
174 fprintf (fp, "%d ", chunk_num);
177 print_y (fp, resultp, y_axis);
188 int print_xmgr_chunk_stage (char * y_axis)
196 for (even_chunk_size = 0; even_chunk_size < EVEN_CHUNK_SIZE_MAX; even_chunk_size ++) {
197 for (fs_size_MB = 0; fs_size_MB < FS_SIZE_MB_MAX; fs_size_MB ++) {
199 sprintf (name, "xmgr.%d_%d.stage_chunk.%s", even_chunk_size, fs_size_MB*100, y_axis);
202 for (stage_num = STAGE_NUM_MAX-1; stage_num>=0; stage_num--) {
204 for (chunk_num = 0; chunk_num < CHUNK_NUM_MAX; chunk_num++) {
205 resultp = &(result[even_chunk_size][chunk_num][fs_size_MB][stage_num]);
208 printf ("*** even %d fs_size_MB %d X: stage_num Y: %s Lines: different chunk_num ***\n", even_chunk_size, fs_size_MB*100, y_axis);
211 fp = fopen (name, "w");
216 fprintf (fp, "%f ", chunk_num/((float)stage_num));
217 print_y (fp, resultp, y_axis);