【发布时间】:2012-04-06 12:51:30
【问题描述】:
我想通过随着进程数量的增加来衡量做某事所花费的时间来衡量我的数据库的性能。目的是在之后绘制性能与进程数的关系图,有人知道怎么做吗?我是elrlang的初学者请helo
【问题讨论】:
标签: erlang process mnesia spawn
我想通过随着进程数量的增加来衡量做某事所花费的时间来衡量我的数据库的性能。目的是在之后绘制性能与进程数的关系图,有人知道怎么做吗?我是elrlang的初学者请helo
【问题讨论】:
标签: erlang process mnesia spawn
假设您的数据库是mnesia,这应该不难。一种方法是具有写入功能和读取功能。但是请注意,有几个 Activity access contexts 带有 mnesia。要测试<i>write times</i>,您不应该使用transaction 的上下文,因为它会立即返回到调用进程,甚至在磁盘写入发生之前。但是,对于磁盘写入,重要的是查看名为:sync_transaction 的上下文。这是一个例子:
只有当 mnesia 表的所有活动副本都将记录提交到数据磁盘文件时,上述函数才会返回。因此,要随着进程的增加测试速度,您需要有一个 record generator、一个 a process spawner 、 write function 和最后一个timing mechanism。对于计时,我们有一个名为:timer:tc/1, timer:tc/2 and timer:tc/3 的内置函数,它返回执行(完全)给定函数所花费的确切时间。简而言之,我会这样做:
现在这里有依赖项,尤其是:gproc 从这里下载并将其构建到您的 erlang 库路径中 Download Gproc。
到运行它,只需调用:stress_test:start().write_time 表将帮助您绘制进程数与写入时间的关系图。随着进程数从 0 增加到上限 (?LIMIT),我们记录了在给定时刻写入给定记录所花费的时间,我们还记录了当时的进程数。
f(S)-> f(S,[])。 f(S,Args) -> 列表:flatten(io_lib:format(S,Args))。那就是缺少的功能。抱歉....
write_time,使用应用程序tv,打开一个窗口,您可以在其中检查记忆表。使用此表可以查看随着进程数量不时增加而增加的写入时间/或降低的性能。 time() 记录写入操作的实际时间,这可能是一个重要参数。您可以将其添加到write_time 表的表定义中。
【讨论】:
write_time 和book,在运行压力测试之前启动mnesia 并加载它们。
你可以看看tsung http://tsung.erlang-projects.org/
【讨论】: