Beispiel #1
0
void add_trace(struct io *iop)
{
	if (iop->t.action & BLK_TC_ACT(BLK_TC_NOTIFY)) {
		if (iop->t.action == BLK_TN_PROCESS) {
			if (iop->t.pid == 0)
				process_alloc(0, "kernel");
			else {
				char *slash = strchr(iop->pdu, '/');
				if (slash)
					*slash = '\0';

				process_alloc(iop->t.pid, iop->pdu);
			}
		} else if (iop->t.action == BLK_TN_MESSAGE)
			trace_message(iop);
		io_release(iop);
	} else if (iop->t.action & BLK_TC_ACT(BLK_TC_PC)) {
		io_release(iop);
	} else {
		if (time_bounded) {
			if (BIT_TIME(iop->t.time) < t_astart) {
				io_release(iop);
				return;
			} else if (BIT_TIME(iop->t.time) > t_aend) {
				io_release(iop);
				done = 1;
				return;
			}
		}
		__add_trace(iop);
	}
}
Beispiel #2
0
void __output_avg(FILE *ofp, char *hdr, struct avg_info *ap, int do_easy)
{
	if (ap->n > 0) {
		ap->avg = BIT_TIME(ap->total) / (double)ap->n;
		fprintf(ofp, "%-15s %13.9f %13.9f %13.9f %11d\n", hdr,
			BIT_TIME(ap->min), ap->avg, BIT_TIME(ap->max), ap->n);

		if (do_easy && easy_parse_avgs) {
			fprintf(xavgs_ofp,
				"%s %.9lf %.9lf %.9lf %d\n",
				hdr, BIT_TIME(ap->min), ap->avg,
						BIT_TIME(ap->max), ap->n);
		}
	}
}
Beispiel #3
0
void __output_dip_avg(struct d_info *dip, void *arg)
{
	struct __oda *odap = arg;
	ai_dip_t ap = odap->func(dip);
	if (ap->n > 0) {
		char dev_info[15];
		ap->avg = BIT_TIME(ap->total) / (double)ap->n;
		__output_avg(odap->ofp, make_dev_hdr(dev_info, 15, dip, 1),
				ap, 0);
	}
}
void seeki_add(void *handle, struct io *iop)
{
    struct seeki *sip = handle;
    char rw = IOP_READ(iop) ? 'r' : 'w';
    long long dist = seek_dist(sip, iop);
    double tstamp = BIT_TIME(iop->t.time);
    FILE *fp = IOP_READ(iop) ? sip->rfp : sip->wfp;

    if (fp)
        fprintf(fp, "%15.9lf %13lld %c\n", tstamp, dist, rw);
    if (sip->cfp)
        fprintf(sip->cfp, "%15.9lf %13lld %c\n", tstamp, dist, rw);

    dist = llabs(dist);
    sip->tot_seeks++;
    sip->total_sectors += dist;
    __insert(&sip->root, dist);

    sps_add(sip, tstamp);
}
Beispiel #5
0
void trace_plug(struct io *p_iop)
{
	dip_plug(p_iop->t.device, BIT_TIME(p_iop->t.time));
	io_release(p_iop);
}
Beispiel #6
0
void trace_unplug_timer(struct io *ut_iop)
{
	dip_unplug_tm(ut_iop->t.device, BIT_TIME(ut_iop->t.time),
			get_nio_up(ut_iop));
	io_release(ut_iop);
}
Beispiel #7
0
void trace_unplug_io(struct io *u_iop)
{
	unplug_hist_add(u_iop);
	dip_unplug(u_iop->t.device, BIT_TIME(u_iop->t.time), get_nio_up(u_iop));
	io_release(u_iop);
}