Statistics
| Branch: | Revision:

root / synthbench / bonnie++ / bon_time.cpp

History | View | Annotate | Download (9.1 kB)

1 0:839f52ef7657 louridas
2 0:839f52ef7657 louridas
using namespace std;
3 0:839f52ef7657 louridas
4 0:839f52ef7657 louridas
#include <sys/time.h>
5 0:839f52ef7657 louridas
#ifdef OS2
6 0:839f52ef7657 louridas
#define INCL_DOSFILEMGR
7 0:839f52ef7657 louridas
#define INCL_BASE
8 0:839f52ef7657 louridas
#include <os2.h>
9 0:839f52ef7657 louridas
#include "os2-perfutil.h"
10 0:839f52ef7657 louridas
/*
11 0:839f52ef7657 louridas
   Convert 8-byte (low, high) time value to double
12 0:839f52ef7657 louridas
*/
13 0:839f52ef7657 louridas
#define LL2F(high, low) (4294967296.0*(high)+(low))
14 0:839f52ef7657 louridas
#else
15 0:839f52ef7657 louridas
#include <unistd.h>
16 0:839f52ef7657 louridas
#include <sys/resource.h>
17 0:839f52ef7657 louridas
#endif
18 0:839f52ef7657 louridas
#include "bon_time.h"
19 0:839f52ef7657 louridas
#include <time.h>
20 0:839f52ef7657 louridas
#include <string.h>
21 0:839f52ef7657 louridas
22 0:839f52ef7657 louridas
#ifndef NON_UNIX
23 0:839f52ef7657 louridas
#include "conf.h"
24 0:839f52ef7657 louridas
#endif
25 0:839f52ef7657 louridas
26 0:839f52ef7657 louridas
#ifdef HAVE_ALGORITHM
27 0:839f52ef7657 louridas
#include <algorithm>
28 0:839f52ef7657 louridas
#else
29 0:839f52ef7657 louridas
30 0:839f52ef7657 louridas
#ifdef HAVE_ALGO
31 0:839f52ef7657 louridas
#include <algo>
32 0:839f52ef7657 louridas
#else
33 0:839f52ef7657 louridas
#ifdef HAVE_ALGO_H
34 0:839f52ef7657 louridas
#include <algo.h>
35 0:839f52ef7657 louridas
#else
36 0:839f52ef7657 louridas
#define min(XX,YY) ((XX) < (YY) ? (XX) : (YY))
37 0:839f52ef7657 louridas
#define max(XX,YY) ((XX) > (YY) ? (XX) : (YY))
38 0:839f52ef7657 louridas
#endif
39 0:839f52ef7657 louridas
#endif
40 0:839f52ef7657 louridas
41 0:839f52ef7657 louridas
#endif
42 0:839f52ef7657 louridas
43 0:839f52ef7657 louridas
#define TIMEVAL_TO_DOUBLE(XX) (double((XX).tv_sec) + double((XX).tv_usec) / 1000000.0)
44 0:839f52ef7657 louridas
45 0:839f52ef7657 louridas
void BonTimer::timestamp()
46 0:839f52ef7657 louridas
{
47 0:839f52ef7657 louridas
  m_last_timestamp = get_cur_time();
48 0:839f52ef7657 louridas
  m_last_cpustamp = get_cpu_use();
49 0:839f52ef7657 louridas
}
50 0:839f52ef7657 louridas
51 0:839f52ef7657 louridas
double
52 0:839f52ef7657 louridas
BonTimer::time_so_far()
53 0:839f52ef7657 louridas
{
54 0:839f52ef7657 louridas
  return get_cur_time() - m_last_timestamp;
55 0:839f52ef7657 louridas
}
56 0:839f52ef7657 louridas
57 0:839f52ef7657 louridas
double
58 0:839f52ef7657 louridas
BonTimer::cpu_so_far()
59 0:839f52ef7657 louridas
{
60 0:839f52ef7657 louridas
  return get_cpu_use() - m_last_cpustamp;
61 0:839f52ef7657 louridas
}
62 0:839f52ef7657 louridas
63 0:839f52ef7657 louridas
double
64 0:839f52ef7657 louridas
BonTimer::get_cur_time()
65 0:839f52ef7657 louridas
{
66 0:839f52ef7657 louridas
#ifdef OS2
67 0:839f52ef7657 louridas
  ULONG count = 0;
68 0:839f52ef7657 louridas
  ULONG rc = DosQuerySysInfo(QSV_MS_COUNT, QSV_MS_COUNT, &count, sizeof(count));
69 0:839f52ef7657 louridas
  if(rc)
70 0:839f52ef7657 louridas
    return 0.0;
71 0:839f52ef7657 louridas
  return double(count)/1000.0;
72 0:839f52ef7657 louridas
#else
73 0:839f52ef7657 louridas
  struct timeval tp;
74 0:839f52ef7657 louridas
75 0:839f52ef7657 louridas
  if (gettimeofday(&tp, static_cast<struct timezone *>(NULL)) == -1)
76 0:839f52ef7657 louridas
    io_error("gettimeofday", true);
77 0:839f52ef7657 louridas
  return TIMEVAL_TO_DOUBLE(tp);
78 0:839f52ef7657 louridas
#endif
79 0:839f52ef7657 louridas
}
80 0:839f52ef7657 louridas
81 0:839f52ef7657 louridas
double
82 0:839f52ef7657 louridas
BonTimer::get_cpu_use()
83 0:839f52ef7657 louridas
{
84 0:839f52ef7657 louridas
#ifdef OS2
85 0:839f52ef7657 louridas
  double      busy_val, busy_val_prev;
86 0:839f52ef7657 louridas
  double      intr_val, intr_val_prev;
87 0:839f52ef7657 louridas
  CPUUTIL     CPUUtil;
88 0:839f52ef7657 louridas
89 0:839f52ef7657 louridas
  ULONG rc = DosPerfSysCall(CMD_KI_RDCNT,(ULONG) &CPUUtil,0,0);
90 0:839f52ef7657 louridas
  if(rc)
91 0:839f52ef7657 louridas
    io_error("times", true);
92 0:839f52ef7657 louridas
  return LL2F(CPUUtil.ulBusyHigh, CPUUtil.ulBusyLow)
93 0:839f52ef7657 louridas
       + LL2F(CPUUtil.ulIntrHigh, CPUUtil.ulIntrLow);
94 0:839f52ef7657 louridas
#else
95 0:839f52ef7657 louridas
  struct rusage res_usage;
96 0:839f52ef7657 louridas
97 0:839f52ef7657 louridas
  getrusage(RUSAGE_SELF, &res_usage);
98 0:839f52ef7657 louridas
  return TIMEVAL_TO_DOUBLE(res_usage.ru_utime) + TIMEVAL_TO_DOUBLE(res_usage.ru_stime);
99 0:839f52ef7657 louridas
#endif
100 0:839f52ef7657 louridas
}
101 0:839f52ef7657 louridas
102 0:839f52ef7657 louridas
void BonTimer::get_delta_t(tests_t test)
103 0:839f52ef7657 louridas
{
104 0:839f52ef7657 louridas
  m_delta[test].Elapsed = time_so_far();
105 0:839f52ef7657 louridas
  m_delta[test].CPU = cpu_so_far();
106 0:839f52ef7657 louridas
  timestamp();
107 0:839f52ef7657 louridas
}
108 0:839f52ef7657 louridas
109 0:839f52ef7657 louridas
void BonTimer::get_delta_report(report_s &rep)
110 0:839f52ef7657 louridas
{
111 0:839f52ef7657 louridas
  rep.EndTime = get_cur_time();
112 0:839f52ef7657 louridas
  rep.CPU = cpu_so_far();
113 0:839f52ef7657 louridas
  timestamp();
114 0:839f52ef7657 louridas
}
115 0:839f52ef7657 louridas
116 0:839f52ef7657 louridas
void BonTimer::add_delta_report(report_s &rep, tests_t test)
117 0:839f52ef7657 louridas
{
118 0:839f52ef7657 louridas
  if(m_delta[test].CPU == 0.0)
119 0:839f52ef7657 louridas
  {
120 0:839f52ef7657 louridas
    m_delta[test].FirstStart = rep.StartTime;
121 0:839f52ef7657 louridas
    m_delta[test].LastStop = rep.EndTime;
122 0:839f52ef7657 louridas
  }
123 0:839f52ef7657 louridas
  else
124 0:839f52ef7657 louridas
  {
125 0:839f52ef7657 louridas
    m_delta[test].FirstStart = min(m_delta[test].FirstStart, rep.StartTime);
126 0:839f52ef7657 louridas
    m_delta[test].LastStop = max(m_delta[test].LastStop, rep.EndTime);
127 0:839f52ef7657 louridas
  }
128 0:839f52ef7657 louridas
  m_delta[test].CPU += rep.CPU;
129 0:839f52ef7657 louridas
  m_delta[test].Elapsed = m_delta[test].LastStop - m_delta[test].FirstStart;
130 0:839f52ef7657 louridas
}
131 0:839f52ef7657 louridas
132 0:839f52ef7657 louridas
BonTimer::BonTimer()
133 0:839f52ef7657 louridas
 : m_type(txt)
134 0:839f52ef7657 louridas
{
135 0:839f52ef7657 louridas
  Initialize();
136 0:839f52ef7657 louridas
}
137 0:839f52ef7657 louridas
138 0:839f52ef7657 louridas
void
139 0:839f52ef7657 louridas
BonTimer::Initialize()
140 0:839f52ef7657 louridas
{
141 0:839f52ef7657 louridas
  for(int i = 0; i < TestCount; i++)
142 0:839f52ef7657 louridas
  {
143 0:839f52ef7657 louridas
    m_delta[i].CPU = 0.0;
144 0:839f52ef7657 louridas
    m_delta[i].Elapsed = 0.0;
145 0:839f52ef7657 louridas
  }
146 0:839f52ef7657 louridas
  timestamp();
147 0:839f52ef7657 louridas
}
148 0:839f52ef7657 louridas
149 0:839f52ef7657 louridas
int BonTimer::print_cpu_stat(tests_t test)
150 0:839f52ef7657 louridas
{
151 0:839f52ef7657 louridas
  if(m_delta[test].Elapsed == 0.0)
152 0:839f52ef7657 louridas
  {
153 0:839f52ef7657 louridas
    if(m_type == txt)
154 0:839f52ef7657 louridas
      fprintf(m_fp, "    ");
155 0:839f52ef7657 louridas
    else
156 0:839f52ef7657 louridas
      fprintf(m_fp, ",");
157 0:839f52ef7657 louridas
    return 0;
158 0:839f52ef7657 louridas
  }
159 0:839f52ef7657 louridas
  if(m_delta[test].Elapsed < MinTime)
160 0:839f52ef7657 louridas
  {
161 0:839f52ef7657 louridas
    if(m_type == txt)
162 0:839f52ef7657 louridas
      fprintf(m_fp, " +++");
163 0:839f52ef7657 louridas
    else
164 0:839f52ef7657 louridas
      fprintf(m_fp, ",+++");
165 0:839f52ef7657 louridas
    return 0;
166 0:839f52ef7657 louridas
  }
167 0:839f52ef7657 louridas
  int cpu = int(m_delta[test].CPU / m_delta[test].Elapsed * 100.0);
168 0:839f52ef7657 louridas
  if(m_type == txt)
169 0:839f52ef7657 louridas
    fprintf(m_fp, " %3d", cpu);
170 0:839f52ef7657 louridas
  else
171 0:839f52ef7657 louridas
    fprintf(m_fp, ",%d", cpu);
172 0:839f52ef7657 louridas
  return 0;
173 0:839f52ef7657 louridas
}
174 0:839f52ef7657 louridas
175 0:839f52ef7657 louridas
int BonTimer::print_stat(tests_t test)
176 0:839f52ef7657 louridas
{
177 0:839f52ef7657 louridas
  if(m_delta[test].Elapsed == 0.0)
178 0:839f52ef7657 louridas
  {
179 0:839f52ef7657 louridas
    if(m_type == txt)
180 0:839f52ef7657 louridas
      fprintf(m_fp, "      ");
181 0:839f52ef7657 louridas
    else
182 0:839f52ef7657 louridas
      fprintf(m_fp, ",");
183 0:839f52ef7657 louridas
  }
184 0:839f52ef7657 louridas
  else if(m_delta[test].Elapsed < MinTime)
185 0:839f52ef7657 louridas
  {
186 0:839f52ef7657 louridas
    if(m_type == txt)
187 0:839f52ef7657 louridas
      fprintf(m_fp, " +++++");
188 0:839f52ef7657 louridas
    else
189 0:839f52ef7657 louridas
      fprintf(m_fp, ",+++++");
190 0:839f52ef7657 louridas
  }
191 0:839f52ef7657 louridas
  else
192 0:839f52ef7657 louridas
  {
193 0:839f52ef7657 louridas
    if(test == Lseek)
194 0:839f52ef7657 louridas
    {
195 0:839f52ef7657 louridas
      double seek_stat = double(Seeks) / m_delta[test].Elapsed;
196 0:839f52ef7657 louridas
      if(m_type == txt)
197 0:839f52ef7657 louridas
      {
198 0:839f52ef7657 louridas
        if(seek_stat >= 1000.0)
199 0:839f52ef7657 louridas
          fprintf(m_fp, " %5.0f", seek_stat);
200 0:839f52ef7657 louridas
        else
201 0:839f52ef7657 louridas
          fprintf(m_fp, " %5.1f", seek_stat);
202 0:839f52ef7657 louridas
      }
203 0:839f52ef7657 louridas
      else
204 0:839f52ef7657 louridas
        fprintf(m_fp, ",%.1f", seek_stat);
205 0:839f52ef7657 louridas
    }
206 0:839f52ef7657 louridas
    else
207 0:839f52ef7657 louridas
    {
208 0:839f52ef7657 louridas
      int res = int(double(m_file_size) / (m_delta[test].Elapsed / 1024.0));
209 0:839f52ef7657 louridas
      if(m_type == txt)
210 0:839f52ef7657 louridas
        fprintf(m_fp, " %5d", res);
211 0:839f52ef7657 louridas
      else
212 0:839f52ef7657 louridas
        fprintf(m_fp, ",%d", res);
213 0:839f52ef7657 louridas
    }
214 0:839f52ef7657 louridas
  }
215 0:839f52ef7657 louridas
  return print_cpu_stat(test);
216 0:839f52ef7657 louridas
}
217 0:839f52ef7657 louridas
218 0:839f52ef7657 louridas
int BonTimer::print_file_stat(tests_t test)
219 0:839f52ef7657 louridas
{
220 0:839f52ef7657 louridas
  if(m_delta[test].Elapsed == 0.0)
221 0:839f52ef7657 louridas
  {
222 0:839f52ef7657 louridas
    if(m_type == txt)
223 0:839f52ef7657 louridas
      fprintf(m_fp, "      ");
224 0:839f52ef7657 louridas
    else
225 0:839f52ef7657 louridas
      fprintf(m_fp, ",");
226 0:839f52ef7657 louridas
  }
227 0:839f52ef7657 louridas
  else if(m_delta[test].Elapsed < MinTime)
228 0:839f52ef7657 louridas
  {
229 0:839f52ef7657 louridas
    if(m_type == txt)
230 0:839f52ef7657 louridas
      fprintf(m_fp, " +++++");
231 0:839f52ef7657 louridas
    else
232 0:839f52ef7657 louridas
      fprintf(m_fp, ",+++++");
233 0:839f52ef7657 louridas
  }
234 0:839f52ef7657 louridas
  else
235 0:839f52ef7657 louridas
  {
236 0:839f52ef7657 louridas
    int res = int(double(m_directory_size) * double(DirectoryUnit)
237 0:839f52ef7657 louridas
                / m_delta[test].Elapsed);
238 0:839f52ef7657 louridas
    if(m_type == txt)
239 0:839f52ef7657 louridas
      fprintf(m_fp, " %5d", res);
240 0:839f52ef7657 louridas
    else
241 0:839f52ef7657 louridas
      fprintf(m_fp, ",%d", res);
242 0:839f52ef7657 louridas
  }
243 0:839f52ef7657 louridas
244 0:839f52ef7657 louridas
  return print_cpu_stat(test);
245 0:839f52ef7657 louridas
}
246 0:839f52ef7657 louridas
247 0:839f52ef7657 louridas
void
248 0:839f52ef7657 louridas
BonTimer::PrintHeader(FILE *fp)
249 0:839f52ef7657 louridas
{
250 0:839f52ef7657 louridas
  fprintf(fp, "name");
251 0:839f52ef7657 louridas
  fprintf(fp, ",file_size,putc,putc_cpu,put_block,put_block_cpu,rewrite,rewrite_cpu,getc,getc_cpu,get_block,get_block_cpu,seeks,seeks_cpu");
252 0:839f52ef7657 louridas
  fprintf(fp, ",num_files,seq_create,seq_create_cpu,seq_stat,seq_stat_cpu,seq_del,seq_del_cpu,ran_create,ran_create_cpu,ran_stat,ran_stat_cpu,ran_del,ran_del_cpu");
253 0:839f52ef7657 louridas
  fprintf(fp, "\n");
254 0:839f52ef7657 louridas
  fflush(NULL);
255 0:839f52ef7657 louridas
}
256 0:839f52ef7657 louridas
257 0:839f52ef7657 louridas
int
258 0:839f52ef7657 louridas
BonTimer::DoReport(CPCCHAR machine, int file_size, int directory_size
259 0:839f52ef7657 louridas
                 , int max_size, int min_size, int num_directories
260 0:839f52ef7657 louridas
                 , int chunk_size, FILE *fp)
261 0:839f52ef7657 louridas
{
262 0:839f52ef7657 louridas
  m_fp = fp;
263 0:839f52ef7657 louridas
  m_file_size = file_size;
264 0:839f52ef7657 louridas
  m_directory_size = directory_size;
265 0:839f52ef7657 louridas
  m_chunk_size = chunk_size;
266 0:839f52ef7657 louridas
  const int txt_machine_size = 20;
267 0:839f52ef7657 louridas
  if(m_file_size)
268 0:839f52ef7657 louridas
  {
269 0:839f52ef7657 louridas
    if(m_type == txt)
270 0:839f52ef7657 louridas
    {
271 0:839f52ef7657 louridas
      fprintf(m_fp, "Version %5s       ", BON_VERSION);
272 0:839f52ef7657 louridas
      fprintf(m_fp,
273 0:839f52ef7657 louridas
        "------Sequential Output------ --Sequential Input- --Random-\n");
274 0:839f52ef7657 louridas
      fprintf(m_fp, "                    ");
275 0:839f52ef7657 louridas
      fprintf(m_fp,
276 0:839f52ef7657 louridas
        "-Per Chr- --Block-- -Rewrite- -Per Chr- --Block-- --Seeks--\n");
277 0:839f52ef7657 louridas
      if(m_chunk_size == DefaultChunkSize)
278 0:839f52ef7657 louridas
        fprintf(m_fp, "Machine        Size ");
279 0:839f52ef7657 louridas
      else
280 0:839f52ef7657 louridas
        fprintf(m_fp, "Machine   Size:chnk ");
281 0:839f52ef7657 louridas
      fprintf(m_fp, "K/sec %%CP K/sec %%CP K/sec %%CP K/sec %%CP K/sec ");
282 0:839f52ef7657 louridas
      fprintf(m_fp, "%%CP  /sec %%CP\n");
283 0:839f52ef7657 louridas
    }
284 0:839f52ef7657 louridas
    char size_buf[1024];
285 0:839f52ef7657 louridas
    if(m_file_size % 1024 == 0)
286 0:839f52ef7657 louridas
      sprintf(size_buf, "%dG", m_file_size / 1024);
287 0:839f52ef7657 louridas
    else
288 0:839f52ef7657 louridas
      sprintf(size_buf, "%dM", m_file_size);
289 0:839f52ef7657 louridas
    if(m_chunk_size != DefaultChunkSize)
290 0:839f52ef7657 louridas
    {
291 0:839f52ef7657 louridas
      char *tmp = size_buf + strlen(size_buf);
292 0:839f52ef7657 louridas
      if(m_chunk_size >= 1024)
293 0:839f52ef7657 louridas
        sprintf(tmp, ":%dk", m_chunk_size / 1024);
294 0:839f52ef7657 louridas
      else
295 0:839f52ef7657 louridas
        sprintf(tmp, ":%d", m_chunk_size);
296 0:839f52ef7657 louridas
    }
297 0:839f52ef7657 louridas
    char buf[4096];
298 0:839f52ef7657 louridas
    if(m_type == txt)
299 0:839f52ef7657 louridas
    {
300 0:839f52ef7657 louridas
      // copy machine name to buf
301 0:839f52ef7657 louridas
      //
302 0:839f52ef7657 louridas
      snprintf(buf
303 0:839f52ef7657 louridas
#ifndef NO_SNPRINTF
304 0:839f52ef7657 louridas
              , txt_machine_size - 1
305 0:839f52ef7657 louridas
#endif
306 0:839f52ef7657 louridas
              , "%s                  ", machine);
307 0:839f52ef7657 louridas
      buf[txt_machine_size - 1] = '\0';
308 0:839f52ef7657 louridas
      // set cur to point to a byte past where we end the machine name
309 0:839f52ef7657 louridas
      // size of the buf - size of the new data - 1 for the space - 1 for the
310 0:839f52ef7657 louridas
      // terminating zero on the string
311 0:839f52ef7657 louridas
      char *cur = &buf[txt_machine_size - strlen(size_buf) - 2];
312 0:839f52ef7657 louridas
      *cur = ' '; // make cur a space
313 0:839f52ef7657 louridas
      cur++; // increment to where we store the size
314 0:839f52ef7657 louridas
      strcpy(cur, size_buf);  // copy the size in
315 0:839f52ef7657 louridas
      fputs(buf, m_fp);
316 0:839f52ef7657 louridas
    }
317 0:839f52ef7657 louridas
    else
318 0:839f52ef7657 louridas
    {
319 0:839f52ef7657 louridas
      printf("%s,%s", machine, size_buf);
320 0:839f52ef7657 louridas
    }
321 0:839f52ef7657 louridas
    print_stat(Putc);
322 0:839f52ef7657 louridas
    print_stat(FastWrite);
323 0:839f52ef7657 louridas
    print_stat(ReWrite);
324 0:839f52ef7657 louridas
    print_stat(Getc);
325 0:839f52ef7657 louridas
    print_stat(FastRead);
326 0:839f52ef7657 louridas
    print_stat(Lseek);
327 0:839f52ef7657 louridas
    if(m_type == txt)
328 0:839f52ef7657 louridas
      fprintf(m_fp, "\n");
329 0:839f52ef7657 louridas
  }
330 0:839f52ef7657 louridas
  else if(m_type == csv)
331 0:839f52ef7657 louridas
  {
332 0:839f52ef7657 louridas
    fprintf(m_fp, "%s,,,,,,,,,,,,,", machine);
333 0:839f52ef7657 louridas
  }
334 0:839f52ef7657 louridas
335 0:839f52ef7657 louridas
  if(m_directory_size)
336 0:839f52ef7657 louridas
  {
337 0:839f52ef7657 louridas
    char buf[128];
338 0:839f52ef7657 louridas
    char *tmp;
339 0:839f52ef7657 louridas
    sprintf(buf, "%d", m_directory_size);
340 0:839f52ef7657 louridas
    if(max_size == -1)
341 0:839f52ef7657 louridas
    {
342 0:839f52ef7657 louridas
      strcat(buf, ":link");
343 0:839f52ef7657 louridas
    }
344 0:839f52ef7657 louridas
    else if(max_size == -2)
345 0:839f52ef7657 louridas
    {
346 0:839f52ef7657 louridas
      strcat(buf, ":symlink");
347 0:839f52ef7657 louridas
    }
348 0:839f52ef7657 louridas
    else if(max_size)
349 0:839f52ef7657 louridas
    {
350 0:839f52ef7657 louridas
      tmp = &buf[strlen(buf)];
351 0:839f52ef7657 louridas
      sprintf(tmp, ":%d:%d", max_size, min_size);
352 0:839f52ef7657 louridas
    }
353 0:839f52ef7657 louridas
    if(num_directories > 1)
354 0:839f52ef7657 louridas
    {
355 0:839f52ef7657 louridas
      tmp = &buf[strlen(buf)];
356 0:839f52ef7657 louridas
      sprintf(tmp, "/%d", num_directories);
357 0:839f52ef7657 louridas
    }
358 0:839f52ef7657 louridas
    if(m_type == txt)
359 0:839f52ef7657 louridas
    {
360 0:839f52ef7657 louridas
      if(m_file_size)
361 0:839f52ef7657 louridas
        fprintf(m_fp, "                    ");
362 0:839f52ef7657 louridas
      else
363 0:839f52ef7657 louridas
        fprintf(m_fp, "Version %5s       ", BON_VERSION);
364 0:839f52ef7657 louridas
      fprintf(m_fp,
365 0:839f52ef7657 louridas
        "------Sequential Create------ --------Random Create--------\n");
366 0:839f52ef7657 louridas
      if(m_file_size)
367 0:839f52ef7657 louridas
        fprintf(m_fp, "                    ");
368 0:839f52ef7657 louridas
      else
369 0:839f52ef7657 louridas
        fprintf(m_fp, "%-19.19s ", machine);
370 0:839f52ef7657 louridas
      fprintf(m_fp,
371 0:839f52ef7657 louridas
           "-Create-- --Read--- -Delete-- -Create-- --Read--- -Delete--\n");
372 0:839f52ef7657 louridas
      if(min_size)
373 0:839f52ef7657 louridas
      {
374 0:839f52ef7657 louridas
        fprintf(m_fp, "files:max:min       ");
375 0:839f52ef7657 louridas
      }
376 0:839f52ef7657 louridas
      else
377 0:839f52ef7657 louridas
      {
378 0:839f52ef7657 louridas
        if(max_size)
379 0:839f52ef7657 louridas
          fprintf(m_fp, "files:max           ");
380 0:839f52ef7657 louridas
        else
381 0:839f52ef7657 louridas
          fprintf(m_fp, "              files ");
382 0:839f52ef7657 louridas
      }
383 0:839f52ef7657 louridas
      fprintf(m_fp, " /sec %%CP  /sec %%CP  /sec %%CP  /sec %%CP  /sec ");
384 0:839f52ef7657 louridas
      fprintf(m_fp, "%%CP  /sec %%CP\n");
385 0:839f52ef7657 louridas
      fprintf(m_fp, "%19s", buf);
386 0:839f52ef7657 louridas
    }
387 0:839f52ef7657 louridas
    else
388 0:839f52ef7657 louridas
    {
389 0:839f52ef7657 louridas
      fprintf(m_fp, ",%s", buf);
390 0:839f52ef7657 louridas
    }
391 0:839f52ef7657 louridas
    print_file_stat(CreateSeq);
392 0:839f52ef7657 louridas
    print_file_stat(StatSeq);
393 0:839f52ef7657 louridas
    print_file_stat(DelSeq);
394 0:839f52ef7657 louridas
    print_file_stat(CreateRand);
395 0:839f52ef7657 louridas
    print_file_stat(StatRand);
396 0:839f52ef7657 louridas
    print_file_stat(DelRand);
397 0:839f52ef7657 louridas
    fprintf(m_fp, "\n");
398 0:839f52ef7657 louridas
  }
399 0:839f52ef7657 louridas
  else if(m_type == csv)
400 0:839f52ef7657 louridas
  {
401 0:839f52ef7657 louridas
    fprintf(m_fp, ",,,,,,,,,,,,,\n");
402 0:839f52ef7657 louridas
  }
403 0:839f52ef7657 louridas
  fflush(stdout);
404 0:839f52ef7657 louridas
  return 0;
405 0:839f52ef7657 louridas
}