AutoSpotting icon indicating copy to clipboard operation
AutoSpotting copied to clipboard

The instance compatibility logic should consider the available CPU features

Open cristim opened this issue 7 years ago • 4 comments

Github issue

Issue type

  • Bug

Summary

Add compatibility check for CPU flags:

  • AVX
  • AVX2
  • Intel Turbo
  • SSEx?

Caveat: currently the instance database we get from www.ec2instances.info only lists AVX, AVX2 and Intel Turbo, there's no data for SSE. But that may be enough for a start, because chips which have the same level of AVX/AVX2 support may also be close enough when it comes to SSE support.

Steps to reproduce

@ejholmes blogged about an issue with missing CPU capabilities breaking the application compiled with certain CFLAGS on SSE4 machines when running on spot instances which didn't support SSE4:

Expected results

Applications should be able to run transparently, AutoSpotting should only provide compatible CPUs. This particular compatibility check should be on by default (safer) but the users should be able to override this to allow the logic to pick from instance types from older generations, if the application is not very sensitive about CPU capabilities.

Actual results

Application crashes because of missing SSE4 support on the CPU of the launched spot instances.

cristim avatar Oct 09 '17 16:10 cristim

According to the blog, and the comment the flag was removed and allowed running fine on it. Shall we proceed with exposing those criteria and checking them, or shall we close it and re-open it whenever someone faces it again?

xlr-8 avatar Jan 12 '18 15:01 xlr-8

To be on the safe side, I would prefer to expose and check those flags, they should already be available in the instance data structure.

cristim avatar Jan 12 '18 15:01 cristim

I believe this issue can be resolved by offering the user the ability to require the same spot instance type as that of the on-demand instance being replaced.

otterley avatar Jul 27 '18 19:07 otterley

This has been available for a while, but maybe not documented well enough. You can just use the "current" keyword when restricting the instance types.

cristim avatar Jul 28 '18 06:07 cristim