all, Is there any approach or tools to show the process of thread switch, that is, I can know at any specific time, the CPU is taken by which thread, as well as the time context switch costs, thanks
Share
Sign Up to our social questions and Answers Engine to ask questions, answer people’s questions, and connect with other people.
Login to our social questions & Answers Engine to ask questions answer people’s questions & connect with other people.
Lost your password? Please enter your email address. You will receive a link and will create a new password via email.
Please briefly explain why you feel this question should be reported.
Please briefly explain why you feel this answer should be reported.
Please briefly explain why you feel this user should be reported.
SystemTap is useful for this kind of thing. There’s a canned example sched_switch.stp for this.
It doesn’t measure the elapsed time of the switch, though. That seems tricky for at least a couple reasons. First, you’d have to decide an appropriate probe for the entry and exit to measure a delta, and I’m not finding anything right now. (Entering/exiting kernel within the relevant processes might be a decent approximation? There’s probably something for that though I don’t see it right now.) Second, if you’re asking to know to what extent it’s worth avoiding context switches, it’d be an incomplete picture if you didn’t consider extra CPU cache misses from switching tasks more often, and those come afterward. I think the only good way to get an answer may be experimentally. In particular, you might try tweaking scheduling parameters (see cfs-tuning.pdf) to see how more frequent context switches affect your program’s speed.