List whether or not we're treating a machine as low-end hardware in about:support

RESOLVED FIXED in Firefox 66

Status

()

P2
normal
RESOLVED FIXED
3 months ago
2 months ago

People

(Reporter: Gijs, Assigned: Gijs)

Tracking

(Blocks: 1 bug)

Trunk
mozilla66
Points:
---
Dependency tree / graph

Firefox Tracking Flags

(firefox66 fixed)

Details

Attachments

(2 attachments)

Comment hidden (empty)
(Assignee)

Updated

3 months ago
Component: General → General
Product: Firefox → Toolkit
Might also be good to list it in the telemetry environment? That way gfx telemetry-inspecting studies can filter them out.

https://searchfox.org/mozilla-central/rev/13788edbabb04d004e4a1ceff41d4de68a8320a2/toolkit/components/telemetry/app/TelemetryEnvironment.jsm#183
(Assignee)

Comment 2

3 months ago
(In reply to Kartikaya Gupta (email:kats@mozilla.com) from comment #1)
> Might also be good to list it in the telemetry environment? That way gfx
> telemetry-inspecting studies can filter them out.
> 
> https://searchfox.org/mozilla-central/rev/
> 13788edbabb04d004e4a1ceff41d4de68a8320a2/toolkit/components/telemetry/app/
> TelemetryEnvironment.jsm#183

Hm, well, the telemetry env already has cpu core / speed info so in principle we can already do that, though it'd misclassify user opt-outs / opt-ins (from about:config) - I'd expect those to be rare, though... Anyway, it doesn't hurt adding a bool there, too, I guess.
(Assignee)

Comment 3

3 months ago
Going to wait until bug 1507595 lands (should be within the next week or 2) in order to avoid make-work here to convert the new l10n stuff to fluent, as this isn't urgent (66 doesn't branch until end of Jan, so we have ~5 weeks anyway).
Depends on: 1507595

Comment 5

2 months ago
Pushed by gijskruitbosch@gmail.com:
https://hg.mozilla.org/integration/autoland/rev/b776171d854c
show frame rate and whether we're on a low end device in about:support, r=kats,jaws,flod

Backed out changeset b776171d854c (Bug 1515103) for browser_Troubleshoot.js failures.

Push with failures: https://treeherder.mozilla.org/#/jobs?repo=autoland&selectedJob=220398338&searchStr=bc&revision=b776171d854c35104b3ba19f2beb55f484ddf0c1

Backout link: https://hg.mozilla.org/integration/autoland/rev/837890ad49682f6fe582c748f3e5ba79c387d0fd

Failure log: https://treeherder.mozilla.org/logviewer.html#/jobs?job_id=220398338&repo=autoland&lineNumber=7859

12:14:16 INFO - TEST-START | toolkit/modules/tests/browser/browser_Troubleshoot.js
12:14:16 INFO - GECKO(1337) | Can't find symbol 'GetGraphicsResetStatus'.
12:14:16 INFO - GECKO(1337) | WebGL(0x13642c800)::ForceLoseContext
12:14:16 INFO - GECKO(1337) | Can't find symbol 'GetGraphicsResetStatus'.
12:14:16 INFO - GECKO(1337) | WebGL(0x13642d800)::ForceLoseContext
12:14:16 INFO - TEST-INFO | started process screencapture
12:14:16 INFO - TEST-INFO | screencapture: exit 0
12:14:16 INFO - TEST-UNEXPECTED-FAIL | toolkit/modules/tests/browser/browser_Troubleshoot.js | Schema mismatch, Error: Validation error: Object has property lowEndMachine not in schema: object={"numTotalWindows":2,"numAcceleratedWindows":2,"windowLayerManagerType":"OpenGL","windowLayerManagerRemote":true,"windowUsingAdvancedLayers":false,"adapterDescription":"","adapterVendorID":"0x8086","adapterDeviceID":"0x0a2e","adapterRAM":"","adapterDrivers":"","driverVersion":"","driverDate":"","usesTiling":true,"contentUsesTiling":true,"offMainThreadPaintEnabled":true,"offMainThreadPaintWorkerCount":3,"lowEndMachine":false,"targetFrameRate":60,"webgl1Renderer":"Intel Inc. -- Intel Iris OpenGL Engine","webgl1Version":"4.1 INTEL-10.6.33","webgl1DriverExtensions":"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","webgl1Extensions":"ANGLE_instanced_arrays EXT_blend_minmax EXT_color_buffer_half_float EXT_texture_compression_rgtc 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","webgl1WSIInfo":"CGL","webgl2Renderer":"Intel Inc. -- Intel Iris OpenGL Engine","webgl2Version":"4.1 INTEL-10.6.33","webgl2DriverExtensions":"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","webgl2Extensions":"EXT_color_buffer_float EXT_texture_compression_rgtc 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","webgl2WSIInfo":"CGL","info":{"AzureCanvasBackend":"skia","AzureFallbackCanvasBackend":"none","AzureContentBackend":"skia","AzureCanvasAccelerated":0,"ApzWheelInput":1,"ApzTouchInput":1,"ApzDragInput":1,"ApzKeyboardInput":1,"ApzAutoscrollInput":1,"TileHeight":512,"TileWidth":512},"featureLog":{"features":[{"name":"HW_COMPOSITING","description":"Compositing","status":"available","log":[{"type":"default","status":"available"}]},{"name":"OPENGL_COMPOSITING","description":"OpenGL Compositing","status":"available","log":[{"type":"default","status":"available"}]},{"name":"WEBRENDER","description":"WebRender","status":"opt-in","log":[{"type":"default","status":"opt-in","message":"WebRender is an opt-in feature"}]},{"name":"WEBRENDER_QUALIFIED","description":"WebRender qualified","status":"blocked","log":[{"type":"default","status":"available"},{"type":"env","status":"blocked","message":"No qualified hardware"}]},{"name":"OMTP","description":"Off Main Thread Painting","status":"available","log":[{"type":"default","status":"available"}]}],"fallbacks":[]},"crashGuards":[]}, schema={"required":true,"type":"object","properties":{"numTotalWindows":{"required":true,"type":"number"},"numAcceleratedWindows":{"required":true,"type":"number"},"windowLayerManagerType":{"type":"string"},"windowLayerManagerRemote":{"type":"boolean"},"windowUsingAdvancedLayers":{"type":"boolean"},"numAcceleratedWindowsMessage":{"type":"object","properties":{"key":{"required":true,"type":"string"},"args":{"required":false,"type":"object"}}},"adapterDescription":{"type":"string"},"adapterVendorID":{"type":"string"},"adapterDeviceID":{"type":"string"},"adapterSubsysID":{"type":"string"},"adapterRAM":{"type":"string"},"adapterDrivers":{"type":"string"},"driverVersion":{"type":"string"},"driverDate":{"type":"string"},"adapterDescription2":{"type":"string"},"adapterVendorID2":{"type":"string"},"adapterDeviceID2":{"type":"string"},"adapterSubsysID2":{"type":"string"},"adapterRAM2":{"type":"string"},"adapterDrivers2":{"type":"string"},"driverVersion2":{"type":"string"},"driverDate2":{"type":"string"},"isGPU2Active":{"type":"boolean"},"direct2DEnabled":{"type":"boolean"},"directWriteEnabled":{"type":"boolean"},"directWriteVersion":{"type":"string"},"usesTiling":{"type":"boolean"},"contentUsesTiling":{"type":"boolean"},"offMainThreadPaintEnabled":{"type":"boolean"},"offMainThreadPaintWorkerCount":{"type":"number"},"clearTypeParameters":{"type":"string"},"webgl1Renderer":{"type":"string"},"webgl1Version":{"type":"string"},"webgl1DriverExtensions":{"type":"string"},"webgl1Extensions":{"type":"string"},"webgl1WSIInfo":{"type":"string"},"webgl2Renderer":{"type":"string"},"webgl2Version":{"type":"string"},"webgl2DriverExtensions":{"type":"string"},"webgl2Extensions":{"type":"string"},"webgl2WSIInfo":{"type":"string"},"info":{"type":"object"},"failures":{"type":"object","properties":{"key":{"required":true,"type":"string"},"args":{"required":false,"type":"object"}}},"indices":{"type":"array","items":{"type":"number"}},"featureLog":{"type":"object"},"crashGuards":{"type":"array"},"direct2DEnabledMessage":{"type":"object","properties":{"key":{"required":true,"type":"string"},"args":{"required":false,"type":"object"}}}}} -
12:14:16 INFO - Stack trace:
12:14:16 INFO - chrome://mochikit/content/browser-test.js:test_ok:1305
12:14:16 INFO - chrome://mochitests/content/browser/toolkit/modules/tests/browser/browser_Troubleshoot.js:snapshotSchema/<:39
12:14:16 INFO - TEST-PASS | toolkit/modules/tests/browser/browser_Troubleshoot.js | The pref should be set: javascript.troubleshoot -
12:14:16 INFO - TEST-PASS | toolkit/modules/tests/browser/browser_Troubleshoot.js | The pref should be set: troubleshoot.foo -
12:14:16 INFO - TEST-PASS | toolkit/modules/tests/browser/browser_Troubleshoot.js | The pref should be set: javascript.print_to_filename -
12:14:16 INFO - TEST-PASS | toolkit/modules/tests/browser/browser_Troubleshoot.js | The pref should be set: network.proxy.troubleshoot -
12:14:16 INFO - GECKO(1337) | Can't find symbol 'GetGraphicsResetStatus'.
12:14:16 INFO - GECKO(1337) | WebGL(0x12ccb3800)::ForceLoseContext
12:14:16 INFO - GECKO(1337) | Can't find symbol 'GetGraphicsResetStatus'.
12:14:16 INFO - GECKO(1337) | WebGL(0x136430800)::ForceLoseContext
12:14:16 INFO - TEST-PASS | toolkit/modules/tests/browser/browser_Troubleshoot.js | The pref should be present because it's whitelisted but not blacklisted. -
12:14:16 INFO - TEST-PASS | toolkit/modules/tests/browser/browser_Troubleshoot.js | The pref should be absent because it's not in the whitelist. -
12:14:16 INFO - TEST-PASS | toolkit/modules/tests/browser/browser_Troubleshoot.js | The pref should be absent because it's blacklisted. -
12:14:16 INFO - TEST-PASS | toolkit/modules/tests/browser/browser_Troubleshoot.js | The pref should be absent because it's blacklisted. -
12:14:17 INFO - GECKO(1337) | Can't find symbol 'GetGraphicsResetStatus'.
12:14:17 INFO - GECKO(1337) | WebGL(0x136430000)::ForceLoseContext
12:14:17 INFO - GECKO(1337) | Can't find symbol 'GetGraphicsResetStatus'.
12:14:17 INFO - GECKO(1337) | WebGL(0x136431800)::ForceLoseContext
12:14:17 INFO - TEST-PASS | toolkit/modules/tests/browser/browser_Troubleshoot.js | The pref should have correct Unicode value. -
12:14:17 INFO - GECKO(1337) | MEMORY STAT | vsize 4452MB | residentFast 337MB | heapAllocated 139MB
12:14:17 INFO - TEST-OK | toolkit/modules/tests/browser/browser_Troubleshoot.js | took 440ms

Flags: needinfo?(gijskruitbosch+bugs)
(Assignee)

Comment 7

2 months ago
(Assignee)

Comment 8

2 months ago

From Phab:

:chutten said:

Not sure if you have to change the schemas so that pings still validate (check https://github.com/mozilla-services/mozilla-pipeline-schemas and/or have a chat with :mreid).

I think I'm OK, but I'd be more sure if :mreid could confirm.

Flags: needinfo?(gijskruitbosch+bugs) → needinfo?(mreid)
(Assignee)

Comment 10

2 months ago

Request for data collection review form

  1. What questions will you answer with this data?

Whether the low-end device adaptation is effective at improving Firefox performance and/or (as a result) user retention.

  1. Why does Mozilla need to answer these questions? Are there benefits for users? Do we need this information to address product or business requirements?
  • Establish baselines or measure changes in product or platform quality or performance.

  • Provide information essential for advancing a business objective such as supporting OKRs.

  • Determine whether a product or platform change has an effect on user or browser behavior.

^^ All of the example responses apply.

  1. What alternative methods did you consider to answer these questions? Why were they not sufficient?

The existing telemetry could be checked to see if the user's machine specs fit the criteria, but this would cause false positives/negatives if people change any preferences, and would be more difficult to check. This also ensures that if/when we run a shield study, there's a single thing to check between cohorts, also to observe if anyone explicitly opted out/in (via about:config, unless we create a more visible point and/or via resistFingerprinting support)

  1. Can current instrumentation answer these questions?
    Not realistically (ie not without access to all user prefs and a bunch of logic in queries that will make them harder to get right).

  2. List all proposed measurements and indicate the category of data collection for each measurement, using the Firefox data collection categories on the Mozilla wiki.

A bool in the environment that captures whether Firefox is treating the machine as low-spec and is adapting various perf-sensitive thresholds/constants accordingly. This is category 1 data, in that we're measuring the technical result of the machine perf and any user choices relating to that machine perf (just like, for instance, "is webrender enabled").

  1. How long will this data be collected? Choose one of the following:

Indefinitely, because that's the only way to collect env data. I do not intend to monitor the data itself specifically and continuously, but if you need to put someone's name down it can be mine.

  1. What populations will you measure?

All countries/locales/channels, though the feature itself is currently behind EARLY_BETA, so it'll basically be false everywhere on release / late beta.

  1. If this data collection is default on, what is the opt-out mechanism for users?

General telemetry measures.

  1. Please provide a general description of how you will analyze this data.

custom sql and/or redash/python queries, plus sanity checks using more high-level tools.

  1. Where do you intend to share the results of your analysis?

public blog / mailing lists (in anon + collective form, of course).

Flags: needinfo?(chutten)

(In reply to :Gijs (he/him) from comment #8)

From Phab:

:chutten said:

Not sure if you have to change the schemas so that pings still validate (check https://github.com/mozilla-services/mozilla-pipeline-schemas and/or have a chat with :mreid).

I think I'm OK, but I'd be more sure if :mreid could confirm.

Looks good, adding this new field will not cause existing schema validation to fail. We should add this field to the schema though, I've submitted a PR here: https://github.com/mozilla-services/mozilla-pipeline-schemas/pull/241

Flags: needinfo?(mreid)
Priority: -- → P2

Preliminary notes:

In future please attach the review form as an attachment to the bug to make it easier to track review flags and find Data Reviews in the future. BMO at this time will treat markdown attachments as plain text, but I'm told this will change in the near term.

DATA COLLECTION REVIEW RESPONSE:

Is there or will there be documentation that describes the schema for the ultimate data set available publicly, complete and accurate?

Yes. This collection is part of the Telemetry Environment so is documented in the in-tree documentation.

Is there a control mechanism that allows the user to turn the data collection on and off?

Yes. This collection is Telemetry so can be controlled through Firefox's Preferences.

If the request is for permanent data collection, is there someone who will monitor the data over time?

Yes. :Gijs is responsible for this metric.

Using the category system of data types on the Mozilla wiki, what collection type of data do the requested measurements fall under?

Category 1, Technical.

Is the data collection request for default-on or default-off?

Default on, all channels (though locked to false for late beta and release)

Does the instrumentation include the addition of any new identifiers?

No.

Is the data collection covered by the existing Firefox privacy notice?

Yes.

Does there need to be a check-in in the future to determine whether to renew the data?

No. This collection is permanent.


Result: datareview+

Flags: needinfo?(chutten)
Blocks: 594464

Comment 13

2 months ago
Pushed by gijskruitbosch@gmail.com:
https://hg.mozilla.org/integration/autoland/rev/0ea91341d00e
show frame rate and whether we're on a low end device in about:support, r=kats,jaws,flod
https://hg.mozilla.org/integration/autoland/rev/d935455eb641
add low end machine information to graphics section of telemetry environment, r=chutten

Comment 14

2 months ago
bugherder
Status: ASSIGNED → RESOLVED
Last Resolved: 2 months ago
status-firefox66: affected → fixed
Resolution: --- → FIXED
Target Milestone: --- → mozilla66
You need to log in before you can comment on or make changes to this bug.