TPEPerformance: Difference between revisions

6,131 bytes removed ,  7 March 2016
Cleanup
(Cleanup)
Line 1: Line 1:
= Taipei Performance Team =
This page is for tracking tasks of the performance team at Mozilla Taipei Office.
This page is for tracking tasks of the performance team at Mozilla Taipei Office.


== 2014 Q2 Plans ==
== Team Structure ==
* IPC with Async IO
* Nested Processes
* JS/GC/CC
** Compacting GC
*** When will exact rooting be enabled safely?
** GC heap analysis
*** How many and what pages/entries are touched?
** the runtime XPCOMPtr information as complementary info. of the CC.
** Instruction selector
** Instruction scheduler
* session restore of WEB Apps
** to get better memory usage and be flexible
* Necko
** WEB cache
* Nuwa
** Fix the IPC issues of preload-slow-things at the Nuwa process.
*** waiting for quiescent moment of the b2g process.
* Tarako
** Priority manager


== Working On ==
=== Members ===
* Memory
 
* Kan-Ru Chen (:kanru)
* Thinker Lee (:thinker :sinker)
* Cervantes Yu (:cyu)
* Ting Yu Chou (:tchou)
* Wei Cheng Pan (:wcpan)
* Greg Weng (:gregweng)
 
=== Domain Areas ===
 
* IPC / DOM::Content Processes
** Nuwa
** Nuwa
*** [[NuwaTemplateProcess]]
* Performance
*** [https://bugzilla.mozilla.org/buglist.cgi?list_id=9540666&short_desc=Nuwa&resolution=---&resolution=FIXED&resolution=INVALID&resolution=WONTFIX&resolution=DUPLICATE&resolution=WORKSFORME&resolution=INCOMPLETE&resolution=SUPPORT&resolution=EXPIRED&resolution=MOVED&query_format=advanced&bug_status=NEW&bug_status=ASSIGNED&bug_status=REOPENED&bug_status=RESOLVED&bug_status=VERIFIED&bug_status=CLOSED&short_desc_type=allwordssubstr Bugs]
* Memory leak analysis
** script-sources
* JavaScript Engine
*** In b2g and homescreen it consumes 4MB ~ 5MB totally.
* Layout / Gfx
*** In facebook and twitter it consumes ~1.3MB for each.
 
*** Need to investigate the benefits of disabling it under zRam.
== Team Management ==
*** [https://bugzilla.mozilla.org/show_bug.cgi?id=944659 Bug 944659] - Considerable amounts of script-sources
** Misc
*** [https://bugzilla.mozilla.org/show_bug.cgi?id=941792 Bug 941792] - Make sure decommitting actually works on B2G
*** [https://bugzilla.mozilla.org/show_bug.cgi?id=944224 Bug 944224] - Considerable amounts of images as dataURLs
* IPC
** [https://bugzilla.mozilla.org/show_bug.cgi?id=915733 Bug 915733] - Linux/or POSIX aio instead of IO thread
** shmem for big data chunks
* Launch time of Apps
** Preload JS code with Nuwa
** Precompile JS code with the baseline compiler
** Profiling
* Animations
** use caches for display lists to reduce overhead of nsIFrame::BuildDisplayList()
*** https://groups.google.com/d/msg/mozilla.dev.tech.layout/BL3BNQu4sSA/CMHWMEHp9x0J
*** https://bugzilla.mozilla.org/show_bug.cgi?id=908626
* Task Tracer
** https://bugzilla.mozilla.org/show_bug.cgi?id=908995
** https://groups.google.com/d/msg/mozilla.dev.b2g/dr3RrYUvP-w/Q51za7NvIWwJ
** Keep the tracks of tasks
** TODOs
*** [https://bugzilla.mozilla.org/show_bug.cgi?id=916409 Bug 916409] - data retrieving tool and protocol
*** [https://bugzilla.mozilla.org/show_bug.cgi?id=916410 Bug 916410] - Integrate it with Cleopatra
*** Mark event sources
* XHR Batch Queue API
** https://wiki.mozilla.org/WebAPI/XHRBatch
** Submit a XHR to a queue on the device, the platform will handle the XHR until it is completed
** Notify the App while all XHR on the queue is completed
** The app can check its own queue
** The app can be killed, or being stopped by the user, while XHR is still running.
** The platform will wake up the app while the queue is completed an the app is not running.
* Stability Issues
** [https://bugzilla.mozilla.org/show_bug.cgi?id=926734 Bug 926734] - [Flatfish][Profiling]: When starting up Gecko profiling tool, system got hang.
** [https://bugzilla.mozilla.org/show_bug.cgi?id=922548 Bug 922548] - [Flatfish][Profiling]: Fails to analysis the parsed file for Gecko Profiling tool.
** [https://bugzilla.mozilla.org/show_bug.cgi?id=940851 Bug 940851] - Gecko IPC hangs during boot on jb-gonk.
** [https://bugzilla.mozilla.org/show_bug.cgi?id=808080 Bug 808080] - IPC parent aborts due to too large allocation for infallible array in PContent::Msg_AsyncMessage.
** [https://bugzilla.mozilla.org/show_bug.cgi?id=807738 Bug 807738] - IPC parent aborts with malformed PHttpChannel::Msg_AsyncOpen.
** [https://bugzilla.mozilla.org/show_bug.cgi?id=781594 Bug 781594] - ABORT: not reached: ipc/ipdl/PLayers.cpp, line 4069.


== Ideas ==
=== Dashboard ===
* log size of gc heaps after every running JS runnable.
* Track JSObjects that fallback to dictionary mode
** Time spent(impaction) on objects of dictionary mode
** For games
* command queue for SVG frames
* Compare loading time for loading from scratch and from dumped image.
* Establish a benchmark to measure memory usage. Refer to AWSY.
* [https://bugzilla.mozilla.org/show_bug.cgi?id=945166 Bug 945166] - Merge JS bytecode, jit code, type tree and shape tree of iframes of embedded YouTube videos.
** Ion/baseline codes, bytecode, script-source, type, shape, etc.
* [https://bugzilla.mozilla.org/show_bug.cgi?id=945161 Bug 945161] - Stop decode big image for the browser app for low end devices.
* [https://bugzilla.mozilla.org/show_bug.cgi?id=945152 Bug 945152] - Make memory of TypedArrays returned by XHR backing with the local file.
** Use-case tables of keyboard apps.
** Tim is in charged of the use-case.
* [https://bugzilla.mozilla.org/show_bug.cgi?id=945174 Bug 945174] - Evaluate zram performance and Bug 899493.
* [https://bugzilla.mozilla.org/show_bug.cgi?id=945185 Bug 945185] - Show only first N images in image uploader for low-end devices.
* [https://bugzilla.mozilla.org/show_bug.cgi?id=943254 Bug 943254] - [B2G][Browser] limit the memory consumption of the browser.
* [https://bugzilla.mozilla.org/show_bug.cgi?id=854795 Bug 854795] - decode and downsample images at the same time for memory savings
* App session resuming
** like hibernate
** load an App from storage and restore to the states of last killed.
* Media
** Unified buffering
* Evaluate the code generator for ARM in IonMonkey.
* Parallelize layout and rendering by screen frames. -- [[VersionedDOM]]
* Use object layout info (size of the object) to figure out what the object is a XPCOMPtr in.
** To be a complementary information for CC and GC.
* Tool to log and show restyling
** What rules are referenced/matched?
** Restyle roots and how many descendants?
** Changes of DOM tree
* Automatically generate marionatte scripts
* build test servers
* Make a iframe as a history entry


= Current Status =
* [http://standu.ps/project/perf-tw Status Report]
* http://standu.ps/project/perf-tw
* [https://wiki.mozilla.org/TPEPerformance/Dashboard Project Dashboard]
* [[TPEPerformance/Ideas|Ideas]]
* [[TPEPerformance/Trash|Trash Can]]


= 128MB =
=== Projects ===
* Thrashing (GC <--> zRAM)
** do experiments for proving
** Solutions
*** stop GC
*** GC before switching to background
**** stop GC for memory pressure of background process.
** Facts
*** memory pressure trigger GC, it brings pages from zRAM.
*** GC and memory minimize are called for switching to background.


<bugzilla>
* [[TaskTracer]]
{
* [[NuwaTemplateProcess|Nuwa Template Process]]
"id": "944659,945166,945161,945152,945174,945185,854795,957509,951601,963477,962987,964599,951531,939056,938470,961348,959966,956215,960894,962444,962384"
* [[MemoryProfiler|Memory Profiler]]
}
* [[TPEPerformance/128MB|128MB]]
</bugzilla>
* [[WebAPPGeneralLifeCycle|Web App General Life Cycle]]
* [[TPEPerformance/FxOS_Responsiveness|FxOS Responsiveness]]


= Extending automated performance testing converage =
== Weekly Report ==
* Proposed test cases to extend performance coverage.
<createbox>
** Suspend/resume
align=right
**: Time: receiving "power button" event -> first frame
type=create
** Boot time
preload=TPEPerformance/2016-0-0&action=submit
**: Time: initrc -> lock screen ready. (visually loaded)
default={{#time: 2016-m-d | thursday}}
** Scrolling response time
prefix=TPEPerformance/
**: Time: receiving touch event -> first composition that reflects the scrolling.
</createbox>
** Long drag/Contineously scrolling.
**: During drag, providing a list of composition time. (will be a series of events), provide median and standard deviation.
** Rotate
**: Time: receiving rotate event (i.e., the motion has been recognized as a rotation) -> first redraw that reflects the rotation.
** Pinch
**: Time: gesture being recognized -> first that reflects the pinch.
** Button click
**: Time: touch event -> first redraw of button's look change
** Screen transition, after clicking on a button
**: Time: action -> to the first frame of transition.


= Trash =
{| class="toccolours" style="width: 100%" align="center"
see https://wiki.mozilla.org/TPEPerformanceTrash
|2014/Q2
{{Special:PrefixIndex/TPEPerformance/2014_Q2}}
|-
|2016/Q1
{{Special:PrefixIndex/TPEPerformance/2016-03}}
|-
|2016/Q2
{{Special:PrefixIndex/TPEPerformance/2016-04}}
{{Special:PrefixIndex/TPEPerformance/2016-05}}
{{Special:PrefixIndex/TPEPerformance/2016-06}}
|}
Confirmed users
346

edits