Example #1
0
static void io_hpl_do_stats1 ()
{
   int i;

   if (tracestats == NULL) {
      tracestats  = (statgen *)DISKSIM_malloc(tracemappings * sizeof(statgen));
      tracestats1 = (statgen *)DISKSIM_malloc(tracemappings * sizeof(statgen));
      tracestats2 = (statgen *)DISKSIM_malloc(tracemappings * sizeof(statgen));
      tracestats3 = (statgen *)DISKSIM_malloc(tracemappings * sizeof(statgen));
      tracestats4 = (statgen *)DISKSIM_malloc(tracemappings * sizeof(statgen));

      for (i=0; i<tracemappings; i++) {
         stat_initialize(statdeffile, statdesc_tracequeuestats, &tracestats[i]);
         stat_initialize(statdeffile, statdesc_tracerespstats, &tracestats1[i]);
         stat_initialize(statdeffile, statdesc_traceaccstats, &tracestats2[i]);
         stat_initialize(statdeffile, statdesc_traceqlenstats, &tracestats3[i]);
         stat_initialize(statdeffile, statdesc_tracenoqstats, &tracestats4[i]);
      }
   }
}
Example #2
0
//extern void intialize_device_physical_parameters();
static void ssd_statinit (int devno, int firsttime)
{
   ssd_t *currdisk;

   currdisk = getssd (devno);
   if (firsttime) {
      stat_initialize(statdeffile, statdesc_acctimestats, &currdisk->stat.acctimestats);
   } else {
      stat_reset(&currdisk->stat.acctimestats);
   }

   currdisk->stat.requestedbus = 0.0;
   currdisk->stat.waitingforbus = 0.0;
   currdisk->stat.numbuswaits = 0;
}
Example #3
0
void io_validate_do_stats1 ()
{
   int i;

   if (tracestats2 == NULL) {
      tracestats2 = (statgen *)DISKSIM_malloc(sizeof(statgen));
      tracestats3 = (statgen *)DISKSIM_malloc(sizeof(statgen));
      tracestats4 = (statgen *)DISKSIM_malloc(sizeof(statgen));
      tracestats5 = (statgen *)DISKSIM_malloc(sizeof(statgen));

      stat_initialize(statdeffile, statdesc_traceaccstats, tracestats2);
      stat_initialize(statdeffile, statdesc_traceaccdiffstats, tracestats3);
      stat_initialize(statdeffile, statdesc_traceaccwritestats, tracestats4);
      stat_initialize(statdeffile, statdesc_traceaccdiffwritestats, tracestats5);
      for (i=0; i<10; i++) {
	 validatebuf[i] = 0;
      }
   } else {
      stat_update(tracestats3, (validate_lastserv - disksim->lastphystime));
      if (!validate_lastread) {
         stat_update(tracestats5, (validate_lastserv - disksim->lastphystime));
      }
   }
}
Example #4
0
void iodriver_initialize (int standalone)
{
   int numdevs;
   struct ioq * queueset[MAXDEVICES];
   int i, j;
   iodriver *curriodriver;

   i = numiodrivers;

      /* Code will be broken by multiple iodrivers */
   ASSERT1(numiodrivers == 1, "numiodrivers", numiodrivers);

   ioqueue_initialize (OVERALLQUEUE, 0);

   for (i = 0; i < numiodrivers; i++) {
      curriodriver = iodrivers[i];
      curriodriver->type = standalone;
      if (standalone != STANDALONE) {
         curriodriver->scale = 1.0;
      }
      numdevs = controller_get_numcontrollers();
      curriodriver->numctlrs = numdevs;
      curriodriver->ctlrs = (ctlr*) DISKSIM_malloc(numdevs * (sizeof(ctlr)));
      ASSERT(curriodriver->ctlrs != NULL);
      for (j=0; j < numdevs; j++) {
         ctlr *currctlr = &curriodriver->ctlrs[j];
         currctlr->ctlno = j;
         currctlr->flags = 0;
         if (controller_C700_based(j) == TRUE) {
/*
fprintf (outputfile, "This one is c700_based - %d\n", j);
*/
            currctlr->flags |= DRIVER_C700;
         }
         currctlr->buspath.value = 0;
         currctlr->slotpath.value = 0;
         iosim_get_path_to_controller(i, currctlr->ctlno, &currctlr->buspath, &currctlr->slotpath);
         currctlr->numoutstanding = 0;
         currctlr->pendio = NULL;
         currctlr->oversized = NULL;
      }

      numdevs = device_get_numdevices();
      curriodriver->numdevices = numdevs;
      curriodriver->devices = (device*) DISKSIM_malloc(numdevs * (sizeof(device)));
      ASSERT(curriodriver->devices != NULL);
      for (j = 0; j < numdevs; j++) {
         device *currdev = &curriodriver->devices[j];
         currdev->devno = j;
         currdev->busy = FALSE;
         currdev->flag = 0;
         currdev->queue = ioqueue_copy(curriodriver->queue);
         ioqueue_initialize(currdev->queue, j);
         queueset[j] = currdev->queue;
         currdev->buspath.value = 0;
         currdev->slotpath.value = 0;
         iosim_get_path_to_device(i, currdev->devno, &currdev->buspath, &currdev->slotpath);
         iodriver_set_ctl_to_device(i, currdev);
         get_device_maxoutstanding(curriodriver, currdev);
      }
      logorg_initialize(sysorgs, numsysorgs, queueset,
			drv_printlocalitystats, 
			drv_printblockingstats, 
			drv_printinterferestats, 
			drv_printstreakstats, 
			drv_printstampstats, 
			drv_printintarrstats, 
			drv_printidlestats, 
			drv_printsizestats);
/*
fprintf (outputfile, "Back from logorg_initialize\n");
*/
   }
   stat_initialize(statdeffile, statdesc_emptyqueue, &emptyqueuestats);
   stat_initialize(statdeffile, statdesc_initiatenext, &initiatenextstats);

#if 0
   print_paths_to_devices();
   print_paths_to_ctlrs();
#endif

}
Example #5
0
static void
mems_statinit (int devno, int firsttime)
{
  mems_t *dev = getmems(devno);
  int j;

  /* First initialize device statistics */
  if (firsttime) {
    stat_initialize (statdeffile, statdesc_request_energy_uj, 
		     &dev->stat.request_energy_uj);
    stat_initialize (statdeffile, statdesc_seek_time,
		     &dev->stat.seek_time);
    stat_initialize (statdeffile, statdesc_x_seek_time,
		     &dev->stat.x_seek_time);
    stat_initialize (statdeffile, statdesc_y_seek_time,
		     &dev->stat.y_seek_time);
    stat_initialize (statdeffile, statdesc_turnaround_time,
		     &dev->stat.turnaround_time);
    stat_initialize (statdeffile, statdesc_turnaround_number,
		     &dev->stat.turnaround_number);

    stat_initialize (statdeffile, statdesc_stream_turnaround_time,
		     &dev->stat.stream_turnaround_time);
    stat_initialize (statdeffile, statdesc_stream_turnaround_number,
		     &dev->stat.stream_turnaround_number);

    stat_initialize (statdeffile, statdesc_subtrack_accesses,
		     &dev->stat.subtrack_accesses);
    stat_initialize (statdeffile, statdesc_tips_per_access,
		     &dev->stat.tips_per_access);
    stat_initialize (statdeffile, statdesc_inactive_time,
		     &dev->stat.inactive_time);
    stat_initialize (statdeffile, statdesc_prefetched_blocks,
		     &dev->stat.prefetched_blocks);
  } else {
    stat_reset (&dev->stat.request_energy_uj);
    stat_reset (&dev->stat.seek_time);
    stat_reset (&dev->stat.x_seek_time);
    stat_reset (&dev->stat.y_seek_time);
    stat_reset (&dev->stat.turnaround_time);
    stat_reset (&dev->stat.turnaround_number);

    stat_reset (&dev->stat.stream_turnaround_time);
    stat_reset (&dev->stat.stream_turnaround_number);

    stat_reset (&dev->stat.subtrack_accesses);
    stat_reset (&dev->stat.tips_per_access);
    stat_reset (&dev->stat.inactive_time);
    stat_reset (&dev->stat.prefetched_blocks);
  }
  dev->stat.total_energy_j = 0.0;
  dev->stat.servicing_energy_j = 0.0;
  dev->stat.startup_energy_j   = 0.0;
  dev->stat.idle_energy_j      = 0.0;
  dev->stat.inactive_energy_j  = 0.0;
  dev->stat.num_spinups    = 0;
  dev->stat.num_spindowns  = 0;
  dev->stat.num_buffer_accesses = 0;
  dev->stat.num_buffer_hits     = 0;
  dev->stat.num_initial_turnarounds = 0;
  dev->stat.num_stream_turnarounds  = 0;

  /* Now initialize sled statistics */
  for (j=0; j < dev->num_sleds; j++) {
    if (firsttime) {
      stat_initialize (statdeffile, statdesc_request_energy_uj,
		       &dev->sled[j].stat.request_energy_uj);
      stat_initialize (statdeffile, statdesc_seek_time,
		       &dev->sled[j].stat.seek_time);
      stat_initialize (statdeffile, statdesc_x_seek_time,
		       &dev->sled[j].stat.x_seek_time);
      stat_initialize (statdeffile, statdesc_y_seek_time,
		       &dev->sled[j].stat.y_seek_time);
      stat_initialize (statdeffile, statdesc_turnaround_time,
		       &dev->sled[j].stat.turnaround_time);
      stat_initialize (statdeffile, statdesc_turnaround_number,
		       &dev->sled[j].stat.turnaround_number);

      stat_initialize (statdeffile, statdesc_stream_turnaround_time,
		       &dev->sled[j].stat.stream_turnaround_time);
      stat_initialize (statdeffile, statdesc_stream_turnaround_number,
		       &dev->sled[j].stat.stream_turnaround_number);

      stat_initialize (statdeffile, statdesc_subtrack_accesses,
		       &dev->sled[j].stat.subtrack_accesses);
      stat_initialize (statdeffile, statdesc_tips_per_access,
		       &dev->sled[j].stat.tips_per_access);
      stat_initialize (statdeffile, statdesc_inactive_time,
		       &dev->sled[j].stat.inactive_time);
      stat_initialize (statdeffile, statdesc_prefetched_blocks,
		       &dev->sled[j].stat.prefetched_blocks);
    } else {
      stat_reset (&dev->sled[j].stat.request_energy_uj);
      stat_reset (&dev->sled[j].stat.seek_time);
      stat_reset (&dev->sled[j].stat.x_seek_time);
      stat_reset (&dev->sled[j].stat.y_seek_time);
      stat_reset (&dev->sled[j].stat.turnaround_time);
      stat_reset (&dev->sled[j].stat.turnaround_number);

      stat_reset (&dev->sled[j].stat.stream_turnaround_time);
      stat_reset (&dev->sled[j].stat.stream_turnaround_number);

      stat_reset (&dev->sled[j].stat.subtrack_accesses);
      stat_reset (&dev->sled[j].stat.tips_per_access);
      stat_reset (&dev->sled[j].stat.inactive_time);
      stat_reset (&dev->sled[j].stat.prefetched_blocks);
    }
    dev->sled[j].stat.total_energy_j = 0.0;
    dev->sled[j].stat.servicing_energy_j = 0.0;
    dev->sled[j].stat.startup_energy_j   = 0.0;
    dev->sled[j].stat.idle_energy_j      = 0.0;
    dev->sled[j].stat.inactive_energy_j  = 0.0;
    dev->sled[j].stat.num_spinups    = 0;
    dev->sled[j].stat.num_spindowns  = 0;
    dev->sled[j].stat.num_buffer_accesses = 0;
    dev->sled[j].stat.num_buffer_hits     = 0;
    dev->sled[j].stat.num_initial_turnarounds = 0;
    dev->sled[j].stat.num_stream_turnarounds  = 0;
  }
}