2012-10-03 20 views
3

我正在使用Apple Instruments工具对多线程应用程序进行一些分析,这些工具给出了很多我想要了解的信息。我试图找到一个很好的资源来描述在工具中用颜色编码的线程状态。我一直在研究XNU内核文档和书籍,但没有多少运气。XNU Thread States在Xcode/Instruments中使用颜色编码

对应于“抢先”和“主管”模式的黄色和紫色很多(全色图在附图中右上角描述)。鉴于我在这些国家花费了很多时间而不是“跑步”状态(蓝色),我会特别感兴趣的是了解他们所指的是什么,以及是否有可能/希望尽量减少在这些状态中花费的时间。

enter image description here

回答

3

优先抢占=你的线程可运行,并且准备,愿意并且能够执行,但被踢出来(上下文切换)有利于其他线程的。这意味着你的线程没有在I/O或事件上休眠,而且实际上是在做一些CPU密集型的事情。但是,由于量子到期或其他优先级较高的线程,它被迫退出CPU。主管=你的线程处于内核模式。通常,这意味着内核正在处理由您的线程进行的系统调用。

他们都不是严格的不好,但是:

避免抢占:没有多少,你可以在这里做,除了你的优先级游戏 - 使用负nice值增加你的优先级,或者直接使用setpriority API 。您也可以使用调度策略来提高线程的偏好,并且哄骗Mach调度程序(线程的底层决策者)首先放置线程,并为它们提供更多的CPU时间。

避免管理员模式:您可能在系统调用中很沉重。再次,这不一定是坏事。

希望这有助于

TG