mirror of
https://github.com/mozilla/gecko-dev.git
synced 2024-11-25 05:41:12 +00:00
3a35e750f3
MozReview-Commit-ID: LRgL0CMJdDP --HG-- extra : rebase_source : b99364bb96c1501a674a1726a3b5fdf0664a8e4f
53 lines
1.9 KiB
ReStructuredText
53 lines
1.9 KiB
ReStructuredText
Optimization
|
|
============
|
|
|
|
The objective of optimization to remove as many tasks from the graph as
|
|
possible, as efficiently as possible, thereby delivering useful results as
|
|
quickly as possible. For example, ideally if only a test script is modified in
|
|
a push, then the resulting graph contains only the corresponding test suite
|
|
task.
|
|
|
|
A task is said to be "optimized" when it is either replaced with an equivalent,
|
|
already-existing task, or dropped from the graph entirely.
|
|
|
|
Optimization Strategies
|
|
-----------------------
|
|
|
|
Each task has a single named optimization strategy, and can provide an argument
|
|
to that strategy. Each strategy is defined as an ``OptimizationStrategy``
|
|
instance in ``taskcluster/taskgraph/optimization.py``.
|
|
|
|
Each task has a ``task.optimization`` property describing the optimization
|
|
strategy that applies, specified as a dictionary mapping strategy to argument. For
|
|
example::
|
|
|
|
task.optimization = {'skip-unless-changed': ['js/**', 'tests/**']}
|
|
|
|
Strategy implementations are shared across all tasks, so they may cache
|
|
commonly-used information as instance variables.
|
|
|
|
Optimizing Target Tasks
|
|
-----------------------
|
|
|
|
In some cases, such as try pushes, tasks in the target task set have been
|
|
explicitly requested and are thus excluded from optimization. In other cases,
|
|
the target task set is almost the entire task graph, so targeted tasks are
|
|
considered for optimization. This behavior is controlled with the
|
|
``optimize_target_tasks`` parameter.
|
|
|
|
.. note:
|
|
|
|
Because it is a mix of "what the push author wanted" and "what should run
|
|
when necessary", try pushes with the old option syntax (``-b do -p all``,
|
|
etc.) *do* optimize target tasks. This can cause unexpected results when
|
|
requested jobs are optimized away. If those jobs were actually necessary,
|
|
then a try push with ``try_task_config.json`` is the solution.
|
|
|
|
More Information
|
|
----------------
|
|
|
|
.. toctree::
|
|
|
|
optimization-process
|
|
optimization-schedules
|