[ruby-core:120013] [Ruby master Feature#17566] Tune thread QoS / efficiency on macOS

Issue #17566 has been updated by shan (Shannon Skipper). I just ran across this article that touches on the sordid history of Thread priority and on how Apple Silicon is using QoS dispatch, and thought it might be nice to add here for context. https://blog.xoria.org/macos-tips-threading/ The author mentions from experience that "most of the time it isn’t possible to cleanly assign a single priority to a thread" so priority is better handled at the Dispatch library level. This seems to suggest Thread-level priority may not be the best way to have macOS apps use efficiency cores, leaning towards it not being "a priority" for Ruby. ---------------------------------------- Feature #17566: Tune thread QoS / efficiency on macOS https://bugs.ruby-lang.org/issues/17566#change-110754 * Author: mperham (Mike Perham) * Status: Open ---------------------------------------- Hi, new Apple M1 processors have "performance" and "efficiency" cores. Apple provides a QoS API so threads can tune which cores they should execute on. Some threads should be executed as high-priority, some should be treated as low-priority. This page shows the pthread APIs that Apple provides: https://developer.apple.com/library/archive/documentation/Performance/Concep... ``` pthread_set_qos_class_self_np(QOS_CLASS_BACKGROUND, 0) ``` I noticed Ruby already provides `Thread#priority=` which says `This is just hint for Ruby thread scheduler. It may be ignored on some platform`. Does this API work still or was it only active for Ruby 1.8's green threads? Should this API use the QoS APIs on macOS? -- https://bugs.ruby-lang.org/
participants (1)
-
shan (Shannon Skipper)