profiler
profiler copied to clipboard
hiddenLocalTracksByPid in the URL is too long for profiles with lots of processes
Example: https://profiler.firefox.com/public/j9mtns14hb5jhrwqv0ac8mbazgt97dtjerg5kk8/flame-graph/?globalTrackOrder=0wxYlxYnxYoxYmxYpwyBqyBswyBvyBr&hiddenGlobalTracks=0wnpwY0Y2wxGnxGpwxHmxHowxKfxKhwxLjxLlwyBv&hiddenLocalTracksByPid=1-0~1008-0wLb~11902-0wd~14049-0w3~14049.1-0wd~14117-0w5~14117.1-0w8~14208-01~14208.1-0wf~14266-0wxi~14604-0wn~14604.1-0wi~14606-0w5~14606.1-0w8~1471-0wxt~1519-0wx0x2wzt~1583-0wj~1613-0wt~16399-01~16399.1-0wd~16492-0wyl~16494-0wc~16535-0wxq~16645-0we~16765-0wp~16765.1-0ws~16837-01~16837.1-0we~16857-0wo~16858-0w5~16858.1-0wg~17131-0wp~17131.1-0wp~17150-0wx2~17150.1-0wx3~17352-01~17352.1-0wh~18530-0wj~18530.1-0wm~1858-0wk~18600-0w5~18600.1-0we~18672-0wr~18672.1-0wu~18711-0wj~18711.1-0wc~18779-0~18779.1-0wi~18780-01~18780.1-0wi~1879-0wg~18804-0wv~1882-0wzq~1916-0wb~1960-0wyp~1963-0wd~20595-0wb~20595.1-0wh~21963-0w2~21963.1-0w3~22309-0wk~22309.1-0wb~22315-0wt~22365-0wa~22365.1-0wa~22454-0wk~22454.1-0w5~22708-01~22714-01~22721-01~22741-01~22761-01~22781-01~22801-01~22852-0wd~2322-0wyr~23254.2-0w2~23266.2-0w2~23318.1-0wxg~2397-0wr~24219.2-01~24232.1-0wCp~24428.1-0wx5~24530.2-01~24676.2-0~24679.1-0wm~24817.1-0wt~2495-0wr~25069.1-0wxb~2538-0wyg~25874.2-0w2~26152.2-0w2~26160.3-0w9~26172.2-0w2~26180.1-0wAc~26216.2-0w2~26354.1-0wx5~26612.1-0wx6~26779.2-0w2~26850.2-0w2~26887.2-01~26898.1-0wBb~27000.1-0wx7~2714-0wg~27148.2-0w2~27174.2-0w2~27175.1-0wxr~27296.1-0wo~27439.1-0wxb~27590.2-01~27701.2-01~2784-01~28395.2-0w2~28404.3-0wd~28428.2-0w2~28448.1-0wAi~28588.1-0wxd~2859-0wA6~28710.1-0w3~28868.1-0wx7~2897-0wxl~2903-0wx0~29046.2-01~29081.2-0w2~29092.1-0wAv~2913-0wxc~29206.1-0wxe~2931-0wx3~29335.2-01~29342.1-0wxm~29374.2-0w2~29494.1-0wx7~2960-0wx0~29657.1-0wx7~29741.2-0w2~2975-0wk~29849.2-01~2987-0wxh~30083.2-01~30499.2-01~30526.3-0wd~30571.1-0wzo~30707.1-0wx8~30812.1-0wxf~3096-0wxb~30965.1-0wx8~31168.2-0w2~31208.2-0w2~31457.2-01~31495.2-0w2~3250-0wi~3250.1-0wh~3349-0wi~3349.1-0wa~3604-0wx4~3820-0wys~397-0w5~398-0w2~399-0w7~416-0w4~447-0~463-0w9~464-0wi~466-0~4778-0ws~5367-0wy6~6037-0w2~6037.1-0wc~628-0w3~641-0w2~659-0w7~660-0wyXf~6655-0wxh~673-0w4~680-0~681-0w2~684-0wxm~686-0wCn~696-0~701-0wx5~710-0~715-01~717-0~731-0wm~735-0w7~743-0w6~745-0ws~7708-0wxd~785-01~789-01~790-0~832-0w7~853-01~857-0w2~858-0w5~861-0w5~862-01~882-0w2~896-0wq~914-0w6~916-0wp~9575-0we~23081.1-0wd~23087.1-0wd~23094.1-0wd~23102.1-0wd~23135.1-0wd~23155.1-0wd~23175.1-0wd~23195.1-0wd~23208.1-0w4~23218.1-0wd~23231.1-0w2~23241.1-0wd~23254.1-01~23265.1-0wd~23266.1-01~23287-0we~23318-0wxl~23354-0wAc~23380-0wm~23413-0wu~23430-0wz7~23440-0wxo~23501-0wp~23552-0wx8~23571-0ws~23607-0wq~23694-0wy4~23721-0wx6~23855-0wp~23988-0wi~24017-0wxj~24035-0wxi~24154-0wxo~24210.1-0wd~24219-0~24219.1-01~24232-0wsuwGb~24278-0wu~24374.1-0wd~24428-0wkmwyo~24523-0~24523.1-0wd~24530.1-0w2~24586.1-0wd~24611.1-0w3~24679-0wy4~24817-0wxi~24904-0wi~25027.1-0we~25029.1-0w3~25069-0wlnwxp~25234.1-0wd~25237.1-0w4~25698.1-01~25860.1-0wd~25874.1-01~26147.1-0wd~26152.1-01~26160.2-0wr~26171.1-0wd~26172-01~26172.1-01~26180-0wprwvx1wAjAlwCd~26216-01~26216.1-01~26354-0wkmwye~26448-0wprwxo~26612-0wkmwxi~26758.1-0wd~26779.1-01~26790-0wr~26848.1-0wd~26850.1-01~26885.1-0we~26887-01~26887.1-01~26898-0wqstvwAuB7B9wD4~26917-01~26917.1-0w2~27000-0wkmwy1~27147-0~27147.1-0wd~27148.1-01~27159-0~27159.1-0wd~27174.1-01~27175-0wkmwxv~27296-0wkmwyr~27400-0wn~27439-0wkmwxj~27588.1-0wd~27590-01~27590.1-01~27690.1-01~27699.1-0wd~27701.1-01~28006.1-0wd~28008.1-0w2~28375.1-0we~28395.1-01~28404-0w7~28404.2-0wr~28424.1-0wd~28428-01~28428.1-01~28448-0wqstvwAsAuwC8~28481-01~28481.1-01~28588-0wkmwy8~28710-0wkmwxj~28868-0wkmwxj~29001.1-0wd~29024.1-0w2~29044.1-0wd~29046-0~29046.1-01~29079.1-0wd~29081.1-01~29092-0wprsuwApArwCj~29206-0wjmwxt~29331-0~29331.1-0wd~29335.1-01~29342-0wkmwy0~29369-0~29369.1-0wd~29374.1-01~29466.1-01~29494-0woqwyr~29657-0wkmwxk~29739.1-0wd~29741.1-01~29846.1-0wd~29849.1-0w2~30081.1-0wd~30083.1-01~30497.1-0wd~30499.1-01~30526.2-0ws~30534.1-0wd~30536-01~30536.1-0w2~30571-0wrtux0wArAtwC8~30707-0wkmwya~30812-0wjlwxj~30965-0wkmwxi~31114.1-0wd~31138-01~31138.1-0w2~31166.1-0wd~31168.1-01~31195.1-01~31206.1-0we~31208.1-01~31219-0wqstvwAvB1wBu~31328-0wkmwxr~31449-0~31449.1-0wd~31457.1-01~31469-0wkmwxk~31480-0~31480.1-0wf~31495.1-01~31611-0wlnwxm~31710-0wkmwxh&localTrackOrderByPid=1519-xnxo2xpwy2zmy3wy7zky83wmy9wybnwrycwyetsuyfztygyhvyqwyuyiwypyvwzhx0x2zlznwzsx3wx81x9wxe0xfwxmzizjx1&range=9907m7527&symbolServer=http%3A%2F%2F127.0.0.1%3A3000%2F3gxncssi1fh7pksf0p0j5jjqammrbqlak3zh13a&thread=Uj&transforms=ff-8&v=10
Most of the processes are hidden. For the hidden processes, I don't think the URL needs to store state about which of their local tracks (i.e. threads) are hidden.
┆Issue is synchronized with this Jira Task
I gave this a try but couldn't figure it out. The URL state doesn't have enough information to know which local tracks belong to visible global tracks. It knows the track indexes of hidden global tracks (but not the ones of visible global tracks!), and it stores the hidden local tracks keyed by the PID of the global track - not by track index of the global track! To map the track index of a global track to the right PID, state from the profile is needed. But the URL state needs to be able to round trip without involving the profile state.
I tried to add a separate field called hiddenLocalTracksRelevantPids next to localTrackOrderChangedPids, but I didn't know how to keep its values up-to-date - the hidden global tracks are modified by many different actions, and I think each of these actions would need a new field called pidsForVisibleGlobalTracks.