summaryrefslogtreecommitdiff
path: root/btreplay/btreplay.c
diff options
context:
space:
mode:
Diffstat (limited to 'btreplay/btreplay.c')
-rw-r--r--btreplay/btreplay.c27
1 files changed, 24 insertions, 3 deletions
diff --git a/btreplay/btreplay.c b/btreplay/btreplay.c
index 8e6b7dc..23e13b8 100644
--- a/btreplay/btreplay.c
+++ b/btreplay/btreplay.c
@@ -154,6 +154,7 @@ static LIST_HEAD(input_files); // List of input files to handle
static LIST_HEAD(map_devs); // List of device maps
static int nfiles = 0; // Number of files to handle
static int no_stalls = 0; // Boolean: Disable pre-stalls
+static unsigned acc_factor = 1; // Int: Acceleration factor
static int find_records = 0; // Boolean: Find record files auto
/*
@@ -1175,6 +1176,8 @@ static void stall(struct thr_info *tip, long long oclock)
struct timespec req;
long long dreal, tclock = gettime() - rgenesis;
+ oclock /= acc_factor;
+
if (verbose > 1)
fprintf(tip->vfp, " stall(%lld.%09lld, %lld.%09lld)\n",
du64_to_sec(oclock), du64_to_nsec(oclock),
@@ -1347,22 +1350,23 @@ static void *replay_sub(void *arg)
*/
static char usage_str[] = \
- "\n" \
+ "\n" \
"\t[ -c <cpus> : --cpus=<cpus> ] Default: 1\n" \
"\t[ -d <dir> : --input-directory=<dir> ] Default: .\n" \
- "\t[ -F : --find-records ] Default: Off\n" \
+ "\t[ -F : --find-records ] Default: Off\n" \
"\t[ -h : --help ] Default: Off\n" \
"\t[ -i <base> : --input-base=<base> ] Default: replay\n" \
"\t[ -I <iters>: --iterations=<iters> ] Default: 1\n" \
"\t[ -M <file> : --map-devs=<file> ] Default: None\n" \
"\t[ -N : --no-stalls ] Default: Off\n" \
+ "\t[ -x : --acc-factor ] Default: 1\n" \
"\t[ -v : --verbose ] Default: Off\n" \
"\t[ -V : --version ] Default: Off\n" \
"\t[ -W : --write-enable ] Default: Off\n" \
"\t<dev...> Default: None\n" \
"\n";
-#define S_OPTS "c:d:Fhi:I:M:Nt:vVW"
+#define S_OPTS "c:d:Fhi:I:M:Nx:t:vVW"
static struct option l_opts[] = {
{
.name = "cpus",
@@ -1413,6 +1417,12 @@ static struct option l_opts[] = {
.val = 'N'
},
{
+ .name = "acc-factor",
+ .has_arg = required_argument,
+ .flag = NULL,
+ .val = 'x'
+ },
+ {
.name = "verbose",
.has_arg = no_argument,
.flag = NULL,
@@ -1445,6 +1455,7 @@ static struct option l_opts[] = {
static void handle_args(int argc, char *argv[])
{
int c;
+ int r;
while ((c = getopt_long(argc, argv, S_OPTS, l_opts, NULL)) != -1) {
switch (c) {
@@ -1499,6 +1510,16 @@ static void handle_args(int argc, char *argv[])
no_stalls = 1;
break;
+ case 'x':
+ r = sscanf(optarg,"%u",&acc_factor);
+ if (r!=1) {
+ fprintf(stderr,
+ "Invalid acceleration factor\n");
+ exit(ERR_ARGS);
+ /*NOTREACHED*/
+ }
+ break;
+
case 'V':
fprintf(stderr, "btreplay -- version %s\n",
my_btversion);