aboutsummaryrefslogtreecommitdiff
path: root/files/ja/mozilla/performance
diff options
context:
space:
mode:
Diffstat (limited to 'files/ja/mozilla/performance')
-rw-r--r--files/ja/mozilla/performance/adding_a_new_telemetry_probe/index.html31
-rw-r--r--files/ja/mozilla/performance/gecko_profiler_faq/index.html415
-rw-r--r--files/ja/mozilla/performance/index.html143
-rw-r--r--files/ja/mozilla/performance/profiling_with_the_built-in_profiler/index.html360
-rw-r--r--files/ja/mozilla/performance/reporting_a_performance_problem/index.html62
-rw-r--r--files/ja/mozilla/performance/scroll-linked_effects/index.html110
6 files changed, 0 insertions, 1121 deletions
diff --git a/files/ja/mozilla/performance/adding_a_new_telemetry_probe/index.html b/files/ja/mozilla/performance/adding_a_new_telemetry_probe/index.html
deleted file mode 100644
index 8b7506683f..0000000000
--- a/files/ja/mozilla/performance/adding_a_new_telemetry_probe/index.html
+++ /dev/null
@@ -1,31 +0,0 @@
----
-title: Adding a new Telemetry probe
-slug: Mozilla/Performance/Adding_a_new_Telemetry_probe
-tags:
- - data
- - ガイド
- - テレメトリ
-translation_of: Mozilla/Performance/Adding_a_new_Telemetry_probe
----
-<p>Firefox では、テレメトリシステムが Firefox のパフォーマンス、ハードウェア、使用状況、カスタマイズのさまざまな測定値を収集し、Mozilla に送信します。 この記事では、ドキュメントへのポインタを提供します。</p>
-
-<div class="note">
-<p><strong>メモ: </strong>Firefoxのすべての新しいデータコレクションには、データコレクションピアからの<a href="https://wiki.mozilla.org/Firefox/Data_Collection#Requesting_Approval">データコレクションレビュー</a>が必要になりました。データピアの1つに feedback? フラグを設定するだけです。1営業日以内に返信を試みます。</p>
-</div>
-
-<h2 id="はじめに">はじめに</h2>
-
-<p>新しい Telemetry プローブの追加は、<a href="https://firefox-source-docs.mozilla.org/toolkit/components/telemetry/telemetry/start/adding-a-new-probe.html">Mozilla Source Tree のドキュメント</a>に記載されています。</p>
-
-<p>その他のテレメトリツールとドキュメントを見つけるには、<a href="https://telemetry.mozilla.org/">テレメトリポータル</a>にアクセスしてください。</p>
-
-<h2 id="助けを得る">助けを得る</h2>
-
-<p>テレメトリチームが問題の解決を支援します。私たちに接触することができます:</p>
-
-<ul>
- <li>IRC の <em>#telemetry</em></li>
- <li>Slack の <em>#fx-metrics</em></li>
- <li>the <a href="https://mail.mozilla.org/listinfo/fx-data-dev">fx-data-dev mailing list</a></li>
- <li>flags for <a href="https://wiki.mozilla.org/Modules/Toolkit#Telemetry">one of the peers</a> on Bugzilla or direct e-mail</li>
-</ul>
diff --git a/files/ja/mozilla/performance/gecko_profiler_faq/index.html b/files/ja/mozilla/performance/gecko_profiler_faq/index.html
deleted file mode 100644
index 5648673301..0000000000
--- a/files/ja/mozilla/performance/gecko_profiler_faq/index.html
+++ /dev/null
@@ -1,415 +0,0 @@
----
-title: Gecko Profiler のFAQ
-slug: Mozilla/Performance/Gecko_Profiler_FAQ
-translation_of: Mozilla/Performance/Gecko_Profiler_FAQ
----
-<p>This documents lists a number of questions asked by people in preparation for a tutorial session about the <a href="https://developer.mozilla.org/en-US/docs/Mozilla/Performance/Profiling_with_the_Built-in_Profiler">Gecko Profiler</a>.  mstange and ehsan tried to respond to some of the questions in advance in writing, and you can find the answers below.</p>
-
-<ul id="docs-internal-guid-81b866d2-12e9-cfc9-07fb-bc00c016f7e3" style="margin-top: 0pt; margin-bottom: 0pt;">
- <li dir="ltr" style="list-style-type: disc; font-size: 11pt; font-family: Arial; color: #000000; background-color: transparent; font-weight: 400; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline;">
- <p dir="ltr" style="line-height: 1.38; margin-top: 0pt; margin-bottom: 0pt;"><span style="background-color: transparent; color: #000000; font-family: Arial; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline;">Is it possible to locate hot spots occurring within a single function?</span></p>
-
- <ul style="margin-top: 0pt; margin-bottom: 0pt;">
- <li dir="ltr" style="list-style-type: circle; font-size: 11pt; font-family: Arial; color: #000000; background-color: transparent; font-weight: 400; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline;">
- <p dir="ltr" style="line-height: 1.38; margin-top: 0pt; margin-bottom: 0pt;"><span style="background-color: transparent; color: #000000; font-family: Arial; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline;">The Gecko Profiler currently doesn’t have the ability to show you information about line numbers, neither for JS code nor for native code.</span></p>
- </li>
- <li dir="ltr" style="list-style-type: circle; font-size: 11pt; font-family: Arial; color: #000000; background-color: transparent; font-weight: 400; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline;">
- <p dir="ltr" style="line-height: 1.38; margin-top: 0pt; margin-bottom: 0pt;"><span style="background-color: transparent; color: #000000; font-family: Arial; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline;">For JS code, the profiler platform doesn’t capture any information about lines. It only knows what function was executed and what line this function starts at.</span></p>
- </li>
- <li dir="ltr" style="list-style-type: circle; font-size: 11pt; font-family: Arial; color: #000000; background-color: transparent; font-weight: 400; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline;">
- <p dir="ltr" style="line-height: 1.38; margin-top: 0pt; margin-bottom: 0pt;"><span style="background-color: transparent; color: #000000; font-family: Arial; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline;">For native code, the profiler captures the necessary information but doesn’t have a way to display it.</span></p>
- </li>
- <li dir="ltr" style="list-style-type: circle; font-size: 11pt; font-family: Arial; color: #000000; background-color: transparent; font-weight: 400; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline;">
- <p dir="ltr" style="line-height: 1.38; margin-top: 0pt; margin-bottom: 0pt;"><span style="background-color: transparent; color: #000000; font-family: Arial; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline;">Similarly it also can’t show you instruction level information about where each sample was captured (this is why there is no support for line-level sampling for native code either.)  At this point the granularity of each sample it displays is a native function.</span></p>
- </li>
- <li dir="ltr" style="list-style-type: circle; font-size: 11pt; font-family: Arial; color: #000000; background-color: transparent; font-weight: 400; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline;">
- <p dir="ltr" style="line-height: 1.38; margin-top: 0pt; margin-bottom: 0pt;"><span style="background-color: transparent; color: #000000; font-family: Arial; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline;">Therefore the Gecko Profiler is not a suitable tool for finding hotspots within a single function.  For this purpose you should try to use a native profiler on your platform of choice (for example xperf/vtune on Windows, Instruments on OSX, and perf/Zoom on Linux.)</span></p>
- </li>
- <li dir="ltr" style="list-style-type: circle; font-size: 11pt; font-family: Arial; color: #000000; background-color: transparent; font-weight: 400; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline;">
- <p dir="ltr" style="line-height: 1.38; margin-top: 0pt; margin-bottom: 0pt;"><span style="background-color: transparent; color: #000000; font-family: Arial; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline;">One workaround is to break the hot function into several explicitly-non-inline helpers, recompile, and re-profile. This can change some performance characteristics, but is a decent way to get a sense of which parts of a large function are expensive.</span></p>
- </li>
- </ul>
- </li>
- <li dir="ltr" style="list-style-type: disc; font-size: 11pt; font-family: Arial; color: #000000; background-color: transparent; font-weight: 400; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline;">
- <p dir="ltr" style="line-height: 1.38; margin-top: 0pt; margin-bottom: 0pt;"><span style="background-color: transparent; color: #000000; font-family: Arial; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline;">How to profile startup code that regresses just a little (&lt;10-15ms ts_paint/tpaint)</span></p>
-
- <ul style="margin-top: 0pt; margin-bottom: 0pt;">
- <li dir="ltr" style="list-style-type: circle; font-size: 11pt; font-family: Arial; color: #000000; background-color: transparent; font-weight: 400; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline;">
- <p dir="ltr" style="line-height: 1.38; margin-top: 0pt; margin-bottom: 0pt;"><span style="background-color: transparent; color: #000000; font-family: Arial; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline;">[mstange] We currently don’t have a good way to do that. You can write your own tools to assist you in this process, though. I did something like this a few years ago with the old profiler and I think something similar would work here:</span></p>
- </li>
- <li dir="ltr" style="list-style-type: circle; font-size: 11pt; font-family: Arial; color: #000000; background-color: transparent; font-weight: 400; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline;">
- <p dir="ltr" style="line-height: 1.38; margin-top: 0pt; margin-bottom: 0pt;"><span style="background-color: transparent; color: #000000; font-family: Arial; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline;">I think there are three main challenges here. You need deterministic profiles that can be compared meaningfully, you need to gather enough data / samples, and you need a way to compare profiles.</span></p>
-
- <ul style="margin-top: 0pt; margin-bottom: 0pt;">
- <li dir="ltr" style="list-style-type: square; font-size: 11pt; font-family: Arial; color: #000000; background-color: transparent; font-weight: 400; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline;">
- <p dir="ltr" style="line-height: 1.38; margin-top: 0pt; margin-bottom: 0pt;"><span style="background-color: transparent; color: #000000; font-family: Arial; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline;">To increase determinism, you really want an automated way of gathering the data. And you’ll want to make sure the profiles only contain data for the time range you’re interested in. To stop the profiler from gathering more samples after the “startup end” marker that you’re interested in, you can call Services.profiler.pause(); or you can insert a marker with a special string and then write a script that filters out all samples that were gathered after your marker.</span></p>
- </li>
- <li dir="ltr" style="list-style-type: square; font-size: 11pt; font-family: Arial; color: #000000; background-color: transparent; font-weight: 400; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline;">
- <p dir="ltr" style="line-height: 1.38; margin-top: 0pt; margin-bottom: 0pt;"><span style="background-color: transparent; color: #000000; font-family: Arial; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline;">To increase the amount of data, you should run your automated gathering procedure many times, and then combine multiple profiles into one. We don’t have a script that combines profiles, but I can help you write one if you’re interested. In the end, you should have one big “before” profile and one big “after” profile.</span></p>
- </li>
- <li dir="ltr" style="list-style-type: square; font-size: 11pt; font-family: Arial; color: #000000; background-color: transparent; font-weight: 400; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline;">
- <p dir="ltr" style="line-height: 1.38; margin-top: 0pt; margin-bottom: 0pt;"><span style="background-color: transparent; color: #000000; font-family: Arial; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline;">Profile comparison is tricky. The only way that I’ve tried before is to use a “difference calltree”: In the regular call tree, each node of the calltree is assigned a weight which is just the number of samples that were under this call stack. In a difference call tree, each node’s weight instead is computed as &lt;number of samples under this stack in the “after” profile&gt; minus &lt;number of samples under this stack in the “before” profile&gt;. That tree is then displayed in the usual way, with weights in decreasing order from top to bottom. Then the call stacks whose cost increased the most in the “after” profile will be at the top, and those are the ones you usually want to look at if you caused a regression.</span><br>
- <span style="background-color: transparent; color: #000000; font-family: Arial; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline;">In this view, the timestamps of individual samples / stacks will not be meaningful.</span><br>
- <span style="background-color: transparent; color: #000000; font-family: Arial; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline;">Perf.html does not have a comparison view at the moment. I can help you add one, though.</span></p>
- </li>
- </ul>
- </li>
- <li dir="ltr" style="list-style-type: circle; font-size: 11pt; font-family: Arial; color: #000000; background-color: transparent; font-weight: 400; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline;">
- <p dir="ltr" style="line-height: 1.38; margin-top: 0pt; margin-bottom: 0pt;"><span style="background-color: transparent; color: #000000; font-family: Arial; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline;">There is </span><a href="https://github.com/devtools-html/perf.html/blob/master/docs/gecko-profile-format.md" style="text-decoration: none;"><u>documentation for the Gecko profile format</u></a><span style="background-color: transparent; color: #000000; font-family: Arial; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline;">.</span></p>
- </li>
- </ul>
- </li>
- <li dir="ltr" style="list-style-type: disc; font-size: 11pt; font-family: Arial; color: #000000; background-color: transparent; font-weight: 400; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline;">
- <p dir="ltr" style="line-height: 1.38; margin-top: 0pt; margin-bottom: 0pt;"><span style="background-color: transparent; color: #000000; font-family: Arial; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline;">Is it worth slowing down CPU to increase the profiler resolution?</span></p>
-
- <ul style="margin-top: 0pt; margin-bottom: 0pt;">
- <li dir="ltr" style="list-style-type: circle; font-size: 11pt; font-family: Arial; color: #000000; background-color: transparent; font-weight: 400; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline;">
- <p dir="ltr" style="line-height: 1.38; margin-top: 0pt; margin-bottom: 0pt;"><span style="background-color: transparent; color: #000000; font-family: Arial; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline;">It depends on what you are trying to profile to some extent.  Usually you should be really careful when changing the characteristics of the environment that you are trying to measure to avoid measuring the wrong thing.</span></p>
- </li>
- <li dir="ltr" style="list-style-type: circle; font-size: 11pt; font-family: Arial; color: #000000; background-color: transparent; font-weight: 400; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline;">
- <p dir="ltr" style="line-height: 1.38; margin-top: 0pt; margin-bottom: 0pt;"><span style="background-color: transparent; color: #000000; font-family: Arial; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline;">If the issue you are trying to avoid is not profiling on fast machines that Mozilla developers typically use to build Firefox on, a better solution may be using a less high-end machine that actually has lower spec’d hardware instead of artificially slowing down just the CPU.</span></p>
- </li>
- <li dir="ltr" style="list-style-type: circle; font-size: 11pt; font-family: Arial; color: #000000; background-color: transparent; font-weight: 400; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline;">
- <p dir="ltr" style="line-height: 1.38; margin-top: 0pt; margin-bottom: 0pt;"><span style="background-color: transparent; color: #000000; font-family: Arial; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline;">Another approach to get more precision is also raising the sampling frequency to sub-millisecond ranges (it won’t work on Windows.)  High frequency sampling may also be an area where native profilers are a useful alternative tool to try.</span></p>
- </li>
- </ul>
- </li>
- <li dir="ltr" style="list-style-type: disc; font-size: 11pt; font-family: Arial; color: #000000; background-color: transparent; font-weight: 400; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline;">
- <p dir="ltr" style="line-height: 1.38; margin-top: 0pt; margin-bottom: 0pt;"><span style="background-color: transparent; color: #000000; font-family: Arial; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline;">How do we profile "leaks" that show up after running Firefox for &gt; 40 mins?</span></p>
-
- <ul style="margin-top: 0pt; margin-bottom: 0pt;">
- <li dir="ltr" style="list-style-type: circle; font-size: 11pt; font-family: Arial; color: #000000; background-color: transparent; font-weight: 400; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline;">
- <p dir="ltr" style="line-height: 1.38; margin-top: 0pt; margin-bottom: 0pt;"><span style="background-color: transparent; color: #000000; font-family: Arial; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline;">The Gecko Profiler has been designed specifically for the use case of having it run always in the background, and it’s pretty good at that!  It is quite reasonable to actually run the browser for 40 minutes and once the said leaks have happened capture the profiles and study what went wrong.</span></p>
- </li>
- <li dir="ltr" style="list-style-type: circle; font-size: 11pt; font-family: Arial; color: #000000; background-color: transparent; font-weight: 400; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline;">
- <p dir="ltr" style="line-height: 1.38; margin-top: 0pt; margin-bottom: 0pt;"><span style="background-color: transparent; color: #000000; font-family: Arial; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline;">[ehsan] I have been profiling my real browser usage for months now, and so can you.  :-)</span></p>
- </li>
- <li dir="ltr" style="list-style-type: circle; font-size: 11pt; font-family: Arial; color: #000000; background-color: transparent; font-weight: 400; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline;">
- <p dir="ltr" style="line-height: 1.38; margin-top: 0pt; margin-bottom: 0pt;"><span style="background-color: transparent; color: #000000; font-family: Arial; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline;">However, if it’s really just “leaks” that are the problem, it’s possible that those profiles only show you that we spend a lot of time in GC / CC. In that case, the Gecko Profiler is the wrong tool to debug this. Even about:memory would be more useful.</span></p>
- </li>
- </ul>
- </li>
- <li dir="ltr" style="list-style-type: disc; font-size: 11pt; font-family: Arial; color: #000000; background-color: transparent; font-weight: 400; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline;">
- <p dir="ltr" style="line-height: 1.38; margin-top: 0pt; margin-bottom: 0pt;"><span style="background-color: transparent; color: #000000; font-family: Arial; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline;">Overview of the changes in the last (year?) to Cleopatra/etc</span></p>
-
- <ul style="margin-top: 0pt; margin-bottom: 0pt;">
- <li dir="ltr" style="list-style-type: circle; font-size: 11pt; font-family: Arial; color: #000000; background-color: transparent; font-weight: 400; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline;">
- <p dir="ltr" style="line-height: 1.38; margin-top: 0pt; margin-bottom: 0pt;"><span style="background-color: transparent; color: #000000; font-family: Arial; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline;">Faster, hopefully more reliable</span></p>
- </li>
- <li dir="ltr" style="list-style-type: circle; font-size: 11pt; font-family: Arial; color: #000000; background-color: transparent; font-weight: 400; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline;">
- <p dir="ltr" style="line-height: 1.38; margin-top: 0pt; margin-bottom: 0pt;"><span style="background-color: transparent; color: #000000; font-family: Arial; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline;">Has a Timeline tab</span></p>
- </li>
- <li dir="ltr" style="list-style-type: circle; font-size: 11pt; font-family: Arial; color: #000000; background-color: transparent; font-weight: 400; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline;">
- <p dir="ltr" style="line-height: 1.38; margin-top: 0pt; margin-bottom: 0pt;"><span style="background-color: transparent; color: #000000; font-family: Arial; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline;">Lets you hide threads with a context menu</span></p>
- </li>
- <li dir="ltr" style="list-style-type: circle; font-size: 11pt; font-family: Arial; color: #000000; background-color: transparent; font-weight: 400; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline;">
- <p dir="ltr" style="line-height: 1.38; margin-top: 0pt; margin-bottom: 0pt;"><span style="background-color: transparent; color: #000000; font-family: Arial; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline;">Supports symbolication for local builds on Windows if you run “mach buildsymbols” first</span></p>
- </li>
- </ul>
- </li>
- <li dir="ltr" style="list-style-type: disc; font-size: 11pt; font-family: Arial; color: #000000; background-color: transparent; font-weight: 400; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline;">
- <p dir="ltr" style="line-height: 1.38; margin-top: 0pt; margin-bottom: 0pt;"><span style="background-color: transparent; color: #000000; font-family: Arial; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline;">Profiling non-nsThreads?</span></p>
-
- <ul style="margin-top: 0pt; margin-bottom: 0pt;">
- <li dir="ltr" style="list-style-type: circle; font-size: 11pt; font-family: Arial; color: #000000; background-color: transparent; font-weight: 400; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline;">
- <p dir="ltr" style="line-height: 1.38; margin-top: 0pt; margin-bottom: 0pt;"><span style="background-color: transparent; color: #000000; font-family: Arial; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline;">The current setup requires each thread that you want to profile to notify the profiler about its existence. We have this hooked up for nsThreads, and as of very recently also for rayon threads (used in stylo). We have not attempted to register other threads with the profiler. </span><a href="https://bugzilla.mozilla.org/show_bug.cgi?id=1341811" style="text-decoration: none;"><u>Bug 1341811</u></a><span style="background-color: transparent; color: #000000; font-family: Arial; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline;"> suggests hooking platform thread spawning functions but nobody has looked at it yet.</span></p>
- </li>
- </ul>
- </li>
- <li dir="ltr" style="list-style-type: disc; font-size: 11pt; font-family: Arial; color: #000000; background-color: transparent; font-weight: 400; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline;">
- <p dir="ltr" style="line-height: 1.38; margin-top: 0pt; margin-bottom: 0pt;"><span style="background-color: transparent; color: #000000; font-family: Arial; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline;">Profiling all nsThreads - how bad is the overhead?</span></p>
-
- <ul style="margin-top: 0pt; margin-bottom: 0pt;">
- <li dir="ltr" style="list-style-type: circle; font-size: 11pt; font-family: Arial; color: #000000; background-color: transparent; font-weight: 400; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline;">
- <p dir="ltr" style="line-height: 1.38; margin-top: 0pt; margin-bottom: 0pt;"><span style="background-color: transparent; color: #000000; font-family: Arial; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline;">[mstange] I don’t know. I think Julian Seward has done some measurements on this, I think.</span></p>
- </li>
- <li dir="ltr" style="list-style-type: circle; font-size: 11pt; font-family: Arial; color: #000000; background-color: transparent; font-weight: 400; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline;">
- <p dir="ltr" style="line-height: 1.38; margin-top: 0pt; margin-bottom: 0pt;"><span style="background-color: transparent; color: #000000; font-family: Arial; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline;">[ehsan] Try clicking the toolbar icon for the extension, expanding the Settings section, and enter the secret cheat code “,” in the Threads field and click on “Apply (Restart Profiler)”.  This will capture all of the threads that the Gecko Profiler has been hooked to.</span></p>
- </li>
- <li dir="ltr" style="list-style-type: circle; font-size: 11pt; font-family: Arial; color: #000000; background-color: transparent; font-weight: 400; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline;">
- <p dir="ltr" style="line-height: 1.38; margin-top: 0pt; margin-bottom: 0pt;"><span style="background-color: transparent; color: #000000; font-family: Arial; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline;">This mode is usually recommended when you want to find a thread you want to do more focused profiling on, so that you can find its name and then construct a more useful thread filter string based on the found thread name.</span></p>
- </li>
- </ul>
- </li>
- <li dir="ltr" style="list-style-type: disc; font-size: 11pt; font-family: Arial; color: #000000; background-color: transparent; font-weight: 400; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline;">
- <p dir="ltr" style="line-height: 1.38; margin-top: 0pt; margin-bottom: 0pt;"><span style="background-color: transparent; color: #000000; font-family: Arial; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline;">How can I run (micro-?) benchmarks on the memory allocator to see if changes in it (or entire allocator replacements) are slower/faster?</span></p>
-
- <ul style="margin-top: 0pt; margin-bottom: 0pt;">
- <li dir="ltr" style="list-style-type: circle; font-size: 11pt; font-family: Arial; color: #000000; background-color: transparent; font-weight: 400; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline;">
- <p dir="ltr" style="line-height: 1.38; margin-top: 0pt; margin-bottom: 0pt;"><span style="background-color: transparent; color: #000000; font-family: Arial; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline;">What you *don’t* want to do is writing a micro-benchmark that call malloc/free in a loop and the like and call it a day!</span></p>
- </li>
- <li dir="ltr" style="list-style-type: circle; font-size: 11pt; font-family: Arial; color: #000000; background-color: transparent; font-weight: 400; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline;">
- <p dir="ltr" style="line-height: 1.38; margin-top: 0pt; margin-bottom: 0pt;"><span style="background-color: transparent; color: #000000; font-family: Arial; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline;">A better idea would be picking up a real browser workload where through previous profiling we know that malloc overhead contributes a measurable percentage of overhead to the overall time and then study the change to that workload after replacing the allocator.</span></p>
- </li>
- <li dir="ltr" style="list-style-type: circle; font-size: 11pt; font-family: Arial; color: #000000; background-color: transparent; font-weight: 400; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline;">
- <p dir="ltr" style="line-height: 1.38; margin-top: 0pt; margin-bottom: 0pt;"><span style="background-color: transparent; color: #000000; font-family: Arial; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline;">You do want to think about various characteristics of an allocator which may have an impact on performance.  For example, see Julian’s great investigation on the impact of cache line sharing across multiple cores on jemalloc’s multi-core performance in </span><a href="https://bugzilla.mozilla.org/show_bug.cgi?id=1291355#c26" style="text-decoration: none;"><u>https://bugzilla.mozilla.org/show_bug.cgi?id=1291355#c26</u></a><span style="background-color: transparent; color: #000000; font-family: Arial; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline;">.</span></p>
- </li>
- </ul>
- </li>
- <li dir="ltr" style="list-style-type: disc; font-size: 11pt; font-family: Arial; color: #000000; background-color: transparent; font-weight: 400; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline;">
- <p dir="ltr" style="line-height: 1.38; margin-top: 0pt; margin-bottom: 0pt;"><span style="background-color: transparent; color: #000000; font-family: Arial; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline;">What's the best way to measure the cost of new compiler flags (that affect all or most functions)?</span></p>
-
- <ul style="margin-top: 0pt; margin-bottom: 0pt;">
- <li dir="ltr" style="list-style-type: circle; font-size: 11pt; font-family: Arial; color: #000000; background-color: transparent; font-weight: 400; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline;">
- <p dir="ltr" style="line-height: 1.38; margin-top: 0pt; margin-bottom: 0pt;"><span style="background-color: transparent; color: #000000; font-family: Arial; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline;">[ehsan] This is similar to the previous question to some extent, but the specific answer really depends on what kind of compiler flag we’re talking about and what performance impact we’re interested to study.  But the short answer is picking up real browser workloads, and finding ways to split out the overall cost contributed by the thing that your change is going to affect and compare things before and after.</span></p>
- </li>
- <li dir="ltr" style="list-style-type: circle; font-size: 11pt; font-family: Arial; color: #000000; background-color: transparent; font-weight: 400; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline;">
- <p dir="ltr" style="line-height: 1.38; margin-top: 0pt; margin-bottom: 0pt;"><span style="background-color: transparent; color: #000000; font-family: Arial; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline;">[mstange] This question is more about benchmarking than about profiling. If you want to measure things, please measure without the profiler running, because the profiler can add its own overhead.</span></p>
- </li>
- </ul>
- </li>
- <li dir="ltr" style="list-style-type: disc; font-size: 11pt; font-family: Arial; color: #000000; background-color: transparent; font-weight: 400; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline;">
- <p dir="ltr" style="line-height: 1.38; margin-top: 0pt; margin-bottom: 0pt;"><span style="background-color: transparent; color: #000000; font-family: Arial; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline;">How do we find performance regressions caused by third-party and system addons, especially ones that only show up after extended uptime?</span></p>
-
- <ul style="margin-top: 0pt; margin-bottom: 0pt;">
- <li dir="ltr" style="list-style-type: circle; font-size: 11pt; font-family: Arial; color: #000000; background-color: transparent; font-weight: 400; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline;">
- <p dir="ltr" style="line-height: 1.38; margin-top: 0pt; margin-bottom: 0pt;"><span style="background-color: transparent; color: #000000; font-family: Arial; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline;">By running into them. I wish I had a better answer to this question.  In general, the Gecko Profiler is a profiling tool that helps you figure out what happens inside the browser as a performance issue is happening, it doesn’t help with reproducing the performance issues in the first place.</span></p>
- </li>
- </ul>
- </li>
- <li dir="ltr" style="list-style-type: disc; font-size: 11pt; font-family: Arial; color: #000000; background-color: transparent; font-weight: 400; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline;">
- <p dir="ltr" style="line-height: 1.38; margin-top: 0pt; margin-bottom: 0pt;"><span style="background-color: transparent; color: #000000; font-family: Arial; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline;">TaskTracer: how to diagnose dispatch delays? (a demo)</span></p>
-
- <ul style="margin-top: 0pt; margin-bottom: 0pt;">
- <li dir="ltr" style="list-style-type: circle; font-size: 11pt; font-family: Arial; color: #000000; background-color: transparent; font-weight: 400; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline;">
- <p dir="ltr" style="line-height: 1.38; margin-top: 0pt; margin-bottom: 0pt;"><span style="background-color: transparent; color: #000000; font-family: Arial; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline;">TaskTracer is currently not in a usable state. Sorry.</span></p>
- </li>
- </ul>
- </li>
- <li dir="ltr" style="list-style-type: disc; font-size: 11pt; font-family: Arial; color: #000000; background-color: transparent; font-weight: 400; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline;">
- <p dir="ltr" style="line-height: 1.38; margin-top: 0pt; margin-bottom: 0pt;"><span style="background-color: transparent; color: #000000; font-family: Arial; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline;">TaskTracer: from the above, how do we decide on prioritization on the same thread event queue?</span></p>
-
- <ul style="margin-top: 0pt; margin-bottom: 0pt;">
- <li dir="ltr" style="list-style-type: circle; font-size: 11pt; font-family: Arial; color: #000000; background-color: transparent; font-weight: 400; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline;">
- <p dir="ltr" style="line-height: 1.38; margin-top: 0pt; margin-bottom: 0pt;"><span style="background-color: transparent; color: #000000; font-family: Arial; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline;">See above.</span></p>
- </li>
- </ul>
- </li>
- <li dir="ltr" style="list-style-type: disc; font-size: 11pt; font-family: Arial; color: #000000; background-color: transparent; font-weight: 400; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline;">
- <p dir="ltr" style="line-height: 1.38; margin-top: 0pt; margin-bottom: 0pt;"><span style="background-color: transparent; color: #000000; font-family: Arial; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline;">Do we profile memory page faults? (i.e. when we are accessing a virtual memory page that needs to reload from disk)</span></p>
-
- <ul style="margin-top: 0pt; margin-bottom: 0pt;">
- <li dir="ltr" style="list-style-type: circle; font-size: 11pt; font-family: Arial; color: #000000; background-color: transparent; font-weight: 400; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline;">
- <p dir="ltr" style="line-height: 1.38; margin-top: 0pt; margin-bottom: 0pt;"><span style="background-color: transparent; color: #000000; font-family: Arial; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline;">The Gecko Profiler does not know about page faults.  On Linux, perf does a good job at visualizing page faults, for example, they will show up as part of the same call stack as the user-space call stack for the program you are profiling.</span></p>
- </li>
- </ul>
- </li>
- <li dir="ltr" style="list-style-type: disc; font-size: 11pt; font-family: Arial; color: #000000; background-color: transparent; font-weight: 400; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline;">
- <p dir="ltr" style="line-height: 1.38; margin-top: 0pt; margin-bottom: 0pt;"><span style="background-color: transparent; color: #000000; font-family: Arial; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline;">If so, how complicated is to find out the reason the page has been purged?</span></p>
-
- <ul style="margin-top: 0pt; margin-bottom: 0pt;">
- <li dir="ltr" style="list-style-type: circle; font-size: 11pt; font-family: Arial; color: #000000; background-color: transparent; font-weight: 400; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline;">
- <p dir="ltr" style="line-height: 1.38; margin-top: 0pt; margin-bottom: 0pt;"><span style="background-color: transparent; color: #000000; font-family: Arial; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline;">[mstange] I don’t know.</span></p>
- </li>
- <li dir="ltr" style="list-style-type: circle; font-size: 11pt; font-family: Arial; color: #000000; background-color: transparent; font-weight: 400; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline;">
- <p dir="ltr" style="line-height: 1.38; margin-top: 0pt; margin-bottom: 0pt;"><span style="background-color: transparent; color: #000000; font-family: Arial; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline;">[ehsan] I don’t think this is very interesting in the general situation, since OSes can basically decide to swap out part of your virtual address space and you’d page fault when you access that page next and there is very little that the program can do about that.  Many times the reason you incur a page fault is merely that you are touching a memory page that hasn’t been touched in awhile.  For example, we have observed that the first access to large hashtables when doing a hashtable lookup can incur a page fault in many cases, and while the specific reason behind each one of those page faults may be different, the general conclusion from that observation would be something about the overall efficiency of your memory access patterns.  Typically we wouldn’t be optimizing away a single page fault anyway.</span></p>
- </li>
- </ul>
- </li>
- <li dir="ltr" style="list-style-type: disc; font-size: 11pt; font-family: Arial; color: #000000; background-color: transparent; font-weight: 400; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline;">
- <p dir="ltr" style="line-height: 1.38; margin-top: 0pt; margin-bottom: 0pt;"><span style="background-color: transparent; color: #000000; font-family: Arial; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline;">What is the status of I/O detection, on any thread?</span></p>
-
- <ul style="margin-top: 0pt; margin-bottom: 0pt;">
- <li dir="ltr" style="list-style-type: circle; font-size: 11pt; font-family: Arial; color: #000000; background-color: transparent; font-weight: 400; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline;">
- <p dir="ltr" style="line-height: 1.38; margin-top: 0pt; margin-bottom: 0pt;"><span style="background-color: transparent; color: #000000; font-family: Arial; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline;">The Gecko profiler has a “mainthreadio” feature which will cause markers for main thread IO to be inserted into the profile. However, the profiler add-on currently doesn’t have a checkbox to enable this feature.</span></p>
- </li>
- </ul>
- </li>
- <li dir="ltr" style="list-style-type: disc; font-size: 11pt; font-family: Arial; color: #000000; background-color: transparent; font-weight: 400; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline;">
- <p dir="ltr" style="line-height: 1.38; margin-top: 0pt; margin-bottom: 0pt;"><span style="background-color: transparent; color: #000000; font-family: Arial; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline;">Are the timer probes synchronized, or random/independent?  (I'd guess they're independent).  When profiling hundred(s) of threads at low intervals, does this distort the measurement or operation? (I.e. I want to profile all threads, not just Main plus a couple of others)</span></p>
-
- <ul style="margin-top: 0pt; margin-bottom: 0pt;">
- <li dir="ltr" style="list-style-type: circle; font-size: 11pt; font-family: Arial; color: #000000; background-color: transparent; font-weight: 400; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline;">
- <p dir="ltr" style="line-height: 1.38; margin-top: 0pt; margin-bottom: 0pt;"><span style="background-color: transparent; color: #000000; font-family: Arial; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline;">We haven’t done any measurements of how frequent sampling distorts measurement or operation.</span></p>
- </li>
- <li dir="ltr" style="list-style-type: circle; font-size: 11pt; font-family: Arial; color: #000000; background-color: transparent; font-weight: 400; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline;">
- <p dir="ltr" style="line-height: 1.38; margin-top: 0pt; margin-bottom: 0pt;"><span style="background-color: transparent; color: #000000; font-family: Arial; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline;">There is only one sampler thread. It runs a loop that works like this:</span></p>
-
- <ul style="margin-top: 0pt; margin-bottom: 0pt;">
- <li dir="ltr" style="list-style-type: square; font-size: 11pt; font-family: Arial; color: #000000; background-color: transparent; font-weight: 400; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline;">
- <p dir="ltr" style="line-height: 1.38; margin-top: 0pt; margin-bottom: 0pt;"><span style="background-color: transparent; color: #000000; font-family: Arial; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline;">Iterate over all threads. For each thread, suspend it, walk its stack, resume it.</span></p>
- </li>
- <li dir="ltr" style="list-style-type: square; font-size: 11pt; font-family: Arial; color: #000000; background-color: transparent; font-weight: 400; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline;">
- <p dir="ltr" style="line-height: 1.38; margin-top: 0pt; margin-bottom: 0pt;"><span style="background-color: transparent; color: #000000; font-family: Arial; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline;">Sleep until the next sample is due. Then go to the previous step.</span></p>
- </li>
- </ul>
- </li>
- </ul>
- </li>
- <li dir="ltr" style="list-style-type: disc; font-size: 11pt; font-family: Arial; color: #000000; background-color: transparent; font-weight: 400; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline;">
- <p dir="ltr" style="line-height: 1.38; margin-top: 0pt; margin-bottom: 0pt;"><span style="background-color: transparent; color: #000000; font-family: Arial; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline;">I there an equivalent to ITIMER_PROF vs ITIMER_REAL settings?  (ITIMER_PROF interrupts every N ms regardless of which thread used the time, REAL interrupts every Nms of wall-clock time)</span></p>
-
- <ul style="margin-top: 0pt; margin-bottom: 0pt;">
- <li dir="ltr" style="list-style-type: circle; font-size: 11pt; font-family: Arial; color: #000000; background-color: transparent; font-weight: 400; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline;">
- <p dir="ltr" style="line-height: 1.38; margin-top: 0pt; margin-bottom: 0pt;"><span style="background-color: transparent; color: #000000; font-family: Arial; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline;">The Gecko profiler does not know which thread is used at which time. It interrupts all threads based on wall-clock time.</span></p>
- </li>
- <li dir="ltr" style="list-style-type: circle; font-size: 11pt; font-family: Arial; color: #000000; background-color: transparent; font-weight: 400; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline;">
- <p dir="ltr" style="line-height: 1.38; margin-top: 0pt; margin-bottom: 0pt;"><span style="background-color: transparent; color: #000000; font-family: Arial; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline;">[jesup] Ok, that's the equivalent to ITIMER_REAL, kinda, except that per the previous question it doesn't interrupt every thread at once and snapshot the thread you started the itimer on, it interrupts each thread one at a time, which likely means distortion of the measurement if the number of threads monitored is significant (especially at high sample rates).  A cleaner snapshot would stop all threads, walk all their stacks, and then resume all threads, especially on high-core systems.  (ITIMER_REAL (due to posix) requires the signal occur on the calling thread, not a random thread.  ITIMER_PROF interrupts the then-running thread, whichever one it is.</span></p>
- </li>
- </ul>
- </li>
- <li dir="ltr" style="list-style-type: disc; font-size: 11pt; font-family: Arial; color: #000000; background-color: transparent; font-weight: 400; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline;">
- <p dir="ltr" style="line-height: 1.38; margin-top: 0pt; margin-bottom: 0pt;"><span style="background-color: transparent; color: #000000; font-family: Arial; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline;">Is there a way to isolate or filter a profile (at least of mainthread and maybe one or two other ones that make sense) to a specific tab/document/eventqueue?</span></p>
-
- <ul style="margin-top: 0pt; margin-bottom: 0pt;">
- <li dir="ltr" style="list-style-type: circle; font-size: 11pt; font-family: Arial; color: #000000; background-color: transparent; font-weight: 400; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline;">
- <p dir="ltr" style="line-height: 1.38; margin-top: 0pt; margin-bottom: 0pt;"><span style="background-color: transparent; color: #000000; font-family: Arial; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline;">Currently not. Some functions (reflow, painting, JS excecution) insert the URL of the associated document into the call stack frame, so you can get a rough idea, but we don’t have instrumentation at the tab/document/eventqueue level.</span></p>
- </li>
- <li dir="ltr" style="list-style-type: circle; font-size: 11pt; font-family: Arial; color: #000000; background-color: transparent; font-weight: 400; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline;">
- <p dir="ltr" style="line-height: 1.38; margin-top: 0pt; margin-bottom: 0pt;"><span style="background-color: transparent; color: #000000; font-family: Arial; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline;">For isolated profiles I recommend profiling a separate browser instance with only the tab that you’re interested in.</span></p>
- </li>
- </ul>
- </li>
- <li dir="ltr" style="list-style-type: disc; font-size: 11pt; font-family: Arial; color: #000000; background-color: transparent; font-weight: 400; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline;">
- <p dir="ltr" style="line-height: 1.38; margin-top: 0pt; margin-bottom: 0pt;"><span style="background-color: transparent; color: #000000; font-family: Arial; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline;">What are the recommended native profilers across all OS's?</span></p>
-
- <ul style="margin-top: 0pt; margin-bottom: 0pt;">
- <li dir="ltr" style="list-style-type: circle; font-size: 11pt; font-family: Arial; color: #000000; background-color: transparent; font-weight: 400; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline;">
- <p dir="ltr" style="line-height: 1.38; margin-top: 0pt; margin-bottom: 0pt;"><span style="background-color: transparent; color: #000000; font-family: Arial; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline;">Mac: Instruments; Linux: perf, zoom, callgrind; Windows: Concurrency Visualizer, VTune, xperf</span></p>
- </li>
- </ul>
- </li>
- <li dir="ltr" style="list-style-type: disc; font-size: 11pt; font-family: Arial; color: #000000; background-color: transparent; font-weight: 400; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline;">
- <p dir="ltr" style="line-height: 1.38; margin-top: 0pt; margin-bottom: 0pt;"><span style="background-color: transparent; color: #000000; font-family: Arial; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline;">When to use Gecko profiler vs. native profilers?</span></p>
-
- <ul style="margin-top: 0pt; margin-bottom: 0pt;">
- <li dir="ltr" style="list-style-type: circle; font-size: 11pt; font-family: Arial; color: #000000; background-color: transparent; font-weight: 400; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline;">
- <p dir="ltr" style="line-height: 1.38; margin-top: 0pt; margin-bottom: 0pt;"><span style="background-color: transparent; color: #000000; font-family: Arial; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline;">Gecko profiler: If you need JS callstacks or Gecko-specific instrumentation, or need to use any of its nifty UI features.</span></p>
- </li>
- <li dir="ltr" style="list-style-type: circle; font-size: 11pt; font-family: Arial; color: #000000; background-color: transparent; font-weight: 400; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline;">
- <p dir="ltr" style="line-height: 1.38; margin-top: 0pt; margin-bottom: 0pt;"><span style="background-color: transparent; color: #000000; font-family: Arial; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline;">Native profilers: If you’re interested in lower-level information or are running into the Gecko profiler’s limitations. (See many of the questions above for examples of such limitations.)</span></p>
- </li>
- <li dir="ltr" style="list-style-type: circle; font-size: 11pt; font-family: Arial; color: #000000; background-color: transparent; font-weight: 400; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline;">
- <p dir="ltr" style="line-height: 1.38; margin-top: 0pt; margin-bottom: 0pt;"><span style="background-color: transparent; color: #000000; font-family: Arial; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline;">Note that these tools should all be considered as complementary, it’s typical to capture a profile in Gecko Profiler and based on some investigations decide to delve into some part of it using a native profiler, etc.</span></p>
- </li>
- </ul>
- </li>
- <li dir="ltr" style="list-style-type: disc; font-size: 11pt; font-family: Arial; color: #000000; background-color: transparent; font-weight: 400; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline;">
- <p dir="ltr" style="line-height: 1.38; margin-top: 0pt; margin-bottom: 0pt;"><span style="background-color: transparent; color: #000000; font-family: Arial; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline;">Nothing stands out in the profile, how can I accurately find the next bottleneck?</span></p>
-
- <ul style="margin-top: 0pt; margin-bottom: 0pt;">
- <li dir="ltr" style="list-style-type: circle; font-size: 11pt; font-family: Arial; color: #000000; background-color: transparent; font-weight: 400; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline;">
- <p dir="ltr" style="line-height: 1.38; margin-top: 0pt; margin-bottom: 0pt;"><span style="background-color: transparent; color: #000000; font-family: Arial; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline;">This is a hard question.</span></p>
- </li>
- <li dir="ltr" style="list-style-type: circle; font-size: 11pt; font-family: Arial; color: #000000; background-color: transparent; font-weight: 400; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline;">
- <p dir="ltr" style="line-height: 1.38; margin-top: 0pt; margin-bottom: 0pt;"><span style="background-color: transparent; color: #000000; font-family: Arial; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline;">You’ll probably want to accumulate costs that are somehow “similar” or “in the same bucket” but distributed over different parts of the call tree / time line, and then attack the biggest bucket.</span></p>
- </li>
- <li dir="ltr" style="list-style-type: circle; font-size: 11pt; font-family: Arial; color: #000000; background-color: transparent; font-weight: 400; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline;">
- <p dir="ltr" style="line-height: 1.38; margin-top: 0pt; margin-bottom: 0pt;"><span style="background-color: transparent; color: #000000; font-family: Arial; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline;">Neither the process of accumulation, nor the process of assigning things to buckets, is easily doable with the current UI.</span></p>
- </li>
- <li dir="ltr" style="list-style-type: circle; font-size: 11pt; font-family: Arial; color: #000000; background-color: transparent; font-weight: 400; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline;">
- <p dir="ltr" style="line-height: 1.38; margin-top: 0pt; margin-bottom: 0pt;"><span style="background-color: transparent; color: #000000; font-family: Arial; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline;">There are many cases where code is slow due to a death by a thousand cuts scenario, in which case you would need to find many micro-optimizations that overall amount to something significant.</span></p>
- </li>
- </ul>
- </li>
- <li dir="ltr" style="list-style-type: disc; font-size: 11pt; font-family: Arial; color: #000000; background-color: transparent; font-weight: 400; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline;">
- <p dir="ltr" style="line-height: 1.38; margin-top: 0pt; margin-bottom: 0pt;"><span style="background-color: transparent; color: #000000; font-family: Arial; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline;">How to go from a web-page to a micro-benchmark which is representative of the web-page?</span></p>
-
- <ul style="margin-top: 0pt; margin-bottom: 0pt;">
- <li dir="ltr" style="list-style-type: circle; font-size: 11pt; font-family: Arial; color: #000000; background-color: transparent; font-weight: 400; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline;">
- <p dir="ltr" style="line-height: 1.38; margin-top: 0pt; margin-bottom: 0pt;"><span style="background-color: transparent; color: #000000; font-family: Arial; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline;">Please let me know if you find a way to do this. It would make our job a lot easier.</span></p>
- </li>
- <li dir="ltr" style="list-style-type: circle; font-size: 11pt; font-family: Arial; color: #000000; background-color: transparent; font-weight: 400; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline;">
- <p dir="ltr" style="line-height: 1.38; margin-top: 0pt; margin-bottom: 0pt;"><span style="background-color: transparent; color: #000000; font-family: Arial; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline;">In the off-chance where we have been able to do this, it typically happens as one of the last stages of the work, since you’d typically have finished fully analyzing the issue and through that have managed to figure out how to write a micro-benchmark that reproduces the exact issue.</span></p>
- </li>
- <li dir="ltr" style="list-style-type: circle; font-size: 11pt; font-family: Arial; color: #000000; background-color: transparent; font-weight: 400; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline;">
- <p dir="ltr" style="line-height: 1.38; margin-top: 0pt; margin-bottom: 0pt;"><span style="background-color: transparent; color: #000000; font-family: Arial; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline;">It’s better to start getting used to profiling and analyzing real pages more.  :-)</span></p>
- </li>
- </ul>
- </li>
- <li dir="ltr" style="list-style-type: disc; font-size: 11pt; font-family: Arial; color: #000000; background-color: transparent; font-weight: 400; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline;">
- <p dir="ltr" style="line-height: 1.38; margin-top: 0pt; margin-bottom: 0pt;"><span style="background-color: transparent; color: #000000; font-family: Arial; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline;">What's the best way to profile startup performance?</span></p>
-
- <ul style="margin-top: 0pt; margin-bottom: 0pt;">
- <li dir="ltr" style="list-style-type: circle; font-size: 11pt; font-family: Arial; color: #000000; background-color: transparent; font-weight: 400; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline;">
- <p dir="ltr" style="line-height: 1.38; margin-top: 0pt; margin-bottom: 0pt;"><span style="background-color: transparent; color: #000000; font-family: Arial; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline;">Install the Gecko profiler add-on. Quit the browser. Start the browser with the environment variable MOZ_PROFILER_STARTUP=1 set. As soon as startup is done, collect a profile.</span></p>
- </li>
- </ul>
- </li>
- <li dir="ltr" style="list-style-type: disc; font-size: 11pt; font-family: Arial; color: #000000; background-color: transparent; font-weight: 400; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline;">
- <p dir="ltr" style="line-height: 1.38; margin-top: 0pt; margin-bottom: 0pt;"><span style="background-color: transparent; color: #000000; font-family: Arial; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline;">What's the best way to do repeatable tests? ie: I want to measure perf of loading the same page with different stylo configurations.</span></p>
-
- <ul style="margin-top: 0pt; margin-bottom: 0pt;">
- <li dir="ltr" style="list-style-type: circle; font-size: 11pt; font-family: Arial; color: #000000; background-color: transparent; font-weight: 400; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline;">
- <p dir="ltr" style="line-height: 1.38; margin-top: 0pt; margin-bottom: 0pt;"><span style="background-color: transparent; color: #000000; font-family: Arial; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline;">Probably by using Talos, especially if you want to measure and not profile.</span></p>
- </li>
- <li dir="ltr" style="list-style-type: circle; font-size: 11pt; font-family: Arial; color: #000000; background-color: transparent; font-weight: 400; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline;">
- <p dir="ltr" style="line-height: 1.38; margin-top: 0pt; margin-bottom: 0pt;"><span style="background-color: transparent; color: #000000; font-family: Arial; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline;">You can make your own Talos pageload test which has just the one page that you’re interested in in its manifest.</span></p>
- </li>
- </ul>
- </li>
- <li dir="ltr" style="list-style-type: disc; font-size: 11pt; font-family: Arial; color: #000000; background-color: transparent; font-weight: 400; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline;">
- <p dir="ltr" style="line-height: 1.38; margin-top: 0pt; margin-bottom: 0pt;"><span style="background-color: transparent; color: #000000; font-family: Arial; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline;">What actually means the percentage of the running time?</span></p>
-
- <ul style="margin-top: 0pt; margin-bottom: 0pt;">
- <li dir="ltr" style="list-style-type: circle; font-size: 11pt; font-family: Arial; color: #000000; background-color: transparent; font-weight: 400; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline;">
- <p dir="ltr" style="line-height: 1.38; margin-top: 0pt; margin-bottom: 0pt;"><span style="background-color: transparent; color: #000000; font-family: Arial; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline;">The percentage of samples with stacks under this stack.</span></p>
- </li>
- </ul>
- </li>
- <li dir="ltr" style="list-style-type: disc; font-size: 11pt; font-family: Arial; color: #000000; background-color: transparent; font-weight: 400; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline;">
- <p dir="ltr" style="line-height: 1.38; margin-top: 0pt; margin-bottom: 0pt;"><span style="background-color: transparent; color: #000000; font-family: Arial; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline;">How you identify a user action in the main thread </span></p>
-
- <ul style="margin-top: 0pt; margin-bottom: 0pt;">
- <li dir="ltr" style="list-style-type: circle; font-size: 11pt; font-family: Arial; color: #000000; background-color: transparent; font-weight: 400; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline;">
- <p dir="ltr" style="line-height: 1.38; margin-top: 0pt; margin-bottom: 0pt;"><span style="background-color: transparent; color: #000000; font-family: Arial; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline;">We’re missing UI for this at the moment. The profile contains markers for DOM events, and those include user-generated events like mouse clicks, but these markers are only exposed as a huge unsearchable list in the Markers tab.</span></p>
- </li>
- <li dir="ltr" style="list-style-type: circle; font-size: 11pt; font-family: Arial; color: #000000; background-color: transparent; font-weight: 400; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline;">
- <p dir="ltr" style="line-height: 1.38; margin-top: 0pt; margin-bottom: 0pt;"><span style="background-color: transparent; color: #000000; font-family: Arial; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline;">If you have a rough idea of what the user was doing, try searching for functions that you’d expect in the call tree and see where they are in the thread timeline.</span></p>
- </li>
- </ul>
- </li>
- <li dir="ltr" style="list-style-type: disc; font-size: 11pt; font-family: Arial; color: #000000; background-color: transparent; font-weight: 400; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline;">
- <p dir="ltr" style="line-height: 1.38; margin-top: 0pt; margin-bottom: 0pt;"><span style="background-color: transparent; color: #000000; font-family: Arial; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline;">What is a suggested comprehensive performance analysis workflow for code changes that impact UI?</span></p>
-
- <ul style="margin-top: 0pt; margin-bottom: 0pt;">
- <li dir="ltr" style="list-style-type: circle; font-size: 11pt; font-family: Arial; color: #000000; background-color: transparent; font-weight: 400; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline;">
- <p dir="ltr" style="line-height: 1.38; margin-top: 0pt; margin-bottom: 0pt;"><span style="background-color: transparent; color: #000000; font-family: Arial; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline;">[mstange] I don’t know if anybody has written down such a workflow.</span></p>
- </li>
- <li dir="ltr" style="list-style-type: circle; font-size: 11pt; font-family: Arial; color: #000000; background-color: transparent; font-weight: 400; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline;">
- <p dir="ltr" style="line-height: 1.38; margin-top: 0pt; margin-bottom: 0pt;"><span style="background-color: transparent; color: #000000; font-family: Arial; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline;">My usual, very unscientific approach is: Use it for a while, and if you notice slowness, profile it. Pay attention to the red jank markers at the top.</span></p>
- </li>
- <li dir="ltr" style="list-style-type: circle; font-size: 11pt; font-family: Arial; color: #000000; background-color: transparent; font-weight: 400; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline;">
- <p dir="ltr" style="line-height: 1.38; margin-top: 0pt; margin-bottom: 0pt;"><span style="background-color: transparent; color: #000000; font-family: Arial; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline;">[ehsan] Mike Conley’s </span><a href="https://mikeconley.github.io/ohnoreflow/" style="text-decoration: none;"><u>Oh No Reflow! Add-on</u></a><span style="background-color: transparent; color: #000000; font-family: Arial; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline;"> is helpful.</span></p>
- </li>
- </ul>
- </li>
- <li dir="ltr" style="list-style-type: disc; font-size: 11pt; font-family: Arial; color: #000000; background-color: transparent; font-weight: 400; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline;">
- <p dir="ltr" style="line-height: 1.38; margin-top: 0pt; margin-bottom: 0pt;"><span style="background-color: transparent; color: #000000; font-family: Arial; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline;">How do we know when profiler output is statistically significant (for comparing across runs / across machines)?</span></p>
-
- <ul style="margin-top: 0pt; margin-bottom: 0pt;">
- <li dir="ltr" style="list-style-type: circle; font-size: 11pt; font-family: Arial; color: #000000; background-color: transparent; font-weight: 400; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline;">
- <p dir="ltr" style="line-height: 1.38; margin-top: 0pt; margin-bottom: 0pt;"><span style="background-color: transparent; color: #000000; font-family: Arial; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline;">[mstange] Hard to say. Prefer to do comparisons by measuring your timings with code instead of by inspecting profiles. Always keep in mind that profiler overhead has the potential to skew the results.</span></p>
- </li>
- </ul>
- </li>
- <li dir="ltr" style="list-style-type: disc; font-size: 11pt; font-family: Arial; color: #000000; background-color: transparent; font-weight: 400; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline;">
- <p dir="ltr" style="line-height: 1.38; margin-top: 0pt; margin-bottom: 0pt;"><span style="background-color: transparent; color: #000000; font-family: Arial; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline;">Is it better to profile across multiple platforms, or to focus time on Windows (since that's the bulk of our users)?</span></p>
-
- <ul style="margin-top: 0pt; margin-bottom: 0pt;">
- <li dir="ltr" style="list-style-type: circle; font-size: 11pt; font-family: Arial; color: #000000; background-color: transparent; font-weight: 400; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline;">
- <p dir="ltr" style="line-height: 1.38; margin-top: 0pt; margin-bottom: 0pt;"><span style="background-color: transparent; color: #000000; font-family: Arial; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline;">[mstange] In my opinion, as long as you double-check that the problems you find are actually present on Windows, it doesn’t matter much what platform you find them on.</span></p>
- </li>
- <li dir="ltr" style="list-style-type: circle; font-size: 11pt; font-family: Arial; color: #000000; background-color: transparent; font-weight: 400; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline;">
- <p dir="ltr" style="line-height: 1.38; margin-top: 0pt; margin-bottom: 0pt;"><span style="background-color: transparent; color: #000000; font-family: Arial; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline;">[ehsan] That being said, we do see a lot of Windows-specific issues that you will not find on other platforms, for example sometimes code calls into a Windows API that requires loading a DLL the first time you call it that takes 10s of milliseconds to finish, etc.  Unless if you profile on Windows you will never find those specific issues.</span></p>
- </li>
- <li dir="ltr" style="list-style-type: circle; font-size: 11pt; font-family: Arial; color: #000000; background-color: transparent; font-weight: 400; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline;">
- <p dir="ltr" style="line-height: 1.38; margin-top: 0pt; margin-bottom: 0pt;"><span style="background-color: transparent; color: #000000; font-family: Arial; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline;">And when you get to the platform specific parts of the browser stack (such as graphics, media, etc.) then profiling on Windows would be certainly a lot more valuable than on other platforms.</span></p>
- </li>
- </ul>
- </li>
- <li dir="ltr" style="list-style-type: disc; font-size: 11pt; font-family: Arial; color: #000000; background-color: transparent; font-weight: 400; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline;">
- <p dir="ltr" style="line-height: 1.38; margin-top: 0pt; margin-bottom: 0pt;"><span style="background-color: transparent; color: #000000; font-family: Arial; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline;">Should I profile known to be slow sites on slower hardware to get a better signal?</span></p>
-
- <ul style="margin-top: 0pt; margin-bottom: 0pt;">
- <li dir="ltr" style="list-style-type: circle; font-size: 11pt; font-family: Arial; color: #000000; background-color: transparent; font-weight: 400; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline;">
- <p dir="ltr" style="line-height: 1.38; margin-top: 0pt; margin-bottom: 0pt;"><span style="background-color: transparent; color: #000000; font-family: Arial; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline;">[mstange] That’s probably a good idea. As long as the slower hardware is still capable enough that the profiler can successfully complete symbolication.</span></p>
- </li>
- <li dir="ltr" style="list-style-type: circle; font-size: 11pt; font-family: Arial; color: #000000; background-color: transparent; font-weight: 400; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline;">
- <p dir="ltr" style="line-height: 1.38; margin-top: 0pt; margin-bottom: 0pt;"><span style="background-color: transparent; color: #000000; font-family: Arial; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline;">[ehsan] Performance issues are just much easier to spot on slower hardware, so if nothing else, using slower hardware will help </span><em>you</em><span style="background-color: transparent; color: #000000; font-family: Arial; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline;"> find problems easier.  And don’t forget that if you’re interested in finding IO slowness issues, profiling on a machine with a fast SSD isn’t recommended.</span></p>
- </li>
- </ul>
- </li>
-</ul>
-
-<p> </p>
diff --git a/files/ja/mozilla/performance/index.html b/files/ja/mozilla/performance/index.html
deleted file mode 100644
index dc454cda2e..0000000000
--- a/files/ja/mozilla/performance/index.html
+++ /dev/null
@@ -1,143 +0,0 @@
----
-title: Performance
-slug: Mozilla/Performance
-tags:
- - Add-ons
- - Debugging
- - Development
- - Mozilla
- - Performance
-translation_of: Mozilla/Performance
----
-<p>ここからリンクされている記事は、コアな Mozilla のコードやアドオン開発をしていなくてもパフォーマンスを改善する手助けになります。</p>
-
-<table class="topicpage-table">
- <tbody>
- <tr>
- <td>
- <h3 id="Documentation" name="Documentation">ドキュメンテーション</h3>
-
- <dl>
- <dt><a href="/ja/Performance/Reporting_a_Performance_Problem">パフォーマンスの問題を報告する</a></dt>
- <dd>A user friendly guide to reporting a performance problem. A development environment is not required.</dd>
- <dt><a href="Benchmarking" title="Performance/Benchmarking advice">Benchmarking</a></dt>
- <dd>Tips on generating valid performance metrics.</dd>
- <dt><a href="/ja/Extensions/Performance_best_practices_in_extensions" title="en/Extensions/Performance best practices in extensions">Performance best practices in extensions</a></dt>
- <dd>A performance "best practices" guide for extension developers.</dd>
- <dt><a href="/ja/Performance/Measuring_add-on_startup_performance" title="en/Measuring Add-on Startup Performance">Measuring Add-on Startup Performance</a></dt>
- <dd>A guide for add-on developers on how to set up a performance testing environment.</dd>
- <dt><a href="/ja/XUL_School/Appendix_A:_Add-on_Performance" title="en/XUL School/Appendix A: Add-on Performance">XUL School: Add-on Performance</a></dt>
- <dd>Tips for add-on developers to help them avoid impairing application performance.</dd>
- <dt><a href="/ja/Performance/GPU_performance">GPU パフォーマンス</a></dt>
- <dd>Tips for profiling and improving performance when using a GPU.</dd>
- <dt><a href="/ja/docs/Mozilla/Performance/ScrollLinkedEffects">Scroll-Linked Effects</a></dt>
- <dd>Information on scroll-linked effects, their effect on performance, related tools, and possible mitigation techniques.</dd>
- <dt><a href="/ja/docs/Mozilla/Performance/Automated_Performance_Testing_and_Sheriffing">Automated Performance Testing and Sheriffing</a></dt>
- <dd>Information on automated performance testing and sheriffing at Mozilla.</dd>
- <dt><a href="/ja/docs/Mozilla/Firefox/Performance_best_practices_for_Firefox_fe_engineers">Best practices for Front-end Engineers</a></dt>
- <dd>Tips for reducing impacts on browser performance in front-end code.</dd>
- </dl>
-
- <p><span class="alllinks"><a class="internal" href="/Special:Tags?tag=Performance" title="Special:Tags?tag=Performance">View all pages tagged with "Performance"...</a></span></p>
-
- <h3 id="Memory_profiling_and_leak_detection_tools" name="Memory_profiling_and_leak_detection_tools">メモリープロファイリングとリーク検出ツール</h3>
-
- <dl>
- <dt><a href="https://developer.mozilla.org/ja/docs/Tools/Memory" title="en/Performance/Profiling with the Built-in Profiler">開発者ツールの "メモリー" パネル</a></dt>
- <dd>The memory panel in the devtools supports taking heap snapshots, diffing them, computing dominator trees to surface "heavy retainers", and recording allocation stacks.</dd>
- </dl>
-
- <dl>
- <dt><a href="/ja/docs/Mozilla/Performance/about:memory">about:memory</a></dt>
- <dd>about:memory is the easiest-to-use tool for measuring memory usage in Mozilla code, and is the best place to start. It also lets you do other memory-related operations like trigger GC and CC, dump GC &amp; CC logs, and dump DMD reports. about:memory is built on top of Firefox's <a href="/ja/docs/Mozilla/Performance/Memory_reporting">memory reporting</a> infrastructure.</dd>
- <dt><a href="/ja/docs/Mozilla/Performance/DMD">DMD</a></dt>
- <dd>DMD is a tool that identifies shortcomings in about:memory's measurements, and can also do multiple kinds of general heap profiling.</dd>
- <dt><a href="/ja/docs/Mozilla/Performance/AWSY">Are We Slim Yet</a></dt>
- <dd>areweslimyet.com (a.k.a. AWSY) is a memory usage and regression tracker.</dd>
- <dt><a href="https://developer.mozilla.org/ja/docs/Mozilla/Performance/BloatView">BloatView</a></dt>
- <dd>BloatView prints per-class statistics on allocations and refcounts, and provides gross numbers on the amount of memory being leaked broken down by class. It is used as part of Mozilla's continuous integration testing.</dd>
- <dt><a href="https://developer.mozilla.org/ja/docs/Mozilla/Performance/Refcount_tracing_and_balancing">Refcount tracing and balancing</a></dt>
- <dd>Refcount tracing and balancing are ways to track down leaks caused by incorrect uses of reference counting. They are slow and not particular easy to use, and thus most suitable for use by expert developers.</dd>
- <dt><a href="/ja/docs/Mozilla/Performance/GC_and_CC_logs">GC と CC のログ</a></dt>
- <dd>GC and CC logs can be generated and analyzed to in various ways. In particular, they can help you understand why a particular object is being kept alive.</dd>
- <dt><a href="/ja/docs/Mozilla/Testing/Valgrind">Valgrind</a></dt>
- <dd><a class="external text" href="http://valgrind.org/" rel="nofollow">Valgrind</a> is a tool that detects various memory-related problems at runtime, including leaks. Valgrind is used as <a class="external text" href="/ja/docs/Valgrind_test_job" rel="nofollow">part</a> of Mozilla's continuous integration testing, though the coverage is limited because Valgrind is slow.</dd>
- <dt><a href="https://developer.mozilla.org/ja/docs/Mozilla/Testing/Firefox_and_Address_Sanitizer#LeakSanitizer">LeakSanitizer</a></dt>
- <dd><span class="external text">LeakSanitizer</span> (a.k.a. LSAN) is similar to Valgrind, but it runs faster because it uses static source code instrumentation. LSAN is part of Mozilla's continuous integration testing, with most tests running through it as part of the AddressSanitizer (a.k.a. ASAN) test jobs.</dd>
- <dt><a href="https://developer.apple.com/documentation/Performance/Conceptual/ManagingMemory/Articles/FindingLeaks.html">Apple のツール</a></dt>
- <dd>Apple は、Mac OS X 向けに LSAN や Valgrind によってレポートされる問題と似た問題をレポートするツールを提供します。この「リーク」ツールは、SpiderMonkey や Firefox で使用することは推奨されません。タグ付けされたポインターによって混乱し、オブジェクトが存在しない場合、リークを引き起こすためです (<a class="external text" href="https://bugzilla.mozilla.org/show_bug.cgi?id=390944" rel="nofollow">bug 390944</a> をご覧ください)。</dd>
- <dt><a href="/ja/docs/Mozilla/Performance/Leak_Gauge">Leak Gauge</a></dt>
- <dd>Leak Gauge は、ドキュメント、ウィンドウオブジェクト、docshell を含む、Gecko 内の特定の種類のリークを検出するのに使用できます。</dd>
- <dt><a href="https://dxr.mozilla.org/mozilla-central/source/memory/replace/logalloc/README">LogAlloc</a></dt>
- <dd>LogAlloc は、Gecko 内のメモリー割り当てのログのダンプを取得するツールです。That log can then be replayed against Firefox's default memory allocator independently or through another replace-malloc library, allowing the testing of other allocators under the exact same workload.</dd>
- <dt><a href="/ja/docs/Mozilla/Performance/Memory_Profiler">メモリープロファイラー</a></dt>
- <dd>The memory profiler samples allocation events and provides different views to analyze the allocation characteristic.</dd>
- </dl>
-
- <p>See also the documentation on <a href="/ja/docs/Mozilla/Performance/Leak-hunting_strategies_and_tips">Leak-hunting strategies and tips.</a></p>
- </td>
- <td>
- <h3 id="Profiling_and_performance_tools" name="Profiling_and_performance_tools">プロファイリングツールとパフォーマンスツール</h3>
-
- <dl>
- <dt><a href="https://developer.mozilla.org/ja/docs/Tools/Performance" title="en/Performance/Profiling with the Built-in Profiler">Profiling with the Developer Tools Profiler</a></dt>
- <dd>The profiler built into the developer tools has a high-level waterfall, detailed call tree, allocations and GC profiling, and flame graphs. It is available on all platforms and release channels, and also supports remote profiling b2g and Fennec.</dd>
- </dl>
-
- <dl>
- <dt><a href="/ja/Performance/Profiling_with_the_Built-in_Profiler" title="en/Performance/Profiling with the Built-in Profiler">Profiling with the Gecko Profiler Addon</a> {{ gecko_minversion_inline("16.0") }}</dt>
- <dd>The Gecko Profiler Addon is a good tool to start with.</dd>
- <dt><a href="/ja/Performance/Profiling_with_Instruments" title="en/Performance/Profiling with Instruments">Profiling with Instruments</a></dt>
- <dd>How to use Apple's Instruments tool to profile Mozilla code.</dd>
- <dt><a href="/ja/Performance/Profiling_with_Xperf" title="en/Performance/Profiling with Xperf">Profiling with Xperf</a></dt>
- <dd>How to use Microsoft's Xperf tool to profile Mozilla code.</dd>
- <dt><a href="/ja/docs/Performance/Profiling_with_Concurrency_Visualizer" title="en/Performance/Profiling with Concurrency Visualizer">Profiling with Concurrency Visualizer</a></dt>
- <dd>How to use Visual Studio's Concurrency Visualizer tool to profile Mozilla code.</dd>
- <dt><a href="/ja/Performance/Profiling_with_Zoom" title="en/Performance/Profiling with Zoom">Profiling with Zoom</a></dt>
- <dd>Zoom is a profiler for Linux done by the people who made Shark</dd>
- <dt><a href="/ja/Performance/Measuring_performance_using_the_PerfMeasurement.jsm_code_module" title="en/Performance/Measuring performance using the PerfMeasurement.jsm code module">Measuring performance using the PerfMeasurement.jsm code module</a> {{ gecko_minversion_inline("2.0") }}</dt>
- <dd>Using <a href="/jaJavaScript_code_modules/PerfMeasurement.jsm" title="en/JavaScript code modules/PerfMeasurement.jsm"><code>PerfMeasurement.jsm</code></a> to measure performance data in your JavaScript code.</dd>
- <dt><a href="/ja/docs/Performance/Adding_a_new_Telemetry_probe" title="https://developer.mozilla.org/ja/docs/Performance/Adding_a_new_Telemetry_probe">Adding a new Telemetry probe</a></dt>
- <dd>Information on how to add a new measurement to the Telemetry performance-reporting system</dd>
- <dt><a href="/ja/Performance/Profiling_JavaScript_with_Shark" title="en/Performance/Profiling JavaScript with Shark">Profiling JavaScript with Shark</a> {{ gecko_minversion_inline("1.9") }}</dt>
- <dd>How to use the Mac OS X Shark profiler to profile JavaScript code in Firefox 3.5 or later.</dd>
- <dt><a href="/ja/Performance/Profiling_with_Shark" title="en/Performance/Profiling with Shark">Profiling with Shark</a></dt>
- <dd>How to use Apple's Shark tool to profile Mozilla code.</dd>
- <dt><a href="/ja/docs/Mozilla/Performance/Investigating_CSS_Performance">Investigating CSS Performance</a></dt>
- <dd>How to figure out why restyle is taking so long</dd>
- </dl>
-
- <h3 id="Power_profiling">Power profiling</h3>
-
- <dl>
- <dt><a href="/ja/docs/Mozilla/Performance/Power_profiling_overview">Power profiling overview</a></dt>
- <dd>This page provides an overview of relevant information, including details about hardware, what can be measured, and recommended approaches. It should be the starting point for anybody new to power profiling.</dd>
- <dt><code><a href="/ja/docs/Mozilla/Performance/tools_power_rapl">tools/power/rapl</a></code> (Mac, Linux)</dt>
- <dd><code>tools/power/rapl</code> is a command-line utility in the Mozilla codebase that uses the Intel RAPL interface to gather direct power estimates for the package, cores, GPU and memory.</dd>
- <dt><code><a href="/ja/docs/Mozilla/Performance/powermetrics">powermetrics</a></code> (Mac-only)</dt>
- <dd><code>powermetrics</code> is a command-line utility that gathers and displays a wide range of global and per-process measurements, including CPU usage, GPU usage, and various wakeups frequencies.</dd>
- <dt><a href="/ja/docs/Mozilla/Performance/TimerFirings_logging">TimerFirings logging</a> (All platforms)</dt>
- <dd>TimerFirings logging is a built-in logging mechanism that prints data on every time fired.</dd>
- <dt><code><a href="/ja/docs/Mozilla/Performance/dtrace">dtrace</a></code> (Mac-only)</dt>
- <dd><code>dtrace</code> is a powerful kernel instrumentation tool. One of its many features is the ability to instrument wakeups in a high-context fashion.</dd>
- <dt><a href="/ja/docs/Mozilla/Performance/Activity_Monitor_and_top">Activity Monitor, Battery Status Menu and <code>top</code></a> (Mac-only)</dt>
- <dd>The battery status menu, Activity Monitor and <code>top</code> are three related Mac tools that have major flaws but often consulted by users, and so are worth understanding.</dd>
- <dt><a href="/ja/docs/Mozilla/Performance/Intel_Power_Gadget">Intel Power Gadget</a> (Windows, Mac, Linux)</dt>
- <dd>Intel Power Gadget provides real-time graphs for package and processor RAPL estimates. It also provides an API through which those estimates can be obtained.</dd>
- <dt><code><a href="/ja/docs/Mozilla/Performance/perf">perf</a></code> (Linux-only)</dt>
- <dd><code>perf</code> is a powerful command-line utility that can measure many different things, including energy estimates and high-context measurements of things such as wakeups.</dd>
- <dt><code><a href="/ja/docs/Mozilla/Performance/turbostat">turbostat</a></code> (Linux-only)</dt>
- <dd><code>turbostat</code> is a command-line utility that gathers and displays various power-related measurements, with a focus on per-CPU measurements such as frequencies and C-states.</dd>
- <dt><code><a href="https://01.org/powertop">powertop</a></code> (Linux-only)</dt>
- <dd><code>powertop</code> is an interactive command-line utility that gathers and displays various power-related measurements.</dd>
- </dl>
-
- <h3 id="Related_Topics" name="Related_Topics">関連トピック</h3>
-
- <dl>
- <dd><a href="/ja/JavaScript" title="en/JavaScript">JavaScript</a>, <a href="/ja/XPCOM" title="en/XPCOM">XPCOM</a>, <a href="/ja/Developer_Guide" title="en/Developing_Mozilla">Developing Mozilla</a>, <a href="/ja/Extensions" title="en/Extensions">Extensions</a>, <a href="/ja/Addons" title="en/Addons">Addons</a></dd>
- </dl>
- </td>
- </tr>
- </tbody>
-</table>
diff --git a/files/ja/mozilla/performance/profiling_with_the_built-in_profiler/index.html b/files/ja/mozilla/performance/profiling_with_the_built-in_profiler/index.html
deleted file mode 100644
index c5bb8e1b80..0000000000
--- a/files/ja/mozilla/performance/profiling_with_the_built-in_profiler/index.html
+++ /dev/null
@@ -1,360 +0,0 @@
----
-title: Geckoプロファイラでプロファイリングする
-slug: Mozilla/Performance/Profiling_with_the_Built-in_Profiler
-translation_of: Mozilla/Performance/Profiling_with_the_Built-in_Profiler
----
-<p>{{ gecko_minversion_header("16.0") }}</p>
-
-<div class="summary">
-<p><span class="seoSummary">Gecko ProfilerはFirefoxに組み込まれたプロファイラです。外部のプロファイラよりも Firefoxとの統合が強化されており、開発者以外のマシンやロックされたAndroid端末など、外部プロファイラが利用できない状況でも利用できます。 </span></p>
-</div>
-
-<div class="note">
-<p>Gecko Profilerは以前は「SPS」と「組み込みプロファイラ」として知られていました。私たちは可能な限り多くの古い名前への参照を変更しましたが、まだまだあります。</p>
-</div>
-
-<h2 id="Gecko_Profilerアドオンの入手">Gecko Profilerアドオンの入手</h2>
-
-<p>まず最初に、Firefoxの正しいビルドを使用しているかどうかを確認する必要があります。公式のNightlyまたはBetaまたはReleaseビルドが動作します。ローカルビルドを使用している場合は、mozconfigで--enable-profilingオプションを有効にしてください。</p>
-
-<p>Gecko Profilerには2つのインターフェースがあります:</p>
-
-<ol>
- <li>Web 開発者にとっては、ツール &gt; Web 開発 &gt; パフォーマンス のメニューから開くことができる簡略化されたプロファイラがあります</li>
- <li><a href="https://perf-html.io/">Gecko Profiler アドオン</a>をインストールすることで、Mozillaの内部の開発者用のより高度なインターフェースにアクセスすることができます(<a href="/ja/docs/Mozilla/Performance/Reporting_a_Performance_Problem">インストールの詳細が利用できます</a>)。</li>
-</ol>
-
-<div class="note">
-<p><a href="/ja/docs/Mozilla/Performance/Reporting_a_Performance_Problem">パフォーマンスの問題を報告</a>するときに、Firefox開発者からリクエストされたときにプロファイルを入手するためのステップバイステップガイドがあります。</p>
-
-<p><a href="/ja/docs/Mozilla/Performance/Reporting_a_Thunderbird_Performance_Problem_with_G">Thunderbirdのパフォーマンスの問題を報告</a>するときに、Thunderbird開発者が要求したときにプロファイルを取得するためのステップバイステップガイドがあります。</p>
-</div>
-
-<h2 id="プロファイルの理解">プロファイルの理解</h2>
-
-<p>Gecko Profilerに関する<a href="/ja/docs/Mozilla/Performance/Gecko_Profiler_FAQ">よくある質問</a>を確認することができます。</p>
-
-<p>Ehsanのビデオをいくつか調べてみましょう。</p>
-
-<p>
- <video controls src="https://vid.ly/e6v7s4?content=video&amp;format=hd_webm">Your browser doesn't appear to support WebM video playback.</video>
-</p>
-
-<div class="note">
-<p>役に立つと思われる機能がある場合は、<a href="https://github.com/mstange/Gecko-Profiler-Addon/">詳細とともにバグを記録</a>してください。</p>
-</div>
-
-<h3 id="インターフェイス">インターフェイス</h3>
-
-<h4 id="1._タイムライン">1. タイムライン</h4>
-
-<p><img alt="" src="https://mdn.mozillademos.org/files/14877/profiler-timeline.png" style="height: 327px; width: 1751px;"></p>
-
-<p>タイムラインには、興味深いイベントを示すトレースマーカー(色付きセグメント)の行がいくつかあります。より多くの情報を表示するには、それらの上にカーソルを置きます。トレースマーカーの下には、さまざまなスレッドのアクティビティに対応する行があります。</p>
-
-<div class="note">
-<p><strong>Tip</strong>: [default] と注釈されたスレッドは、親プロセス(「UI」、別名「ブラウザクロム」、別名「メイン」)プロセスにあり、[tab] で注釈付けされたスレッドはWebコンテンツ ")プロセス。</p>
-</div>
-
-<div class="note">
-<p><strong>Tip</strong>: 親プロセスの長時間実行されるタスクはブラウザUI(「UIジャンク」とも呼ばれます)ですべての入力または描画をブロックしますが、コンテンツプロセスで長時間実行されるタスクはページとの対話性をブロックしますが、 APZのおかげです。</p>
-</div>
-
-<h5 id="トレースマーカー">トレースマーカー</h5>
-
-<ul>
- <li>赤色:イベントループが応答していないことを示します。 vsyncなどの優先度の高いイベントはここには含まれていないことに注意してください。また、これは待っているイベントがあった場合に起こったことを示しており、必ずしもそれが保留中のイベントがあるとは限りません。</li>
- <li>ブラック:同期IPCコールを示します。</li>
-</ul>
-
-<h5 id="範囲">範囲</h5>
-
-<p><img alt="Timeline showing ranged breadcrumbs and zoom icon" src="https://mdn.mozillademos.org/files/14893/profiler-breadcrumbsandzoom.png" style="height: 490px; width: 2450px;"></p>
-
-<p>トレースマーカーまたはスレッド領域の任意の場所をクリックしてドラッグすると、時間の範囲を拡大できます。範囲が選択されると、その範囲にズームする拡大鏡が表示されます。トレースマーカーをクリックすると、その期間に対応する選択肢が作成され、興味のある時間の範囲を容易にズームインできます。範囲を拡大すると、以前選択した範囲またはプロファイル全体(「フルレンジ」と表示されます)に簡単に戻ることができるパンくずリストが作成されます。</p>
-
-<div class="note">
-<p><strong>Tip</strong>: While zooming out to a previously-selected range deletes the narrower range, the browser back button can be used to restore the narrower range.</p>
-</div>
-
-<h5 id="Thread_Timeline(s)">Thread Timeline(s)</h5>
-
-<p><strong>Thread/Process Timelines</strong>: Below the tracing markers we have a list of profiled threads. These threads may come from different processes. In this case, we have the 'GeckoMain [default]' process' main thread, a content process' main thread, and the main thread of the compositor process. Each of these timelines is aligned with wall clock time. So, for example, when a thread is blocked, like 'GeckoMain [tab]', on a thread like 'GeckoMain [default]', we can see what's occurring on the latter thread that is preventing it from responding to the former.</p>
-
-<p><strong>X (Time) axis</strong>: The timelines go from left to right as wall clock time increases along the X axis. Elements in the timeline are spaced at the sampling frequency with an attempt to align them with time. Factors such as sampling or stack-walking variance and system load can lead to sampling delays which manifest as gaps in the timeline.</p>
-
-<div class="note">
-<p><strong>Note:</strong> because this is a sampling profiler, be cautious when examining running time that is equal to the sampling interval. For very time-sensitive profiling, you may want to consider a non-sampling profiler.</p>
-</div>
-
-<p><strong>Y (Stack) axis: </strong>The Y axis is the stack depth, not the CPU activity. The change in stack height is useful to find patterns like long blocking calls (long flatlines) or very tall spiky blocks (recursive calls and JS). With more experience you can read profiles faster by recognizing patterns. Also note that you can click on timeline elements (the selected element gets darker when selected) and the tree view (see below) reflects the selected element.</p>
-
-<ul>
-</ul>
-
-<h4 id="2._コールツリー">2. コールツリー</h4>
-
-<p><img alt="" src="https://mdn.mozillademos.org/files/14895/profiler-calltree.png" style="height: 726px; width: 1751px;"></p>
-
-<p>The Call Tree shows the samples organized by 'Running Time' which will show the data by wall clock time. There are lighter grey names to the right of tree elements that indicate where the code comes from. Be aware that elements can be from JavaScript, Gecko, or system libraries. Note that if some functions are not yet named properly, symbolication may not yet be finished.</p>
-
-<div class="note">
-<p>Tip: You can right-click on a function name to get an option to copy its name to the clipboard.</p>
-</div>
-
-<p>A significant portion of time can be spent in idle, blocking calls like waiting for events. This is ideal for a responsive application to be ready to service incoming events. There are OS-specific waiting functions like <code>NtWaitForMultipleObjects </code>seen in the example above taken on Windows or <code>mach_msg_trap</code> on macOS.</p>
-
-<div class="note">
-<p>Tip: You can quickly go deeper into the call tree by holding down your right arrow key. Alternatively, expand an entire tree segment by holding Alt and clicking on the arrow to the left of the collapsed tree segment.</p>
-</div>
-
-<p>As we progress into a more specific part of the tree, you'll notice that the 'Running time' decreases. This happens when a function has 2 or more non-trivial calls: the running time will be split between its children.</p>
-
-<div class="note">
-<p>Tip: Focus on one section of the tree by clicking on the "arrow-in-a-circle" icon that appears to the right of the tree element as you hover over it. A "tree breadcrumb" will appear similar to the range breadcrumbs noted above.</p>
-</div>
-
-<p>Clicking the "JavaScript only" option will only show JavaScript code in the Call Tree. You could compare the time with this option checked and the total time to get an idea of how much time was spent running JS. Note that long-running JS function execution may not actually be taking as long as you think because further down the call stack there may be something like painting happening.</p>
-
-<p>Clicking the "Invert call stack" option will sort by the time spent in a function in descending order. Note that the running time here is only the running time of that particular frame and not the total of all called instances of that function. You can see the samples in the Timeline get darker as you select different functions in the Call Tree; these are samples that were taken when the selected function was running.</p>
-
-<p>"Filter stacks" will allow you to search for functions by name. One of the easiest ways to find slowness caused by a page's JS is to type its URL into the "Filter stacks" box. You can then select corresponding Call Tree entries and watch the Timeline for entries in the content process main thread that get darker as you select Call Tree entries.</p>
-
-<div class="note">
-<p>Tip: If things are blank elsewhere in the UI, you may have text entered into the "Filter stacks" box.</p>
-</div>
-
-<h5 id="Custom_Annotations">Custom Annotations</h5>
-
-<p>In <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=1334218">bug 1334218</a> an annotation was added to <code>PresShell::Paint</code> to show the URL of the document being painted. These annotations are not too complex to add so if you would like something added, <a href="https://bugzilla.mozilla.org/enter_bug.cgi">file a bug</a>.</p>
-
-<h4 id="3._Sharing_the_profile">3. Sharing the profile</h4>
-
-<p>Click "Share..." &gt; Share acknowledging that the URLs you had open and your Firefox extensions will be included in the profile data sent to the server. If you select a different time range, the URL revealed by pressing "Permalink" will change so that you can be sure the recipient of the URL will see the same things you are seeing.</p>
-
-<h3 id="Tips">Tips</h3>
-
-<p>Understanding profiles can be difficult. If you're unfamiliar with Gecko's internals, you can click the <em>JavaScript only</em> button to see where your JavaScript code is slow. Each entry in the Call Tree shows a call stack and how much time is spent in that call stack. For example:<img alt="" src="https://mdn.mozillademos.org/files/14905/profiler-timespent.png" style="display: block; height: 382px; margin: 0px auto; width: 1180px;">In the results above we can see that we're spending ~287 milliseconds in <code>Startup::XRE_InitChildProcess</code>, 194 ms of which are spent in <code>PVsync::Msg_Notify</code> and <strong>all</strong> child functions that it calls. It is useful to scan down the "Running Time" column and look for when the time changes. While looking for performance problems, you're looking for the processes that are taking the most time; then you can figure out how to optimize them.</p>
-
-<h3 id="Common_Performance_Bugs_in_Firefox">Common Performance Bugs in Firefox</h3>
-
-<p>Inefficient code that is on the reflow or restyle paths is often to blame for jank. So is code that is run often in the parent process or in parts of the codebase that apply to many users.</p>
-
-<p>Synchronous re-flow can be caused by JS that, for example, makes changes to the page content in a loop and queries about the layout of the page in that same loop.</p>
-
-<p>A PresShell:Flush means that we are either recomputing styles or recomputing layout. These sorts of flushes should be avoided if possible, as they can be quite expensive. Keep your eyes out for flushes like this that are blocking the main thread for a long time. If you notice these things happening in a loop, that's a bug to be fixed, since we're likely "layout thrashing".</p>
-
-<p>Some more tips and answers to common questions are available in a <a href="/en-US/docs/Mozilla/Performance/Gecko_Profiler_FAQ">mid-2017 FAQ document</a>.</p>
-
-<p>It's a good idea to search <a href="https://bugzilla.mozilla.org/">bugzilla</a> before filing a bug about a performance problem in Firefox but sometimes it's hard to find issues that have already been reported. Therefore, it's usually a good idea to <a href="https://bugzilla.mozilla.org/enter_bug.cgi">file a bug</a>.</p>
-
-<h2 id="ローカルWindowsビルドのプロファイリング">ローカルWindowsビルドのプロファイリング</h2>
-
-<p>If you built Firefox for Windows <strong>locally</strong> and you would like to use the local symbols with the profiler, you will need to run an additional tool; see <a href="/en-US/docs/Performance/Profiling_with_the_Built-in_Profiler_and_Local_Symbols_on_Windows" title="/en-US/docs/Performance/Profiling_with_the_Built-in_Profiler_and_Local_Symbols_on_Windows">Profiling with the Gecko Profiler and Local Symbols on Windows</a>.</p>
-
-<h2 id="ビルドをプロファイリングする">ビルドをプロファイリングする</h2>
-
-<p>The profiler currently doesn't really support symbolication for profiles from Try builds. For Linux builds, there seem to be symbols inside the binaries, which the profiler should pick up correctly. But on Windows and macOS, you'll have to do some tricks to make it work:</p>
-
-<ol>
- <li><span>Put your firefox build into a directory with the name <code>dist</code>.</span></li>
- <li><span>Download the crashreporter symbols zip for your build. It should be one of the "artifacts" of the build job of your try build.</span></li>
- <li><span>Unzip the crashreporter symbols into <code>dist/crashreporter-symbols/</code>.</span></li>
- <li><span>Now profile as usual.</span></li>
-</ol>
-
-<p>(This abuses the symbolication logic for local builds. It's at <a href="http://searchfox.org/mozilla-central/rev/51b3d67a5ec1758bd2fe7d7b6e75ad6b6b5da223/browser/components/extensions/ext-geckoProfiler.js#172">ext-geckoProfiler.js</a> and may stop working at any time.)</p>
-
-<h2 id="Firefoxモバイルのプロファイリング">Firefoxモバイルのプロファイリング</h2>
-
-<p>Firefox 61 for Android supports Gecko profiler again; see <a href="https://perf-html.io/docs/#/./guide-remote-profiling">Remote profiling on Android</a> for details.</p>
-
-<p>The following information is old version of Firefox for Android.</p>
-
-<ol>
- <li>For local builds of Fennec, you should build with optimization and <code>STRIP_FLAGS="--strip-debug"</code> but <strong>NOT</strong> with <code>--enable-profiling</code>. Nightly builds are already built with the appropriate flags.</li>
- <li>You'll need to have <code>adb</code> and <code>arm-eabi-addr2line</code> (which is part of the <a href="http://developer.android.com/tools/sdk/ndk/index.html#Installing" title="http://developer.android.com/tools/sdk/ndk/index.html#Installing">Android NDK</a>) in your bash <code>PATH</code>, so use <code>locate arm-eabi-addr2line</code> (on Linux) or<code> mdfind name:arm-eabi-addr2line</code> (on OS X) and stick an export to its location in <code>~/.bash_profile</code>. The extension will invoke bash to use <code>adb</code> and <code>addr2line</code>.</li>
- <li>Install the <a href="https://github.com/bgirard/Gecko-Profiler-Addon/raw/master/geckoprofiler.xpi" title="https://github.com/bgirard/Gecko-Profiler-Addon/raw/master/geckoprofiler.xpi">latest pre-release build</a> in your host machine's Firefox browser that has your phone reachable via <a href="/en-US/Firefox_OS/Debugging/Installing_ADB">ADB</a>. This will add a icon in the top right of the browser.</li>
- <li>Set <code>devtools.debugger.remote-enabled</code> to <code>true</code> in <code>about:config</code> for Fennec.</li>
- <li>Select target <em>Mobile USB</em> and press <em>Connect</em>. The first run will take an additional 1 minute or so to pull in the required system libraries.</li>
-</ol>
-
-<h2 id="Firefoxの起動のプロファイリング">Firefoxの起動のプロファイリング</h2>
-
-<ol>
- <li>Start your Firefox with the environment variable <code>MOZ_PROFILER_STARTUP=1</code> set. This way the profiler is started as early as possible during startup.</li>
- <li>Then capture the profile using the add-on as usual.</li>
-</ol>
-
-<p>Startup profiling does not use the settings that you configured in the add-on's panel. It uses settings that can be configured with the environment variables <code>MOZ_PROFILER_STARTUP_ENTRIES</code> and <code>MOZ_PROFILER_STARTUP_INTERVAL</code>:</p>
-
-<ul>
- <li>If it looks like the buffer is not large enough, you can tweak the buffer size with the env var <code>MOZ_PROFILER_STARTUP_ENTRIES</code>. This defaults to 1000000, which is 9MB. If you want 90MB use 10000000, and 20000000 for 180MB, which are good values to debug long startups.</li>
- <li>If you'd like a coarser resolution, you can also choose a different interval using <code>MOZ_PROFILER_STARTUP_INTERVAL</code>, which defaults to 1 (unit is millisecond). You can't go below 1 ms but you can use e.g. 10 ms.</li>
-</ul>
-
-<h2 id="JSベンチマーク(xpcshell)のプロファイリング">JSベンチマーク(xpcshell)のプロファイリング</h2>
-
-<ol>
- <li>To profile the script <code>run.js</code> with IonMonkey (<code>-I</code>), type inference (<code>-n</code>) and JäegerMonkey (<code>-m</code>). Thgis requires the following command:
-
- <pre><code class="brush: bash">$ xpcshell -m -I -n -e '
- const Ci = Components.interfaces;
- const Cc = Components.classes;
- var profiler = Cc["@mozilla.org/tools/profiler;1"].getService(Ci.nsIProfiler);
- profiler.StartProfiler(
- 10000000 /* = profiler memory */,
- 1 /* = sample rate: 100µs with patch, 1ms without */,
- ["stackwalk", "js"], 2 /* = features, and number of features. */
- );
- ' -f ./run.js -e '
- var profileObj = profiler.getProfileData();
- print(JSON.stringify(profileObj));
- ' | tail -n 1 &gt; run.cleo</code></pre>
- The xpcshell output all benchmark information and on its last line it output the result of the profiling, you can filter it with <code>tail -n 1</code> and redirect it to a file to prevent printing it in your shell.  The expected size of the output is around 100 of MB.</li>
- <li>To add symbols to your build, you need to call <code>./scripts/profile-symbolicate.py</code> available in B2G repository.
- <pre><code>$ GECKO_OBJDIR=&lt;objdir&gt; PRODUCT_OUT=&lt;objdir&gt; TARGET_TOOLS_PREFIX= \
- ./scripts/profile-symbolicate.py -o run.symb.cleo run.cleo</code></pre>
- </li>
- <li><a href="https://github.com/bgirard/cleopatra" title="https://github.com/bgirard/cleopatra">Clone Cleopatra</a> and start the server with <code>./run_webserver.sh</code>.</li>
- <li>Access Cleopatra from your web browser by loading the page <code>localhost:8000</code>, and upload <code>run.symb.cleo</code> to render the profile with most of the symbol information.</li>
-</ol>
-
-<h2 id="ネイティブスタックとラベルスタック">ネイティブスタックとラベルスタック</h2>
-
-<p>The profiler periodically samples the stack of the selected threads in Firefox and collects a stack trace. This stack trace is the combined stack of three different stacks: The native stack, the JavaScript stack, and the label stack.</p>
-
-<h3 id="Native_stack">Native stack</h3>
-
-<p>The native stack is the regular C / C++ / rust function stack that you know from your debugger. It's only collected if the "Stack walk" checkbox in the gecko profiler add-on's settings is checked.</p>
-
-<h3 id="JavaScript_stack">JavaScript stack</h3>
-
-<p>The JavaScript stack is collected by the JS engine. This is controlled by the "JavaScript" checkbox in the gecko profiler add-on's settings panel.</p>
-
-<h3 id="Label_stack">Label stack</h3>
-
-<p>The label stack (formerly called "Pseudo stack") uses function entry/exit tags added by hand to important points in the code base.  The stacks you see in the UI are chains of these tags.  This is good for highlighting particularly interesting parts of the code, but they miss out on un-annotated areas of the code base, and give no visibility into system libraries or drivers.</p>
-
-<p>Tagging is done by adding macros of the form <code>AUTO_PROFILER_LABEL("NAMESPACE", "NAME")</code>. These add RAII helpers, which are used by the profiler to track entries/exits of the annotated functions.  For this to be effective, you need to liberally use <code>AUTO_PROFILER_LABEL</code> throughout the code. See <code>GeckoProfiler.h</code> for more variations like <code>AUTO_PROFILER_LABEL_DYNAMIC</code>.</p>
-
-<p>Because of the non-zero overhead of the instrumentation, the sample label shouldn't be placed inside hot loops.  A profile reporting that a large portion is spent in "Unknown" code indicates that the area being executed doesn't have any sample labels.  As we focus on using this tool and add additional sample labels coverage should improve.</p>
-
-<h2 id="Sharing_saving_and_loading_profiles">Sharing, saving and loading profiles</h2>
-
-<p>After capturing and viewing a profile you will see "Share..." and "Save as file..." buttons in the top-right of the window. Sharing will upload your profile to perf-html.io and make it public. More <a href="/en-US/docs/Mozilla/Performance/Reporting_a_Performance_Problem#Capturing_and_sharing_a_profile">information on sharing profiles</a> is available.</p>
-
-<h2 id="ハングしたプロセスのプロファイリング">ハングしたプロセスのプロファイリング</h2>
-
-<p>It is possible to get profiles from hung Firefox processes using lldb<sup><a href="http://mikeconley.ca/blog/2015/04/04/things-ive-learned-this-week-march-30-april-3-2015/#fn1-2699" rel="footnote" title="Unfortunately, this technique will not work for Windows. ">1</a></sup>.</p>
-
-<ol>
- <li>After the process has hung, <a href="https://developer.apple.com/library/ios/documentation/IDEs/Conceptual/gdb_to_lldb_transition_guide/document/lldb-terminal-workflow-tutorial.html#//apple_ref/doc/uid/TP40012917-CH4-SW5">attach lldb</a>.</li>
- <li>Type in<sup><a href="http://mikeconley.ca/blog/2015/04/04/things-ive-learned-this-week-march-30-april-3-2015/#fn2-2699" rel="footnote" title="Assuming you’re running a build after this revision landed.">2</a></sup>, :
- <pre>p (void)<code id="line-232">profiler_save_profile_to_file</code>("somepath/profile.txt")</pre>
- </li>
- <li><a href="https://github.com/mstange/analyze-tryserver-profiles">Clone mstange’s handy profile analysis repository.</a></li>
- <li>Run:
- <pre>python symbolicate_profile.py somepath/profile.txt</pre>
-
- <p>To graft symbols into the profile. mstange’s scripts do some fairly clever things to get those symbols – if your Firefox was built by Mozilla, then it will retrieve the symbols from the Mozilla symbol server. If you built Firefox yourself, it will attempt to use some cleverness<sup><a href="http://mikeconley.ca/blog/2015/04/04/things-ive-learned-this-week-march-30-april-3-2015/#fn3-2699" rel="footnote" title="A binary called dump_syms_mac in mstange’s toolkit, and nm on Linux">3</a></sup> to grab the symbols from your binary.</p>
-
- <p>Your profile will now, hopefully, be updated with symbols. Upload it for further analysis!</p>
-
- <p>I haven’t yet had the opportunity to try this, but I hope to next week. I’d be eager to hear people’s experience giving this a go – it might be a great tool in determining what’s going on in Firefox when it’s hung!</p>
- </li>
-</ol>
-
-<h2 id="スレッドのプロファイリング">スレッドのプロファイリング</h2>
-
-<p>The Gecko Profiler has rudimentary support for profiling multiple threads. To enable it, check the 'Multi-Thread' box then enter one or more thread names into the textbox beside it. Thread names are the strings passed to the base::Thread class at initialization. At present there is no central list of these thread names, but you can find them by grepping the source.</p>
-
-<p>Examples: <a href="http://mxr.mozilla.org/mozilla-central/source/ipc/glue/BrowserProcessSubThread.cpp#24">1</a> <a href="http://mxr.mozilla.org/mozilla-central/source/gfx/layers/ipc/CompositorParent.cpp#133">2</a></p>
-
-<p>If the filter you entered is invalid, no threads will be profiled. You can identify this by hitting Analyze (Cleopatra will show you an error message). If the filter is left empty, only the main thread is captured (as if you had not enabled Multi-Thread.)</p>
-
-<h2 id="プロファイラの機能">プロファイラの機能</h2>
-
-<p>The profiler supports several features. These are options to gather additional data in your profiles. Each option will increase the performance overhead of profiling so it's important to activate only options that will provide useful information for your particular problem to reduce the distortion.</p>
-
-<h3 id="Stackwalk">Stackwalk</h3>
-
-<p>When taking a sample the profiler will attempt to unwind the stack using platform specific code appropriate for the ABI. This will provide an accurate callstack for most samples. On ABIs where framepointers are not avaiable this will cause a significant performance impact.</p>
-
-<h3 id="JS_Profiling">JS Profiling</h3>
-
-<p>Javascript callstacks will be generated and interleaved with the c++ callstacks. This will introduce an overhead when running JS.</p>
-
-<h3 id="GC_Stats">GC Stats</h3>
-
-<p>Will embed GC stats from 'javascript.options.mem.notify' in the profile.</p>
-
-<h3 id="Main_Thread_IO">Main Thread IO</h3>
-
-<p>This will interpose file I/O and report them in the profiles.</p>
-
-<h3 id="Multi-Thread">Multi-Thread</h3>
-
-<p>This will sample other threads. This fields accept a comma seperated list of thread names. A thread can only be profiled if it is registered to the profiler.</p>
-
-<h3 id="GPU">GPU</h3>
-
-<p>This will insert a timer query during compositing and show the result in the Frames view. This will appropriate how much GPU time was spent compositing each frame.</p>
-
-<h3 id="Layers_Texture">Layers &amp; Texture</h3>
-
-<p>The profiler can be used to view the layer tree at each composite, optionally with texture data. This can be used to debug correctness problems.</p>
-
-<h4 id="Viewing_the_Layer_Tree">Viewing the Layer Tree</h4>
-
-<p>To view the layer tree, the <code>layers.dump</code> pref must be set to <code>true</code> in the Firefox or B2G program being profiled.</p>
-
-<p>In addition, both the compositor thread and the content thread (in the case of B2G, the content thread of whichever app you're interested in) must be profiled. For example, on B2G, when profiling the Homescreen app, you might start the profiler with:</p>
-
-<pre>./profile.sh start -p b2g -t Compositor &amp;&amp; ./profile.sh start -p Homescreen
-</pre>
-
-<p>Having gotten a profile this way, the layer tree for a composite can be seen by clicking on a composite in the "Frames" section of Cleopatra (you may need to a sub-range of samples to make individual composites large enough to be clicked). This will activate the "LayerTree" tab:</p>
-
-<p><img alt="Screenshot of layer tree view in Cleopatra, with no textures." src="https://mdn.mozillademos.org/files/10327/cleopatra-layer-tree-hilite.png" style="height: 1029px; width: 1923px;"></p>
-
-<p>In this screenshot, Composite #143 has been selected. The layer tree structure can be seen in the left panel. It contains, for each layer, the type of the layer, and various metrics about the layer, such as the visible region and any transforms. In the right panel, a visualization of the layer tree (based entirely on the aforementioned metrics) is shown. Hovering over a layer in the left panel highlights the layer in the right panel. This is useful for identifying what content each layer corresponds to. Here, I'm hovering over the last layer in the layer tree (a PaintedLayerComposite), and a strip at the top of the right panel is highlighted, telling me that this layer is for the system notification bar in B2G.</p>
-
-<h4 id="Viewing_Textures">Viewing Textures</h4>
-
-<p>Sometimes, it's useful to see not only the structure of the layer tree for each composite, but also the rendered textures for each layer. This can be achieved by additionally setting the <code>layers.dump-texture</code> pref to <code>true</code>, or by adding <code>-f layersdump </code>to the profiler command line (the latter implies both the <code>layers.dump</code> and <code>layers.dump-texture</code> prefs).</p>
-
-<div class="warning">
-<p>警告: テクスチャデータをダンプすると、パフォーマンスが大幅に低下し、プロファイルファイルに多くの記憶領域が必要になります。 このようにプロファイリングする際には、フレームレートを大幅に下げてレンダリングを実行し、キャプチャ時間を短くして、関心のあるサンプルが上書きされないようにします。</p>
-</div>
-
-<p>Here's how the Layer Tree view looks in Cleopatra with texture data:</p>
-
-<p><img alt="Screenshot of layer tree view in Cleopatra, with textures." src="https://mdn.mozillademos.org/files/10329/cleopatra-layer-tree-textures.png" style="height: 1037px; width: 1920px;"></p>
-
-<p>This time, the visualization in right panel shows the actual textures rather than just the outlines of the layers. This can be very useful for debugging correctness problems such as a temporary visual/rendering glitch, because it allows you to find the precise composite that shows the glitch, and look at the layer tree for that composite.</p>
-
-<h4 id="Visualizing_a_layer_tree_without_a_profile">Visualizing a layer tree without a profile</h4>
-
-<p>If you have a layer dump from somewhere (such as from <code>adb logcat</code> on B2G), you can get Cleopatra to visualize it (just the structure of course, not textures) without needing a profile. To do so, paste the layer dump into the "Enter your profile data here" text field on the front page of Cleopatra:</p>
-
-<p><img alt="Screenshot of front page of Cleopatra, with pasted layer dump." src="https://mdn.mozillademos.org/files/10331/cleopatra-layer-tree-noprofile.png" style="height: 596px; width: 1020px;"></p>
-
-<p>The resulting "profile" will have the Layer Tree view enabled (but nothing else). This is useful in cases where you want to gain a quick visual understanding of a layer dump without having to take a profile.</p>
-
-<div class="note">
-<p>On B2G, each line of a layer dump in <code>adb logcat</code> output is prefixed with something like <code>I/Gecko   (30593):</code>. Cleopatra doesn't currently understand this prefix, so it needs to be removed before pasting.</p>
-</div>
-
-<h3 id="Display_List">Display List</h3>
-
-<p>Dump the display list after each refresh with the texture data. This can be used to debug correctness problems.</p>
-
-<h2 id="Contribute">Contribute</h2>
-
-<ul>
- <li>Source is located in {{ Source("tools/profiler") }}.</li>
- <li>The Bugzilla component is Core::Gecko Profile.</li>
- <li>The profiler add-on repository can be found here: <a class="link-https" href="https://github.com/devtools-html/Gecko-Profiler-Addon" rel="freelink">https://github.com/devtools-html/Gecko-Profiler-Addon</a>.</li>
- <li>The Cleopatra repository can be found here: <a class="link-https" href="https://github.com/devtools-html/perf.html" rel="freelink">https://github.com/devtools-html/perf.html</a></li>
-</ul>
diff --git a/files/ja/mozilla/performance/reporting_a_performance_problem/index.html b/files/ja/mozilla/performance/reporting_a_performance_problem/index.html
deleted file mode 100644
index 3333b1efc5..0000000000
--- a/files/ja/mozilla/performance/reporting_a_performance_problem/index.html
+++ /dev/null
@@ -1,62 +0,0 @@
----
-title: パフォーマンスの問題を報告する
-slug: Mozilla/Performance/Reporting_a_Performance_Problem
-translation_of: Mozilla/Performance/Reporting_a_Performance_Problem
----
-<p>この記事では、<a href="/ja/docs/Mozilla/Performance/Profiling_with_the_Built-in_Profiler">Gecko Profiler拡張機能</a>を使用してパフォーマンスの問題を報告する方法について説明します。 あなたが読むよりそれを好むなら<a href="https://www.youtube.com/watch?v=kGBs0BQsoQg">ビデオチュートリアル</a>もあります。</p>
-
-<h2 id="Gecko_Profilerの拡張機能を設定する">Gecko Profilerの拡張機能を設定する</h2>
-
-<ol>
- <li>Download and install the <a class="external" href="https://perf-html.io/" title="geckoprofiler.xpi">latest version of the Gecko Profiler extension</a></li>
- <li>The profiler extension will show up in the top right of the URL bar as a globe icon (if not, <a href="https://support.mozilla.org/en-US/kb/how-customize-toolbars#w_how-do-i-customize-or-rearrange-toolbar-items">drag it there from the Customize window</a>).<br>
- <br>
- <img alt="The Gecko Profiler Add-on installed and visible within the Nightly toolbar." src="https://mdn.mozillademos.org/files/14859/Gecko%20Profiler%20Toolbar%20Button.PNG" style="height: 139px; width: 254px;"></li>
- <li><strong>Remember to disable or uninstall the extension if you're not using it.</strong></li>
-</ol>
-
-<p><em>macOS only, or to check whether a problem has been fixed in a later Firefox version (macOS release builds will currently produce profiles missing some important information):</em></p>
-
-<ol>
- <li>Download and start the <a class="external" href="http://nightly.mozilla.org/" title="http://nightly.mozilla.org/">nightly build</a> for your platform. You will have to close all running instance(s) of Firefox before launching nightly.</li>
- <li>Nightly is a development version, which may contain bugs, so <a href="https://support.mozilla.org/en-US/kb/profile-manager-create-and-remove-firefox-profiles">test with a new profile or back up your data</a>.</li>
- <li>Verify that it is running correctly by going to 'About Nightly' by looking for 'nightly' as the update channel (3rd line). The icon should be a blue globe.</li>
-</ol>
-
-<h2 id="Using_the_Add-on">Using the Add-on</h2>
-
-<p>Once installed, the profiler becomes active immediately (the icon being blue indicates it is active). The profiler uses a fixed size buffer to store sample data. When it runs out of space in its buffer, it discards old entries so you may want to increase the buffer size if you find you are unable to capture the profile quickly enough after you notice a performance problem. In the Settings part of the UI you can adjust the size of the buffer (presently defaults to 9 MB) and the time interval between data collection (presently defaults to 1 ms). Note that increasing the buffer size uses more memory and can make capturing a profile take longer.</p>
-
-<p><img alt="Profiler UI" src="https://perf-html.io/e9a699daa7c33fcf80c361278055c65d.png" style="height: 376px; width: 546px;"></p>
-
-<p>Using the keyboard shortcuts is often more convenient than using the mouse to interact with the UI:</p>
-
-<ul>
- <li><code>Ctrl+Shift+1</code> - Start/Stop the profiler</li>
- <li><code>Ctrl+Shift+2</code> - Take a profile and launch Cleopatra to view it</li>
-</ul>
-
-<h2 id="Capturing_and_sharing_a_profile">Capturing and sharing a profile</h2>
-
-<ol>
- <li>Reproduce the performance problem. If possible let the problem manifest itself for 5-10 seconds.</li>
- <li>Press <code>Ctrl+Shift+2</code> or click on the 'Globe' icon in the top right and select 'Capture Profile'. Try to do this within a few seconds from reproducing the performance problem as only the last few seconds are recorded. If the timeline has a large red block it's a good sign.<br>
- <img alt="Jank markers appearing in the Perf.html profile analysis tool." src="https://mdn.mozillademos.org/files/14861/Perf%20Dot%20HTML%20Red%20Lines.PNG" style="height: 238px; width: 558px;"></li>
- <li>The data will open in a new tab. Wait until the "Waiting for symbol tables for library libxul.pdb..." notification disappears before sharing the profile.</li>
- <li>There will be a button in the top right labeled 'Share' which will upload this profile and once completed will write out a link. Copy this URL to your clipboard by right clicking and add the profile URL to the bug for your performance problem and/or send it to the appropriate person. Try to give some context about what you were doing when the performance problem arose such as the URL you were viewing and what actions were you doing (ex. scrolling on gmail.com).<br>
- <img alt="The button for sharing a profile." src="https://mdn.mozillademos.org/files/14863/Share.PNG" style="height: 142px; width: 329px;"></li>
-</ol>
-
-<h2 id="Viewing_addon_performance_in_GeckoView">Viewing addon performance in GeckoView</h2>
-
-<p>Sometimes an addon or more are slowing down Firefox. These addons might be using the extension API in ways that were not meant to. You can see which of these addons are causing problems by adding the "moz-extension" filter.</p>
-
-<p><img alt="moz-extension filter print screen" src="https://i.imgur.com/EJCrt4N.png" style="height: 287px; width: 1217px;"></p>
-
-<p>Make sure you are selecting the process that is using up the CPU since all of the processes are shown. You might have a content process using up the CPU and not the main one.</p>
-
-<p>Make sure you are doing whatever it is that slows down Firefox while recording the profile. For example you might have one addon that <a href="https://vimeo.com/269371096">slows down page load</a> and <a href="https://vimeo.com/269371201">another one that slows down tab switch</a>.</p>
-
-<p>Your first reflex once you find what addon is slowing down the profile might be to disable it and search for alternatives. Before you do this, please share the performance profile with the addon authors trough a bug report. Gecko profiler allows you to share a link with the profile.</p>
-
-<p> </p>
diff --git a/files/ja/mozilla/performance/scroll-linked_effects/index.html b/files/ja/mozilla/performance/scroll-linked_effects/index.html
deleted file mode 100644
index a26aa29a9d..0000000000
--- a/files/ja/mozilla/performance/scroll-linked_effects/index.html
+++ /dev/null
@@ -1,110 +0,0 @@
----
-title: スクロール連動エフェクト
-slug: Mozilla/Performance/Scroll-linked_effects
-tags:
- - CSS
- - JavaScript
- - Performance
- - Scroll
- - Scroll-Linked Effects
- - Web Animations
- - compositor
-translation_of: Mozilla/Performance/Scroll-linked_effects
----
-<p class="summary">スクロール連動エフェクトはスクロール位置に基づいて Web ページを変化させるエフェクト実装です。(例えば、スクロールによる視差エフェクトを生み出すために位置プロパティを更新させるなど) この記事はスクロール連動エフェクトについてパフォーマンス・関連するツール・移行技術の可能性について記載しています。</p>
-
-<h2 id="スクロールエフェクトとは">スクロールエフェクトとは</h2>
-
-<p>時々スクロールエフェクトは {{event("scroll")}} イベントを監視し、いくつかの手段(通常は CSS の {{cssxref("position")}} や {{cssxref("transform")}} プロパティ)でページ内の要素を更新して実装されます。このようなエフェクトは <a href="https://github.com/RByers/css-houdini-drafts/blob/master/css-scroll-api/UseCases.md">CSS Scroll API: Use Cases</a> でサンプルを見ることができます。</p>
-
-<p>これらのエフェクトは、スクロールがブラウザのメインスレッドで同期的に完了するブラウザの場合はうまく動作します。しかし、現在多くのブラウザはユーザに一貫した 60 FPS の体験を提供するために何らかの非同期スクロールを提供しています。非同期スクロールモデルでは、表示されているスクロールポジションはコンポジタースレッドで更新されて {{event("scroll")}} イベントが DOM 内で更新されメインスレッドで発火される以前にユーザーに表示されます。これは、実装されたエフェクトがユーザーが更新されたスクロール位置を見るよりも少し遅れることになります。これはエフェクトが遅延したり、カクカクしたり、ユーザーをイライラさせます。つまりできることなら避けたい事象です。</p>
-
-<p>以下は非同期スクロールでうまく動作しないエフェクト例と、適切に動作するサンプルです。</p>
-
-<h3 id="Example_1_Sticky_位置">Example 1: Sticky 位置</h3>
-
-<p>これはスクロールダウンしても "toolbar" div がスクリーンの上部に固定される sticky 位置エフェクトの実装です。</p>
-
-<pre class="brush: html">&lt;body style="height: 5000px" onscroll="document.getElementById('toolbar').style.top = Math.max(100, window.scrollY) + 'px'"&gt;
- &lt;div id="toolbar" style="position: absolute; top: 100px; width: 100px; height: 20px; background-color: green"&gt;&lt;/div&gt;
-&lt;/body&gt;</pre>
-
-<p>この sticky 位置の実装は "toolbar" div の再配置を監視するスクロールイベントリスナーに基づいています。スクロールイベントリスナーがブラウザーのメインスレッドで動作する JavaScript で動く限り、ユーザーが見えているスクロールとは非同期処理になります。したがって非同期スクロールにおいて、イベントハンドラーはユーザーに見えているスクロールの動きとは相対的に遅延して、div は意図したとおり固定された表示になりません。代わりに、ユーザーのスクロールによって div は移動して、スクロールインベントハンドラーが実行されたときにスクリーンジョブに "すばやく戻ります"。この一連の動きと素早い動作はかくかくした視覚エフェクトになります。スクロールイベントリスナーを利用しない 1 つの実装は、これを目的とした CSS プロパティーを利用する方法です。</p>
-
-<pre class="brush: html">&lt;body style="height: 5000px"&gt;
- &lt;div id="toolbar" style="position: sticky; top: 0px; margin-top: 100px; width: 100px; height: 20px; background-color: green"&gt;&lt;/div&gt;
-&lt;/body&gt;</pre>
-
-<p>このバージョンは、ユーザーのスクロールによる "toolbar" div の位置更新をブラウザ自身が行うため、非同期スクロールでもうまく動作します。</p>
-
-<h3 id="Example_2_スクロールスナップ">Example 2: スクロールスナップ</h3>
-
-<p class="summary">Thisこの機能は Web 標準から削除されています。いくつかのブラウザではまだサポートされていますが機能削除の最中です。可能ならば利用を避け既存コードを更新してください。<a href="https://developer.mozilla.org/ja-JP/docs/Web/CSS/scroll-snap-coordinate#Browser_compatibility">https://developer.mozilla.org/ja-JP/docs/Web/CSS/scroll-snap-coordinate#Browser_compatibility</a></p>
-
-<p>以下はスクロールスナップの実装で、目的の位置近くでスクロールをユーザーが止めたときに指定した目的のスクロールポジション目的位置に移動するものです。</p>
-
-<pre class="brush: html">&lt;body style="height: 5000px"&gt;
- &lt;script&gt;
-    function snap(destination) {
-        if (Math.abs(destination - window.scrollY) &lt; 3) {
-            scrollTo(window.scrollX, destination);
-        } else if (Math.abs(destination - window.scrollY) &lt; 200) {
-            scrollTo(window.scrollX, window.scrollY + ((destination - window.scrollY) / 2));
-            setTimeout(snap, 20, destination);
-        }
-    }
-    var timeoutId = null;
-    addEventListener("scroll", function() {
-        if (timeoutId) clearTimeout(timeoutId);
-        timeoutId = setTimeout(snap, 200, parseInt(document.getElementById('snaptarget').style.top));
-    }, true);
- &lt;/script&gt;
- &lt;div id="snaptarget" class="snaptarget" style="position: relative; top: 200px; width: 100%; height: 200px; background-color: green"&gt;&lt;/div&gt;
-&lt;/body&gt;</pre>
-
-<p>このサンプルでは、スクロールしたときのポジションが "snaptarget" div の上部 200 ピクセルいないだった場合を検知するスクロールイベントリスナーが存在します。もしその条件だった場合、div の上部へスクロール位置を移動するアニメーションを動かします。アニメーションはブラウザのメインスレッド JavaScript で動作するため、他のタブやウィンドウで動作している JavaScript によって割り込まれるかもしれません。従って、期待通りにスムーズに動かなかったりカクカク動作するようになります。代わりに CSS sap-point プロパティを利用することで、アニメーションを非同期で動作させることをブラウザに許可し、ユーザーにスムーズな視覚エフェクトを提供します。</p>
-
-<pre class="brush: html">&lt;body style="height: 5000px"&gt;
- &lt;style&gt;
-  body, /* blink currently has bug that requires declaration on `body` */
-    html {
-      scroll-snap-type: y proximity;
-    }
-    .snaptarget {
-      scroll-snap-align: start;
- position: relative;
-  top: 200px;
-  height: 200px;
-  background-color: green;
-    }
- &lt;/style&gt;
- &lt;div class="snaptarget"&gt;&lt;/div&gt;
-&lt;/body&gt;</pre>
-
-<p>このバージョンはブラウザのメインスレッドで重たい JavaScript が動作していたとしてもスムーズにブラウザで動作することが可能です。</p>
-
-<h3 id="他のエフェクト">他のエフェクト</h3>
-
-<p>多くの場合、スクロール連動エフェクトは CSS を利用したりコンポジットスレッドで動作させることで再実装可能です。しかし、いくつかのケースにおいて現在ブラウザが提供している API では許可されない物が有ります。しかし全ての場合において Firefox はスクロール連動エフェクトをページ上で検知すると開発コンソールに警告を表示します。(バージョン 46 以降) JavaScript でスクロールイベントを使わない JavaScript を使ったスクロールエフェクトの場合は警告は表示されません。他の CSS を利用した実装でカクカクした動作を防ぐサンプルを知りたい場合は、<a href="https://staktrace.com/spout/entry.php?id=834">Firefox における非同期スクロール</a> というブログを見てください。</p>
-
-<h2 id="機能改善">機能改善</h2>
-
-<p>更に我々はコンポジターでのさらなるエフェクトをサポートする予定です。これを実現するために、あなたが実装しようとしているスクロール連動エフェクトの種類に関する情報提供を必要としており、それは実現するための手助けになります。現在そのようなエフェクトを許可するためのいくつかの提案があり、これらにはメリット/デメリットがあります。この提案は現在以下の仕様で議論されています。</p>
-
-<ul>
- <li><a href="https://w3c.github.io/web-animations/">Web Animations</a>: JavaScript で Web アニメーションを正確にコントロールする新しい API です。その<a href="https://wiki.mozilla.org/Platform/Layout/Extended_Timelines">追加提案</a>はスクロール位置と時間をマッピングし、アニメーションのタイムラインとして扱います。</li>
- <li><a href="https://docs.google.com/document/d/18GGuTRGnafai17PDWjCHHAvFRsCfYUDYsi720sVPkws/edit?pli=1#heading=h.iy9r1phg1ux4">CompositorWorker</a>: 小さい単位で JavaScript をコンポジタースレッドで動かすことを許容し、フレームレートを落とすことがなくなります。</li>
- <li><a href="https://docs.google.com/document/d/1VnvAqeWFG9JFZfgG5evBqrLGDZYRE5w6G5jEDORekPY/edit?pli=1">Scroll Customization</a>: コンテンツ用の新しい API を利用することでスクロール差分の適用と利用を指定します。この記事を書いている時点で Mozilla はこの提案をサポートする予定はありませんが、この提案は未完成です。</li>
-</ul>
-
-<h3 id="Call_to_action実施要請">Call to action(実施要請)</h3>
-
-<p>以下の事を考えや意見がある場合、</p>
-
-<ul>
- <li>スクロール連動エフェクトのコンテキストについて上記いずれかの提案</li>
- <li>スクロール連動エフェクトを実装しようとしている</li>
- <li>関連する問題やアイデアがある</li>
-</ul>
-
-<p>我々に情報提供してください。<a href="https://lists.w3.org/Archives/Public/public-houdini/">public-houdini</a> メーリングリスト上での議論に参加可能です。</p>