Performance analysis
When you work with performance analysis for M3 Business Engine, the Profiler and Logging are the recommended tools. The profiler can be used on different levels:
Level | Description |
---|---|
Subsystem |
The profiler can be run on subsystem level to measure performance for all jobs. This is useful for catching performance bottlenecks on the system level. Currently, the following subsystem types can be selected:
|
Job |
The profiler can be run on the job level to measure performance for a specific job. This is useful if you know that you have a performance bottleneck in a job. It can be used on all kind of jobs from the Job view. |
Follow these general principals during testing to get comprehensive input for your analysis:
-
Look for unnecessary database read operations.
Note: One indication of problems is the number of records in the database table that are read. If the number of readings of a given table exceeds the number of records it is a sign of warning. -
Use low logging level while profiling
Note: Logging has a performance impact. The profile will be misleading if the logging level is too high.It is good practice to switch off logging while you run the profiler, and switch on logging to look for the causes of the profiler result.
-
Profile one change at a time
If you change configuration or programs, you should profile one change at a time.
-
Use realistic data
Try to use tables populated with actual number of rows. This to ensure that the profiler values are close to "real" performance values.
-
Use repeatable data
Ensure that similar data (the same number as rows) is used in the test steps to get comparable results.
-
Warm up the system, but use "cold" data
If possible, "warm up" the system to get rid of effects caused by initial reads and "autotuning" effects performed differently on different platforms.
One way to achieve this is to run the test 5-10 times before starting to measure (before starting the profiler.) When you have started the profiler,, you should use "cold" data to get realistic values.
Note: Change to a customer or an item that is not used in the "warm-up" up phase.