You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
@@ -60,7 +60,7 @@ The [`sampler`](https://github.com/vhive-serverless/invitro/tree/main/sampler) t
60
60
61
61
For every function in the trace, the closest function in the [`vSwarm`](https://github.com/vhive-serverless/vSwarm/tree/main/) benchmark suite is set as its proxy (50-percentile memory and 50-percentile duration are considered to find the highest correlation). The 50th percentile is used to ensure that the mapping is not only corresponding to the peak values of the workload, but is also leading to a representative proxy function. Currently the tool utilizes only _Serving Functions_ that are _NOT Pipelined_ as proxy functions.
62
62
63
-
Currently, vSwarm does not have full coverage of the Azure trace functions. To make sure that we do not have a high error in the mapping of functions, we set a hard threshold of 40% as the maximum absolute error (from the actual trace function duration) that a proxy function can have to be mapped to a trace function. If we do not find an eligible function for the mapping from vSwarm, we fall back to using standard InVitro sample functions in their place for those functions alone.
63
+
Currently, vSwarm does not have full coverage of the Azure trace functions. To make sure that we do not have a high error in the mapping of functions, we set a hard threshold of 40% as the maximum absolute error (from the actual trace function duration) that a proxy function can have to be mapped to a trace function. If we do not find an eligible function for the mapping from vSwarm, we fall back to using standard InVitro trace functions in their place for those functions alone.
64
64
65
65
This mapping requires the profiles of the benchmark functions for it to be used as a proxy. The tool utilizes the `profile.json` JSON output file generated by the [`profiler` tool](https://github.com/vhive-serverless/vSwarm/tree/load-generator/tools/profiler#profiler) to obtain the profile of the benchmark suite functions. The User can configure the path of the JSON file through the `-p` (or `--profile-filepath`) flag (by default, it is `profile.json`, which needs to be unzipped).
66
66
@@ -121,15 +121,18 @@ The dropped functions plot is as shown below:
121
121
122
122
Beyond this, we also display the following error metrics whenever the mapper is run with a trace:
123
123
124
-
- Average memory error
125
-
- Average duration error
126
-
- Average absolute memory error
127
-
- Average absolute duration error
128
-
- Average relative memory error
129
-
- Average relative duration error
130
-
- Average absolute relative memory error
131
-
- Average absolute relative duration error
132
-
- Functions in the trace with 0 duration
133
-
- Number of mapped functions with higher than 40% duration error (replaced by InVitro sample functions)
124
+
125
+
| Metric | Value |
126
+
| --- | --- |
127
+
| Average memory error | -7.638341413565764 MB per invocation |
128
+
| Average duration error | 4174.5554028958695 ms per invocation |
129
+
| Average absolute memory error | 24.24782794856284 MB per invocation |
130
+
| Average absolute duration error | 4414.451828203135 ms per invocation |
131
+
| Average relative memory error | -0.8412999109296387 |
132
+
| Average relative duration error | 0.004934168605729668 |
133
+
| Average absolute relative memory error | 1.0028566557523266 |
134
+
| Average absolute relative duration error | 0.20141343497568448 |
135
+
| Functions with 0 duration | 1596 |
136
+
| Number of mapped functions with higher than 40% duration error (replaced by InVitro trace functions) | 5258 |
f"Found proxy function for {function_name}: {trace_functions[function_name]['proxy-function']} with correlation: {trace_functions[function_name]['proxy-correlation']}"
87
-
)
88
-
89
-
forfunction_nameinproxy_functions:
90
-
delproxy_functions[function_name]["index"]
91
-
92
-
returntrace_functions, 0
93
-
94
-
exceptExceptionase:
95
-
log.error(f"Finding closest proxy function failed. Error: {e}")
96
-
returntrace_functions, -1
97
-
98
-
99
-
defget_proxy_function(
100
-
trace_functions: dict, proxy_functions: dict
101
-
) ->Tuple[dict, int]:
102
-
"""
103
-
Obtains the closest proxy function for every trace function
104
-
105
-
Parameters:
106
-
- `trace_functions` (dict): Dictionary containing information regarding trace functions
107
-
- `proxy_functions` (dict): Dictionary containing information regarding proxy functions
0 commit comments