Scheduling on asymmetric CPU cores

Most modern CPUs have multiple “kinds” of cores with different performance characteristics. Is there a good place to look for discussion of how to leverage this for BEAM?

Background / links:

  • short piece from Intel on P-cores vs E-cores - this mentions that the operating system is “provided real-time feedback”.
  • the cpu_topology machinery seems like a good place to start, but it doesn’t expose any metadata like “this core is faster”. (also only returns undefined on OS X :frowning: )
  • the process_flag(priority, ...) interface seems inadequate to distinguish processes that would benefit from running on a high-speed core
5 Likes

Just spitballing here, but perhaps you could start start two BEAM instances, each pinned to the different kinds of cores in the OS via taskset (e.g., on Linux) plus +sct CpuToplogy when launching the BEAM. Then, use distributed Erlang and your own scheduling policy to use the different core types?

1 Like