diff --git a/dom/plugins/base/nsPluginHost.cpp b/dom/plugins/base/nsPluginHost.cpp index f6dab16edd26..7679596cbdc5 100644 --- a/dom/plugins/base/nsPluginHost.cpp +++ b/dom/plugins/base/nsPluginHost.cpp @@ -719,10 +719,10 @@ void nsPluginHost::OnPluginInstanceDestroyed(nsPluginTag* aPluginTag) // Another reason not to unload immediately is that loading is expensive, // and it is better to leave popular plugins loaded. // - // Our default behavior is to try to unload a plugin three minutes after - // its last instance is destroyed. This seems like a reasonable compromise - // that allows us to reclaim memory while allowing short state retention - // and avoid perf hits for loading popular plugins. + // Our default behavior is to try to unload a plugin after a pref-controlled + // delay once its last instance is destroyed. This seems like a reasonable + // compromise that allows us to reclaim memory while allowing short state + // retention and avoid perf hits for loading popular plugins. if (!hasInstance) { if (UnloadPluginsASAP()) { aPluginTag->TryUnloadPlugin(false); diff --git a/dom/plugins/ipc/PluginProcessParent.cpp b/dom/plugins/ipc/PluginProcessParent.cpp index 5e897f0748fb..d7fb2fde9743 100644 --- a/dom/plugins/ipc/PluginProcessParent.cpp +++ b/dom/plugins/ipc/PluginProcessParent.cpp @@ -11,6 +11,7 @@ #include "mozilla/ipc/BrowserProcessSubThread.h" #include "mozilla/plugins/PluginMessageUtils.h" +#include "mozilla/Telemetry.h" using std::vector; using std::string; @@ -75,6 +76,7 @@ PluginProcessParent::Launch(int32_t timeoutMs) vector args; args.push_back(MungePluginDsoPath(mPluginFilePath)); + Telemetry::AutoTimer timer; return SyncLaunch(args, timeoutMs, selectedArchitecture); } diff --git a/toolkit/components/telemetry/Histograms.json b/toolkit/components/telemetry/Histograms.json index f2fb689c4df9..357c6b7312ce 100644 --- a/toolkit/components/telemetry/Histograms.json +++ b/toolkit/components/telemetry/Histograms.json @@ -2328,6 +2328,14 @@ "n_buckets": 20, "description": "Time spent loading plugin DLL and obtaining metadata (ms)" }, + "PLUGIN_STARTUP_MS": { + "expires_in_version": "never", + "kind": "exponential", + "high": "5000", + "n_buckets": 20, + "extended_statistics_ok": true, + "description": "Time spent starting up plugins (ms)" + }, "PLUGIN_SHUTDOWN_MS": { "expires_in_version": "never", "kind": "exponential",