Skip to content
GitLab
Menu
Projects
Groups
Snippets
Loading...
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
Menu
Open sidebar
ruanhaishen
redis
Commits
33d00ff7
Commit
33d00ff7
authored
May 31, 2011
by
Pieter Noordhuis
Browse files
Provide custom command to benchmark against via args
parent
c60a0f58
Changes
1
Show whitespace changes
Inline
Side-by-side
src/redis-benchmark.c
View file @
33d00ff7
...
...
@@ -328,41 +328,44 @@ static void benchmark(const char *title, const char *cmd, int len) {
freeAllClients
();
}
void
parseOptions
(
int
argc
,
const
char
**
argv
)
{
/* Returns number of consumed options. */
int
parseOptions
(
int
argc
,
const
char
**
argv
)
{
int
i
;
int
lastarg
;
int
exit_status
=
1
;
for
(
i
=
1
;
i
<
argc
;
i
++
)
{
int
lastarg
=
i
==
argc
-
1
;
if
(
!
strcmp
(
argv
[
i
],
"-c"
)
&&
!
lastarg
)
{
config
.
numclients
=
atoi
(
argv
[
i
+
1
])
;
i
++
;
}
else
if
(
!
strcmp
(
argv
[
i
],
"-n"
)
&&
!
lastarg
)
{
config
.
requests
=
atoi
(
argv
[
i
+
1
])
;
i
++
;
}
else
if
(
!
strcmp
(
argv
[
i
],
"-k"
)
&&
!
lastarg
)
{
config
.
keepalive
=
atoi
(
argv
[
i
+
1
])
;
i
++
;
}
else
if
(
!
strcmp
(
argv
[
i
],
"-h"
)
&&
!
lastarg
)
{
config
.
hostip
=
strdup
(
argv
[
i
+
1
])
;
i
++
;
}
else
if
(
!
strcmp
(
argv
[
i
],
"-p"
)
&&
!
lastarg
)
{
config
.
hostport
=
atoi
(
argv
[
i
+
1
])
;
i
++
;
}
else
if
(
!
strcmp
(
argv
[
i
],
"-s"
)
&&
!
lastarg
)
{
config
.
hostsocket
=
strdup
(
argv
[
i
+
1
])
;
i
++
;
}
else
if
(
!
strcmp
(
argv
[
i
],
"-d"
)
&&
!
lastarg
)
{
config
.
datasize
=
atoi
(
argv
[
i
+
1
])
;
i
++
;
lastarg
=
(
i
==
(
argc
-
1
))
;
if
(
!
strcmp
(
argv
[
i
],
"-c"
))
{
if
(
lastarg
)
goto
invalid
;
config
.
numclients
=
atoi
(
argv
[
++
i
])
;
}
else
if
(
!
strcmp
(
argv
[
i
],
"-n"
))
{
if
(
lastarg
)
goto
invalid
;
config
.
requests
=
atoi
(
argv
[
++
i
])
;
}
else
if
(
!
strcmp
(
argv
[
i
],
"-k"
))
{
if
(
lastarg
)
goto
invalid
;
config
.
keepalive
=
atoi
(
argv
[
++
i
])
;
}
else
if
(
!
strcmp
(
argv
[
i
],
"-h"
))
{
if
(
lastarg
)
goto
invalid
;
config
.
hostip
=
strdup
(
argv
[
++
i
])
;
}
else
if
(
!
strcmp
(
argv
[
i
],
"-p"
))
{
if
(
lastarg
)
goto
invalid
;
config
.
hostport
=
atoi
(
argv
[
++
i
])
;
}
else
if
(
!
strcmp
(
argv
[
i
],
"-s"
))
{
if
(
lastarg
)
goto
invalid
;
config
.
hostsocket
=
strdup
(
argv
[
++
i
])
;
}
else
if
(
!
strcmp
(
argv
[
i
],
"-d"
))
{
if
(
lastarg
)
goto
invalid
;
config
.
datasize
=
atoi
(
argv
[
++
i
])
;
if
(
config
.
datasize
<
1
)
config
.
datasize
=
1
;
if
(
config
.
datasize
>
1024
*
1024
)
config
.
datasize
=
1024
*
1024
;
}
else
if
(
!
strcmp
(
argv
[
i
],
"-r"
)
&&
!
lastarg
)
{
}
else
if
(
!
strcmp
(
argv
[
i
],
"-r"
))
{
if
(
lastarg
)
goto
invalid
;
config
.
randomkeys
=
1
;
config
.
randomkeys_keyspacelen
=
atoi
(
argv
[
i
+
1
]);
config
.
randomkeys_keyspacelen
=
atoi
(
argv
[
++
i
]);
if
(
config
.
randomkeys_keyspacelen
<
0
)
config
.
randomkeys_keyspacelen
=
0
;
i
++
;
}
else
if
(
!
strcmp
(
argv
[
i
],
"-q"
))
{
config
.
quiet
=
1
;
}
else
if
(
!
strcmp
(
argv
[
i
],
"-l"
))
{
...
...
@@ -371,8 +374,24 @@ void parseOptions(int argc, const char **argv) {
config
.
debug
=
1
;
}
else
if
(
!
strcmp
(
argv
[
i
],
"-I"
))
{
config
.
idlemode
=
1
;
}
else
if
(
!
strcmp
(
argv
[
i
],
"--help"
))
{
exit_status
=
0
;
goto
usage
;
}
else
{
printf
(
"Wrong option '%s' or option argument missing
\n\n
"
,
argv
[
i
]);
/* Assume the user meant to provide an option when the arg starts
* with a dash. We're done otherwise and should use the remainder
* as the command and arguments for running the benchmark. */
if
(
argv
[
i
][
0
]
==
'-'
)
goto
invalid
;
return
i
;
}
}
return
i
;
invalid:
printf
(
"Invalid option
\"
%s
\"
or option argument missing
\n\n
"
,
argv
[
i
]);
usage:
printf
(
"Usage: redis-benchmark [-h <host>] [-p <port>] [-c <clients>] [-n <requests]> [-k <boolean>]
\n\n
"
);
printf
(
" -h <hostname> Server hostname (default 127.0.0.1)
\n
"
);
printf
(
" -p <port> Server port (default 6379)
\n
"
);
...
...
@@ -392,9 +411,7 @@ void parseOptions(int argc, const char **argv) {
printf
(
" -l Loop. Run the tests forever
\n
"
);
printf
(
" -I Idle mode. Just open N idle connections and wait.
\n
"
);
printf
(
" -D Debug mode. more verbose.
\n
"
);
exit
(
1
);
}
}
exit
(
exit_status
);
}
int
showThroughput
(
struct
aeEventLoop
*
eventLoop
,
long
long
id
,
void
*
clientData
)
{
...
...
@@ -411,6 +428,9 @@ int showThroughput(struct aeEventLoop *eventLoop, long long id, void *clientData
int
main
(
int
argc
,
const
char
**
argv
)
{
int
i
;
char
*
data
,
*
cmd
;
int
len
;
client
c
;
signal
(
SIGHUP
,
SIG_IGN
);
...
...
@@ -436,7 +456,10 @@ int main(int argc, const char **argv) {
config
.
hostport
=
6379
;
config
.
hostsocket
=
NULL
;
parseOptions
(
argc
,
argv
);
i
=
parseOptions
(
argc
,
argv
);
argc
-=
i
;
argv
+=
i
;
config
.
latency
=
zmalloc
(
sizeof
(
long
long
)
*
config
.
requests
);
if
(
config
.
keepalive
==
0
)
{
...
...
@@ -451,10 +474,25 @@ int main(int argc, const char **argv) {
/* and will wait for every */
}
/* Run benchmark with command in the remainder of the arguments. */
if
(
argc
)
{
sds
title
=
sdsnew
(
argv
[
0
]);
for
(
i
=
1
;
i
<
argc
;
i
++
)
{
title
=
sdscatlen
(
title
,
" "
,
1
);
title
=
sdscatlen
(
title
,
(
char
*
)
argv
[
i
],
strlen
(
argv
[
1
]));
}
do
{
char
*
data
,
*
cmd
;
int
len
;
len
=
redisFormatCommandArgv
(
&
cmd
,
argc
,
argv
,
NULL
);
benchmark
(
title
,
cmd
,
len
);
free
(
cmd
);
}
while
(
config
.
loop
);
return
0
;
}
/* Run default benchmark suite. */
do
{
data
=
zmalloc
(
config
.
datasize
+
1
);
memset
(
data
,
'x'
,
config
.
datasize
);
data
[
config
.
datasize
]
=
'\0'
;
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment