gpt4 book ai didi

xcode - Xcode/Instruments 中的 XNU 线程状态颜色编码

转载 作者:行者123 更新时间:2023-12-02 00:16:48 30 4
gpt4 key购买 nike

我正在使用 Apple Instruments 工具对多线程应用程序进行一些分析,它提供了很多我试图从中理解的信息。我试图找到一个很好的资源来描述工具中颜色编码的线程状态。我一直在研究 XNU 内核文档和书籍,但运气不佳。

有很多黄色和紫色对应于“抢占”和“监督”模式(全彩色图表在附图右上角的弹出窗口中描述)。鉴于我在这些状态下花费了太多时间而不是“运行”状态(蓝色),我特别想知道它们指的是什么以及是否可能/希望尽量减少在这些状态下花费的时间.

enter image description here

最佳答案

Preempted = 你的线程是可运行的,并且已经准备好,愿意并且能够执行,但是被踢出(上下文切换)以支持其他线程。这意味着您的线程并没有在 I/O 或事件上休眠,而是实际上在做一些 CPU 密集型的事情。然而,由于量程到期或其他一些更高优先级的线程,它被迫离开 CPU。

Supervisor = 您的线程处于内核模式。通常,这意味着内核正在为您的线程进行的系统调用提供服务。

它们都不是严格意义上的坏,但是:

避免抢占:除了调整优先级之外,您在这里无能为力 - 使用负 nice 值增加优先级,或者直接使用 setpriority API。您还可以使用调度策略来提高线程的优先级,并哄骗 Mach 调度程序(线程的底层决策者)将您的线程放在第一位,并给它们更多的 CPU 时间。

避免主管模式:您可能会大量使用系统调用。同样,这不一定是坏事。

希望对您有所帮助,

TG

关于xcode - Xcode/Instruments 中的 XNU 线程状态颜色编码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12709995/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com