IPC Implementation for Project FOG
Categories
(Toolkit :: Telemetry, task, P1)
Tracking
()
Tracking | Status | |
---|---|---|
firefox79 | --- | fixed |
People
(Reporter: chutten, Assigned: chutten)
References
(Blocks 2 open bugs)
Details
(Whiteboard: [telemetry:fog:m4])
Attachments
(11 files, 1 obsolete file)
47 bytes,
text/x-phabricator-request
|
Details | Review | |
47 bytes,
text/x-phabricator-request
|
Details | Review | |
47 bytes,
text/x-phabricator-request
|
Details | Review | |
47 bytes,
text/x-phabricator-request
|
Details | Review | |
47 bytes,
text/x-phabricator-request
|
Details | Review | |
47 bytes,
text/x-phabricator-request
|
Details | Review | |
47 bytes,
text/x-phabricator-request
|
Details | Review | |
47 bytes,
text/x-phabricator-request
|
Details | Review | |
47 bytes,
text/x-phabricator-request
|
Details | Review | |
47 bytes,
text/x-phabricator-request
|
Details | Review | |
47 bytes,
text/x-phabricator-request
|
Details | Review |
Implement the design from bug 1618253.
- Build and document and test the generic mechanism for passing information across processes at the scheduled moments
- Augment at least one metric type with IPC capabilities to prove out the usefulness of the documentation and the comprehensiveness of the testing
- Establish best practices (a How To Guide?) about how to think about IPC when it comes to metric types in FOG (including where and how to best document that certain operations may not work out so well due to them not being commutative operations).
Anti-goals:
- Don't implement all of the rust metric types across IPC just yet. We don't need them all until Milestone 6 after all. But you can file a bunch of bugs for them if you'd like.
Assignee | ||
Updated•4 years ago
|
Assignee | ||
Comment 1•4 years ago
|
||
Had a long and fruitful chat in https://chat.mozilla.org/#/room/#ipc:mozilla.org about IPC and how best to accomplish what we're after. Unfortunately, the present state of things forbids us from being perfect perf-respecting citizens in IPC land.
So for now it's okay to implement the few things we need on PContent
(on the main thread). But that means we need to implement with an eye towards replacing this state of things with a better solution when it should become available.
I've added a task to Milestone 8 in the roadmap to re-evaluate the state of things in October. I've also filed bug 1641989. Until then, let's move on with implementation with the following things in mind:
- The IPC backend will be replaced, so architect the code around that assumption
- Comments in the code and Documentation in the tree should reference this comment and bug 1641989 and be clear that this is a temporary state
- We should do our best to be good citizens while we're on PContent: keep message sizes low. Dispatch as quickly as possible.
Assignee | ||
Comment 2•4 years ago
|
||
Temporarily on PContent instead of managed by PBackground, there's one
parentbound message for occasionally uplifting Glean data from child processes
and one childbound message for forcing the immediate flush of Glean data in the
async return.
Can't write gtests for this as ContentChild and ContentParent include things
that aren't present in gtest.
Assignee | ||
Comment 3•4 years ago
|
||
Depends on D78077
Assignee | ||
Comment 4•4 years ago
|
||
This isn't 100% of a solution yet as the main process has no way of turning
a MetricId into a StringMetric (we're gonna a need a table. Maybe several.)
which we'll need before we can replay.
Also, there's no serialization or communication yet, which I guess is a bigger
deal.
Oh, and no detection of which process we're even on.
Depends on D78077
Assignee | ||
Comment 5•4 years ago
|
||
Introducting FOGIPC, the central clearinghouse for the C++ layer between
PContent and FOG's Rust impl.
Gotta add tests.
Depends on D79741
Assignee | ||
Comment 6•4 years ago
|
||
Depends on D79742
Assignee | ||
Comment 7•4 years ago
|
||
Introduces a gkrust Cargo feature glean_with_gecko
and with_gecko
on fog
and glean. This feature signifies the presence of gecko symbols in the build.
Use this feature to implement needs_ipc() which asks Gecko which process type
we're running as.
Depends on D79743
Assignee | ||
Comment 8•4 years ago
|
||
Depends on D79744
Assignee | ||
Comment 9•4 years ago
|
||
Depends on D79745
Assignee | ||
Comment 10•4 years ago
|
||
Bringing it all together.
Depends on D79746
Assignee | ||
Comment 11•4 years ago
|
||
Depends on D79747
Updated•4 years ago
|
Assignee | ||
Comment 12•4 years ago
|
||
Depends on D79898
Assignee | ||
Comment 13•4 years ago
|
||
Depends on D80516
Comment 14•4 years ago
|
||
Comment 15•4 years ago
|
||
Backed out 11 changesets (Bug 1635255) for causing bustages in FOGIPC.cpp
Backout link: https://hg.mozilla.org/integration/autoland/rev/5794fe9ac1e5baf6a4d537803c5bbc7b8bdd5277
Failure log: https://treeherder.mozilla.org/logviewer.html#/jobs?job_id=307384546&repo=autoland&lineNumber=43253
Assignee | ||
Comment 16•4 years ago
|
||
Well that's odd, I pushed this to try yesterday and it built just fine: https://treeherder.mozilla.org/#/jobs?repo=try&tier=1%2C2%2C3&revision=e5dfb4389a0034812d76162ce6425df44f6b815f
Lemme rebase and try building again, I guess?
Assignee | ||
Comment 17•4 years ago
|
||
Ah-ha! Culprit is bug 1637500 renaming GetCurrentThreadSerialEventTarget
to GetCurrentSerialEventTarget
landing juuuuusssst before mine did. (Well, some hours before. But still. Dang close.) New patches a-comin'.
Comment 18•4 years ago
|
||
Comment 19•4 years ago
|
||
bugherder |
https://hg.mozilla.org/mozilla-central/rev/2dd4b408b19d
https://hg.mozilla.org/mozilla-central/rev/d39f6f55fed1
https://hg.mozilla.org/mozilla-central/rev/395c9a05d024
https://hg.mozilla.org/mozilla-central/rev/95fd1634efbd
https://hg.mozilla.org/mozilla-central/rev/ad489260453a
https://hg.mozilla.org/mozilla-central/rev/b431e8c9adf0
https://hg.mozilla.org/mozilla-central/rev/ae8543c87d15
https://hg.mozilla.org/mozilla-central/rev/704a72c948ba
https://hg.mozilla.org/mozilla-central/rev/122fa4a0e054
https://hg.mozilla.org/mozilla-central/rev/5690707891fe
https://hg.mozilla.org/mozilla-central/rev/057f6d9463e8
Description
•