{"id":166,"date":"2013-04-18T17:04:38","date_gmt":"2013-04-18T21:04:38","guid":{"rendered":"http:\/\/blog.mozilla.org\/nfroyd\/?p=166"},"modified":"2013-04-18T17:04:38","modified_gmt":"2013-04-18T21:04:38","slug":"cold-page-load-os-x-10-7-and-talos","status":"publish","type":"post","link":"https:\/\/blog.mozilla.org\/nfroyd\/2013\/04\/18\/cold-page-load-os-x-10-7-and-talos\/","title":{"rendered":"cold page load, OS X 10.7, and talos"},"content":{"rendered":"<p>I&#8217;ve been looking at some Talos pageload benchmark data lately. The intention is gleaning enough information to decide <a title=\"perf workweek talos discussion\" href=\"http:\/\/blog.mozilla.org\/nfroyd\/2013\/03\/25\/perf-workweek-talos-discussion\/\">whether having a separate cold page load benchmark is worthwhile<\/a>. Our Talos pageload benchmark loads a number of sites a specified number of times (currently 25), records times for all of those, discards the highest time per page (usually the first page load), and averages everything else.\u00a0 The working hypothesis is that the 1st and\/or 2nd iteration of each site load might be worth tracking separately.<\/p>\n<p>To that end, I&#8217;ve been writing a lot of shell scripts to munge benchmark numbers, running those numbers through <a href=\"http:\/\/gnuplot.info\/\">gnuplot<\/a>, and staring at the output. One of the graph styles I&#8217;ve been using is the <a href=\"http:\/\/en.wikipedia.org\/wiki\/Q%E2%80%93Q_plot\">Q-Q plot<\/a>, which I use for comparing data like so:<\/p>\n<ol>\n<li>Sort the page load times for the 1st iteration;<\/li>\n<li>Sort the page load times for the nth iteration (usually 2nd, 5th, or 10th, the exact number doesn&#8217;t seem to matter a great deal);<\/li>\n<li>Plot numbers from step 1 vs. numbers from step 2 and eyeball the graph.<\/li>\n<\/ol>\n<p>There&#8217;s a fair amount of data to crunch (8000 runs times 100 sites times 25 runs divided across 8 operating systems), but the most interesting thing to come out of this experiment so far is consistently slower cold page loads on OS X 10.7 on certain sites.\u00a0 Graphing most sites across OS X 10.6, 10.7, and 10.8, the graphs look like this:<\/p>\n<p><a href=\"http:\/\/blog.mozilla.org\/nfroyd\/files\/2013\/04\/plot-stackoverflow.com_.png\"><img decoding=\"async\" loading=\"lazy\" class=\"alignnone  wp-image-177\" alt=\"Q-Q plot for stackoverflow.com\" src=\"http:\/\/blog.mozilla.org\/nfroyd\/files\/2013\/04\/plot-stackoverflow.com_-300x225.png\" width=\"480\" height=\"360\" srcset=\"https:\/\/blog.mozilla.org\/nfroyd\/files\/2013\/04\/plot-stackoverflow.com_-300x225.png 300w, https:\/\/blog.mozilla.org\/nfroyd\/files\/2013\/04\/plot-stackoverflow.com_.png 640w\" sizes=\"(max-width: 480px) 100vw, 480px\" \/><\/a><\/p>\n<p><a href=\"http:\/\/blog.mozilla.org\/nfroyd\/files\/2013\/04\/plot-reuters.com_.png\"><img decoding=\"async\" loading=\"lazy\" class=\"alignnone  wp-image-175\" alt=\"Q-Q plot for reuters.com\" src=\"http:\/\/blog.mozilla.org\/nfroyd\/files\/2013\/04\/plot-reuters.com_-300x225.png\" width=\"480\" height=\"360\" srcset=\"https:\/\/blog.mozilla.org\/nfroyd\/files\/2013\/04\/plot-reuters.com_-300x225.png 300w, https:\/\/blog.mozilla.org\/nfroyd\/files\/2013\/04\/plot-reuters.com_.png 640w\" sizes=\"(max-width: 480px) 100vw, 480px\" \/><\/a><\/p>\n<p>These sorts of graphs are exactly what you&#8217;d want to see across OS versions: improving load times along warm page load, cold page load, or both.<\/p>\n<p>Before pointing out the sites, it&#8217;s worth noting that the pages used in the benchmark are <strong><\/strong><strong>representative<\/strong> of these sites as they appeared ~1 year ago: things may have changed and the pages may have been altered slightly to avoid fetching resources off the network, etc.\u00a0 The sites are:<\/p>\n<ul>\n<li>56.com<\/li>\n<li>alibaba.com<\/li>\n<li>bild.de<\/li>\n<li>cnet.com<\/li>\n<li>deviantart.com<\/li>\n<li>etsy.com<\/li>\n<li>en.wikipedia.org<\/li>\n<li>filestube.com<\/li>\n<li>foxnews.com<\/li>\n<li>guardian.co.uk<\/li>\n<li>huffingtonpost.com<\/li>\n<li>hatena.ne.jp<\/li>\n<li>icanhascheezburger.com<\/li>\n<li>linkedin.com<\/li>\n<li>mashable.com<\/li>\n<li>mail.ru<\/li>\n<li>nicovideo.jp<\/li>\n<li>noimpactman.typepad.com<\/li>\n<li>orange.fr<\/li>\n<li>spiegel.de<\/li>\n<li>thepiratebay.org<\/li>\n<li>wsj.com<\/li>\n<li>whois.domaintools.com<\/li>\n<\/ul>\n<p>I&#8217;ll show a few representative graphs here; you can <a href=\"http:\/\/people.mozilla.com\/~nfroyd\/less-q-q-moar-pew-pew\/\">examine graphs for all the sites in the benchmark if you wish<\/a>.<\/p>\n<p><a href=\"http:\/\/blog.mozilla.org\/nfroyd\/files\/2013\/04\/plot-spiegel.de_.png\"><img decoding=\"async\" loading=\"lazy\" class=\"alignnone  wp-image-176\" alt=\"Q-Q plot for spiegel.de\" src=\"http:\/\/blog.mozilla.org\/nfroyd\/files\/2013\/04\/plot-spiegel.de_-300x225.png\" width=\"480\" height=\"360\" srcset=\"https:\/\/blog.mozilla.org\/nfroyd\/files\/2013\/04\/plot-spiegel.de_-300x225.png 300w, https:\/\/blog.mozilla.org\/nfroyd\/files\/2013\/04\/plot-spiegel.de_.png 640w\" sizes=\"(max-width: 480px) 100vw, 480px\" \/><\/a><\/p>\n<p><a href=\"http:\/\/blog.mozilla.org\/nfroyd\/files\/2013\/04\/plot-orange.fr_.png\"><img decoding=\"async\" loading=\"lazy\" class=\"alignnone  wp-image-172\" alt=\"Q-Q plot for orange.fr\" src=\"http:\/\/blog.mozilla.org\/nfroyd\/files\/2013\/04\/plot-orange.fr_-300x225.png\" width=\"480\" height=\"360\" srcset=\"https:\/\/blog.mozilla.org\/nfroyd\/files\/2013\/04\/plot-orange.fr_-300x225.png 300w, https:\/\/blog.mozilla.org\/nfroyd\/files\/2013\/04\/plot-orange.fr_.png 640w\" sizes=\"(max-width: 480px) 100vw, 480px\" \/><\/a><\/p>\n<p><a href=\"http:\/\/blog.mozilla.org\/nfroyd\/files\/2013\/04\/plot-huffingtonpost.com_.png\"><img decoding=\"async\" loading=\"lazy\" class=\"alignnone  wp-image-169\" alt=\"Q-Q plot for huffingtonpost.com\" src=\"http:\/\/blog.mozilla.org\/nfroyd\/files\/2013\/04\/plot-huffingtonpost.com_-300x225.png\" width=\"480\" height=\"360\" srcset=\"https:\/\/blog.mozilla.org\/nfroyd\/files\/2013\/04\/plot-huffingtonpost.com_-300x225.png 300w, https:\/\/blog.mozilla.org\/nfroyd\/files\/2013\/04\/plot-huffingtonpost.com_.png 640w\" sizes=\"(max-width: 480px) 100vw, 480px\" \/><\/a><\/p>\n<p><a href=\"http:\/\/blog.mozilla.org\/nfroyd\/files\/2013\/04\/plot-linkedin.com_.png\"><img decoding=\"async\" loading=\"lazy\" class=\"alignnone  wp-image-170\" alt=\"Q-Q plot for linkedin.com\" src=\"http:\/\/blog.mozilla.org\/nfroyd\/files\/2013\/04\/plot-linkedin.com_-300x225.png\" width=\"480\" height=\"360\" srcset=\"https:\/\/blog.mozilla.org\/nfroyd\/files\/2013\/04\/plot-linkedin.com_-300x225.png 300w, https:\/\/blog.mozilla.org\/nfroyd\/files\/2013\/04\/plot-linkedin.com_.png 640w\" sizes=\"(max-width: 480px) 100vw, 480px\" \/><\/a><\/p>\n<p><a href=\"http:\/\/blog.mozilla.org\/nfroyd\/files\/2013\/04\/plot-thepiratebay.org_.png\"><img decoding=\"async\" loading=\"lazy\" class=\"alignnone  wp-image-178\" alt=\"Q-Q plot for thepiratebay.org\" src=\"http:\/\/blog.mozilla.org\/nfroyd\/files\/2013\/04\/plot-thepiratebay.org_-300x225.png\" width=\"480\" height=\"360\" srcset=\"https:\/\/blog.mozilla.org\/nfroyd\/files\/2013\/04\/plot-thepiratebay.org_-300x225.png 300w, https:\/\/blog.mozilla.org\/nfroyd\/files\/2013\/04\/plot-thepiratebay.org_.png 640w\" sizes=\"(max-width: 480px) 100vw, 480px\" \/><\/a><\/p>\n<p>What&#8217;s so interesting about these graphs is that the maximum cold page load time for OS X 10.6 and 10.8 is barely the minimum cold page load time for OS X 10.7.\u00a0 The warm page load times are similar, too.<\/p>\n<p>mozilla.com doesn&#8217;t appear in the above list, but is notable for exhibiting significantly worse cold load performance on OS 10.8:<\/p>\n<p><a href=\"http:\/\/blog.mozilla.org\/nfroyd\/files\/2013\/04\/plot-mozilla.com_.png\"><img decoding=\"async\" loading=\"lazy\" class=\"alignnone  wp-image-168\" alt=\"Q-Q plot for mozilla.com\" src=\"http:\/\/blog.mozilla.org\/nfroyd\/files\/2013\/04\/plot-mozilla.com_-300x225.png\" width=\"480\" height=\"360\" srcset=\"https:\/\/blog.mozilla.org\/nfroyd\/files\/2013\/04\/plot-mozilla.com_-300x225.png 300w, https:\/\/blog.mozilla.org\/nfroyd\/files\/2013\/04\/plot-mozilla.com_.png 640w\" sizes=\"(max-width: 480px) 100vw, 480px\" \/><\/a><\/p>\n<p>I&#8217;m probably not going to dive any deeper on this issue right now; instead, this discrepancy will get filed away under &#8220;interesting things that turn up when you look at cold load performance specifically&#8221;.\u00a0 Once I reach some sort of conclusion on whether benchmarking cold page load separately is worthwhile, then I&#8217;ll come back to the interesting issues found along the way.\u00a0 If anybody has any theories about why these pages exhibit this discrepancy, I&#8217;d love to hear them!<\/p>\n","protected":false},"excerpt":{"rendered":"<p>I&#8217;ve been looking at some Talos pageload benchmark data lately. The intention is gleaning enough information to decide whether having a separate cold page load benchmark is worthwhile. Our Talos pageload benchmark loads a number of sites a specified number of times (currently 25), records times for all of those, discards the highest time per [&hellip;]<\/p>\n","protected":false},"author":320,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[1],"tags":[31949],"_links":{"self":[{"href":"https:\/\/blog.mozilla.org\/nfroyd\/wp-json\/wp\/v2\/posts\/166"}],"collection":[{"href":"https:\/\/blog.mozilla.org\/nfroyd\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/blog.mozilla.org\/nfroyd\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/blog.mozilla.org\/nfroyd\/wp-json\/wp\/v2\/users\/320"}],"replies":[{"embeddable":true,"href":"https:\/\/blog.mozilla.org\/nfroyd\/wp-json\/wp\/v2\/comments?post=166"}],"version-history":[{"count":0,"href":"https:\/\/blog.mozilla.org\/nfroyd\/wp-json\/wp\/v2\/posts\/166\/revisions"}],"wp:attachment":[{"href":"https:\/\/blog.mozilla.org\/nfroyd\/wp-json\/wp\/v2\/media?parent=166"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blog.mozilla.org\/nfroyd\/wp-json\/wp\/v2\/categories?post=166"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blog.mozilla.org\/nfroyd\/wp-json\/wp\/v2\/tags?post=166"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}