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.
perf.html doesn't have any stack-based heuristics for detecting main thread IO, so it doesn't have this bug.
Status: NEW → RESOLVED
Last Resolved: a year ago
Resolution: --- → INVALID
You need to log in before you can comment on or make changes to this bug.