Performance: Difference between revisions

Jump to navigation Jump to search
7,090 bytes added ,  31 July 2013
Line 120: Line 120:
Probably another month or two (with lower bandwidth) for follow-ups.
Probably another month or two (with lower bandwidth) for follow-ups.
|goal=To improve responsiveness when downloads are started, by removing the main-thread I/O caused by access to "downloads.sqlite". The concrete goal is to ensure that SQL statements involving moz_downloads no longer appear in the "slow SQL" Telemetry dashboard.
|goal=To improve responsiveness when downloads are started, by removing the main-thread I/O caused by access to "downloads.sqlite". The concrete goal is to ensure that SQL statements involving moz_downloads no longer appear in the "slow SQL" Telemetry dashboard.
|reports=firefox-dev mailing list, [http://benjamin.smedbergs.us/weekly-updates.fcgi/user/paolo weekly updates tool].
|reports=firefox-dev mailing list, [http://benjamin.smedbergs.us/weekly-updates.fcgi/user/pamadini%40mozilla.com weekly updates tool].
|work={{bug|825588}}
|work={{bug|825588}}
|dependencies=
|dependencies=
|notes=The project should include a follow-up time frame to accommodate any changes identified after Firefox for Desktop has migrated to the new API, as well as handle requests to facilitate other Mozilla products and add-ons to migrate to the new API.
|notes=The project should include a follow-up time frame to accommodate any changes identified after Firefox for Desktop has migrated to the new API, as well as handle requests to facilitate other Mozilla products and add-ons to migrate to the new API.
}}
----
====<span style="color: green">Remove localStorage From Browser Pages</span>====
{{PerfProject
|impact={{desktop}}
|team=Marco Bonardo
|duration=
|goal=Replace about: pages use of DOM Storage with more performant storage, like indexedDB, to remove UI hangs due to main-thread IO.
|reports=[http://blog.bonardo.net/tag/performance Marco's blog], [http://benjamin.smedbergs.us/weekly-updates.fcgi/user/mak%40mozilla.com weekly updates tool].
|work={{Bug|729777}} and dependencies
|dependencies=
|notes=
}}
----
====<span style="color: green">Complete Asynchronous History API</span>====
{{PerfProject
|impact={{desktop}}
|team=Marco Bonardo, Asaf Romano, Raymond Lee
|duration=
|goal=Replace all remaining synchronous history APIs with asynchronous alternatives. This will reduce possibilities of contention between the synchronous and the asynchronous APIs, that can cause long hangs of the UI.
|reports=[http://blog.bonardo.net/tag/performance Marco's blog], [http://benjamin.smedbergs.us/weekly-updates.fcgi/user/mak%40mozilla.com weekly updates tool].
|work={{Bug|699850}} and dependencies
|dependencies=Ensure to properly communicating add-ons compatibility issues before APIs removal, through blog post, Mozilla.dev.extensions, AMO team.
|notes=We should replace synchronous API that reports history status (bug 834541), this may be tricky since it’s required to be synchronous by some UI features and could slip off to the future, luckily it’s currently served through a cache that reduces its negative impact.
}}
----
====<span style="color: green">Reduce Impact Of Bookmarks Backups On Shutdown</span>====
{{PerfProject
|impact={{desktop}}
|team=Raymond Lee, Marco Bonardo
|duration=
|goal=Replace synchronous main-thread bookmarks backups with asynchronous background backups.
Bookmarks backups currently only run on idle, but some instances never hit idle causing the backups to occur on shutdown, which negatively impacts the shutdown time of the browser.
|reports=[http://blog.bonardo.net/tag/performance Marco's blog], [http://benjamin.smedbergs.us/weekly-updates.fcgi/user/mak%40mozilla.com weekly updates tool].
|work={{Bug|843357}} and dependencies, https://etherpad.mozilla.org/places-backups-changes
|dependencies=Ensure to properly communicating add-ons compatibility issues before APIs removal, through blog post, Mozilla.dev.extensions, AMO team.
|notes=This project will be completed in 3 parts:
#Convert APIs from synchronous to asynchronous - done
#Various improvements to ensure we store backups only when really needed, by skipping duplicates and giving better information to the users
#Async conversion, although some minor parts of the code should already be async converted as we go
}}
----
====<span style="color: green">Reduce Storage Connections Main-Thread Operations</span>====
{{PerfProject
|impact={{desktop}} {{mobile}}
|team=David Teller, Marco Bonardo
|duration=
|goal=Setting up and closing a Storage database connection happens on main-thread, even if then the connection is only used through the asynchronous API. This may cause visible jank, especially when there’s other IO ongoing. Introduce a new purely asynchronous connection that never hits the main-thread and update consumers to use it. This will also ensure consumers of this connection can’t wrongly abuse of the synchronous APIs and create thread contention.
|reports=[http://blog.bonardo.net/tag/performance Marco's blog], [http://benjamin.smedbergs.us/weekly-updates.fcgi/user/mak%40mozilla.com weekly updates tool].
|work={{Bug|702559}}, {{Bug|874814}}, {{Bug|885732}} and dependencies
|dependencies=
|notes=Need to blog about this change and update the documentation.
The asynchronous connection landed, though it still closes the database handle on main-thread though, so fixing that is the next goal for July. Consumers conversion may take some time, Sqlite.jsm has already been converted, autocomplete is ongoing, but each consumer has very specific requirements. Goal is to complete the connection and convert most common consumers by the end of September.
}}
----
====<span style="color: green">Asynchronous Places Annotations</span>====
{{PerfProject
|impact={{desktop}}
|team=Asaf Romano, Marco Bonardo
|duration=
|goal=Annotations allow to set specific flags on bookmarks and pages in history, to identify them or attach additional information, but they are synchronous, so bookmarks conversion to an asynchronous API is blocked on them and they are currently causing unpredictable main-thread IO. Introduce a new asynchronous API that allows to annotate pages and bookmarks asynchronously, convert internal consumers to it.
|reports=[http://blog.bonardo.net/tag/performance Marco's blog], [http://benjamin.smedbergs.us/weekly-updates.fcgi/user/mak%40mozilla.com weekly updates tool].
|work={{Bug|699844}} and dependencies
|dependencies=Ensure to properly communicating add-ons compatibility issues before APIs removal, through blog post, Mozilla.dev.extensions, AMO team.
|notes=The old service will keep living in parallel for a while, for compatibility reasons.
A first draft of the new API has been created. Asaf is going to create a first mock of the service and verify consumers requirements with it. Marco will work on the database schema and performances. Consumers conversion may take the most time and will likely be an iterative process once the API and the service are complete, by the end of the third quarter.
}}
----
====<span style="color: green">Improve Places Hosts Storage</span>====
{{PerfProject
|impact={{desktop}}
|team=Marco Bonardo
|duration=
|goal=Change the way we store hosts in Places to reduce work needed for inserting and querying pages. Currently we split www. and non www. hosts but we always use them as a single thing in all of the UI pieces, so we have to double the querying work to gather both.
|reports=[http://blog.bonardo.net/tag/performance Marco's blog], [http://benjamin.smedbergs.us/weekly-updates.fcgi/user/mak%40mozilla.com weekly updates tool].
|work={{Bug|843357}} and dependencies
|dependencies=
|notes=it's a one bug project, most of the time is needed to verify if the change may cause any issues and designing the new queries. It may take about a week, but it’s currently on hold and waiting to complete some higher priority work, like the asynchronous history API. Planned to start in September.
}}
----
====<span style="color: green">Improve Space Efficiency Of Places URL Index</span>====
{{PerfProject
|impact={{desktop}}
|team=Marco Bonardo, Taras Glek
|duration=
|goal=The current URL index in places.sqlite database takes up to 30% of the database size. The features it provides can be obtained through a smarter hashing method that should improve the space efficiency by an order of magnitude. A smaller database has positive effects on IO and fragmentation.
|reports=[http://blog.bonardo.net/tag/performance Marco's blog], [http://benjamin.smedbergs.us/weekly-updates.fcgi/user/mak%40mozilla.com weekly updates tool].
|work={{Bug|889561}}
|dependencies=
|notes=
}}
}}
----
----
Confirmed users
2,473

edits

Navigation menu