这里有一篇关于并非所有同一类型的 EC2 实例都具有相同计算性能的文章:http://www.theregister.co.uk/2012/10/22/ec2_hardware_heterogeneity/
我最近在少数 EC2 测试服务器上运行一些基准测试时遇到了这个问题。尽管代码和负载相同,但其中一些服务器的性能明显比其他服务器差。更有趣的是,我看到具有相同的机器之间存在差异/proc/cpuinfo
,因此我认为我不能用它来可靠地检查实例质量。
我正在寻找有关如何在创建实例后立即测试其质量/速度/健康状况的建议。理想情况下,我希望在创建实例后运行 30 秒的脚本,然后根据结果决定是终止它并重试,还是让它继续运行。
像计算 π 的第 n 位 x 次这样的操作可行吗?有没有更好的工具可用?
谢谢你!
答案1
您要做的就是创建一段在循环中以恒定计算时间运行的代码。每秒,代码都应中断自身并打印出已完成的操作数。此代码应该是多线程的,并允许您选择传递 CPU 核心数作为选项。
我认为最简单的答案是计算一下你可以用随机字符串和随机密钥为每个进程加密多少个 AES 数据包,或者你可以对字符串进行多少次哈希处理。这样应该可以避免分支预测和处理器缓存的问题。
至于测试内存性能,我不会费心——CPU 消耗通常是决定速度的因素。
至于测试网络性能,这很有挑战性,因为您无法轻松地将其隔离。您需要多个实例进行测试,以确保您的基线系统没有发生变化。即便如此,通往其他系统的路由也可能具有不同的性能特征。
至于磁盘性能,这仅在您没有使用 EBS 支持的磁盘或您正在测试 EBS 的整体性能时才有用,因为它的差异与实例无关。