Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
hanoi2005
redis
提交
39bf4402
R
redis
项目概览
hanoi2005
/
redis
与 Fork 源项目一致
从无法访问的项目Fork
通知
1
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
R
redis
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
提交
39bf4402
编写于
5月 31, 2011
作者:
P
Pieter Noordhuis
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Provide custom command to benchmark against via args
上级
fc05e8c8
变更
1
隐藏空白更改
内联
并排
Showing
1 changed file
with
90 addition
and
52 deletion
+90
-52
src/redis-benchmark.c
src/redis-benchmark.c
+90
-52
未找到文件。
src/redis-benchmark.c
浏览文件 @
39bf4402
...
...
@@ -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,30 +374,44 @@ 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
]);
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
"
);
printf
(
" -s <socket> Server socket (overrides host and port)
\n
"
);
printf
(
" -c <clients> Number of parallel connections (default 50)
\n
"
);
printf
(
" -n <requests> Total number of requests (default 10000)
\n
"
);
printf
(
" -d <size> Data size of SET/GET value in bytes (default 2)
\n
"
);
printf
(
" -k <boolean> 1=keep alive 0=reconnect (default 1)
\n
"
);
printf
(
" -r <keyspacelen> Use random keys for SET/GET/INCR, random values for SADD
\n
"
);
printf
(
" Using this option the benchmark will get/set keys
\n
"
);
printf
(
" in the form mykey_rand000000012456 instead of constant
\n
"
);
printf
(
" keys, the <keyspacelen> argument determines the max
\n
"
);
printf
(
" number of values for the random number. For instance
\n
"
);
printf
(
" if set to 10 only rand000000000000 - rand000000000009
\n
"
);
printf
(
" range will be allowed.
\n
"
);
printf
(
" -q Quiet. Just show query/sec values
\n
"
);
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
);
/* 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
"
);
printf
(
" -s <socket> Server socket (overrides host and port)
\n
"
);
printf
(
" -c <clients> Number of parallel connections (default 50)
\n
"
);
printf
(
" -n <requests> Total number of requests (default 10000)
\n
"
);
printf
(
" -d <size> Data size of SET/GET value in bytes (default 2)
\n
"
);
printf
(
" -k <boolean> 1=keep alive 0=reconnect (default 1)
\n
"
);
printf
(
" -r <keyspacelen> Use random keys for SET/GET/INCR, random values for SADD
\n
"
);
printf
(
" Using this option the benchmark will get/set keys
\n
"
);
printf
(
" in the form mykey_rand000000012456 instead of constant
\n
"
);
printf
(
" keys, the <keyspacelen> argument determines the max
\n
"
);
printf
(
" number of values for the random number. For instance
\n
"
);
printf
(
" if set to 10 only rand000000000000 - rand000000000009
\n
"
);
printf
(
" range will be allowed.
\n
"
);
printf
(
" -q Quiet. Just show query/sec values
\n
"
);
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
(
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 */
}
do
{
char
*
data
,
*
cmd
;
int
len
;
/* 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
{
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'
;
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录