TPEPerformance
Jump to navigation
Jump to search
Taipei Performance Team
This page is for tracking tasks of the performance team at Mozilla Taipei Office.
2014 Q2 Plans
- 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
- Compacting GC
- 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.
- Fix the IPC issues of preload-slow-things at the Nuwa process.
- Tarako
- Priority manager
Working On
- Memory
- Nuwa
- script-sources
- In b2g and homescreen it consumes 4MB ~ 5MB totally.
- In facebook and twitter it consumes ~1.3MB for each.
- Need to investigate the benefits of disabling it under zRam.
- Bug 944659 - Considerable amounts of script-sources
- Misc
- Bug 941792 - Make sure decommitting actually works on B2G
- Bug 944224 - Considerable amounts of images as dataURLs
- IPC
- 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()
- 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
- Bug 916409 - data retrieving tool and protocol
- 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
- Bug 926734 - [Flatfish][Profiling]: When starting up Gecko profiling tool, system got hang.
- Bug 922548 - [Flatfish][Profiling]: Fails to analysis the parsed file for Gecko Profiling tool.
- Bug 940851 - Gecko IPC hangs during boot on jb-gonk.
- Bug 808080 - IPC parent aborts due to too large allocation for infallible array in PContent::Msg_AsyncMessage.
- Bug 807738 - IPC parent aborts with malformed PHttpChannel::Msg_AsyncOpen.
- Bug 781594 - ABORT: not reached: ipc/ipdl/PLayers.cpp, line 4069.
Ideas
- 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.
- 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.
- Bug 945161 - Stop decode big image for the browser app for low end devices.
- 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.
- Bug 945174 - Evaluate zram performance and Bug 899493.
- Bug 945185 - Show only first N images in image uploader for low-end devices.
- Bug 943254 - [B2G][Browser] limit the memory consumption of the browser.
- 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
Current Status
128MB
- 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.
21 Total; 1 Open (4.76%); 20 Resolved (95.24%); 0 Verified (0%);
Extending automated performance testing converage
- Proposed test cases to extend performance coverage.
- Suspend/resume
- Time: receiving "power button" event -> first frame
- Boot time
- Time: initrc -> lock screen ready. (visually loaded)
- Scrolling response time
- Time: receiving touch event -> first composition that reflects the scrolling.
- 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.
- Suspend/resume