MetricsTable (
	"[total] Total execution time",
	"[tthruput] Total thruput in KBps",
	"[tread] Record read time, avg MSEC",
	"[tread_sd] Record read time, stddev MSEC",
	"[twrite] Record write time, avg MSEC",
	"[twrite_sd] Record write time, stddev MSEC",
	"[LUtime] LU decomposition, in msec",
	"Wall Clock Time",
	"Execution Time"
    	) {
	name <- "Metrics Summary",
	x_axis <- "Value",
	y_axis <- "Metric",
	menu <- "Metrics"
}

MetricsTable (
    	"[Pattern] Access pattern",
    	"[Nio] Number of I/O procs",
    	"[Ncomp] Number of compute procs",
	"[NO_OF_DISKS]",
	"[STAGE] Stage number",
	"[CPFS] CPFS type",
	"[IOPFS] IOPFS type",
	"[CONSISTENCY] Consistency type",
        "[AHEAD_BEHIND] IOP ahead/behind", 
	"[FILE_BLOCKS] in blocks",
	"[FILE_SIZE] in bytes",
	"[RECORD_SIZE] in bytes",
	"[NUM_RECORDS]",
	"[BLOCK_SIZE] in bytes",
        "[DISK_TYPE]",
        "[DISK_LAYOUT]",
    	"[DISK_SORT] Sort disk requests",
	"[DISK_READ_TIME] in msec",
	"[DISK_WRITE_TIME] in msec",
	"[NET_SCATTER_GATHER]",
	"[TICSperSEC] TICS per second",
	"[BYTESperSEC] Bytes per second",
	"[BYTESperFLIT] Bytes per flit"
    	) {
    	name <- "Parameters Summary",
	x_axis <- "Value",
	y_axis <- "Parameter",
	menu <- "Parameters"
}

MetricsTable (
    "[CPread_n] FS*read call count",
    "[CPread_bytes] FS*read byte count",
    "[tread] Record read time, avg MSEC",
    "[tread_sd] Record read time, stddev MSEC",

    "[IOPread_n] IOPread call count",
    "[IOPread_bytes] IOPread byte count",
    "[IOPread] read time, avg MSEC",
    "[IOPread_sd] read time, stddev MSEC",

    "[CPwrite_n] FS*write call count",
    "[CPwrite_bytes] FS*write byte count",
    "[twrite] Record write time, avg MSEC",
    "[twrite_sd] Record write time, stddev MSEC",

    "[IOPwrite_n] IOPwrite call count",
    "[IOPwrite_bytes] IOPwrite byte count",
    "[IOPwrite] write time, avg MSEC",
    "[IOPwrite_sd] write time, stddev MSEC",

    "[Redirects] Redirects, fraction successful"
    ) {
	name <- "Transfers: calls, bytes, and times",
	x_axis <- "Value",
	y_axis <- "Metric",
	menu <- "Transfers"
}

ArrayMetricsGraph "[diskread] Disk reads, per disk" {
	name <- "Disk reads, per disk",
	menu <- "diskread",
	x_axis <- "Disk reads"
}

ArrayMetricsGraph "[diskwrite] Disk writes, per disk" {
	name <- "Disk writes, per disk",
	menu <- "diskwrite",
	x_axis <- "Disk writes"
}

ArrayMetricsGraph "[diskidle] Disk idle time, per disk" {
	name <- "Disk idle time, per disk",
	menu <- "diskidle",
	x_axis <- "Disk idle time (msec)"
}

ArrayMetricsGraph "[diskwait] Disk wait time, avg" {
	name <- "Disk wait time (average), per disk",
	menu <- "diskwait",
	x_axis <- "Disk wait time (msec)"
}

ArrayMetricsGraph "[diskwait_sd] Disk wait time, std dev" {
	name <- "Disk wait time (std dev), per disk",
	menu <- "diskwait_sd",
	x_axis <- "Disk wait time standard deviation (msec)"
}

ArrayMetricsGraph "[ithruput] Inner thruput in KBps, per CP" {
	name <- "Inner thruput per CP",
	menu <- "inner thruput graph",
	x_axis <- "Thruput per compute proc (KBps)"
}

ArrayMetricsTable "[ithruput] Inner thruput in KBps, per CP" {
	name <- "Inner thruput per CP",
	menu <- "inner thruput table"
}

ArrayMetricsGraph "[othruput] Outer thruput in KBps, per CP" {
	name <- "Outer thruput per CP",
	menu <- "outer thruput graph",
	x_axis <- "Thruput per compute proc (KBps)"
}

ArrayMetricsTable "[othruput] Outer thruput in KBps, per CP" {
	name <- "Outer thruput per CP",
	menu <- "outer thruput table"
}

ArrayMetricsGraph "[miss] Cache misses, per proc" {
	name <- "Cache misses per processor",
	menu <- "cache miss graph",
	x_axis <- "Number of cache misses"
}

ArrayMetricsTable "[miss] Cache misses, per proc" {
	name <- "Cache misses per processor",
	menu <- "cache miss table"
}

ArrayMetricsGraph "[hit] Cache hits, per proc" {
	name <- "Cache hits per processor",
	menu <- "cache hit graph",
	x_axis <- "Number of cache hits"
}

ArrayMetricsTable "[hit] Cache hits, per proc" {
	name <- "Cache hits per processor",
	menu <- "cache hit table"
}

ArrayMetricsGraph "[diskmiss] Disk cache misses, per disk" {
	name <- "DiskCache misses per disk",
	menu <- "diskcache miss graph",
	x_axis <- "Number of disk-cache misses"
}

ArrayMetricsTable "[diskmiss] Disk cache misses, per disk" {
	name <- "DiskCache misses per disk",
	menu <- "diskcache miss table"
}

ArrayMetricsGraph "[diskhit] Disk cache hits, per disk" {
	name <- "DiskCache hits per disk",
	menu <- "diskcache hit graph",
	x_axis <- "Number of disk-cache hits"
}

ArrayMetricsTable "[diskhit] Disk cache hits, per disk" {
	name <- "DiskCache hits per disk",
	menu <- "diskcache hit table"
}

ArrayMetricsGraph "[diskmoves] Disk movements, per disk" {
	name <- "Disk movements per disk",
	menu <- "diskmoves graph",
	x_axis <- "Number of disk movements"
}

ArrayMetricsTable "[diskmoves] Disk movements, per disk" {
	name <- "Disk movements per disk",
	menu <- "diskmoves table"
}

Map reversemap {
	"Busy" 0, "Idle" 1 }

ArrayGraph diskbusy (d, 0, NO_OF_DISKS - 1) {
	name <- "Disk Lifelines",
	menu <- "Disk Lifelines",
	usemap <- reversemap,
	y_axis <- "Disk",
	action {
		EV_DISKBUSY: DEC(d),
		EV_DISKIDLE: INC(d)
	}
}

Map themap {
	"Busy" 1, "Idle" 0 }

ArrayGraph lifelines (p, 1, metric("[Nio] Number of I/O procs")
    	    	         + metric("[Ncomp] Number of compute procs")) {
	name <- "Processor Lifelines",
	menu <- "Proc Lifelines",
	usemap <- themap,
	y_axis <- "Processor",
	action {
		EV_BUSY: INC(p),
		EV_IDLE: DEC(p)
	}
}

EventGraph iopblocks0 { name <- "Disk 0", markers, noextend, 
    action { EV_IOPREAD: VALUE (0) },
    action { EV_IOPWRITE: VALUE (0) },
    action { EV_BLOCKREAD: VALUE (0) },
    action { EV_BLOCKWRITE: VALUE (0) }
}
EventGraph iopblocks1 { name <- "Disk 1", markers, noextend, 
    action { EV_IOPREAD: VALUE (1) },
    action { EV_IOPWRITE: VALUE (1) },
    action { EV_BLOCKREAD: VALUE (1) },
    action { EV_BLOCKWRITE: VALUE (1) }
}
EventGraph iopblocks2 { name <- "Disk 2", markers, noextend, 
    action { EV_IOPREAD: VALUE (2) },
    action { EV_IOPWRITE: VALUE (2) },
    action { EV_BLOCKREAD: VALUE (2) },
    action { EV_BLOCKWRITE: VALUE (2) }
}
EventGraph iopblocks3 { name <- "Disk 3", markers, noextend, 
    action { EV_IOPREAD: VALUE (3) },
    action { EV_IOPWRITE: VALUE (3) },
    action { EV_BLOCKREAD: VALUE (3) },
    action { EV_BLOCKWRITE: VALUE (3) }
}
EventGraph iopblocks4 { name <- "Disk 4", markers, noextend, 
    action { EV_IOPREAD: VALUE (4) },
    action { EV_IOPWRITE: VALUE (4) },
    action { EV_BLOCKREAD: VALUE (4) },
    action { EV_BLOCKWRITE: VALUE (4) }
}
EventGraph iopblocks5 { name <- "Disk 5", markers, noextend, 
    action { EV_IOPREAD: VALUE (5) },
    action { EV_IOPWRITE: VALUE (5) },
    action { EV_BLOCKREAD: VALUE (5) },
    action { EV_BLOCKWRITE: VALUE (5) }
}
EventGraph iopblocks6 { name <- "Disk 6", markers, noextend, 
    action { EV_IOPREAD: VALUE (6) },
    action { EV_IOPWRITE: VALUE (6) },
    action { EV_BLOCKREAD: VALUE (6) },
    action { EV_BLOCKWRITE: VALUE (6) }
}
EventGraph iopblocks7 { name <- "Disk 7", markers, noextend, 
    action { EV_IOPREAD: VALUE (7) },
    action { EV_IOPWRITE: VALUE (7) },
    action { EV_BLOCKREAD: VALUE (7) },
    action { EV_BLOCKWRITE: VALUE (7) }
}

MultiGraph iopblocks (iopblocks0, iopblocks1, iopblocks2, iopblocks3,
    	iopblocks4, iopblocks5, iopblocks6, iopblocks7)  {
	name <- "Blocks accessed (by CP of IOP) vs time",
	menu <- "IOP Block accesses",
	x_axis <- "Time",
	y_axis <- "Block"
}

Map diskstate {
	"Idle" 0, "Control" 1, "Move" 2, "Transfer" 3 }

Map busstate {
	"Idle" 0, "Grab" 1, "Command" 2, "Data" 3 }

ArrayGraph diskactivity (disk, 0, NO_OF_DISKS-1)  {
	name <- "Disk status vs time",
	menu <- "Disk Activity",
	x_axis <- "Time",
	y_axis <- "Disk",
    	usemap <- diskstate,
    	action { EV_DISKSTATE : VALUE(disk) }
}

ArrayGraph busactivity (bus, 0, NO_OF_DISKS-1)  {
	name <- "Bus status vs time",
	menu <- "Bus Activity",
	x_axis <- "Time",
	y_axis <- "Bus",
    	usemap <- busstate,
    	action { EV_BUSSTATE : VALUE(bus) }
}

EventGraph buscontend0 { name <- "Bus 0", markers, noextend, 
    action { EV_BUSCONTEND: VALUE (0) } }
EventGraph buscontend1 { name <- "Bus 1", markers, noextend, 
    action { EV_BUSCONTEND: VALUE (1) } }
EventGraph buscontend2 { name <- "Bus 2", markers, noextend, 
    action { EV_BUSCONTEND: VALUE (2) } }
EventGraph buscontend3 { name <- "Bus 3", markers, noextend, 
    action { EV_BUSCONTEND: VALUE (3) } }
EventGraph buscontend4 { name <- "Bus 4", markers, noextend, 
    action { EV_BUSCONTEND: VALUE (4) } }
EventGraph buscontend5 { name <- "Bus 5", markers, noextend, 
    action { EV_BUSCONTEND: VALUE (5) } }
EventGraph buscontend6 { name <- "Bus 6", markers, noextend, 
    action { EV_BUSCONTEND: VALUE (6) } }
EventGraph buscontend7 { name <- "Bus 7", markers, noextend, 
    action { EV_BUSCONTEND: VALUE (7) } }

MultiGraph buscontend (buscontend0, buscontend1, buscontend2, buscontend3,
    	buscontend4, buscontend5, buscontend6, buscontend7)  {
	name <- "Bus contention (0 is idle, > 1 implies waiting) vs time",
	menu <- "Bus contention",
	x_axis <- "Time",
	y_axis <- "Sector"
}

EventGraph diskread0 { name <- "Disk 0", markers, noextend, 
    action { EV_DISKREAD: VALUE (0) } }
EventGraph diskread1 { name <- "Disk 1", markers, noextend, 
    action { EV_DISKREAD: VALUE (1) } }
EventGraph diskread2 { name <- "Disk 2", markers, noextend, 
    action { EV_DISKREAD: VALUE (2) } }
EventGraph diskread3 { name <- "Disk 3", markers, noextend, 
    action { EV_DISKREAD: VALUE (3) } }
EventGraph diskread4 { name <- "Disk 4", markers, noextend, 
    action { EV_DISKREAD: VALUE (4) } }
EventGraph diskread5 { name <- "Disk 5", markers, noextend, 
    action { EV_DISKREAD: VALUE (5) } }
EventGraph diskread6 { name <- "Disk 6", markers, noextend, 
    action { EV_DISKREAD: VALUE (6) } }
EventGraph diskread7 { name <- "Disk 7", markers, noextend, 
    action { EV_DISKREAD: VALUE (7) } }

MultiGraph diskread (diskread0, diskread1, diskread2, diskread3,
    	diskread4, diskread5, diskread6, diskread7)  {
	name <- "Disk sectors (first sector only) read vs time",
	menu <- "Disk Reads",
	x_axis <- "Time",
	y_axis <- "Sector"
}

EventGraph diskwrite0 { name <- "Disk 0", markers, noextend, 
    action { EV_DISKWRITE: VALUE (0) } }
EventGraph diskwrite1 { name <- "Disk 1", markers, noextend, 
    action { EV_DISKWRITE: VALUE (1) } }
EventGraph diskwrite2 { name <- "Disk 2", markers, noextend, 
    action { EV_DISKWRITE: VALUE (2) } }
EventGraph diskwrite3 { name <- "Disk 3", markers, noextend, 
    action { EV_DISKWRITE: VALUE (3) } }
EventGraph diskwrite4 { name <- "Disk 4", markers, noextend, 
    action { EV_DISKWRITE: VALUE (4) } }
EventGraph diskwrite5 { name <- "Disk 5", markers, noextend, 
    action { EV_DISKWRITE: VALUE (5) } }
EventGraph diskwrite6 { name <- "Disk 6", markers, noextend, 
    action { EV_DISKWRITE: VALUE (6) } }
EventGraph diskwrite7 { name <- "Disk 7", markers, noextend, 
    action { EV_DISKWRITE: VALUE (7) } }

MultiGraph diskwrite (diskwrite0, diskwrite1, diskwrite2, diskwrite3,
    	diskwrite4, diskwrite5, diskwrite6, diskwrite7)  {
	name <- "Disk sectors (first sector only) written vs time",
	menu <- "Disk Writes",
	x_axis <- "Time",
	y_axis <- "Sector"
}

EventGraph diskahead0 { name <- "Disk 0", markers, noextend, 
    action { EV_AHEAD: VALUE (0) } }
EventGraph diskahead1 { name <- "Disk 1", markers, noextend, 
    action { EV_AHEAD: VALUE (1) } }
EventGraph diskahead2 { name <- "Disk 2", markers, noextend, 
    action { EV_AHEAD: VALUE (2) } }
EventGraph diskahead3 { name <- "Disk 3", markers, noextend, 
    action { EV_AHEAD: VALUE (3) } }
EventGraph diskahead4 { name <- "Disk 4", markers, noextend, 
    action { EV_AHEAD: VALUE (4) } }
EventGraph diskahead5 { name <- "Disk 5", markers, noextend, 
    action { EV_AHEAD: VALUE (5) } }
EventGraph diskahead6 { name <- "Disk 6", markers, noextend, 
    action { EV_AHEAD: VALUE (6) } }
EventGraph diskahead7 { name <- "Disk 7", markers, noextend, 
    action { EV_AHEAD: VALUE (7) } }

MultiGraph ahead (diskahead0, diskahead1, diskahead2, diskahead3,
    	diskahead4, diskahead5, diskahead6, diskahead7)  {
	name <- "IOP Read-ahead blocks vs time",
	menu <- "IOP Read ahead",
	x_axis <- "Time",
	y_axis <- "Block"
}

EventGraph diskbehind0 { name <- "Disk 0", markers, noextend, 
    action { EV_BEHIND: VALUE (0) } }
EventGraph diskbehind1 { name <- "Disk 1", markers, noextend, 
    action { EV_BEHIND: VALUE (1) } }
EventGraph diskbehind2 { name <- "Disk 2", markers, noextend, 
    action { EV_BEHIND: VALUE (2) } }
EventGraph diskbehind3 { name <- "Disk 3", markers, noextend, 
    action { EV_BEHIND: VALUE (3) } }
EventGraph diskbehind4 { name <- "Disk 4", markers, noextend, 
    action { EV_BEHIND: VALUE (4) } }
EventGraph diskbehind5 { name <- "Disk 5", markers, noextend, 
    action { EV_BEHIND: VALUE (5) } }
EventGraph diskbehind6 { name <- "Disk 6", markers, noextend, 
    action { EV_BEHIND: VALUE (6) } }
EventGraph diskbehind7 { name <- "Disk 7", markers, noextend, 
    action { EV_BEHIND: VALUE (7) } }

MultiGraph behind (diskbehind0, diskbehind1, diskbehind2, diskbehind3,
    	diskbehind4, diskbehind5, diskbehind6, diskbehind7)  {
	name <- "IOP Write-behind blocks vs time",
	menu <- "IOP Write behind",
	x_axis <- "Time",
	y_axis <- "Block"
}

EventGraph writeback0 { name <- "Disk 0", markers, noextend, 
    action { EV_WRITEBACK: VALUE (0) } }
EventGraph writeback1 { name <- "Disk 1", markers, noextend, 
    action { EV_WRITEBACK: VALUE (1) } }
EventGraph writeback2 { name <- "Disk 2", markers, noextend, 
    action { EV_WRITEBACK: VALUE (2) } }
EventGraph writeback3 { name <- "Disk 3", markers, noextend, 
    action { EV_WRITEBACK: VALUE (3) } }
EventGraph writeback4 { name <- "Disk 4", markers, noextend, 
    action { EV_WRITEBACK: VALUE (4) } }
EventGraph writeback5 { name <- "Disk 5", markers, noextend, 
    action { EV_WRITEBACK: VALUE (5) } }
EventGraph writeback6 { name <- "Disk 6", markers, noextend, 
    action { EV_WRITEBACK: VALUE (6) } }
EventGraph writeback7 { name <- "Disk 7", markers, noextend, 
    action { EV_WRITEBACK: VALUE (7) } }

MultiGraph writeback (writeback0, writeback1, writeback2, writeback3,
    	writeback4, writeback5, writeback6, writeback7)  {
	name <- "IOP Write-back blocks vs time",
	menu <- "IOP Write back",
	x_axis <- "Time",
	y_axis <- "Block"
}

EventGraph emptyblock0 { name <- "Disk 0", markers, noextend, 
    action { EV_EMPTYBLOCK: VALUE (0) } }
EventGraph emptyblock1 { name <- "Disk 1", markers, noextend, 
    action { EV_EMPTYBLOCK: VALUE (1) } }
EventGraph emptyblock2 { name <- "Disk 2", markers, noextend, 
    action { EV_EMPTYBLOCK: VALUE (2) } }
EventGraph emptyblock3 { name <- "Disk 3", markers, noextend, 
    action { EV_EMPTYBLOCK: VALUE (3) } }
EventGraph emptyblock4 { name <- "Disk 4", markers, noextend, 
    action { EV_EMPTYBLOCK: VALUE (4) } }
EventGraph emptyblock5 { name <- "Disk 5", markers, noextend, 
    action { EV_EMPTYBLOCK: VALUE (5) } }
EventGraph emptyblock6 { name <- "Disk 6", markers, noextend, 
    action { EV_EMPTYBLOCK: VALUE (6) } }
EventGraph emptyblock7 { name <- "Disk 7", markers, noextend, 
    action { EV_EMPTYBLOCK: VALUE (7) } }

MultiGraph emptyblock (emptyblock0, emptyblock1, emptyblock2, emptyblock3,
    	emptyblock4, emptyblock5, emptyblock6, emptyblock7)  {
	name <- "IOP emptyBlocks vs time",
	menu <- "IOP emptyBlock",
	x_axis <- "Time",
	y_axis <- "Block"
}

EventGraph fillblock0 { name <- "Disk 0", markers, noextend, 
    action { EV_FILLBLOCK: VALUE (0) } }
EventGraph fillblock1 { name <- "Disk 1", markers, noextend, 
    action { EV_FILLBLOCK: VALUE (1) } }
EventGraph fillblock2 { name <- "Disk 2", markers, noextend, 
    action { EV_FILLBLOCK: VALUE (2) } }
EventGraph fillblock3 { name <- "Disk 3", markers, noextend, 
    action { EV_FILLBLOCK: VALUE (3) } }
EventGraph fillblock4 { name <- "Disk 4", markers, noextend, 
    action { EV_FILLBLOCK: VALUE (4) } }
EventGraph fillblock5 { name <- "Disk 5", markers, noextend, 
    action { EV_FILLBLOCK: VALUE (5) } }
EventGraph fillblock6 { name <- "Disk 6", markers, noextend, 
    action { EV_FILLBLOCK: VALUE (6) } }
EventGraph fillblock7 { name <- "Disk 7", markers, noextend, 
    action { EV_FILLBLOCK: VALUE (7) } }

MultiGraph fillblock (fillblock0, fillblock1, fillblock2, fillblock3,
    	fillblock4, fillblock5, fillblock6, fillblock7)  {
	name <- "IOP fillBlocks vs time",
	menu <- "IOP fillBlock",
	x_axis <- "Time",
	y_axis <- "Block"
}

EventGraph fsfetch0 { name <- "CP 0", markers, noextend, 
    action { EV_FSFETCH: VALUE (0) } }
EventGraph fsfetch1 { name <- "CP 1", markers, noextend, 
    action { EV_FSFETCH: VALUE (1) } }
EventGraph fsfetch2 { name <- "CP 2", markers, noextend, 
    action { EV_FSFETCH: VALUE (2) } }
EventGraph fsfetch3 { name <- "CP 3", markers, noextend, 
    action { EV_FSFETCH: VALUE (3) } }
EventGraph fsfetch4 { name <- "CP 4", markers, noextend, 
    action { EV_FSFETCH: VALUE (4) } }
EventGraph fsfetch5 { name <- "CP 5", markers, noextend, 
    action { EV_FSFETCH: VALUE (5) } }
EventGraph fsfetch6 { name <- "CP 6", markers, noextend, 
    action { EV_FSFETCH: VALUE (6) } }
EventGraph fsfetch7 { name <- "CP 7", markers, noextend, 
    action { EV_FSFETCH: VALUE (7) } }

MultiGraph fsfetch (fsfetch0, fsfetch1, fsfetch2, fsfetch3,
    	fsfetch4, fsfetch5, fsfetch6, fsfetch7)  {
	name <- "Blocks fetched by CP (not necessarily into cache) vs time",
	menu <- "Block fetches",
	x_axis <- "Time",
	y_axis <- "Block"
}

EventGraph fswriteback0 { name <- "CP 0", markers, noextend, 
    action { EV_FSWRITEBACK: VALUE (0) } }
EventGraph fswriteback1 { name <- "CP 1", markers, noextend, 
    action { EV_FSWRITEBACK: VALUE (1) } }
EventGraph fswriteback2 { name <- "CP 2", markers, noextend, 
    action { EV_FSWRITEBACK: VALUE (2) } }
EventGraph fswriteback3 { name <- "CP 3", markers, noextend, 
    action { EV_FSWRITEBACK: VALUE (3) } }
EventGraph fswriteback4 { name <- "CP 4", markers, noextend, 
    action { EV_FSWRITEBACK: VALUE (4) } }
EventGraph fswriteback5 { name <- "CP 5", markers, noextend, 
    action { EV_FSWRITEBACK: VALUE (5) } }
EventGraph fswriteback6 { name <- "CP 6", markers, noextend, 
    action { EV_FSWRITEBACK: VALUE (6) } }
EventGraph fswriteback7 { name <- "CP 7", markers, noextend, 
    action { EV_FSWRITEBACK: VALUE (7) } }

MultiGraph fswriteback (fswriteback0, fswriteback1, fswriteback2, fswriteback3,
    	fswriteback4, fswriteback5, fswriteback6, fswriteback7)  {
	name <- "Blocks flushed by CP (not necessarily from cache) vs time",
	menu <- "Block flushes",
	x_axis <- "Time",
	y_axis <- "Block"
}

EventGraph fsprefetch0 { name <- "CP 0", markers, noextend, 
    action { EV_FSPREFETCH: VALUE (0) } }
EventGraph fsprefetch1 { name <- "CP 1", markers, noextend, 
    action { EV_FSPREFETCH: VALUE (1) } }
EventGraph fsprefetch2 { name <- "CP 2", markers, noextend, 
    action { EV_FSPREFETCH: VALUE (2) } }
EventGraph fsprefetch3 { name <- "CP 3", markers, noextend, 
    action { EV_FSPREFETCH: VALUE (3) } }
EventGraph fsprefetch4 { name <- "CP 4", markers, noextend, 
    action { EV_FSPREFETCH: VALUE (4) } }
EventGraph fsprefetch5 { name <- "CP 5", markers, noextend, 
    action { EV_FSPREFETCH: VALUE (5) } }
EventGraph fsprefetch6 { name <- "CP 6", markers, noextend, 
    action { EV_FSPREFETCH: VALUE (6) } }
EventGraph fsprefetch7 { name <- "CP 7", markers, noextend, 
    action { EV_FSPREFETCH: VALUE (7) } }

MultiGraph fsprefetch (fsprefetch0, fsprefetch1, fsprefetch2, fsprefetch3,
    	fsprefetch4, fsprefetch5, fsprefetch6, fsprefetch7)  {
	name <- "Blocks prefetched by CP vs time",
	menu <- "Block prefetches",
	x_axis <- "Time",
	y_axis <- "Block"
}

ArrayMetricsTable "profile calls" {
	name <- "Procedure Calls",
	menu <- "Calls",
	x_axis <- "Number of Calls",
	y_axis <- "Procedure",
	profile
}

ArrayMetricsTable "profile time" {
	name <- "Procedure Times",
	menu <- "Procedure Times",
	x_axis <- "Total Time",
	y_axis <- "Procedure",
	profile
}

