Pergunta

Eu estou fazendo alguma análise de um aplicativo multi-thread usando as ferramentas da Apple Instruments, que dão muita informação que estou tentando fazer sentido.Estou tentando encontrar um bom recurso para descrever os estados de thread que são codificados por cores na ferramenta.Eu estive olhando para documentação de kernel xnu e livros, mas sem muita sorte.

Há um monte de amarelo e roxo que corresponde aos modos "preempted" e "supervisor" (o gráfico de cores completo é descrito no aparelho superior direito na imagem anexada).Dado que eu estou gastando tanto tempo nesses estados em oposição ao estado "correndo" (em azul), estaria particularmente interessado em saber o que eles se referem e se é possível / desejável minimizar o tempo gasto nesses estados.

Digite a descrição da imagem aqui

Foi útil?

Solução

Preempted= Seu segmento foi runnable, e estava pronto, disposto e capaz de executar, mas foi expulso (contexto comutado) em favor de algum outro segmento. Isso significa que seu tópico não estava dormindo na E / S ou no evento, e realmente estava fazendo algo intensivo da CPU. Devido a uma expiração quântica ou algum outro fio de maior prioridade, no entanto, foi forçado a sair da CPU.

supervisor= seu thread estava no modo kernel. Normalmente, isso significa que o kernel estava atendendo a uma chamada do sistema feita pelo seu segmento.

nenhum deles é estritamente ruim, mas:

Evitar preempção: Não há muito que você pode fazer aqui, além de jogar com sua prioridade - aumente sua prioridade usando um valor agradável negativo, ou, diretamente, usando a API SetPriority. Você também pode usar políticas de agendamento para aumentar a preferência do seu thread e cajole the Mach Scheduler (o tomador de decisão subjacente de segmentos) para colocar seus segmentos primeiro e lhes dê mais tempo de CPU.

Evitar o modo Supervisor: você pode ser pesado nas chamadas do sistema. Mais uma vez, isso não é necessariamente uma coisa ruim.

Espero que isso ajude,

tg

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top