RIB is a generic benchmarking framework for investigating performance related effects due to sharing of resources such as the memory architecture or file system among multiple software components. The support for benchmarks includes: - Creating and executing parametrized benchmarks -- the user can specify ranges of individual parameters, the framework executes the benchmark with all the specified combinations of the parameter values. - Collecting precise timing information through RDTSC instruction and performance counter values through PAPI. - Executing either isolated benchmarks or combinations of benchmarks to investigate the sharing effects. - Plotting of results through R. Supports boxplots for examining dependency on one benchmark parameter and plots with multiple lines for different values of other benchmark parameters. - Utility functions such as page coloring based allcoation. ========= For installation instruction, see the INSTALL file. ========= Usage instructions: running the compiled 'rib' binary executes the framework. It expects rib.ini in the current directory. See example-configs for examples of rib.ini rib.ini defines - names of two workloads ('benchmark' and 'thrashing') whose execution is interleaved currently supported are "none" (use it to execute only one workload), "cache_artificial" (memory acccess workload with random or linear strategy), "cache_col" (workload accessing a single TLB or cache set) "cache_fft" (workload executing FFT transform using either simple FFT implementation or FFTW) - "warmup_count" defines the number of samples that are discarded before collecting - "samples_count" defines the number of samples that are collected in one run - two sections [benchmark] and [thrashing] to define parameters of the defined workloads. currently please see comments in the source code of the individual workloads in src/benchmarks/ for their description - there are two parameters common to most of the workloads if RIB is compiled with PAPI support - "papi_counters" gives the max. number of events to collect simultaneously, "papi_events" lists the event names (execute papi_native_avail in thirdparty/papi/ to get alist of events supported on your architecture) You may run "rib" repeatedly to collect more samples, the number of collected samples is stored in the rib.samples file. Running "ribplot" binary creates plot of the collected results. When run with no parameters, produces boxplots against every workload parameter that changes.