我已经开发了一个框架,供我们组织中的几个团队使用.在这个框架之上开发的那些"模块"可以表现得完全不同,但它们都是非常耗费资源的,即使有些模块比其他模块更多.它们都在输入中接收数据,分析和/或转换数据,并进一步发送.
我们计划购买新硬件,我的老板让我根据模块定义和实施基准测试,以便比较我们获得的不同报价.
我的想法是简单地用一组精心选择的数据作为输入顺序开始每个模块.
你有什么建议吗?关于这个简单程序的任何评论?
你的问题非常广泛,不幸的是我的回答也不是很具体.
首先,基准测试很难.不要低估产生有意义,可重复,高可信度结果所需的努力.
第二,你的表现目标是什么?是吞吐量(事务或每秒操作)?它是延迟(执行事务所需的时间)吗?你关心平均表现吗?我是否关心最坏情况的表现?你是否关心绝对最坏的情况,或者我关心90%,95%或其他百分位数获得足够的表现?
根据您的目标,您应该设计基准来衡量该目标.因此,如果您对吞吐量感兴趣,您可能希望以指定的速率向系统发送消息/事务/输入,并查看系统是否跟上.
如果您对延迟感兴趣,您可以发送消息/事务/输入并测量处理每个消息所需的时间.
如果您对最坏情况的性能感兴趣,那么您将为系统增加负载,直到达到您认为"实际"的任何内容(或者系统设计应该支持的任何内容).
其次,您不会说这些模块是否会受CPU限制,I/O限制,是否可以利用多个CPU /内核等.当您尝试评估不同的硬件解决方案时,您可能会发现您的应用程序受益更多来自一个伟大的I/O子系统与大量的CPU.
第三,最好的基准(也是最难的)是将实际负载放入系统.这意味着,您从生产环境记录数据,并通过此数据放置新的硬件解决方案.完成此操作比听起来更难,通常,这意味着在系统中添加各种测量点以查看其行为(如果您还没有它们),修改现有系统以添加记录/回放功能,修改播放以不同的速率运行,并获得一个逼真的(即类似于生产)环境进行测试.