可从C#使用的基准测试库

7
我想对我管理的几台服务器进行基准测试,并希望能够设置自己的情境和事件顺序/自动化。因此,我想知道是否有任何库可用于执行基准测试,以评估Windows计算机的不同方面,例如CPU、磁盘IO和RAM。 更新1:既然似乎没有可用的库来完成这项工作,我也可以接受指向使用C#测试CPU、磁盘和内存性能的示例或指南的答案。 更新2:是否有任何语言中的好库可以用于此?

我建议阅读这篇文章:http://www.codeproject.com/Articles/8590/An-Introduction-To-Performance-Counters,它是关于[PerformanceCounter](http://msdn.microsoft.com/en-us/library/system.diagnostics.performancecounter.aspx)类的一个很好的介绍,我认为你会发现它很有用。 - Bridge
那似乎很有趣,但可能不完全是我正在寻找的。Codeproject上的示例似乎是关于测量当前性能而不是将系统推向极限并看看它能做什么。也许我可以将其与一些将CPU /磁盘/内存推至极限的代码一起使用,看看它会得到什么结果。 - JensB
非常有趣的问题。如果您能够总结您的发现并在这里回答,那将是很棒的 : )。啊,使用C#只针对Windows Server吗? - Gero
我不确定C#(或者更确切地说,.Net运行时)是否是进行基准测试的完美语言。它会被GC中断,这将影响裸机性能测试。然而,你当然可以测试一下在基准测试机器上运行的.Net应用程序的表现。 - Dykam
@Dykam,是的,你说得很有道理。不确定这会对结果产生多大影响。此外,我的主要目的是将两个不同的设置进行比较,只要所有测试都在相同的情况下运行(即使用.net),那么两个服务器之间的比较仍然可以显示哪一个在%方面具有更好的整体性能。 - JensB
显示剩余2条评论
2个回答

3
你可以使用这个开源框架 BenchmarkDotNet 进行 CPU 基准测试。它包括计时器使用、GC 预调用、预热、进程优先级设置、线程、ProcessorAffinity-mask、为基准测试竞赛提供的 API 以及漂亮的控制台输出结果。

1

这似乎可以用于向应用程序发送不同的请求进行测试...因此理论上,如果我对使用这些资源类型的代码运行测试,我可能会使我的CPU/磁盘/内存饱和。这不完全是我想要的,但还是谢谢你的提示。 - JensB
在服务器环境中,你不能只是把东西扔给服务器然后看它如何处理。你需要编写一个执行所需工作的程序,然后对程序进行测试,查看哪里会导致减速。如果减速来自于优化不良的循环,你需要修复代码。如果减速来自于慢速磁盘 I/O,你需要使用更快的驱动器升级磁盘 I/O。可以这样想,你的问题是在寻找“最好的”,但你需要寻找“最适合完成我要给服务器的任务的最佳选择”。 - Scott Chamberlain
@wokawaka 再考虑了一下我的措辞,我认为需要重新表述为“无论我将会给这台服务器做什么工作,都能满足我的需求的设备”。如果你花费$15,000购买RAMSAN,而只需用一对价值$200的猛禽硬盘进行RAID 0设置即可正常运行,而你是我的员工,那么你很快就不会再是我的员工了。 - Scott Chamberlain

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接