Enketo Core Performance Monitor
An app that continuously monitors Enketo Core's loading performance in Chrome for a set of benchmark XForms. It posts results to a Graphite server.
The app runs forms in Chrome Headless. We'll also try to update this browser regularly, so performance changes could be caused by Chrome updates or Enketo Core updates. This reflects the user experience well which is what really matters.
Unfortunately the server running this app is not always constant. In the past Digital Ocean has throttled this server.
- For all graphs between 22/02/2018 and 08/07/2018
- From the 7th of August 2018 onwards the app switched to Chrome headless. Best to discard data from before this date.
- From enketo-core 4.56.0 (Aug 7, 2018) and 5.16.2 enketo-core failed to update. This was resolved on July 1st 2020. The data is useless in this period.
- Install graphite server and configure (after many failures I finally settled on these retentions with the default average aggregation: 1h:1d,1d:5y,7d:10y)
- Install node 12.x, and grunt-cli
- Install build-essential
apt-get install build-essential
- git clone enketo-core and build with
npm install && grunt
- git clone this app as a sibling of enketo-core and run 'npm install'
- configure in config.json
- test by running
node /path/to/enketo-core-performance-monitor/benchmark -f widgets.xml
- setup cron job for
node /path/to/enketo-core-performance-monitor/benchmark -aevery hour with the above retention. cronjob frequency = smallest retention frequency
- set up post-commit hook - run with pm2 or forever - to always keep enketo-core up-to-date and rebuild using a shell script.
- drop any additional forms you would to include in /forms.