void ssd_printsetstats (int *set, int setsize, char *sourcestr) { int i; struct ioq * queueset[MAXDEVICES*SSD_MAX_ELEMENTS]; int queuecnt = 0; int reqcnt = 0; char prefix[80]; //using more secure functions sprintf_s4(prefix, 80, "%sssd ", sourcestr); for (i=0; i<setsize; i++) { ssd_t *currdisk = getssd (set[i]); struct ioq *q = currdisk->queue; queueset[queuecnt] = q; queuecnt++; reqcnt += ioqueue_get_number_of_requests(q); } if (reqcnt == 0) { fprintf (outputfile, "\nNo ssd requests for members of this set\n\n"); return; } ioqueue_printstats(queueset, queuecnt, prefix); ssd_acctime_printstats(set, setsize, prefix); ssd_other_printstats(set, setsize, prefix); }
void controller_smart_printstats (controller *currctlr, char *prefix) { ctlrinfo_t *ctlrinfo = disksim->ctlrinfo; int devno; char devprefix[181]; struct ioq **queueset = DISKSIM_malloc (currctlr->numdevices * sizeof(void *)); if (ctlrinfo->ctl_printcachestats) { currctlr->cache->cache_printstats(currctlr->cache, prefix); } for (devno=0; devno<currctlr->numdevices; devno++) { queueset[devno] = currctlr->devices[devno].queue; } sprintf (devprefix, "%sdevices ", prefix); ioqueue_printstats (queueset, currctlr->numdevices, devprefix); if ((ctlrinfo->ctl_printperdiskstats) && (currctlr->numdevices > 1)) { for (devno=0; devno<currctlr->numdevices; devno++) { struct ioq *queue = currctlr->devices[devno].queue; if (ioqueue_get_number_of_requests(queue)) { sprintf(devprefix, "%sdevice #%d ", prefix, devno); ioqueue_printstats(&queue, 1, devprefix); } } } }
/* Print statistics */ void mems_printstats (void) { struct ioq *queueset[MAXDEVICES]; int set[MAXDEVICES]; int i; int reqcnt = 0; char prefix[80]; int devcnt; mems_t *dev; fprintf(outputfile, "\nMEMS STATISTICS\n----------------\n\n"); sprintf(prefix, "Mems "); if (!disksim->memsinfo) { fprintf(outputfile, "No mems requests encountered (1)\n"); return; } devcnt = 0; for (i = 0; i < disksim->memsinfo->devices_len; i++) { dev = getmems(i); if (dev) { // SCHLOS - this has been hard-coded to the first sled since // mems_event doesn't use the device queues anymore. queueset[devcnt] = dev->sled[0].queue; reqcnt += ioqueue_get_number_of_requests(dev->queue); devcnt++; } } assert(devcnt == disksim->memsinfo->numdevices); /* if (reqcnt == 0) { fprintf(outputfile, "No mems requests encountered (2)\n"); return; } */ ioqueue_printstats(queueset, devcnt, prefix); devcnt = 0; for (i=0; i < disksim->memsinfo->devices_len; i++) { dev = getmems(i); if (dev) { set[devcnt] = i; devcnt++; } } assert(devcnt == disksim->memsinfo->numdevices); mems_prefetch_printstats(set, devcnt, prefix); mems_seektime_printstats(set, devcnt, prefix); mems_other_printstats(set, devcnt, prefix); mems_inactive_printstats(set, devcnt, prefix); mems_buffer_printstats(set, devcnt, prefix); mems_energy_printstats(set, devcnt, prefix); fprintf(outputfile, "\n\n"); }
/* Print set statistics */ void mems_printsetstats (int *set, int setsize, char *sourcestr) { int i; struct ioq *queueset[MAXDEVICES]; int reqcnt = 0; char prefix[80]; sprintf(prefix, "%smems ", sourcestr); for (i=0; i<setsize; i++) { mems_t *dev = getmems(set[i]); queueset[i] = dev->queue; reqcnt += ioqueue_get_number_of_requests(dev->queue); } if (reqcnt == 0) { fprintf(outputfile, "\nNo mems requests for members of this set\n\n"); return; } ioqueue_printstats(queueset, setsize, prefix); mems_prefetch_printstats(set, setsize, prefix); mems_seektime_printstats(set, setsize, prefix); mems_other_printstats(set, setsize, prefix); mems_inactive_printstats(set, setsize, prefix); mems_buffer_printstats(set, setsize, prefix); mems_energy_printstats(set, setsize, prefix); }
void simpledisk_printsetstats (int *set, int setsize, char *sourcestr) { int i; struct ioq * queueset[MAXDEVICES]; int reqcnt = 0; char prefix[80]; sprintf(prefix, "%ssimpledisk ", sourcestr); for (i=0; i<setsize; i++) { simpledisk_t *currdisk = getsimpledisk (set[i]); queueset[i] = currdisk->queue; reqcnt += ioqueue_get_number_of_requests(currdisk->queue); } if (reqcnt == 0) { fprintf (outputfile, "\nNo simpledisk requests for members of this set\n\n"); return; } ioqueue_printstats(queueset, setsize, prefix); simpledisk_acctime_printstats(set, setsize, prefix); simpledisk_other_printstats(set, setsize, prefix); }
void simpledisk_printstats (void) { struct ioq * queueset[MAXDEVICES]; int set[MAXDEVICES]; int i; int reqcnt = 0; char prefix[80]; int diskcnt; fprintf(outputfile, "\nSIMPLEDISK STATISTICS\n"); fprintf(outputfile, "---------------------\n\n"); sprintf(prefix, "Simpledisk "); diskcnt = 0; for (i=0; i<MAXDEVICES; i++) { simpledisk_t *currdisk = getsimpledisk (i); if (currdisk) { queueset[diskcnt] = currdisk->queue; reqcnt += ioqueue_get_number_of_requests(currdisk->queue); diskcnt++; } } assert (diskcnt == numsimpledisks); if (reqcnt == 0) { fprintf(outputfile, "No simpledisk requests encountered\n"); return; } ioqueue_printstats(queueset, numsimpledisks, prefix); diskcnt = 0; for (i=0; i<MAXDEVICES; i++) { simpledisk_t *currdisk = getsimpledisk (i); if (currdisk) { set[diskcnt] = i; diskcnt++; } } assert (diskcnt == numsimpledisks); simpledisk_acctime_printstats(set, numsimpledisks, prefix); simpledisk_other_printstats(set, numsimpledisks, prefix); fprintf (outputfile, "\n\n"); if (numsimpledisks <= 1) { return; } for (i=0; i<numsimpledisks; i++) { simpledisk_t *currdisk = getsimpledisk (set[i]); if (currdisk->printstats == FALSE) { continue; } if (ioqueue_get_number_of_requests(currdisk->queue) == 0) { fprintf(outputfile, "No requests for simpledisk #%d\n\n\n", set[i]); continue; } fprintf(outputfile, "Simpledisk #%d:\n\n", set[i]); sprintf(prefix, "Simpledisk #%d ", set[i]); ioqueue_printstats(&currdisk->queue, 1, prefix); simpledisk_acctime_printstats(&set[i], 1, prefix); simpledisk_other_printstats(&set[i], 1, prefix); fprintf (outputfile, "\n\n"); } }
void ssd_printstats (void) { struct ioq * queueset[MAXDEVICES*SSD_MAX_ELEMENTS]; int set[MAXDEVICES]; int i,j; int reqcnt = 0; char prefix[80]; int diskcnt; int queuecnt; fprintf(outputfile, "\nSSD STATISTICS\n"); fprintf(outputfile, "---------------------\n\n"); sprintf_s3(prefix, 80, "ssd "); diskcnt = 0; queuecnt = 0; for (i=0; i<MAXDEVICES; i++) { ssd_t *currdisk = getssd (i); if (currdisk) { struct ioq *q = currdisk->queue; queueset[queuecnt] = q; queuecnt++; reqcnt += ioqueue_get_number_of_requests(q); diskcnt++; } } assert (diskcnt == numssds); if (reqcnt == 0) { fprintf(outputfile, "No ssd requests encountered\n"); return; } ioqueue_printstats(queueset, queuecnt, prefix); diskcnt = 0; for (i=0; i<MAXDEVICES; i++) { ssd_t *currdisk = getssd (i); if (currdisk) { set[diskcnt] = i; diskcnt++; } } assert (diskcnt == numssds); ssd_acctime_printstats(set, numssds, prefix); ssd_other_printstats(set, numssds, prefix); ssd_printcleanstats(set, numssds, prefix); fprintf (outputfile, "\n\n"); for (i=0; i<numssds; i++) { ssd_t *currdisk = getssd (set[i]); if (currdisk->printstats == FALSE) { continue; } reqcnt = 0; { struct ioq *q = currdisk->queue; reqcnt += ioqueue_get_number_of_requests(q); } if (reqcnt == 0) { fprintf(outputfile, "No requests for ssd #%d\n\n\n", set[i]); continue; } fprintf(outputfile, "ssd #%d:\n\n", set[i]); sprintf_s4(prefix, 80, "ssd #%d ", set[i]); { struct ioq *q; q = currdisk->queue; ioqueue_printstats(&q, 1, prefix); } for (j=0;j<currdisk->params.nelements;j++) { char pprefix[100]; struct ioq *q; sprintf_s5(pprefix, 100, "%s elem #%d ", prefix, j); q = currdisk->elements[j].queue; ioqueue_printstats(&q, 1, pprefix); } ssd_acctime_printstats(&set[i], 1, prefix); ssd_other_printstats(&set[i], 1, prefix); fprintf (outputfile, "\n\n"); } }