我有一个python脚本,运行一个包含〜150个线程的进程。在Ubuntu Server 16.04 t2.small实例类型上,它以大约30%的CPUUtilization运行。由于它必须以该速率持续运行并且t2.small的基线性能为20%,我决定转向t2.medium(其基线性能为40%)。但是,当我在t2.medium上运行脚本时,脚本开始从两个计算单元中的每一个开始消耗大约30%(总共60%),从而使我超过40%的基线。
根据我的理解,运行单个进程的python脚本(虽然在多个线程上)并不使用超过1个CPU核心(在这种情况下它是虚拟的)。并且,无论如何,如果我的脚本在t2.small上以30%的cpu使用率运行,为什么它不会在t2.medium上的一个计算单元上执行相同的操作,而不管第二个计算单元的可用性如何?我在这里缺少什么?
编辑:我决定尝试一下,我克隆了我的实例,创建了同一图像的t2.micro,t2.small和t2.medium实例。当我在每个实例上启动相同的脚本时,这是我在每个实例上的CPUCreditUsage:
颜色如下:
蓝色:t2.micro 橙色:t2.small 绿色:t2.medium
正如预期的那样,t2.medium正在消耗两倍的学分,所以我真的失去了使用中等以上的优势。