<div dir="ltr"><div>Hi,</div><div><br></div><div>This is the monthly report from the Wikimedia Performance Team for January 2016.</div><div><br></div><div>## Our progress ##</div><div><br></div><div>### Multi-datacenter</div><div><br></div><div>* The central login system started to use DB slaves for some actions instead of master DB.</div><div>* MediaWiki Special pages and Action classes now support defining DB query and write expectations (with logging for violations thereof).</div><div>* Clean up of haphazard database transaction methods largely finished in MediaWiki core and extensions.</div><div>* Lock acquisition time reduced. Logic was inefficient and resulted in wasted time. This reduced time spent in backend when saving edits.</div><div>* "Rebound purges" enabled in production. To compensate for DB lag, a secondary purge for articles avoids stale content in Varnish. – <a href="https://phabricator.wikimedia.org/T113192">https://phabricator.wikimedia.org/T113192</a></div><div><br></div><div>### Navigation Timing</div><div>* We experimenting with creating a new metric "Time to first image" (how long for the principle image to show). Based on video capture, we were unable to correlate User Timing API measurements with when an image actually becomes visible. To be revisited at a later time. –  <a href="https://phabricator.wikimedia.org/T115600">https://phabricator.wikimedia.org/T115600</a>.</div><div><br></div><div>### Media handling (Thumbor)</div><div>* Added cgroup support for controlling resource consumption.</div><div>* Implemented ability to pre-render multiple thumbnail sizes with a single request.</div><div>* Video thumbnails render faster by loading only the relevant frame from Swift (not the whole video).</div><div>* Working on a strategy for Thumbor deployment in Wikimedia production. Thumbor is stateless and acts as drop-in replacement for current MediaWiki PHP image scalers. – <a href="https://phabricator.wikimedia.org/T121388">https://phabricator.wikimedia.org/T121388</a></div><div>* Our Thumbor plugins have been consolidated into a single Git repo and moved Gerrit to Phabricator Diffusion.</div><div><br></div><div>### ResourceLoader:</div><div>* Work has started on the solution for the cache performance problem with static MediaWiki resources. – <a href="https://phabricator.wikimedia.org/T99096">https://phabricator.wikimedia.org/T99096</a></div><div><br></div><div>### Metric dashboards</div><div>* Earlier this month, Timo Tijhof gave a tech talk on "Creating Useful Dashboards with Grafana" – <a href="https://www.youtube.com/watch?v=UlL6UoRUQAM">https://www.youtube.com/watch?v=UlL6UoRUQAM</a></div><div>* New dashboard: <a href="https://grafana.wikimedia.org/dashboard/db/edit-count">https://grafana.wikimedia.org/dashboard/db/edit-count</a> (Global edit rate of Wikimedia wikis)</div><div>* New dashboard: <a href="https://grafana.wikimedia.org/dashboard/db/time-to-first-byte">https://grafana.wikimedia.org/dashboard/db/time-to-first-byte</a> (Navigation Timing "responseStart" metric)</div><div><br></div><div>## How are we doing? ##</div><div><br></div><div>### Metrics</div><div><br></div><div>Client-side performance has remained stable over the past month. Save Timing has also remained stable, around the 1s median mark.</div><div><br></div><div>Backend Save Processing Timing has improved slightly and was consistently 45ms (median) and 95ms (p75) lower in January compared to December.</div><div><br></div><div><a href="https://performance.wikimedia.org/#!/month">https://performance.wikimedia.org/#!/month</a></div><div><a href="https://grafana.wikimedia.org/dashboard/db/save-timing?from=now-50d">https://grafana.wikimedia.org/dashboard/db/save-timing?from=now-50d</a></div><div><a href="https://grafana.wikimedia.org/dashboard/db/navigation-timing?from=now-50d">https://grafana.wikimedia.org/dashboard/db/navigation-timing?from=now-50d</a></div><div><a href="https://grafana.wikimedia.org/dashboard/db/time-to-first-byte?from=now-50d">https://grafana.wikimedia.org/dashboard/db/time-to-first-byte?from=now-50d</a></div><div><br></div><div>### Job Queue</div><div><br></div><div>On January 1st, the Job Queue started growing rapidly with htmlCacheUpdate jobs. This was mitigated on 21 January by adding a dedicated runner for that job type. Total queue size reached over 7 million before the dedicated runner went live (typical size is under 300K).  – <a href="https://phabricator.wikimedia.org/T124194">https://phabricator.wikimedia.org/T124194</a>. There is an ongoing investigation at <a href="https://phabricator.wikimedia.org/T124418">https://phabricator.wikimedia.org/T124418</a> about the increase of those jobs.</div><div><br></div><div><a href="https://grafana.wikimedia.org/dashboard/db/job-queue-health?from=now-50d">https://grafana.wikimedia.org/dashboard/db/job-queue-health?from=now-50d</a></div><div><br></div><div><br></div><div>Until the next time,</div><div>Gilles, Peter, Aaron, Ori, and Timo.</div><div><br></div><div><a href="https://www.mediawiki.org/wiki/Wikimedia_Performance_Team">https://www.mediawiki.org/wiki/Wikimedia_Performance_Team</a></div></div>