Since we switched the MediaWiki tests from sqlite (on tmpfs) to MySQL, the build time has increased significantly. This task track tasks to boost MySQL performances.
Description
Status | Subtype | Assigned | Task | ||
---|---|---|---|---|---|
Resolved | Krinkle | T96229 Creating MySQL tables for MediaWiki sometimes stalled on I/O for several minutes | |||
Resolved | Krinkle | T95971 Apache on Jenkins slave takes over 30s to respond (QUnit/AJAX "Test timed out") | |||
Resolved | Krinkle | T96249 MySQL tuning on CI slaves (tracking) | |||
Resolved | Krinkle | T96230 Switch MySQL storage to tmpfs | |||
Resolved | JanZerebecki | T126699 mediawiki jobs fail intermittently with "mw-teardown-mysql.sh: Can't revoke all privileges" | |||
Declined | Krinkle | T96250 Tune MySQL innodb settings on CI slaves | |||
Resolved | Krinkle | T96308 Evaluate using libeatmydata for mysqld |
Event Timeline
In addition to using tmpfs for the mysqld.datadir (T96230), there seems to be quite a lot of information online about using tmpfs for mysqld.tmpdir.
- http://www.fromdual.com/mysql-tmpdir-on-ram-disk
- http://openquery.com.au/blog/update-mysql-tmpdir-tmpfs
- http://2bits.com/articles/reduce-your-servers-resource-usage-moving-mysql-temporary-directory-ram-disk.html
- http://www.askapache.com/optimize/super-speed-secrets.html#tmpfs_MySQL
I'm not sure to what extent our use of MySQL involves it reaching out to the tmpdir, but considering that that is disk-bound on Ubuntu by default, we may want to create consider switching the mysql tmpdir to tmpfs as well. Let's try T96230 first, though.
In addition to mysql datadir and mysql tmpdir, another thing that I read a fair bit online is using engine=MEMORY. http://dev.mysql.com/doc/refman/5.5/en/memory-storage-engine.html
I imagine that with datadir on tmpfs, using the MEMORY engine shouldn't matter much though. I'd rather we stick to InnoDB and other engines for predictable behaviour.
I gave engine=MEMORY a quick try on https://gerrit.wikimedia.org/r/#/c/199633/ but eventually gave up because that engine does not support BLOB/TEXT columns so the installer fail initializing such tables (ex: user).