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
bdbf3acf
Commit
bdbf3acf
authored
Aug 17, 2011
by
Pieter Noordhuis
Committed by
antirez
Sep 16, 2011
Browse files
Enforce upper bound for number of requests in redis-benchmark
parent
5f54a5e6
Changes
1
Hide whitespace changes
Inline
Side-by-side
src/redis-benchmark.c
View file @
bdbf3acf
...
...
@@ -53,9 +53,10 @@ static struct config {
int
hostport
;
const
char
*
hostsocket
;
int
numclients
;
int
requests
;
int
liveclients
;
int
donerequests
;
int
requests
;
int
requests_issued
;
int
requests_finished
;
int
keysize
;
int
datasize
;
int
randomkeys
;
...
...
@@ -148,7 +149,7 @@ static void randomizeClientKey(client c) {
}
static
void
clientDone
(
client
c
)
{
if
(
config
.
done
requests
==
config
.
requests
)
{
if
(
config
.
requests
_finished
==
config
.
requests
)
{
freeClient
(
c
);
aeStop
(
config
.
el
);
return
;
...
...
@@ -189,8 +190,8 @@ static void readHandler(aeEventLoop *el, int fd, void *privdata, int mask) {
exit
(
1
);
}
if
(
config
.
done
requests
<
config
.
requests
)
config
.
latency
[
config
.
done
requests
++
]
=
c
->
latency
;
if
(
config
.
requests
_finished
<
config
.
requests
)
config
.
latency
[
config
.
requests
_finished
++
]
=
c
->
latency
;
clientDone
(
c
);
}
}
...
...
@@ -202,8 +203,15 @@ static void writeHandler(aeEventLoop *el, int fd, void *privdata, int mask) {
REDIS_NOTUSED
(
fd
);
REDIS_NOTUSED
(
mask
);
/*
W
hen nothing was written
yet, randomize keys and set start time
. */
/*
Initialize request w
hen nothing was written. */
if
(
c
->
written
==
0
)
{
/* Enforce upper bound to number of requests. */
if
(
config
.
requests_issued
++
>=
config
.
requests
)
{
freeClient
(
c
);
return
;
}
/* Really initialize: randomize keys and set start time. */
if
(
config
.
randomkeys
)
randomizeClientKey
(
c
);
c
->
start
=
ustime
();
c
->
latency
=
-
1
;
...
...
@@ -286,10 +294,10 @@ static void showLatencyReport(void) {
int
i
,
curlat
=
0
;
float
perc
,
reqpersec
;
reqpersec
=
(
float
)
config
.
done
requests
/
((
float
)
config
.
totlatency
/
1000
);
reqpersec
=
(
float
)
config
.
requests
_finished
/
((
float
)
config
.
totlatency
/
1000
);
if
(
!
config
.
quiet
)
{
printf
(
"====== %s ======
\n
"
,
config
.
title
);
printf
(
" %d requests completed in %.2f seconds
\n
"
,
config
.
done
requests
,
printf
(
" %d requests completed in %.2f seconds
\n
"
,
config
.
requests
_finished
,
(
float
)
config
.
totlatency
/
1000
);
printf
(
" %d parallel clients
\n
"
,
config
.
numclients
);
printf
(
" %d bytes payload
\n
"
,
config
.
datasize
);
...
...
@@ -314,7 +322,8 @@ static void benchmark(const char *title, const char *cmd, int len) {
client
c
;
config
.
title
=
title
;
config
.
donerequests
=
0
;
config
.
requests_issued
=
0
;
config
.
requests_finished
=
0
;
c
=
createClient
(
cmd
,
len
);
createMissingClients
(
c
);
...
...
@@ -416,7 +425,7 @@ int showThroughput(struct aeEventLoop *eventLoop, long long id, void *clientData
REDIS_NOTUSED
(
clientData
);
float
dt
=
(
float
)(
mstime
()
-
config
.
start
)
/
1000
.
0
;
float
rps
=
(
float
)
config
.
done
requests
/
dt
;
float
rps
=
(
float
)
config
.
requests
_finished
/
dt
;
printf
(
"%s: %.2f
\r
"
,
config
.
title
,
rps
);
fflush
(
stdout
);
return
250
;
/* every 250ms */
...
...
@@ -438,7 +447,6 @@ int main(int argc, const char **argv) {
config
.
el
=
aeCreateEventLoop
();
aeCreateTimeEvent
(
config
.
el
,
1
,
showThroughput
,
NULL
,
NULL
);
config
.
keepalive
=
1
;
config
.
donerequests
=
0
;
config
.
datasize
=
3
;
config
.
randomkeys
=
0
;
config
.
randomkeys_keyspacelen
=
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