github.com/eth-easl/loader@v0.0.0-20230908084258-8a37e1d94279/pkg/common/trace_types.go (about)

     1  /*
     2   * MIT License
     3   *
     4   * Copyright (c) 2023 EASL and the vHive community
     5   *
     6   * Permission is hereby granted, free of charge, to any person obtaining a copy
     7   * of this software and associated documentation files (the "Software"), to deal
     8   * in the Software without restriction, including without limitation the rights
     9   * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
    10   * copies of the Software, and to permit persons to whom the Software is
    11   * furnished to do so, subject to the following conditions:
    12   *
    13   * The above copyright notice and this permission notice shall be included in all
    14   * copies or substantial portions of the Software.
    15   *
    16   * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
    17   * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
    18   * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
    19   * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
    20   * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
    21   * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
    22   * SOFTWARE.
    23   */
    24  
    25  package common
    26  
    27  type FunctionInvocationStats struct {
    28  	HashOwner    string
    29  	HashApp      string
    30  	HashFunction string
    31  	Trigger      string
    32  
    33  	Invocations []int
    34  }
    35  
    36  type FunctionRuntimeStats struct {
    37  	HashOwner    string `csv:"HashOwner"`
    38  	HashApp      string `csv:"HashApp"`
    39  	HashFunction string `csv:"HashFunction"`
    40  
    41  	Average float64 `csv:"Average"`
    42  	Count   float64 `csv:"Count"`
    43  	Minimum float64 `csv:"Minimum"`
    44  	Maximum float64 `csv:"Maximum"`
    45  
    46  	Percentile0   float64 `csv:"percentile_Average_0"`
    47  	Percentile1   float64 `csv:"percentile_Average_1"`
    48  	Percentile25  float64 `csv:"percentile_Average_25"`
    49  	Percentile50  float64 `csv:"percentile_Average_50"`
    50  	Percentile75  float64 `csv:"percentile_Average_75"`
    51  	Percentile99  float64 `csv:"percentile_Average_99"`
    52  	Percentile100 float64 `csv:"percentile_Average_100"`
    53  }
    54  
    55  type FunctionMemoryStats struct {
    56  	HashOwner    string `csv:"HashOwner"`
    57  	HashApp      string `csv:"HashApp"`
    58  	HashFunction string `csv:"HashFunction"`
    59  
    60  	Count   float64 `csv:"SampleCount"`
    61  	Average float64 `csv:"AverageAllocatedMb"`
    62  
    63  	Percentile1   float64 `csv:"AverageAllocatedMb_pct1"`
    64  	Percentile5   float64 `csv:"AverageAllocatedMb_pct5"`
    65  	Percentile25  float64 `csv:"AverageAllocatedMb_pct25"`
    66  	Percentile50  float64 `csv:"AverageAllocatedMb_pct50"`
    67  	Percentile75  float64 `csv:"AverageAllocatedMb_pct75"`
    68  	Percentile95  float64 `csv:"AverageAllocatedMb_pct95"`
    69  	Percentile99  float64 `csv:"AverageAllocatedMb_pct99"`
    70  	Percentile100 float64 `csv:"AverageAllocatedMb_pct100"`
    71  }
    72  
    73  type Function struct {
    74  	Name     string
    75  	Endpoint string
    76  
    77  	// From the static trace profiler
    78  	InitialScale int
    79  	// From the trace
    80  	InvocationStats *FunctionInvocationStats
    81  	RuntimeStats    *FunctionRuntimeStats
    82  	MemoryStats     *FunctionMemoryStats
    83  
    84  	CPURequestsMilli  int
    85  	MemoryRequestsMiB int
    86  	CPULimitsMilli    int
    87  
    88  	Specification *FunctionSpecification
    89  }