In performance optimization tasks, a very important point is to prioritize optimization work. The standard approach for these purposes implies setting values ​​in the “Priority” column. Customers may not understand the purpose of this column, quite rightly stating: "For us, everything is the same priority."
After that, they usually need to be explained that optimization work, as a rule, is not performed in parallel: both due to limited resources, and due to the mutual depreciation of work, and in fact, priority is the order of work and problem solving for the list of key operations. Based on this, a list of operations with subjectively assigned priorities is born, which is then used in work if someone manages the project, or is not used if the expert is left to himself and has his own idea of ​​the order in which to solve the problems. . Of course, one should not assume that this view is inadequate, it is often based on such objective indicators as the minimum laboriousness of the work (the “quick wins strategy”) or the degree of influence on the overall result, and in general the result may not suffer. The bad thing about this is that there is no controllability of the process - you have planned one sequence for work, in fact it turned out to be different. Either you can enforce the process controllability forcibly, but errors in the formation of the queue will lead to the fact that it doesn’t reach at all any really affecting the result of the operations, or will come much later than necessary.
It is proposed to look for a recipe in forming priorities on the basis of objective information, in a rational way. This will allow both the expert to automatically ensure compliance with the order of work (a rational decision will serve as a reliable rationale for people of a technical warehouse), as well as to avoid the shift of important works to obviously long terms.
')
The method proposed for this is described further in the example.
At the start of work from the customer received a table of key operations, priorities and target time. After a period of time, operations that were never performed were excluded from the table, and the table acquired the form presented in table 1. In it, we painted the first three operations in order of priority - in red, the second three - in yellow, the third - in green, the rest were left without color. In fact, this is the sequence of optimization tasks, in case it is necessary to carry out it, and among these tasks the most priority ones are highlighted.
Table 1. Initial priority of operations
After some time, statistics was obtained on the time of operations for the period. It is listed in Table 2. Questions immediately arose from it. For example, is it really so important to optimize among the first three for Operation_2, which has been executed only 4 times and has negligible execution time. Probably, with negligible labor costs for optimization, this discrepancy could be ignored, but the labor costs for optimization are not known in advance, and labor costs for the rate can be taken as a standard for all operations, so there is actually no objective basis for even the labor cost rate. for her to hold before the rest remaining. This is the case when the expert, in practice, is likely to violate the agreed sequence, and from the point of view of the result will be right, but from the point of view of management - the controllability of the process will be broken.
Table 2. Initial Priority and Actual Results
In order to get away from the obvious inconsistencies of the assigned priorities with real circumstances, it was necessary to clarify the priorities. After clarification, it was proposed to take the number of operations performed as priorities. This was the first point on the path to a rational prioritization methodology. The statistics, sorted according to the specified priority, is shown in Table 3. From the coloring in the two columns on the left, you can see where the original queues of the operation had left.
Table 3. Prioritization by number of executions
Actually, there are also questions to this table, they follow from the order of the first three: it is not obvious, for example, why Operation_14 comes forward Operation_15 where the loss of time is greater. So, you can try to optimize this sequence in accordance with a rational approach.
For this, the second, no less important step was the application of the basic principle of the
BABLOX method. This principle is that the user waits for the reaction of the system to be paid by his employer, and, therefore, those operations that “cost more” should be prioritized. We did not have additional information on the distribution of user wages by operations. In this case, we took it equal for all, so the multiplier of the wage per second turned out to be possible to ignore. To identify more expensive operations, it is enough to have data on the total time for performing operations, and according to our statistics, multiply the average operation time by the number of its operations. Statistics sorted by this new priority are shown in Table 4. By coloring in the three columns on the left, you can see where the original queues of the operations queued, and where the operations were assigned by the number of executions.
Table 4. Reassignment of priority by total execution time (by "payment")
The principle of the BABLOX approach can be developed if we reformulate the task — to minimize not the total “pay” for the user’s waiting for the system’s reaction, but the “overpayment” —ie time overspending. Subtracting the target time from the average time, and multiplying this difference by the number of operations, we obtain the displaced total time (as in the previous table, we assume the costs for all operations are equal and therefore we do not multiply the cost of payment for a second of work). The bonus to the mechanism - close to zero and negative values ​​of the displaced total time immediately show operations, the improvement of which will not affect the average result at all.
Table 5. Reassigning priority by shifted total execution time ("overpayment")
For further information there is no information, so you can stop.
Further movement to a new rational solution is possible when additional information is received, namely:
- rates of labor-intensive work to optimize each of the operations;
- the rates for performing the operations themselves in identifying the apparent and significant unevenness of the “cost of waiting” for different categories of users.
As a final illustration, Table 6 shows the order in which work would be performed under a strict requirement to maintain the initial priority, and what sequence would have operations that really need to be optimized and affect the result.
Table 6. Information about the order of operations that really need to be optimized and affect the result in the initial order of solving problems
This table also shows that the irrational decision made at the initial stage may not provide (and in this particular case does not provide) a result acceptable from the point of view of the Pareto principle, since the optimization of the first 20% of the queue in the original order will not close 80% of operations that really need to be optimized according to the collected statistics.
We did not consider the industry's adopted APDEX. This indicator is relative, it does not show the real impact of a single key operation on the work of the entire system in relation to the number of operations performed. Therefore, it cannot serve as a guideline for rational prioritization; moreover, the APDEX method itself assumes that priorities are assigned subjectively. The quality of such decisions can be judged according to table 6.
As an additional moral to this article.
System performance is a process that requires management. It would be naive to assume that in all cases, without exception, it is enough to build a large supply of equipment capacity, and then you can not manage. Almost always it leads to consequences in the style of “dragging the hippopotamus out of the swamp”, and the more powerful the “hippopotamus”, the farther it will “climb”, and the more expensive and harder it will be to “pull out”. The organization of information gathering (statistics), decision making based on information (here - reassigning priorities, in
other cases - capacity adjustments) are elements of the operational management scheme, which should not be neglected for large systems, but on the contrary, we must learn them competently and use it locally. .
Filippov Yevgeny