This is a Moodle admin plugin that provides developers with insights into not only what pages in your site are slow, but why. It uses the the Excimer sampling php profiler to so.
It is complementary to the profiler in core which uses Tideways. The key downside to Tideway is that it has a substantial performance hit and can’t be used in production to capture everything and only later decide what to keep or analyse.
This plugin was developed by Catalyst IT Australia: https://www.catalyst-au.net/
Source: catalyst/moodle-tool_excimer: A Moodle tool to find bottlenecks in your code safely in production
SPX, which stands for Simple Profiling eXtension, is just another profiling extension for PHP.
It differentiates itself from other similar extensions as being:
- totally free and confined to your infrastructure (i.e. no data leaks to a SaaS).
- very simple to use: just set an environment variable (command line) or switch on a radio button (web page) to profile your script. Thus, you are free of:
- manually instrumenting your code (Ctrl-C a long running command line script is even supported).
- using a dedicated browser extension or command line launcher.
- multi metrics capable: 21 currently supported (various time metrics, memory, included files, objects in use, I/O…).
- able to collect data without losing context. For example Xhprof (and potentially its forks) aggregates data per caller / callee pairs, which implies the loss of the full call stack and forbids timeline or Flamegraph based analysis.
- shipped with its web UI which allows to:
- enable / configure profiling for the current browser session
- list profiled script reports
- select a report for in-depth analysis, featuring these interactive visualizations:
- timeline (scale to millions of function calls)
- flat profile
Source: NoiseByNorthwest/php-spx: A simple & straight-to-the-point PHP profiling extension with its built-in web UI
Collect Code-Level Performance Tracing
Retrace collects an amazing amount of details about what is happening at the code level within your application. It is a gold mine for developers who are trying to troubleshoot bugs and look for ways to optimize their code.
- Web request length and context details
- SQL queries
- Log statements and exceptions
- Interaction with dozens of dependencies like NoSQL, caching, etc
- External HTTP web service calls
Source: Retrace Application Performance Management (APM) – Stackify
Your mission control center for PHP application performance
Tideways saves you time by taking the guesswork out of your app’s backend performance. Gain detailed insights, spot performance bottlenecks, and get real-time error detection alerts.
Source: Mission control center for PHP application performance | Tideways
APM (Alternative PHP Monitor) is a monitoring extension enabling native Application Performance Management (APM) for PHP. It doesn’t require any modification to your application’s code and let’s you collect performance metrics as well as catching issues that may arise.
Source: patrickallaert/php-apm: PHP APM (Alternative PHP Monitor)
Webgrind is a Xdebug profiling web frontend in PHP. It implements a subset of the features of kcachegrind and installs in seconds and works on all platforms. For quick’n’dirty optimizations it does the job. Here’s a screenshot showing the output from profiling:
- Super simple, cross platform installation – obviously 🙂
- Track time spent in functions by self cost or inclusive cost. Inclusive cost is time inside function + calls to other functions.
- See if time is spent in internal or user functions.
- See where any function was called from and which functions it calls.
- Generate a call graph using gprof2dot.py
Suggestions for improvements and new features are more than welcome – this is just a start.
מקור: jokkedk/webgrind: Xdebug Profiling Web Frontend in PHP
Moodle’s profiling tool
When your software is too slow, you need measurements to tell you which are the slow bits. Tools that do that are called profilers. One of the better profiling tools for PHP is called XHProf. The good news is that it has already been integrated into Moodle, and there is documentation about getting it working. Basically, you just need to install a PHP extension and turn on some options under Admin -> Development -> Profiling.
ב: Tim’s blog: Performance-testing Moodle.