This is the script to extract peak usage ``` import sys import json data = json.loads(open(sys.argv[-1]).read()) def getPeakMem(process): max = 0 current = 0 pid = 0 processName = "" for thread in process["threads"]: if thread["name"] == "GeckoMain": pid = thread["pid"] processName = thread.get("processName", "unknown") break for counter in process["counters"]: if counter["name"] == "malloc": for sample in process["counters"][0]["samples"]["data"]: current += sample[1] if current > max: max = current print( f"[{pid}][{processName}] Peak memory allocation {max / (1024 * 1024)}" ) getPeakMem(data) for process in data["processes"]: getPeakMem(process) ``` example on a perf test : ``` ➜ python3 peak.py profile.json [51064][Parent Process] Peak memory allocation 298.32491302490234 [51065][unknown] Peak memory allocation 35.444618225097656 [51070][Utility Process] Peak memory allocation 35.41194152832031 [51067][unknown] Peak memory allocation 35.460235595703125 [51084][Web Content] Peak memory allocation 37.041725158691406 [51073][Inference] Peak memory allocation 479.8895950317383 [51083][Web Content] Peak memory allocation 37.04314422607422 [51074][Web Content] Peak memory allocation 37.16900634765625 [51072][Web Content] Peak memory allocation 39.958473205566406 [51066][WebExtensions] Peak memory allocation 52.40960693359375 [51068][Web Content] Peak memory allocation 40.31774139404297 [51071][Privileged Content] Peak memory allocation 56.09490203857422 ```
Bug 1944790 Comment 1 Edit History
Note: The actual edited comment in the bug view page will always show the original commenter’s name and original timestamp.
This is the script to extract peak usage ``` import sys import json data = json.loads(open(sys.argv[-1]).read()) def getPeakMem(process): max = 0 current = 0 pid = 0 processName = "" for thread in process["threads"]: if thread["name"] == "GeckoMain": pid = thread["pid"] processName = thread.get("processName", "unknown") break for counter in process["counters"]: if counter["name"] == "malloc": for sample in counter["samples"]["data"]: current += sample[1] if current > max: max = current print( f"[{pid}][{processName}] Peak memory allocation {max / (1024 * 1024)}" ) getPeakMem(data) for process in data["processes"]: getPeakMem(process) ``` example on a perf test : ``` ➜ python3 peak.py profile.json [51064][Parent Process] Peak memory allocation 298.32491302490234 [51065][unknown] Peak memory allocation 35.444618225097656 [51070][Utility Process] Peak memory allocation 35.41194152832031 [51067][unknown] Peak memory allocation 35.460235595703125 [51084][Web Content] Peak memory allocation 37.041725158691406 [51073][Inference] Peak memory allocation 479.8895950317383 [51083][Web Content] Peak memory allocation 37.04314422607422 [51074][Web Content] Peak memory allocation 37.16900634765625 [51072][Web Content] Peak memory allocation 39.958473205566406 [51066][WebExtensions] Peak memory allocation 52.40960693359375 [51068][Web Content] Peak memory allocation 40.31774139404297 [51071][Privileged Content] Peak memory allocation 56.09490203857422 ```