The profiler UI has a nice annotation for main-thread disk IO, but it's flagging PostTask() as IO because it write()s to a wake-up pipe to notify the thread the task is being posted to. That's equivalent to a futex() call, which doesn't get flagged as disk IO (correctly). This is particularly annoying because sending IPC's always requires a PostTask(), and those get flagged as main-thread disk IO. (Although, when I'm tracking down significant IPC's, it becomes a blessing in disguise. But we should do that differently.) I'm not sure which part of the system determines this. How can we make this stop?
(In reply to Chris Jones [:cjones] [:warhammer] from comment #0) > That's equivalent to a futex() call (By which I mean, approximately equivalent in the amount of work done in the kernel.)
Here's a profile showing this problem: http://people.mozilla.com/~bgirard/cleopatra/#report=0e6042fb2a6121d84a71796bfe27ec4275c1a9db
Turns out this a problem if we're not unwinding because we don't see the PostTask. We have a few options: 1) Add a sample_label to PostTask(). 2) Only remove the annotation if PostTask shows up (stackwalk). 3) Ignore 1 sample long IO calls. This option is not great because it hides other fast IO steps.
You need to log in before you can comment on or make changes to this bug.