Open Bug 1435628 Opened 8 years ago Updated 3 years ago

Giant cpu spike while watching HTML5 video (macOS)

Categories

(Core :: Audio/Video: Playback, defect, P3)

60 Branch
defect

Tracking

()

UNCONFIRMED

People

(Reporter: willharrisbraun, Unassigned)

Details

User Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.12; rv:60.0) Gecko/20100101 Firefox/60.0 Build ID: 20180204102054 Steps to reproduce: I followed the steps here to capture CPU usage: https://www.reddit.com/r/firefox/comments/7knnn4/firefox_quantum_is_eating_your_cpu_help_us_debug/?st=jd92jbjb&sh=a72b4f57 So, I closed all other applications on my computer besides QuickTime for video recording and Activity Monitor for CPU display, (and Firefox Nightly with only the new tab page open, updated to the newest version). Then, I opened this page: http://123watchfree.co/episode/coral-palms-pt-1-5604132/watching.html (a free tv streaming site, purportedly using HTML5 video). After a while, I closed it again. *Setup* Firefox: Nightly from today (2018-02-04) OS & Version: macOS Sierra 10.12.6 (16G1114) Computer: MacBook Pro (Retina, 15-inch, Mid 2014) Processor: 2.2 GHz Intel Core i7 Memory: 16 GB 1600 MHz DDR3 Graphics: Intel Iris Pro 1536 MB Actual results: Link to my screen capture: https://youtu.be/uI1p8wDfmCw Link to my captured profile: https://perfht.ml/2BVW768 Expected results: The CPU shouldn't have spiked that high up, I guess :)
Component: Untriaged → Audio/Video
Product: Firefox → Core
Florian - this is another one. Seems like lots of hang time in content process 1 and some missing pieces in chrome process. Anything actionable or to NI on others?
Flags: needinfo?(florian)
(In reply to Zibi Braniecki [:gandalf][:zibi] from comment #1) > Florian - this is another one. Seems like lots of hang time in content > process 1 and some missing pieces in chrome process. Anything actionable or > to NI on others? Most of this profile is not janky. The hang time in the content process seems due to JS loaded by the page. The compositor thread seems very busy, and we paint from the content process at each refresh driver tick. Looks like the video is being decoded by software rather than the GPU. jya can probably tell us if this is expected or a bug.
Flags: needinfo?(florian) → needinfo?(jyavenard)
Thanks folks—really appreciate you looking into this. Please let me know if there's any more info I can give that'd be helpful :)
typically mac machines with only intel IGP will not use the HW decoder for video resolution less than 256px I can't tell the resolution that is used there, the player starts some iframe and we have not tool to easily explore those. chrome's media-internals tell me that the video is 720x404 so it should be hardware decoded. Can you please provide the output of about:support? anyhow this is likely the same as bug 1404042 (and related) thanks
Flags: needinfo?(jyavenard)
(In reply to Florian Quèze [:florian] from comment #2) > (In reply to Zibi Braniecki [:gandalf][:zibi] from comment #1) > > Florian - this is another one. Seems like lots of hang time in content > > process 1 and some missing pieces in chrome process. Anything actionable or > > to NI on others? > > Most of this profile is not janky. The hang time in the content process > seems due to JS loaded by the page. The compositor thread seems very busy, > and we paint from the content process at each refresh driver tick. Looks decoding is *not* done in the compositor thread. > like the video is being decoded by software rather than the GPU. jya can > probably tell us if this is expected or a bug. it's unlikely what's happening, the h264 decoding is managed by apple VTC process. We have no control if that's HW accelerated or not. OP: please set back the resolution to the default.. does that help?
Setting need-info on the reported to provide the output of the about:support
Flags: needinfo?(willharrisbraun)
(In reply to Jean-Yves Avenard [:jya] from comment #4) > Can you please provide the output of about:support? Here's the output of about:support (I clicked "Copy text to clipboard"): Application Basics ------------------ Name: Firefox Version: 60.0a1 Build ID: 20180205100240 Update Channel: nightly User Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.12; rv:60.0) Gecko/20100101 Firefox/60.0 OS: Darwin 16.7.0 Multiprocess Windows: 1/1 (Enabled by default) Web Content Processes: 4/4 Stylo: content = true (enabled by default), chrome = false (disabled by default) Google Key: Found Mozilla Location Service Key: Found Safe Mode: false Crash Reports for the Last 3 Days --------------------------------- All Crash Reports Nightly Features ---------------- Name: Activity Stream Version: 2018.01.30.1052-2ec746e0 ID: activity-stream@mozilla.org Name: Application Update Service Helper Version: 2.0 ID: aushelper@mozilla.org Name: Firefox Screenshots Version: 25.0.0 ID: screenshots@mozilla.org Name: Follow-on Search Telemetry Version: 0.9.6 ID: followonsearch@mozilla.com Name: Form Autofill Version: 1.0 ID: formautofill@mozilla.org Name: Photon onboarding Version: 1.0 ID: onboarding@mozilla.org Name: Pocket Version: 1.0.5 ID: firefox@getpocket.com Name: Presentation Version: 1.0.0 ID: presentation@mozilla.org Name: Shield Recipe Client Version: 83 ID: shield-recipe-client@mozilla.org Name: Web Compat Version: 1.1 ID: webcompat@mozilla.org Name: WebCompat Reporter Version: 1.0.0 ID: webcompat-reporter@mozilla.org Extensions ---------- Name: Firefox Multi-Account Containers Version: 5.0.1 Enabled: true ID: @testpilot-containers Name: Gecko Profiler Version: 0.18 Enabled: true ID: geckoprofiler@mozilla.com Name: MetaMask Version: 3.14.1 Enabled: true ID: webextension@metamask.io Name: Reddit Enhancement Suite Version: 5.10.3 Enabled: true ID: jid1-xUfzOsOFlzSOXg@jetpack Security Software ----------------- Type: Type: Type: Graphics -------- Features Compositing: OpenGL Asynchronous Pan/Zoom: wheel input enabled; scrollbar drag enabled; keyboard enabled; autoscroll enabled WebGL 1 Driver WSI Info: CGL WebGL 1 Driver Renderer: Intel Inc. -- Intel Iris Pro OpenGL Engine WebGL 1 Driver Version: 4.1 INTEL-10.25.17 WebGL 1 Driver Extensions: GL_ARB_blend_func_extended GL_ARB_draw_buffers_blend GL_ARB_draw_indirect GL_ARB_ES2_compatibility GL_ARB_explicit_attrib_location GL_ARB_gpu_shader_fp64 GL_ARB_gpu_shader5 GL_ARB_instanced_arrays GL_ARB_internalformat_query GL_ARB_occlusion_query2 GL_ARB_sample_shading GL_ARB_sampler_objects GL_ARB_separate_shader_objects GL_ARB_shader_bit_encoding GL_ARB_shader_subroutine GL_ARB_shading_language_include GL_ARB_tessellation_shader GL_ARB_texture_buffer_object_rgb32 GL_ARB_texture_cube_map_array GL_ARB_texture_gather GL_ARB_texture_query_lod GL_ARB_texture_rgb10_a2ui GL_ARB_texture_storage GL_ARB_texture_swizzle GL_ARB_timer_query GL_ARB_transform_feedback2 GL_ARB_transform_feedback3 GL_ARB_vertex_attrib_64bit GL_ARB_vertex_type_2_10_10_10_rev GL_ARB_viewport_array GL_EXT_debug_label GL_EXT_debug_marker GL_EXT_framebuffer_multisample_blit_scaled GL_EXT_texture_compression_s3tc GL_EXT_texture_filter_anisotropic GL_EXT_texture_sRGB_decode GL_APPLE_client_storage GL_APPLE_container_object_shareable GL_APPLE_flush_render GL_APPLE_object_purgeable GL_APPLE_rgb_422 GL_APPLE_row_bytes GL_APPLE_texture_range GL_ATI_texture_mirror_once GL_NV_texture_barrier WebGL 1 Extensions: ANGLE_instanced_arrays EXT_blend_minmax EXT_color_buffer_half_float EXT_frag_depth EXT_sRGB EXT_shader_texture_lod EXT_texture_filter_anisotropic EXT_disjoint_timer_query OES_element_index_uint OES_standard_derivatives OES_texture_float OES_texture_float_linear OES_texture_half_float OES_texture_half_float_linear OES_vertex_array_object WEBGL_color_buffer_float WEBGL_compressed_texture_s3tc WEBGL_compressed_texture_s3tc_srgb WEBGL_debug_renderer_info WEBGL_debug_shaders WEBGL_depth_texture WEBGL_draw_buffers WEBGL_lose_context WebGL 2 Driver WSI Info: CGL WebGL 2 Driver Renderer: Intel Inc. -- Intel Iris Pro OpenGL Engine WebGL 2 Driver Version: 4.1 INTEL-10.25.17 WebGL 2 Driver Extensions: GL_ARB_blend_func_extended GL_ARB_draw_buffers_blend GL_ARB_draw_indirect GL_ARB_ES2_compatibility GL_ARB_explicit_attrib_location GL_ARB_gpu_shader_fp64 GL_ARB_gpu_shader5 GL_ARB_instanced_arrays GL_ARB_internalformat_query GL_ARB_occlusion_query2 GL_ARB_sample_shading GL_ARB_sampler_objects GL_ARB_separate_shader_objects GL_ARB_shader_bit_encoding GL_ARB_shader_subroutine GL_ARB_shading_language_include GL_ARB_tessellation_shader GL_ARB_texture_buffer_object_rgb32 GL_ARB_texture_cube_map_array GL_ARB_texture_gather GL_ARB_texture_query_lod GL_ARB_texture_rgb10_a2ui GL_ARB_texture_storage GL_ARB_texture_swizzle GL_ARB_timer_query GL_ARB_transform_feedback2 GL_ARB_transform_feedback3 GL_ARB_vertex_attrib_64bit GL_ARB_vertex_type_2_10_10_10_rev GL_ARB_viewport_array GL_EXT_debug_label GL_EXT_debug_marker GL_EXT_framebuffer_multisample_blit_scaled GL_EXT_texture_compression_s3tc GL_EXT_texture_filter_anisotropic GL_EXT_texture_sRGB_decode GL_APPLE_client_storage GL_APPLE_container_object_shareable GL_APPLE_flush_render GL_APPLE_object_purgeable GL_APPLE_rgb_422 GL_APPLE_row_bytes GL_APPLE_texture_range GL_ATI_texture_mirror_once GL_NV_texture_barrier WebGL 2 Extensions: EXT_color_buffer_float EXT_texture_filter_anisotropic EXT_disjoint_timer_query OES_texture_float_linear WEBGL_compressed_texture_s3tc WEBGL_compressed_texture_s3tc_srgb WEBGL_debug_renderer_info WEBGL_debug_shaders WEBGL_lose_context Uses Tiling: true Off Main Thread Painting Enabled: true Off Main Thread Painting Worker Count: 3 GPU #1 Active: Yes Vendor ID: 0x8086 Device ID: 0x0d26 Diagnostics AzureCanvasAccelerated: 1 AzureCanvasBackend: skia AzureContentBackend: skia AzureFallbackCanvasBackend: none TileHeight: 1024 TileWidth: 1024 Decision Log WEBRENDER: opt-in by default: WebRender is an opt-in feature Media ----- Audio Backend: audiounit Max Channels: 2 Preferred Channel Layout: stereo Preferred Sample Rate: 44100 Output Devices Name: Group Internal Speakers: AppleHDAEngineOutput:1B,0,1,1:0 Line-out & Bluetoth: ~:AMS2_StackedOutput:0 Input Devices Name: Group Internal Microphone: AppleHDAEngineInput:1B,0,1,0:1 Important Modified Preferences ------------------------------ accessibility.typeaheadfind.flashBar: 0 browser.cache.disk.capacity: 358400 browser.cache.disk.filesystem_reported: 1 browser.cache.disk.hashstats_reported: 1 browser.cache.disk.smart_size.first_run: false browser.cache.disk.smart_size.use_old_max: false browser.cache.frecency_experiment: 4 browser.places.smartBookmarksVersion: 8 browser.search.useDBForOrder: true browser.sessionstore.upgradeBackup.latestBuildID: 20180205100240 browser.startup.homepage: about:home browser.startup.homepage_override.buildID: 20180205100240 browser.startup.homepage_override.mstone: 60.0a1 browser.tabs.remote.autostart.2: true browser.urlbar.lastSuggestionsPromptDate: 20171127 browser.urlbar.timesBeforeHidingSuggestionsHint: 0 browser.urlbar.usepreloadedtopurls.enabled: false dom.forms.autocomplete.formautofill: true dom.ipc.processCount.web: 4 dom.push.userAgentID: a18dbcf828ca4e7abaf1a3d1af1d8211 extensions.lastAppVersion: 60.0a1 font.internaluseonly.changed: true general.autoScroll: false media.gmp-gmpopenh264.abi: x86_64-gcc3 media.gmp-gmpopenh264.lastUpdate: 1513443366 media.gmp-gmpopenh264.version: 1.7.1 media.gmp-manager.buildID: 20180205100240 media.gmp-manager.lastCheck: 1517863669 media.gmp-widevinecdm.abi: x86_64-gcc3 media.gmp-widevinecdm.lastUpdate: 1511798211 media.gmp-widevinecdm.version: 1.4.8.1008 media.gmp.storage.version.observed: 1 mousewheel.with_alt.action: 1 mousewheel.with_control.action: 1 mousewheel.with_meta.action: 1 network.cookie.prefsMigrated: true network.predictor.cleaned-up: true places.database.lastMaintenance: 1517728396 places.history.expiration.transient_current_max_pages: 122539 plugin.disable_full_page_plugin_for_types: application/pdf print.printer__.print_bgcolor: false print.printer__.print_bgimages: false print.printer__.print_duplex: -437918235 print.printer__.print_edge_bottom: 0 print.printer__.print_edge_left: 0 print.printer__.print_edge_right: 0 print.printer__.print_edge_top: 0 print.printer__.print_evenpages: true print.printer__.print_footercenter: print.printer__.print_footerleft: &PT print.printer__.print_footerright: &D print.printer__.print_headercenter: print.printer__.print_headerleft: &T print.printer__.print_headerright: &U print.printer__.print_in_color: true print.printer__.print_margin_bottom: 0.5 print.printer__.print_margin_left: 0.5 print.printer__.print_margin_right: 0.5 print.printer__.print_margin_top: 0.5 print.printer__.print_oddpages: true print.printer__.print_orientation: 0 print.printer__.print_page_delay: 50 print.printer__.print_paper_data: 0 print.printer__.print_paper_height: 11.00 print.printer__.print_paper_name: na-letter print.printer__.print_paper_size_unit: 0 print.printer__.print_paper_width: 8.50 print.printer__.print_resolution: -437918235 print.printer__.print_reversed: false print.printer__.print_scaling: 1.00 print.printer__.print_shrink_to_fit: true print.printer__.print_to_file: false print.printer__.print_unwriteable_margin_bottom: 56 print.printer__.print_unwriteable_margin_left: 25 print.printer__.print_unwriteable_margin_right: 25 print.printer__.print_unwriteable_margin_top: 25 privacy.cpd.cookies: false privacy.cpd.downloads: false privacy.cpd.formdata: false privacy.cpd.history: false privacy.cpd.sessions: false privacy.sanitize.timeSpan: 0 privacy.userContext.extension: @testpilot-containers security.sandbox.content.tempDirSuffix: {c9e7ccd6-3765-5f40-88c3-3ad4f245b517} services.sync.declinedEngines: services.sync.engine.addresses.available: true services.sync.engine.bookmarks.validation.lastTime: 1517854767 services.sync.engine.creditcards.available: true services.sync.engine.prefs.modified: false services.sync.lastPing: 1517803536 services.sync.lastSync: Mon Feb 05 2018 22:48:53 GMT-0500 (-05) storage.vacuum.last.index: 1 storage.vacuum.last.places.sqlite: 1517116668 Important Locked Preferences ---------------------------- Places Database --------------- JavaScript ---------- Incremental GC: true Accessibility ------------- Activated: false Prevent Accessibility: 0 Library Versions ---------------- NSPR Expected minimum version: 4.18 Version in use: 4.18 NSS Expected minimum version: 3.36 Beta Version in use: 3.36 Beta NSSSMIME Expected minimum version: 3.36 Beta Version in use: 3.36 Beta NSSSSL Expected minimum version: 3.36 Beta Version in use: 3.36 Beta NSSUTIL Expected minimum version: 3.36 Beta Version in use: 3.36 Beta Experimental Features --------------------- Sandbox ------- Content Process Sandbox Level: 3 Effective Content Process Sandbox Level: 3 Internationalization & Localization ----------------------------------- Application Settings Requested Locales: ["en-US"] Available Locales: ["en-US"] App Locales: ["en-US"] Regional Preferences: ["en-US","en"] Default Locale: "en-US" Operating System System Locales: ["en-US","en"] Regional Preferences: ["en-US","en"] (In reply to Jean-Yves Avenard [:jya] from comment #5) > OP: please set back the resolution to the default.. does that help? I can't find a way to adjust the resolution. Here's the GitHub page of the player that site seems to be using, though: https://github.com/flowplayer/flowplayer
Flags: needinfo?(willharrisbraun)
(In reply to willharrisbraun from comment #7) > (In reply to Jean-Yves Avenard [:jya] from comment #5) > > OP: please set back the resolution to the default.. does that help? > > I can't find a way to adjust the resolution. Here's the GitHub page of the > player that site seems to be using, though: > https://github.com/flowplayer/flowplayer sorry, I should have been clearer. Reset the resolution on your mac in System Preferences -> Displays and set Resolution to "Default for display" (I'm assuming you had it set at a different value)
Component: Audio/Video → Audio/Video: Playback
> (In reply to Jean-Yves Avenard [:jya] from comment #5) > Reset the resolution on your mac in System Preferences -> Displays and set > Resolution to "Default for display" (I'm assuming you had it set at a > different value) Nope it's at "Default for display."
Priority: -- → P3
Hi Ralph and everyone, I would like to volunteer help provide any debugging information you need about this bug. Let me know what I can do to help! I think this bug should have a higher priority, as it is affecting the perception of the quantum release on the mac platform. Video is one of the most important features on the modern web, and comparing Firefox to chrome when it comes to rendering video on a mac is absolutely horrendous. I started using Firefox again after a long hiatus due to the good press the Quantum release got. But as it stands right now, I always switch to chrome when I want to watch video. I was contemplating switching back to Chrome because of this performance issue, but decided to try to help solve it instead, as I think it is crucial that a good open source browser is available for the mac as well. We need our privacy and an open web. My experience of the video rendering issue: The same video rendered on chrome (on the same mac) uses maybe 30% of the processor (spikes at 35%), in Firefox it uses about 40%-90% of the processor. The difference on a macbook pro is that cooling fans start whirring on Firefox, so the issue is really noticable for the end user, affecting the perception of the quantum release. Let me know what I can do to help!
Severity: normal → S3
You need to log in before you can comment on or make changes to this bug.