diff --git a/test/smp/regression/adp/cases/quality_gates_rss_otlp_traces_15mb_bounded_190mb/agent-data-plane/cert.pem b/test/smp/regression/adp/cases/quality_gates_rss_otlp_traces_15mb_bounded_190mb/agent-data-plane/cert.pem new file mode 100644 index 0000000000..50ae35ddf3 --- /dev/null +++ b/test/smp/regression/adp/cases/quality_gates_rss_otlp_traces_15mb_bounded_190mb/agent-data-plane/cert.pem @@ -0,0 +1,51 @@ +-----BEGIN CERTIFICATE----- +MIIDwTCCAqmgAwIBAgIUGNrRiJ81arCE1jTvLRoxxuLVoHAwDQYJKoZIhvcNAQEL +BQAwgYgxCzAJBgNVBAYTAlVTMQswCQYDVQQIDAJOWTEWMBQGA1UEBwwNTmV3IFlv +cmsgQ2l0eTEWMBQGA1UECgwNRGF0YWRvZywgSW5jLjEoMCYGA1UECwwfU2VsZi1T +aWduZWQgVGVzdGluZyBDZXJ0aWZpY2F0ZTESMBAGA1UEAwwJbG9jYWxob3N0MB4X +DTI1MTExMzE4NDAxMFoXDTM1MTExMTE4NDAxMFowgYgxCzAJBgNVBAYTAlVTMQsw +CQYDVQQIDAJOWTEWMBQGA1UEBwwNTmV3IFlvcmsgQ2l0eTEWMBQGA1UECgwNRGF0 +YWRvZywgSW5jLjEoMCYGA1UECwwfU2VsZi1TaWduZWQgVGVzdGluZyBDZXJ0aWZp +Y2F0ZTESMBAGA1UEAwwJbG9jYWxob3N0MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8A +MIIBCgKCAQEAs9oaPxXZ5t2725jEWJ+kLMbH6tFzKIgGEG2wpzJik1AumsSeax40 +JvA6W20Gyb73KkbCWM7Hm83++5QesDllpIvK0QNlDsz9VzQtiMCRZQ5Dfuw6stl+ +KQaCFvaEXBwvz/kfrIBLDeww9H9VL3YP2JnHIcA4Y5bvdIrSr3q59n7nd9exBtjS +IZxLHxf44/yQMIUcmPESnLNGYLxqIYuHvre+t1CrWduzHwKtsSIP1qy3U2YCRQW6 +mxDaZ+aI0BY8vYNX1w4XEeW8NO1HEu25DPXPWGbcSgHVk2VnQKtMIoVjuCGZGbBz +/TFJo69KoW/3CH3WHpT2JVKPV5itxkP68QIDAQABoyEwHzAdBgNVHQ4EFgQUFHdk +73oIdZ7CkilNi96SveiH/OcwDQYJKoZIhvcNAQELBQADggEBAEMd7CiZkIqtE+O4 +Nj19xiTflKyw0EBklwlq1NrFb6VpGN3vPcu5X2CNH9p+c+zPYgDSTf+IFBYXO/zE +AzNYjFeUQf6Hsh0fTLqaiaueiAZw1o6QJp7/xFdwFcUFJM72lIlgndkoffEJCLOR +GcjAYD2Qv/oCjQ2B5xeHT9Sk4t85dhiK0aLbeSi+9yqtHis15OW8vqVFJXh1SxMV +zSKN9C4Yw0JKMNqlmePjQIc3d28tm4sUOzD2+qF+mSTSZqvAEuO3loQJPexfsDsF +n929iEzFbOshRpjKp/mZ1jzZewDOIg5Zek1UmbqIHf9MHfpdDYA0zcEnzTQqGFtL +BxX9Nnk= +-----END CERTIFICATE----- +-----BEGIN PRIVATE KEY----- +MIIEvAIBADANBgkqhkiG9w0BAQEFAASCBKYwggSiAgEAAoIBAQCz2ho/Fdnm3bvb +mMRYn6Qsxsfq0XMoiAYQbbCnMmKTUC6axJ5rHjQm8DpbbQbJvvcqRsJYzsebzf77 +lB6wOWWki8rRA2UOzP1XNC2IwJFlDkN+7Dqy2X4pBoIW9oRcHC/P+R+sgEsN7DD0 +f1Uvdg/YmcchwDhjlu90itKvern2fud317EG2NIhnEsfF/jj/JAwhRyY8RKcs0Zg +vGohi4e+t763UKtZ27MfAq2xIg/WrLdTZgJFBbqbENpn5ojQFjy9g1fXDhcR5bw0 +7UcS7bkM9c9YZtxKAdWTZWdAq0wihWO4IZkZsHP9MUmjr0qhb/cIfdYelPYlUo9X +mK3GQ/rxAgMBAAECggEAFPVEe7d7JfkOzB84Oi+YPROI9mcj6UQ4mK9/l2w6qnn8 +hFKHN2pUn3j9A+xnjxjuyoFmYlzuS8ysevqevOBjZNJZdxPTMe9XUlMlPztZdhI8 +cUzr5i2MExHMFQrzD5zFQZIBS+PDW0L7zXINJjO20wHQf7FboNdU3hrTRFmj1AJx +ExWk+vnY2YrzQLewsbPtK1FX6wqKhYuOSUOjpNJmf+2+aGfR+Bxx2NBF4marJoj3 +migN1pThUQAoPXX5qRoX3VpEEZEOMycuSXp+raqcBqSFfv8gz/iM6tLfctRgqe0w +266oxipeLLXLmffYvnXrYXwK4Jl5M6Zd9TVjf6GDBQKBgQD+FSW+YEp6l4Zz5Rwo +Xrb104ILMHsd5V59KyNcd2c3mxMEhodN3sQDEd4OQRmMGIfcivb9Sn49GRBMTu29 +f4ax6+F0Su66MOikgdhOYyNWI3TfMbsY/zCyXiGU9MiWVNDzx1nQj8sG7h36dK1l +Yxv6xx/a857kbZYnB53DCQ3dmwKBgQC1NY09e3Qq+hXyuZEJSsHE5LAYd9TeWs+D +FuUmL8FQkGCihQz/fX3+yJar4oXDoIHnhEwGEEKkOoT9EJ4uzW9L0WSy6fopjRs2 +lXTnQBbB7414ZYkTM/oanTh7dBVG307oyb6d5+Jl0NPxs5Fomh6xOMWD8hB0+CTw +bAaO/c5YYwKBgATdlM5ze5mjYzC+924SekB0322lbQYiiU+uTswLgU+ASbnxdY/Z +Lzm70tvFBV84bQmdI6OwFIDJBRXhAQ567bJkiPm4IaAxJZNY5TKDFX8lyKwpgKK2 +6FDSGqSGl3zBfQreC2tCBapJTwunxlZFsph3zbVcqvNG4fQ3Yh8FAl33AoGADR9l +rRAlp38Y280Ibc3WHnYZMoxrA/c7k9iym4NV0onCFcLg4BesaikIkEYFPdd/0M5J +2x6OVOpP+yua6PTDnI/7ZOGA1kV7tQY5ww1nGIBKlG9178gR0p+UGYychddiFYWW +okTKpmjrEFPaseKHWnosA5QiEPZvZmHMT8qdiNUCgYAweUc7+5slfxKYVLUo34p9 +BiED632dV2YA7CYf+iEjXoFjCOH+ZqzI7OGfODpSMpjim3Fxt++UWbJscbNmtCZr +UeNDsJxiC+eksGWqpu0QoKdNPYRBB2QQFcvTT0AVt6PTzKaFVBvF/dnLuODjXp9Y +R5Ivn5V7QPeMY56Uzr2fJQ== +-----END PRIVATE KEY----- diff --git a/test/smp/regression/adp/cases/quality_gates_rss_otlp_traces_15mb_bounded_190mb/agent-data-plane/empty.yaml b/test/smp/regression/adp/cases/quality_gates_rss_otlp_traces_15mb_bounded_190mb/agent-data-plane/empty.yaml new file mode 100644 index 0000000000..0967ef424b --- /dev/null +++ b/test/smp/regression/adp/cases/quality_gates_rss_otlp_traces_15mb_bounded_190mb/agent-data-plane/empty.yaml @@ -0,0 +1 @@ +{} diff --git a/test/smp/regression/adp/cases/quality_gates_rss_otlp_traces_15mb_bounded_190mb/experiment.yaml b/test/smp/regression/adp/cases/quality_gates_rss_otlp_traces_15mb_bounded_190mb/experiment.yaml new file mode 100644 index 0000000000..7426c27a50 --- /dev/null +++ b/test/smp/regression/adp/cases/quality_gates_rss_otlp_traces_15mb_bounded_190mb/experiment.yaml @@ -0,0 +1,43 @@ +optimization_goal: memory +erratic: false +target: + name: agent-data-plane + command: /maybe-profile.sh /usr/local/bin/agent-data-plane --config /etc/agent-data-plane/empty.yaml run + cpu_allotment: 4 + memory_allotment: 1 GiB + environment: + DD_HOSTNAME: smp-regression + DD_API_KEY: foo00000001 + DD_DD_URL: http://127.0.0.1:9091 + DD_IPC_CERT_FILE_PATH: /etc/agent-data-plane/cert.pem + DD_LOG_FORMAT_JSON: "true" + DD_DATA_PLANE_STANDALONE_MODE: "true" + DD_DATA_PLANE_TELEMETRY_ENABLED: "true" + DD_DATA_PLANE_TELEMETRY_LISTEN_ADDR: tcp://127.0.0.1:5102 + DD_DATA_PLANE_OTLP_ENABLED: "true" + DD_OTLP_CONFIG: "{}" + DD_MEMORY_LIMIT: 190MiB + DD_MEMORY_SLOP_FACTOR: "0.2" + profiling_environment: + SMP_PROFILING_ENABLED: "true" + DD_SERVICE: agent-data-plane + DD_TRACE_AGENT_URL: unix:///smp-host/apm.socket + DD_PROFILING_NATIVE_PRESET: cpu_live_heap + DD_PROFILING_INLINED_FUNCTIONS: "true" +checks: +- name: memory_usage + description: Acceptable upper bound on the memory used by ADP when handling bounded 15 MiB OTLP traces traffic. + bounds: + series: total_pss_bytes + upper_bound: 190 MiB +report_links: +- text: (metrics) + link: https://app.datadoghq.com/dashboard/4br-nxz-khi?fromUser=true&refresh_mode=paused&tpl_var_adp-run-id%5B0%5D={{ job_id + }}&tpl_var_experiment%5B0%5D={{ experiment }}&view=spans&from_ts={{ start_time_ms }}&to_ts={{ end_time_ms }}&live=false +- text: (profiles) + link: https://app.datadoghq.com/profiling/explorer?query=env%3Asingle-machine-performance%20service%3Aagent-data-plane%20job_id%3A{{ + job_id }}%20experiment%3A{{ experiment }}&agg_m=count&agg_m_source=base&agg_t=count&fromUser=false&viz=stream&start={{ + filter_start }}&end={{ filter_end }}&paused=true +- text: (logs) + link: https://app.datadoghq.com/logs?query=experiment%3A{{ experiment }}%20run_id%3A{{ job_id }}&agg_m=count&agg_m_source=base&agg_q=%40span.url&agg_q_source=base&agg_t=count&fromUser=true&index=single-machine-performance-target-logs&messageDisplay=inline&refresh_mode=paused&storage=hot&stream_sort=time%2Cdesc&top_n=100&top_o=top&viz=stream&x_missing=true&from_ts={{ + filter_start }}&to_ts={{ filter_end }}&live=false diff --git a/test/smp/regression/adp/cases/quality_gates_rss_otlp_traces_15mb_bounded_190mb/lading/lading.yaml b/test/smp/regression/adp/cases/quality_gates_rss_otlp_traces_15mb_bounded_190mb/lading/lading.yaml new file mode 100644 index 0000000000..c1ef9c6316 --- /dev/null +++ b/test/smp/regression/adp/cases/quality_gates_rss_otlp_traces_15mb_bounded_190mb/lading/lading.yaml @@ -0,0 +1,357 @@ +blackhole: +- http: + binding_addr: 127.0.0.1:9091 +target_metrics: +- prometheus: + uri: http://127.0.0.1:5102/scrape +generator: +- grpc: + seed: [2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41, 43, 47, 53, 59, 61, 67, 71, 73, 79, 83, 89, 97, 101, 103, 107, + 109, 113, 127, 131] + target_uri: http://127.0.0.1:4317/opentelemetry.proto.collector.trace.v1.TraceService/Export + bytes_per_second: 3 MiB + parallel_connections: 1 + maximum_prebuild_cache_size_bytes: 16 MiB + variant: + opentelemetry_traces: + error_rate: 0.01 + services: + - name: api-gateway + service_type: http + scope_name: com.example.gateway + resource_attributes: + - key: deployment.environment + value: production + - key: cloud.region + value: + dictionary: cloud_regions + operations: + - id: get-product + method: GET + route: /api/v1/products/{id} + suboperations: + - to: product-service/get-product + - id: list-products + method: GET + route: /api/v1/products + suboperations: + - to: product-service/list-products + - name: product-service + service_type: grpc + grpc: + service: ProductService + scope_name: com.example.products + operations: + - id: get-product + method: GetProduct + suboperations: + - to: product-cache/get-product-by-id + - to: product-db/select-product-by-id + rate: 0.1 + - id: list-products + method: ListProducts + suboperations: + - to: product-cache/get-products + - to: product-db/select-products + rate: 0.1 + - name: product-cache + service_type: database + database: + system: redis + operations: + - id: get-product-by-id + query: GET products:by_id:$1 + - id: get-products + query: GET products:full + - name: product-db + service_type: database + database: + system: postgresql + name: products + operations: + - id: select-product-by-id + table: products + query: SELECT * FROM products WHERE id = $1 + - id: select-products + table: products + query: SELECT * FROM products LIMIT 50 +- grpc: + seed: [2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41, 43, 47, 53, 59, 61, 67, 71, 73, 79, 83, 89, 97, 101, 103, 107, + 109, 113, 127, 132] + target_uri: http://127.0.0.1:4317/opentelemetry.proto.collector.trace.v1.TraceService/Export + bytes_per_second: 3 MiB + parallel_connections: 1 + maximum_prebuild_cache_size_bytes: 16 MiB + variant: + opentelemetry_traces: + error_rate: 0.01 + services: + - name: api-gateway + service_type: http + scope_name: com.example.gateway + resource_attributes: + - key: deployment.environment + value: production + - key: cloud.region + value: + dictionary: cloud_regions + operations: + - id: get-product + method: GET + route: /api/v1/products/{id} + suboperations: + - to: product-service/get-product + - id: list-products + method: GET + route: /api/v1/products + suboperations: + - to: product-service/list-products + - name: product-service + service_type: grpc + grpc: + service: ProductService + scope_name: com.example.products + operations: + - id: get-product + method: GetProduct + suboperations: + - to: product-cache/get-product-by-id + - to: product-db/select-product-by-id + rate: 0.1 + - id: list-products + method: ListProducts + suboperations: + - to: product-cache/get-products + - to: product-db/select-products + rate: 0.1 + - name: product-cache + service_type: database + database: + system: redis + operations: + - id: get-product-by-id + query: GET products:by_id:$1 + - id: get-products + query: GET products:full + - name: product-db + service_type: database + database: + system: postgresql + name: products + operations: + - id: select-product-by-id + table: products + query: SELECT * FROM products WHERE id = $1 + - id: select-products + table: products + query: SELECT * FROM products LIMIT 50 +- grpc: + seed: [2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41, 43, 47, 53, 59, 61, 67, 71, 73, 79, 83, 89, 97, 101, 103, 107, + 109, 113, 127, 133] + target_uri: http://127.0.0.1:4317/opentelemetry.proto.collector.trace.v1.TraceService/Export + bytes_per_second: 3 MiB + parallel_connections: 1 + maximum_prebuild_cache_size_bytes: 16 MiB + variant: + opentelemetry_traces: + error_rate: 0.01 + services: + - name: api-gateway + service_type: http + scope_name: com.example.gateway + resource_attributes: + - key: deployment.environment + value: production + - key: cloud.region + value: + dictionary: cloud_regions + operations: + - id: get-product + method: GET + route: /api/v1/products/{id} + suboperations: + - to: product-service/get-product + - id: list-products + method: GET + route: /api/v1/products + suboperations: + - to: product-service/list-products + - name: product-service + service_type: grpc + grpc: + service: ProductService + scope_name: com.example.products + operations: + - id: get-product + method: GetProduct + suboperations: + - to: product-cache/get-product-by-id + - to: product-db/select-product-by-id + rate: 0.1 + - id: list-products + method: ListProducts + suboperations: + - to: product-cache/get-products + - to: product-db/select-products + rate: 0.1 + - name: product-cache + service_type: database + database: + system: redis + operations: + - id: get-product-by-id + query: GET products:by_id:$1 + - id: get-products + query: GET products:full + - name: product-db + service_type: database + database: + system: postgresql + name: products + operations: + - id: select-product-by-id + table: products + query: SELECT * FROM products WHERE id = $1 + - id: select-products + table: products + query: SELECT * FROM products LIMIT 50 +- grpc: + seed: [2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41, 43, 47, 53, 59, 61, 67, 71, 73, 79, 83, 89, 97, 101, 103, 107, + 109, 113, 127, 134] + target_uri: http://127.0.0.1:4317/opentelemetry.proto.collector.trace.v1.TraceService/Export + bytes_per_second: 3 MiB + parallel_connections: 1 + maximum_prebuild_cache_size_bytes: 16 MiB + variant: + opentelemetry_traces: + error_rate: 0.01 + services: + - name: api-gateway + service_type: http + scope_name: com.example.gateway + resource_attributes: + - key: deployment.environment + value: production + - key: cloud.region + value: + dictionary: cloud_regions + operations: + - id: get-product + method: GET + route: /api/v1/products/{id} + suboperations: + - to: product-service/get-product + - id: list-products + method: GET + route: /api/v1/products + suboperations: + - to: product-service/list-products + - name: product-service + service_type: grpc + grpc: + service: ProductService + scope_name: com.example.products + operations: + - id: get-product + method: GetProduct + suboperations: + - to: product-cache/get-product-by-id + - to: product-db/select-product-by-id + rate: 0.1 + - id: list-products + method: ListProducts + suboperations: + - to: product-cache/get-products + - to: product-db/select-products + rate: 0.1 + - name: product-cache + service_type: database + database: + system: redis + operations: + - id: get-product-by-id + query: GET products:by_id:$1 + - id: get-products + query: GET products:full + - name: product-db + service_type: database + database: + system: postgresql + name: products + operations: + - id: select-product-by-id + table: products + query: SELECT * FROM products WHERE id = $1 + - id: select-products + table: products + query: SELECT * FROM products LIMIT 50 +- grpc: + seed: [2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41, 43, 47, 53, 59, 61, 67, 71, 73, 79, 83, 89, 97, 101, 103, 107, + 109, 113, 127, 135] + target_uri: http://127.0.0.1:4317/opentelemetry.proto.collector.trace.v1.TraceService/Export + bytes_per_second: 3 MiB + parallel_connections: 1 + maximum_prebuild_cache_size_bytes: 16 MiB + variant: + opentelemetry_traces: + error_rate: 0.01 + services: + - name: api-gateway + service_type: http + scope_name: com.example.gateway + resource_attributes: + - key: deployment.environment + value: production + - key: cloud.region + value: + dictionary: cloud_regions + operations: + - id: get-product + method: GET + route: /api/v1/products/{id} + suboperations: + - to: product-service/get-product + - id: list-products + method: GET + route: /api/v1/products + suboperations: + - to: product-service/list-products + - name: product-service + service_type: grpc + grpc: + service: ProductService + scope_name: com.example.products + operations: + - id: get-product + method: GetProduct + suboperations: + - to: product-cache/get-product-by-id + - to: product-db/select-product-by-id + rate: 0.1 + - id: list-products + method: ListProducts + suboperations: + - to: product-cache/get-products + - to: product-db/select-products + rate: 0.1 + - name: product-cache + service_type: database + database: + system: redis + operations: + - id: get-product-by-id + query: GET products:by_id:$1 + - id: get-products + query: GET products:full + - name: product-db + service_type: database + database: + system: postgresql + name: products + operations: + - id: select-product-by-id + table: products + query: SELECT * FROM products WHERE id = $1 + - id: select-products + table: products + query: SELECT * FROM products LIMIT 50 diff --git a/test/smp/regression/adp/cases/quality_gates_rss_otlp_traces_15mb_bounded_215mb/agent-data-plane/cert.pem b/test/smp/regression/adp/cases/quality_gates_rss_otlp_traces_15mb_bounded_215mb/agent-data-plane/cert.pem new file mode 100644 index 0000000000..50ae35ddf3 --- /dev/null +++ b/test/smp/regression/adp/cases/quality_gates_rss_otlp_traces_15mb_bounded_215mb/agent-data-plane/cert.pem @@ -0,0 +1,51 @@ +-----BEGIN CERTIFICATE----- +MIIDwTCCAqmgAwIBAgIUGNrRiJ81arCE1jTvLRoxxuLVoHAwDQYJKoZIhvcNAQEL +BQAwgYgxCzAJBgNVBAYTAlVTMQswCQYDVQQIDAJOWTEWMBQGA1UEBwwNTmV3IFlv +cmsgQ2l0eTEWMBQGA1UECgwNRGF0YWRvZywgSW5jLjEoMCYGA1UECwwfU2VsZi1T +aWduZWQgVGVzdGluZyBDZXJ0aWZpY2F0ZTESMBAGA1UEAwwJbG9jYWxob3N0MB4X +DTI1MTExMzE4NDAxMFoXDTM1MTExMTE4NDAxMFowgYgxCzAJBgNVBAYTAlVTMQsw +CQYDVQQIDAJOWTEWMBQGA1UEBwwNTmV3IFlvcmsgQ2l0eTEWMBQGA1UECgwNRGF0 +YWRvZywgSW5jLjEoMCYGA1UECwwfU2VsZi1TaWduZWQgVGVzdGluZyBDZXJ0aWZp +Y2F0ZTESMBAGA1UEAwwJbG9jYWxob3N0MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8A +MIIBCgKCAQEAs9oaPxXZ5t2725jEWJ+kLMbH6tFzKIgGEG2wpzJik1AumsSeax40 +JvA6W20Gyb73KkbCWM7Hm83++5QesDllpIvK0QNlDsz9VzQtiMCRZQ5Dfuw6stl+ +KQaCFvaEXBwvz/kfrIBLDeww9H9VL3YP2JnHIcA4Y5bvdIrSr3q59n7nd9exBtjS +IZxLHxf44/yQMIUcmPESnLNGYLxqIYuHvre+t1CrWduzHwKtsSIP1qy3U2YCRQW6 +mxDaZ+aI0BY8vYNX1w4XEeW8NO1HEu25DPXPWGbcSgHVk2VnQKtMIoVjuCGZGbBz +/TFJo69KoW/3CH3WHpT2JVKPV5itxkP68QIDAQABoyEwHzAdBgNVHQ4EFgQUFHdk +73oIdZ7CkilNi96SveiH/OcwDQYJKoZIhvcNAQELBQADggEBAEMd7CiZkIqtE+O4 +Nj19xiTflKyw0EBklwlq1NrFb6VpGN3vPcu5X2CNH9p+c+zPYgDSTf+IFBYXO/zE +AzNYjFeUQf6Hsh0fTLqaiaueiAZw1o6QJp7/xFdwFcUFJM72lIlgndkoffEJCLOR +GcjAYD2Qv/oCjQ2B5xeHT9Sk4t85dhiK0aLbeSi+9yqtHis15OW8vqVFJXh1SxMV +zSKN9C4Yw0JKMNqlmePjQIc3d28tm4sUOzD2+qF+mSTSZqvAEuO3loQJPexfsDsF +n929iEzFbOshRpjKp/mZ1jzZewDOIg5Zek1UmbqIHf9MHfpdDYA0zcEnzTQqGFtL +BxX9Nnk= +-----END CERTIFICATE----- +-----BEGIN PRIVATE KEY----- +MIIEvAIBADANBgkqhkiG9w0BAQEFAASCBKYwggSiAgEAAoIBAQCz2ho/Fdnm3bvb +mMRYn6Qsxsfq0XMoiAYQbbCnMmKTUC6axJ5rHjQm8DpbbQbJvvcqRsJYzsebzf77 +lB6wOWWki8rRA2UOzP1XNC2IwJFlDkN+7Dqy2X4pBoIW9oRcHC/P+R+sgEsN7DD0 +f1Uvdg/YmcchwDhjlu90itKvern2fud317EG2NIhnEsfF/jj/JAwhRyY8RKcs0Zg +vGohi4e+t763UKtZ27MfAq2xIg/WrLdTZgJFBbqbENpn5ojQFjy9g1fXDhcR5bw0 +7UcS7bkM9c9YZtxKAdWTZWdAq0wihWO4IZkZsHP9MUmjr0qhb/cIfdYelPYlUo9X +mK3GQ/rxAgMBAAECggEAFPVEe7d7JfkOzB84Oi+YPROI9mcj6UQ4mK9/l2w6qnn8 +hFKHN2pUn3j9A+xnjxjuyoFmYlzuS8ysevqevOBjZNJZdxPTMe9XUlMlPztZdhI8 +cUzr5i2MExHMFQrzD5zFQZIBS+PDW0L7zXINJjO20wHQf7FboNdU3hrTRFmj1AJx +ExWk+vnY2YrzQLewsbPtK1FX6wqKhYuOSUOjpNJmf+2+aGfR+Bxx2NBF4marJoj3 +migN1pThUQAoPXX5qRoX3VpEEZEOMycuSXp+raqcBqSFfv8gz/iM6tLfctRgqe0w +266oxipeLLXLmffYvnXrYXwK4Jl5M6Zd9TVjf6GDBQKBgQD+FSW+YEp6l4Zz5Rwo +Xrb104ILMHsd5V59KyNcd2c3mxMEhodN3sQDEd4OQRmMGIfcivb9Sn49GRBMTu29 +f4ax6+F0Su66MOikgdhOYyNWI3TfMbsY/zCyXiGU9MiWVNDzx1nQj8sG7h36dK1l +Yxv6xx/a857kbZYnB53DCQ3dmwKBgQC1NY09e3Qq+hXyuZEJSsHE5LAYd9TeWs+D +FuUmL8FQkGCihQz/fX3+yJar4oXDoIHnhEwGEEKkOoT9EJ4uzW9L0WSy6fopjRs2 +lXTnQBbB7414ZYkTM/oanTh7dBVG307oyb6d5+Jl0NPxs5Fomh6xOMWD8hB0+CTw +bAaO/c5YYwKBgATdlM5ze5mjYzC+924SekB0322lbQYiiU+uTswLgU+ASbnxdY/Z +Lzm70tvFBV84bQmdI6OwFIDJBRXhAQ567bJkiPm4IaAxJZNY5TKDFX8lyKwpgKK2 +6FDSGqSGl3zBfQreC2tCBapJTwunxlZFsph3zbVcqvNG4fQ3Yh8FAl33AoGADR9l +rRAlp38Y280Ibc3WHnYZMoxrA/c7k9iym4NV0onCFcLg4BesaikIkEYFPdd/0M5J +2x6OVOpP+yua6PTDnI/7ZOGA1kV7tQY5ww1nGIBKlG9178gR0p+UGYychddiFYWW +okTKpmjrEFPaseKHWnosA5QiEPZvZmHMT8qdiNUCgYAweUc7+5slfxKYVLUo34p9 +BiED632dV2YA7CYf+iEjXoFjCOH+ZqzI7OGfODpSMpjim3Fxt++UWbJscbNmtCZr +UeNDsJxiC+eksGWqpu0QoKdNPYRBB2QQFcvTT0AVt6PTzKaFVBvF/dnLuODjXp9Y +R5Ivn5V7QPeMY56Uzr2fJQ== +-----END PRIVATE KEY----- diff --git a/test/smp/regression/adp/cases/quality_gates_rss_otlp_traces_15mb_bounded_215mb/agent-data-plane/empty.yaml b/test/smp/regression/adp/cases/quality_gates_rss_otlp_traces_15mb_bounded_215mb/agent-data-plane/empty.yaml new file mode 100644 index 0000000000..0967ef424b --- /dev/null +++ b/test/smp/regression/adp/cases/quality_gates_rss_otlp_traces_15mb_bounded_215mb/agent-data-plane/empty.yaml @@ -0,0 +1 @@ +{} diff --git a/test/smp/regression/adp/cases/quality_gates_rss_otlp_traces_15mb_bounded_215mb/experiment.yaml b/test/smp/regression/adp/cases/quality_gates_rss_otlp_traces_15mb_bounded_215mb/experiment.yaml new file mode 100644 index 0000000000..134cd73a3e --- /dev/null +++ b/test/smp/regression/adp/cases/quality_gates_rss_otlp_traces_15mb_bounded_215mb/experiment.yaml @@ -0,0 +1,43 @@ +optimization_goal: memory +erratic: false +target: + name: agent-data-plane + command: /maybe-profile.sh /usr/local/bin/agent-data-plane --config /etc/agent-data-plane/empty.yaml run + cpu_allotment: 4 + memory_allotment: 1 GiB + environment: + DD_HOSTNAME: smp-regression + DD_API_KEY: foo00000001 + DD_DD_URL: http://127.0.0.1:9091 + DD_IPC_CERT_FILE_PATH: /etc/agent-data-plane/cert.pem + DD_LOG_FORMAT_JSON: "true" + DD_DATA_PLANE_STANDALONE_MODE: "true" + DD_DATA_PLANE_TELEMETRY_ENABLED: "true" + DD_DATA_PLANE_TELEMETRY_LISTEN_ADDR: tcp://127.0.0.1:5102 + DD_DATA_PLANE_OTLP_ENABLED: "true" + DD_OTLP_CONFIG: "{}" + DD_MEMORY_LIMIT: 215MiB + DD_MEMORY_SLOP_FACTOR: "0.2" + profiling_environment: + SMP_PROFILING_ENABLED: "true" + DD_SERVICE: agent-data-plane + DD_TRACE_AGENT_URL: unix:///smp-host/apm.socket + DD_PROFILING_NATIVE_PRESET: cpu_live_heap + DD_PROFILING_INLINED_FUNCTIONS: "true" +checks: +- name: memory_usage + description: Acceptable upper bound on the memory used by ADP when handling bounded 15 MiB OTLP traces traffic. + bounds: + series: total_pss_bytes + upper_bound: 215 MiB +report_links: +- text: (metrics) + link: https://app.datadoghq.com/dashboard/4br-nxz-khi?fromUser=true&refresh_mode=paused&tpl_var_adp-run-id%5B0%5D={{ job_id + }}&tpl_var_experiment%5B0%5D={{ experiment }}&view=spans&from_ts={{ start_time_ms }}&to_ts={{ end_time_ms }}&live=false +- text: (profiles) + link: https://app.datadoghq.com/profiling/explorer?query=env%3Asingle-machine-performance%20service%3Aagent-data-plane%20job_id%3A{{ + job_id }}%20experiment%3A{{ experiment }}&agg_m=count&agg_m_source=base&agg_t=count&fromUser=false&viz=stream&start={{ + filter_start }}&end={{ filter_end }}&paused=true +- text: (logs) + link: https://app.datadoghq.com/logs?query=experiment%3A{{ experiment }}%20run_id%3A{{ job_id }}&agg_m=count&agg_m_source=base&agg_q=%40span.url&agg_q_source=base&agg_t=count&fromUser=true&index=single-machine-performance-target-logs&messageDisplay=inline&refresh_mode=paused&storage=hot&stream_sort=time%2Cdesc&top_n=100&top_o=top&viz=stream&x_missing=true&from_ts={{ + filter_start }}&to_ts={{ filter_end }}&live=false diff --git a/test/smp/regression/adp/cases/quality_gates_rss_otlp_traces_15mb_bounded_215mb/lading/lading.yaml b/test/smp/regression/adp/cases/quality_gates_rss_otlp_traces_15mb_bounded_215mb/lading/lading.yaml new file mode 100644 index 0000000000..c1ef9c6316 --- /dev/null +++ b/test/smp/regression/adp/cases/quality_gates_rss_otlp_traces_15mb_bounded_215mb/lading/lading.yaml @@ -0,0 +1,357 @@ +blackhole: +- http: + binding_addr: 127.0.0.1:9091 +target_metrics: +- prometheus: + uri: http://127.0.0.1:5102/scrape +generator: +- grpc: + seed: [2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41, 43, 47, 53, 59, 61, 67, 71, 73, 79, 83, 89, 97, 101, 103, 107, + 109, 113, 127, 131] + target_uri: http://127.0.0.1:4317/opentelemetry.proto.collector.trace.v1.TraceService/Export + bytes_per_second: 3 MiB + parallel_connections: 1 + maximum_prebuild_cache_size_bytes: 16 MiB + variant: + opentelemetry_traces: + error_rate: 0.01 + services: + - name: api-gateway + service_type: http + scope_name: com.example.gateway + resource_attributes: + - key: deployment.environment + value: production + - key: cloud.region + value: + dictionary: cloud_regions + operations: + - id: get-product + method: GET + route: /api/v1/products/{id} + suboperations: + - to: product-service/get-product + - id: list-products + method: GET + route: /api/v1/products + suboperations: + - to: product-service/list-products + - name: product-service + service_type: grpc + grpc: + service: ProductService + scope_name: com.example.products + operations: + - id: get-product + method: GetProduct + suboperations: + - to: product-cache/get-product-by-id + - to: product-db/select-product-by-id + rate: 0.1 + - id: list-products + method: ListProducts + suboperations: + - to: product-cache/get-products + - to: product-db/select-products + rate: 0.1 + - name: product-cache + service_type: database + database: + system: redis + operations: + - id: get-product-by-id + query: GET products:by_id:$1 + - id: get-products + query: GET products:full + - name: product-db + service_type: database + database: + system: postgresql + name: products + operations: + - id: select-product-by-id + table: products + query: SELECT * FROM products WHERE id = $1 + - id: select-products + table: products + query: SELECT * FROM products LIMIT 50 +- grpc: + seed: [2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41, 43, 47, 53, 59, 61, 67, 71, 73, 79, 83, 89, 97, 101, 103, 107, + 109, 113, 127, 132] + target_uri: http://127.0.0.1:4317/opentelemetry.proto.collector.trace.v1.TraceService/Export + bytes_per_second: 3 MiB + parallel_connections: 1 + maximum_prebuild_cache_size_bytes: 16 MiB + variant: + opentelemetry_traces: + error_rate: 0.01 + services: + - name: api-gateway + service_type: http + scope_name: com.example.gateway + resource_attributes: + - key: deployment.environment + value: production + - key: cloud.region + value: + dictionary: cloud_regions + operations: + - id: get-product + method: GET + route: /api/v1/products/{id} + suboperations: + - to: product-service/get-product + - id: list-products + method: GET + route: /api/v1/products + suboperations: + - to: product-service/list-products + - name: product-service + service_type: grpc + grpc: + service: ProductService + scope_name: com.example.products + operations: + - id: get-product + method: GetProduct + suboperations: + - to: product-cache/get-product-by-id + - to: product-db/select-product-by-id + rate: 0.1 + - id: list-products + method: ListProducts + suboperations: + - to: product-cache/get-products + - to: product-db/select-products + rate: 0.1 + - name: product-cache + service_type: database + database: + system: redis + operations: + - id: get-product-by-id + query: GET products:by_id:$1 + - id: get-products + query: GET products:full + - name: product-db + service_type: database + database: + system: postgresql + name: products + operations: + - id: select-product-by-id + table: products + query: SELECT * FROM products WHERE id = $1 + - id: select-products + table: products + query: SELECT * FROM products LIMIT 50 +- grpc: + seed: [2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41, 43, 47, 53, 59, 61, 67, 71, 73, 79, 83, 89, 97, 101, 103, 107, + 109, 113, 127, 133] + target_uri: http://127.0.0.1:4317/opentelemetry.proto.collector.trace.v1.TraceService/Export + bytes_per_second: 3 MiB + parallel_connections: 1 + maximum_prebuild_cache_size_bytes: 16 MiB + variant: + opentelemetry_traces: + error_rate: 0.01 + services: + - name: api-gateway + service_type: http + scope_name: com.example.gateway + resource_attributes: + - key: deployment.environment + value: production + - key: cloud.region + value: + dictionary: cloud_regions + operations: + - id: get-product + method: GET + route: /api/v1/products/{id} + suboperations: + - to: product-service/get-product + - id: list-products + method: GET + route: /api/v1/products + suboperations: + - to: product-service/list-products + - name: product-service + service_type: grpc + grpc: + service: ProductService + scope_name: com.example.products + operations: + - id: get-product + method: GetProduct + suboperations: + - to: product-cache/get-product-by-id + - to: product-db/select-product-by-id + rate: 0.1 + - id: list-products + method: ListProducts + suboperations: + - to: product-cache/get-products + - to: product-db/select-products + rate: 0.1 + - name: product-cache + service_type: database + database: + system: redis + operations: + - id: get-product-by-id + query: GET products:by_id:$1 + - id: get-products + query: GET products:full + - name: product-db + service_type: database + database: + system: postgresql + name: products + operations: + - id: select-product-by-id + table: products + query: SELECT * FROM products WHERE id = $1 + - id: select-products + table: products + query: SELECT * FROM products LIMIT 50 +- grpc: + seed: [2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41, 43, 47, 53, 59, 61, 67, 71, 73, 79, 83, 89, 97, 101, 103, 107, + 109, 113, 127, 134] + target_uri: http://127.0.0.1:4317/opentelemetry.proto.collector.trace.v1.TraceService/Export + bytes_per_second: 3 MiB + parallel_connections: 1 + maximum_prebuild_cache_size_bytes: 16 MiB + variant: + opentelemetry_traces: + error_rate: 0.01 + services: + - name: api-gateway + service_type: http + scope_name: com.example.gateway + resource_attributes: + - key: deployment.environment + value: production + - key: cloud.region + value: + dictionary: cloud_regions + operations: + - id: get-product + method: GET + route: /api/v1/products/{id} + suboperations: + - to: product-service/get-product + - id: list-products + method: GET + route: /api/v1/products + suboperations: + - to: product-service/list-products + - name: product-service + service_type: grpc + grpc: + service: ProductService + scope_name: com.example.products + operations: + - id: get-product + method: GetProduct + suboperations: + - to: product-cache/get-product-by-id + - to: product-db/select-product-by-id + rate: 0.1 + - id: list-products + method: ListProducts + suboperations: + - to: product-cache/get-products + - to: product-db/select-products + rate: 0.1 + - name: product-cache + service_type: database + database: + system: redis + operations: + - id: get-product-by-id + query: GET products:by_id:$1 + - id: get-products + query: GET products:full + - name: product-db + service_type: database + database: + system: postgresql + name: products + operations: + - id: select-product-by-id + table: products + query: SELECT * FROM products WHERE id = $1 + - id: select-products + table: products + query: SELECT * FROM products LIMIT 50 +- grpc: + seed: [2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41, 43, 47, 53, 59, 61, 67, 71, 73, 79, 83, 89, 97, 101, 103, 107, + 109, 113, 127, 135] + target_uri: http://127.0.0.1:4317/opentelemetry.proto.collector.trace.v1.TraceService/Export + bytes_per_second: 3 MiB + parallel_connections: 1 + maximum_prebuild_cache_size_bytes: 16 MiB + variant: + opentelemetry_traces: + error_rate: 0.01 + services: + - name: api-gateway + service_type: http + scope_name: com.example.gateway + resource_attributes: + - key: deployment.environment + value: production + - key: cloud.region + value: + dictionary: cloud_regions + operations: + - id: get-product + method: GET + route: /api/v1/products/{id} + suboperations: + - to: product-service/get-product + - id: list-products + method: GET + route: /api/v1/products + suboperations: + - to: product-service/list-products + - name: product-service + service_type: grpc + grpc: + service: ProductService + scope_name: com.example.products + operations: + - id: get-product + method: GetProduct + suboperations: + - to: product-cache/get-product-by-id + - to: product-db/select-product-by-id + rate: 0.1 + - id: list-products + method: ListProducts + suboperations: + - to: product-cache/get-products + - to: product-db/select-products + rate: 0.1 + - name: product-cache + service_type: database + database: + system: redis + operations: + - id: get-product-by-id + query: GET products:by_id:$1 + - id: get-products + query: GET products:full + - name: product-db + service_type: database + database: + system: postgresql + name: products + operations: + - id: select-product-by-id + table: products + query: SELECT * FROM products WHERE id = $1 + - id: select-products + table: products + query: SELECT * FROM products LIMIT 50 diff --git a/test/smp/regression/adp/cases/quality_gates_rss_otlp_traces_15mb_bounded_240mb/agent-data-plane/cert.pem b/test/smp/regression/adp/cases/quality_gates_rss_otlp_traces_15mb_bounded_240mb/agent-data-plane/cert.pem new file mode 100644 index 0000000000..50ae35ddf3 --- /dev/null +++ b/test/smp/regression/adp/cases/quality_gates_rss_otlp_traces_15mb_bounded_240mb/agent-data-plane/cert.pem @@ -0,0 +1,51 @@ +-----BEGIN CERTIFICATE----- +MIIDwTCCAqmgAwIBAgIUGNrRiJ81arCE1jTvLRoxxuLVoHAwDQYJKoZIhvcNAQEL +BQAwgYgxCzAJBgNVBAYTAlVTMQswCQYDVQQIDAJOWTEWMBQGA1UEBwwNTmV3IFlv +cmsgQ2l0eTEWMBQGA1UECgwNRGF0YWRvZywgSW5jLjEoMCYGA1UECwwfU2VsZi1T +aWduZWQgVGVzdGluZyBDZXJ0aWZpY2F0ZTESMBAGA1UEAwwJbG9jYWxob3N0MB4X +DTI1MTExMzE4NDAxMFoXDTM1MTExMTE4NDAxMFowgYgxCzAJBgNVBAYTAlVTMQsw +CQYDVQQIDAJOWTEWMBQGA1UEBwwNTmV3IFlvcmsgQ2l0eTEWMBQGA1UECgwNRGF0 +YWRvZywgSW5jLjEoMCYGA1UECwwfU2VsZi1TaWduZWQgVGVzdGluZyBDZXJ0aWZp +Y2F0ZTESMBAGA1UEAwwJbG9jYWxob3N0MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8A +MIIBCgKCAQEAs9oaPxXZ5t2725jEWJ+kLMbH6tFzKIgGEG2wpzJik1AumsSeax40 +JvA6W20Gyb73KkbCWM7Hm83++5QesDllpIvK0QNlDsz9VzQtiMCRZQ5Dfuw6stl+ +KQaCFvaEXBwvz/kfrIBLDeww9H9VL3YP2JnHIcA4Y5bvdIrSr3q59n7nd9exBtjS +IZxLHxf44/yQMIUcmPESnLNGYLxqIYuHvre+t1CrWduzHwKtsSIP1qy3U2YCRQW6 +mxDaZ+aI0BY8vYNX1w4XEeW8NO1HEu25DPXPWGbcSgHVk2VnQKtMIoVjuCGZGbBz +/TFJo69KoW/3CH3WHpT2JVKPV5itxkP68QIDAQABoyEwHzAdBgNVHQ4EFgQUFHdk +73oIdZ7CkilNi96SveiH/OcwDQYJKoZIhvcNAQELBQADggEBAEMd7CiZkIqtE+O4 +Nj19xiTflKyw0EBklwlq1NrFb6VpGN3vPcu5X2CNH9p+c+zPYgDSTf+IFBYXO/zE +AzNYjFeUQf6Hsh0fTLqaiaueiAZw1o6QJp7/xFdwFcUFJM72lIlgndkoffEJCLOR +GcjAYD2Qv/oCjQ2B5xeHT9Sk4t85dhiK0aLbeSi+9yqtHis15OW8vqVFJXh1SxMV +zSKN9C4Yw0JKMNqlmePjQIc3d28tm4sUOzD2+qF+mSTSZqvAEuO3loQJPexfsDsF +n929iEzFbOshRpjKp/mZ1jzZewDOIg5Zek1UmbqIHf9MHfpdDYA0zcEnzTQqGFtL +BxX9Nnk= +-----END CERTIFICATE----- +-----BEGIN PRIVATE KEY----- +MIIEvAIBADANBgkqhkiG9w0BAQEFAASCBKYwggSiAgEAAoIBAQCz2ho/Fdnm3bvb +mMRYn6Qsxsfq0XMoiAYQbbCnMmKTUC6axJ5rHjQm8DpbbQbJvvcqRsJYzsebzf77 +lB6wOWWki8rRA2UOzP1XNC2IwJFlDkN+7Dqy2X4pBoIW9oRcHC/P+R+sgEsN7DD0 +f1Uvdg/YmcchwDhjlu90itKvern2fud317EG2NIhnEsfF/jj/JAwhRyY8RKcs0Zg +vGohi4e+t763UKtZ27MfAq2xIg/WrLdTZgJFBbqbENpn5ojQFjy9g1fXDhcR5bw0 +7UcS7bkM9c9YZtxKAdWTZWdAq0wihWO4IZkZsHP9MUmjr0qhb/cIfdYelPYlUo9X +mK3GQ/rxAgMBAAECggEAFPVEe7d7JfkOzB84Oi+YPROI9mcj6UQ4mK9/l2w6qnn8 +hFKHN2pUn3j9A+xnjxjuyoFmYlzuS8ysevqevOBjZNJZdxPTMe9XUlMlPztZdhI8 +cUzr5i2MExHMFQrzD5zFQZIBS+PDW0L7zXINJjO20wHQf7FboNdU3hrTRFmj1AJx +ExWk+vnY2YrzQLewsbPtK1FX6wqKhYuOSUOjpNJmf+2+aGfR+Bxx2NBF4marJoj3 +migN1pThUQAoPXX5qRoX3VpEEZEOMycuSXp+raqcBqSFfv8gz/iM6tLfctRgqe0w +266oxipeLLXLmffYvnXrYXwK4Jl5M6Zd9TVjf6GDBQKBgQD+FSW+YEp6l4Zz5Rwo +Xrb104ILMHsd5V59KyNcd2c3mxMEhodN3sQDEd4OQRmMGIfcivb9Sn49GRBMTu29 +f4ax6+F0Su66MOikgdhOYyNWI3TfMbsY/zCyXiGU9MiWVNDzx1nQj8sG7h36dK1l +Yxv6xx/a857kbZYnB53DCQ3dmwKBgQC1NY09e3Qq+hXyuZEJSsHE5LAYd9TeWs+D +FuUmL8FQkGCihQz/fX3+yJar4oXDoIHnhEwGEEKkOoT9EJ4uzW9L0WSy6fopjRs2 +lXTnQBbB7414ZYkTM/oanTh7dBVG307oyb6d5+Jl0NPxs5Fomh6xOMWD8hB0+CTw +bAaO/c5YYwKBgATdlM5ze5mjYzC+924SekB0322lbQYiiU+uTswLgU+ASbnxdY/Z +Lzm70tvFBV84bQmdI6OwFIDJBRXhAQ567bJkiPm4IaAxJZNY5TKDFX8lyKwpgKK2 +6FDSGqSGl3zBfQreC2tCBapJTwunxlZFsph3zbVcqvNG4fQ3Yh8FAl33AoGADR9l +rRAlp38Y280Ibc3WHnYZMoxrA/c7k9iym4NV0onCFcLg4BesaikIkEYFPdd/0M5J +2x6OVOpP+yua6PTDnI/7ZOGA1kV7tQY5ww1nGIBKlG9178gR0p+UGYychddiFYWW +okTKpmjrEFPaseKHWnosA5QiEPZvZmHMT8qdiNUCgYAweUc7+5slfxKYVLUo34p9 +BiED632dV2YA7CYf+iEjXoFjCOH+ZqzI7OGfODpSMpjim3Fxt++UWbJscbNmtCZr +UeNDsJxiC+eksGWqpu0QoKdNPYRBB2QQFcvTT0AVt6PTzKaFVBvF/dnLuODjXp9Y +R5Ivn5V7QPeMY56Uzr2fJQ== +-----END PRIVATE KEY----- diff --git a/test/smp/regression/adp/cases/quality_gates_rss_otlp_traces_15mb_bounded_240mb/agent-data-plane/empty.yaml b/test/smp/regression/adp/cases/quality_gates_rss_otlp_traces_15mb_bounded_240mb/agent-data-plane/empty.yaml new file mode 100644 index 0000000000..0967ef424b --- /dev/null +++ b/test/smp/regression/adp/cases/quality_gates_rss_otlp_traces_15mb_bounded_240mb/agent-data-plane/empty.yaml @@ -0,0 +1 @@ +{} diff --git a/test/smp/regression/adp/cases/quality_gates_rss_otlp_traces_15mb_bounded_240mb/experiment.yaml b/test/smp/regression/adp/cases/quality_gates_rss_otlp_traces_15mb_bounded_240mb/experiment.yaml new file mode 100644 index 0000000000..b0932346be --- /dev/null +++ b/test/smp/regression/adp/cases/quality_gates_rss_otlp_traces_15mb_bounded_240mb/experiment.yaml @@ -0,0 +1,43 @@ +optimization_goal: memory +erratic: false +target: + name: agent-data-plane + command: /maybe-profile.sh /usr/local/bin/agent-data-plane --config /etc/agent-data-plane/empty.yaml run + cpu_allotment: 4 + memory_allotment: 1 GiB + environment: + DD_HOSTNAME: smp-regression + DD_API_KEY: foo00000001 + DD_DD_URL: http://127.0.0.1:9091 + DD_IPC_CERT_FILE_PATH: /etc/agent-data-plane/cert.pem + DD_LOG_FORMAT_JSON: "true" + DD_DATA_PLANE_STANDALONE_MODE: "true" + DD_DATA_PLANE_TELEMETRY_ENABLED: "true" + DD_DATA_PLANE_TELEMETRY_LISTEN_ADDR: tcp://127.0.0.1:5102 + DD_DATA_PLANE_OTLP_ENABLED: "true" + DD_OTLP_CONFIG: "{}" + DD_MEMORY_LIMIT: 240MiB + DD_MEMORY_SLOP_FACTOR: "0.2" + profiling_environment: + SMP_PROFILING_ENABLED: "true" + DD_SERVICE: agent-data-plane + DD_TRACE_AGENT_URL: unix:///smp-host/apm.socket + DD_PROFILING_NATIVE_PRESET: cpu_live_heap + DD_PROFILING_INLINED_FUNCTIONS: "true" +checks: +- name: memory_usage + description: Acceptable upper bound on the memory used by ADP when handling bounded 15 MiB OTLP traces traffic. + bounds: + series: total_pss_bytes + upper_bound: 240 MiB +report_links: +- text: (metrics) + link: https://app.datadoghq.com/dashboard/4br-nxz-khi?fromUser=true&refresh_mode=paused&tpl_var_adp-run-id%5B0%5D={{ job_id + }}&tpl_var_experiment%5B0%5D={{ experiment }}&view=spans&from_ts={{ start_time_ms }}&to_ts={{ end_time_ms }}&live=false +- text: (profiles) + link: https://app.datadoghq.com/profiling/explorer?query=env%3Asingle-machine-performance%20service%3Aagent-data-plane%20job_id%3A{{ + job_id }}%20experiment%3A{{ experiment }}&agg_m=count&agg_m_source=base&agg_t=count&fromUser=false&viz=stream&start={{ + filter_start }}&end={{ filter_end }}&paused=true +- text: (logs) + link: https://app.datadoghq.com/logs?query=experiment%3A{{ experiment }}%20run_id%3A{{ job_id }}&agg_m=count&agg_m_source=base&agg_q=%40span.url&agg_q_source=base&agg_t=count&fromUser=true&index=single-machine-performance-target-logs&messageDisplay=inline&refresh_mode=paused&storage=hot&stream_sort=time%2Cdesc&top_n=100&top_o=top&viz=stream&x_missing=true&from_ts={{ + filter_start }}&to_ts={{ filter_end }}&live=false diff --git a/test/smp/regression/adp/cases/quality_gates_rss_otlp_traces_15mb_bounded_240mb/lading/lading.yaml b/test/smp/regression/adp/cases/quality_gates_rss_otlp_traces_15mb_bounded_240mb/lading/lading.yaml new file mode 100644 index 0000000000..c1ef9c6316 --- /dev/null +++ b/test/smp/regression/adp/cases/quality_gates_rss_otlp_traces_15mb_bounded_240mb/lading/lading.yaml @@ -0,0 +1,357 @@ +blackhole: +- http: + binding_addr: 127.0.0.1:9091 +target_metrics: +- prometheus: + uri: http://127.0.0.1:5102/scrape +generator: +- grpc: + seed: [2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41, 43, 47, 53, 59, 61, 67, 71, 73, 79, 83, 89, 97, 101, 103, 107, + 109, 113, 127, 131] + target_uri: http://127.0.0.1:4317/opentelemetry.proto.collector.trace.v1.TraceService/Export + bytes_per_second: 3 MiB + parallel_connections: 1 + maximum_prebuild_cache_size_bytes: 16 MiB + variant: + opentelemetry_traces: + error_rate: 0.01 + services: + - name: api-gateway + service_type: http + scope_name: com.example.gateway + resource_attributes: + - key: deployment.environment + value: production + - key: cloud.region + value: + dictionary: cloud_regions + operations: + - id: get-product + method: GET + route: /api/v1/products/{id} + suboperations: + - to: product-service/get-product + - id: list-products + method: GET + route: /api/v1/products + suboperations: + - to: product-service/list-products + - name: product-service + service_type: grpc + grpc: + service: ProductService + scope_name: com.example.products + operations: + - id: get-product + method: GetProduct + suboperations: + - to: product-cache/get-product-by-id + - to: product-db/select-product-by-id + rate: 0.1 + - id: list-products + method: ListProducts + suboperations: + - to: product-cache/get-products + - to: product-db/select-products + rate: 0.1 + - name: product-cache + service_type: database + database: + system: redis + operations: + - id: get-product-by-id + query: GET products:by_id:$1 + - id: get-products + query: GET products:full + - name: product-db + service_type: database + database: + system: postgresql + name: products + operations: + - id: select-product-by-id + table: products + query: SELECT * FROM products WHERE id = $1 + - id: select-products + table: products + query: SELECT * FROM products LIMIT 50 +- grpc: + seed: [2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41, 43, 47, 53, 59, 61, 67, 71, 73, 79, 83, 89, 97, 101, 103, 107, + 109, 113, 127, 132] + target_uri: http://127.0.0.1:4317/opentelemetry.proto.collector.trace.v1.TraceService/Export + bytes_per_second: 3 MiB + parallel_connections: 1 + maximum_prebuild_cache_size_bytes: 16 MiB + variant: + opentelemetry_traces: + error_rate: 0.01 + services: + - name: api-gateway + service_type: http + scope_name: com.example.gateway + resource_attributes: + - key: deployment.environment + value: production + - key: cloud.region + value: + dictionary: cloud_regions + operations: + - id: get-product + method: GET + route: /api/v1/products/{id} + suboperations: + - to: product-service/get-product + - id: list-products + method: GET + route: /api/v1/products + suboperations: + - to: product-service/list-products + - name: product-service + service_type: grpc + grpc: + service: ProductService + scope_name: com.example.products + operations: + - id: get-product + method: GetProduct + suboperations: + - to: product-cache/get-product-by-id + - to: product-db/select-product-by-id + rate: 0.1 + - id: list-products + method: ListProducts + suboperations: + - to: product-cache/get-products + - to: product-db/select-products + rate: 0.1 + - name: product-cache + service_type: database + database: + system: redis + operations: + - id: get-product-by-id + query: GET products:by_id:$1 + - id: get-products + query: GET products:full + - name: product-db + service_type: database + database: + system: postgresql + name: products + operations: + - id: select-product-by-id + table: products + query: SELECT * FROM products WHERE id = $1 + - id: select-products + table: products + query: SELECT * FROM products LIMIT 50 +- grpc: + seed: [2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41, 43, 47, 53, 59, 61, 67, 71, 73, 79, 83, 89, 97, 101, 103, 107, + 109, 113, 127, 133] + target_uri: http://127.0.0.1:4317/opentelemetry.proto.collector.trace.v1.TraceService/Export + bytes_per_second: 3 MiB + parallel_connections: 1 + maximum_prebuild_cache_size_bytes: 16 MiB + variant: + opentelemetry_traces: + error_rate: 0.01 + services: + - name: api-gateway + service_type: http + scope_name: com.example.gateway + resource_attributes: + - key: deployment.environment + value: production + - key: cloud.region + value: + dictionary: cloud_regions + operations: + - id: get-product + method: GET + route: /api/v1/products/{id} + suboperations: + - to: product-service/get-product + - id: list-products + method: GET + route: /api/v1/products + suboperations: + - to: product-service/list-products + - name: product-service + service_type: grpc + grpc: + service: ProductService + scope_name: com.example.products + operations: + - id: get-product + method: GetProduct + suboperations: + - to: product-cache/get-product-by-id + - to: product-db/select-product-by-id + rate: 0.1 + - id: list-products + method: ListProducts + suboperations: + - to: product-cache/get-products + - to: product-db/select-products + rate: 0.1 + - name: product-cache + service_type: database + database: + system: redis + operations: + - id: get-product-by-id + query: GET products:by_id:$1 + - id: get-products + query: GET products:full + - name: product-db + service_type: database + database: + system: postgresql + name: products + operations: + - id: select-product-by-id + table: products + query: SELECT * FROM products WHERE id = $1 + - id: select-products + table: products + query: SELECT * FROM products LIMIT 50 +- grpc: + seed: [2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41, 43, 47, 53, 59, 61, 67, 71, 73, 79, 83, 89, 97, 101, 103, 107, + 109, 113, 127, 134] + target_uri: http://127.0.0.1:4317/opentelemetry.proto.collector.trace.v1.TraceService/Export + bytes_per_second: 3 MiB + parallel_connections: 1 + maximum_prebuild_cache_size_bytes: 16 MiB + variant: + opentelemetry_traces: + error_rate: 0.01 + services: + - name: api-gateway + service_type: http + scope_name: com.example.gateway + resource_attributes: + - key: deployment.environment + value: production + - key: cloud.region + value: + dictionary: cloud_regions + operations: + - id: get-product + method: GET + route: /api/v1/products/{id} + suboperations: + - to: product-service/get-product + - id: list-products + method: GET + route: /api/v1/products + suboperations: + - to: product-service/list-products + - name: product-service + service_type: grpc + grpc: + service: ProductService + scope_name: com.example.products + operations: + - id: get-product + method: GetProduct + suboperations: + - to: product-cache/get-product-by-id + - to: product-db/select-product-by-id + rate: 0.1 + - id: list-products + method: ListProducts + suboperations: + - to: product-cache/get-products + - to: product-db/select-products + rate: 0.1 + - name: product-cache + service_type: database + database: + system: redis + operations: + - id: get-product-by-id + query: GET products:by_id:$1 + - id: get-products + query: GET products:full + - name: product-db + service_type: database + database: + system: postgresql + name: products + operations: + - id: select-product-by-id + table: products + query: SELECT * FROM products WHERE id = $1 + - id: select-products + table: products + query: SELECT * FROM products LIMIT 50 +- grpc: + seed: [2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41, 43, 47, 53, 59, 61, 67, 71, 73, 79, 83, 89, 97, 101, 103, 107, + 109, 113, 127, 135] + target_uri: http://127.0.0.1:4317/opentelemetry.proto.collector.trace.v1.TraceService/Export + bytes_per_second: 3 MiB + parallel_connections: 1 + maximum_prebuild_cache_size_bytes: 16 MiB + variant: + opentelemetry_traces: + error_rate: 0.01 + services: + - name: api-gateway + service_type: http + scope_name: com.example.gateway + resource_attributes: + - key: deployment.environment + value: production + - key: cloud.region + value: + dictionary: cloud_regions + operations: + - id: get-product + method: GET + route: /api/v1/products/{id} + suboperations: + - to: product-service/get-product + - id: list-products + method: GET + route: /api/v1/products + suboperations: + - to: product-service/list-products + - name: product-service + service_type: grpc + grpc: + service: ProductService + scope_name: com.example.products + operations: + - id: get-product + method: GetProduct + suboperations: + - to: product-cache/get-product-by-id + - to: product-db/select-product-by-id + rate: 0.1 + - id: list-products + method: ListProducts + suboperations: + - to: product-cache/get-products + - to: product-db/select-products + rate: 0.1 + - name: product-cache + service_type: database + database: + system: redis + operations: + - id: get-product-by-id + query: GET products:by_id:$1 + - id: get-products + query: GET products:full + - name: product-db + service_type: database + database: + system: postgresql + name: products + operations: + - id: select-product-by-id + table: products + query: SELECT * FROM products WHERE id = $1 + - id: select-products + table: products + query: SELECT * FROM products LIMIT 50 diff --git a/test/smp/regression/adp/cases/quality_gates_rss_otlp_traces_15mb_bounded_265mb/agent-data-plane/cert.pem b/test/smp/regression/adp/cases/quality_gates_rss_otlp_traces_15mb_bounded_265mb/agent-data-plane/cert.pem new file mode 100644 index 0000000000..50ae35ddf3 --- /dev/null +++ b/test/smp/regression/adp/cases/quality_gates_rss_otlp_traces_15mb_bounded_265mb/agent-data-plane/cert.pem @@ -0,0 +1,51 @@ +-----BEGIN CERTIFICATE----- +MIIDwTCCAqmgAwIBAgIUGNrRiJ81arCE1jTvLRoxxuLVoHAwDQYJKoZIhvcNAQEL +BQAwgYgxCzAJBgNVBAYTAlVTMQswCQYDVQQIDAJOWTEWMBQGA1UEBwwNTmV3IFlv +cmsgQ2l0eTEWMBQGA1UECgwNRGF0YWRvZywgSW5jLjEoMCYGA1UECwwfU2VsZi1T +aWduZWQgVGVzdGluZyBDZXJ0aWZpY2F0ZTESMBAGA1UEAwwJbG9jYWxob3N0MB4X +DTI1MTExMzE4NDAxMFoXDTM1MTExMTE4NDAxMFowgYgxCzAJBgNVBAYTAlVTMQsw +CQYDVQQIDAJOWTEWMBQGA1UEBwwNTmV3IFlvcmsgQ2l0eTEWMBQGA1UECgwNRGF0 +YWRvZywgSW5jLjEoMCYGA1UECwwfU2VsZi1TaWduZWQgVGVzdGluZyBDZXJ0aWZp +Y2F0ZTESMBAGA1UEAwwJbG9jYWxob3N0MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8A +MIIBCgKCAQEAs9oaPxXZ5t2725jEWJ+kLMbH6tFzKIgGEG2wpzJik1AumsSeax40 +JvA6W20Gyb73KkbCWM7Hm83++5QesDllpIvK0QNlDsz9VzQtiMCRZQ5Dfuw6stl+ +KQaCFvaEXBwvz/kfrIBLDeww9H9VL3YP2JnHIcA4Y5bvdIrSr3q59n7nd9exBtjS +IZxLHxf44/yQMIUcmPESnLNGYLxqIYuHvre+t1CrWduzHwKtsSIP1qy3U2YCRQW6 +mxDaZ+aI0BY8vYNX1w4XEeW8NO1HEu25DPXPWGbcSgHVk2VnQKtMIoVjuCGZGbBz +/TFJo69KoW/3CH3WHpT2JVKPV5itxkP68QIDAQABoyEwHzAdBgNVHQ4EFgQUFHdk +73oIdZ7CkilNi96SveiH/OcwDQYJKoZIhvcNAQELBQADggEBAEMd7CiZkIqtE+O4 +Nj19xiTflKyw0EBklwlq1NrFb6VpGN3vPcu5X2CNH9p+c+zPYgDSTf+IFBYXO/zE +AzNYjFeUQf6Hsh0fTLqaiaueiAZw1o6QJp7/xFdwFcUFJM72lIlgndkoffEJCLOR +GcjAYD2Qv/oCjQ2B5xeHT9Sk4t85dhiK0aLbeSi+9yqtHis15OW8vqVFJXh1SxMV +zSKN9C4Yw0JKMNqlmePjQIc3d28tm4sUOzD2+qF+mSTSZqvAEuO3loQJPexfsDsF +n929iEzFbOshRpjKp/mZ1jzZewDOIg5Zek1UmbqIHf9MHfpdDYA0zcEnzTQqGFtL +BxX9Nnk= +-----END CERTIFICATE----- +-----BEGIN PRIVATE KEY----- +MIIEvAIBADANBgkqhkiG9w0BAQEFAASCBKYwggSiAgEAAoIBAQCz2ho/Fdnm3bvb +mMRYn6Qsxsfq0XMoiAYQbbCnMmKTUC6axJ5rHjQm8DpbbQbJvvcqRsJYzsebzf77 +lB6wOWWki8rRA2UOzP1XNC2IwJFlDkN+7Dqy2X4pBoIW9oRcHC/P+R+sgEsN7DD0 +f1Uvdg/YmcchwDhjlu90itKvern2fud317EG2NIhnEsfF/jj/JAwhRyY8RKcs0Zg +vGohi4e+t763UKtZ27MfAq2xIg/WrLdTZgJFBbqbENpn5ojQFjy9g1fXDhcR5bw0 +7UcS7bkM9c9YZtxKAdWTZWdAq0wihWO4IZkZsHP9MUmjr0qhb/cIfdYelPYlUo9X +mK3GQ/rxAgMBAAECggEAFPVEe7d7JfkOzB84Oi+YPROI9mcj6UQ4mK9/l2w6qnn8 +hFKHN2pUn3j9A+xnjxjuyoFmYlzuS8ysevqevOBjZNJZdxPTMe9XUlMlPztZdhI8 +cUzr5i2MExHMFQrzD5zFQZIBS+PDW0L7zXINJjO20wHQf7FboNdU3hrTRFmj1AJx +ExWk+vnY2YrzQLewsbPtK1FX6wqKhYuOSUOjpNJmf+2+aGfR+Bxx2NBF4marJoj3 +migN1pThUQAoPXX5qRoX3VpEEZEOMycuSXp+raqcBqSFfv8gz/iM6tLfctRgqe0w +266oxipeLLXLmffYvnXrYXwK4Jl5M6Zd9TVjf6GDBQKBgQD+FSW+YEp6l4Zz5Rwo +Xrb104ILMHsd5V59KyNcd2c3mxMEhodN3sQDEd4OQRmMGIfcivb9Sn49GRBMTu29 +f4ax6+F0Su66MOikgdhOYyNWI3TfMbsY/zCyXiGU9MiWVNDzx1nQj8sG7h36dK1l +Yxv6xx/a857kbZYnB53DCQ3dmwKBgQC1NY09e3Qq+hXyuZEJSsHE5LAYd9TeWs+D +FuUmL8FQkGCihQz/fX3+yJar4oXDoIHnhEwGEEKkOoT9EJ4uzW9L0WSy6fopjRs2 +lXTnQBbB7414ZYkTM/oanTh7dBVG307oyb6d5+Jl0NPxs5Fomh6xOMWD8hB0+CTw +bAaO/c5YYwKBgATdlM5ze5mjYzC+924SekB0322lbQYiiU+uTswLgU+ASbnxdY/Z +Lzm70tvFBV84bQmdI6OwFIDJBRXhAQ567bJkiPm4IaAxJZNY5TKDFX8lyKwpgKK2 +6FDSGqSGl3zBfQreC2tCBapJTwunxlZFsph3zbVcqvNG4fQ3Yh8FAl33AoGADR9l +rRAlp38Y280Ibc3WHnYZMoxrA/c7k9iym4NV0onCFcLg4BesaikIkEYFPdd/0M5J +2x6OVOpP+yua6PTDnI/7ZOGA1kV7tQY5ww1nGIBKlG9178gR0p+UGYychddiFYWW +okTKpmjrEFPaseKHWnosA5QiEPZvZmHMT8qdiNUCgYAweUc7+5slfxKYVLUo34p9 +BiED632dV2YA7CYf+iEjXoFjCOH+ZqzI7OGfODpSMpjim3Fxt++UWbJscbNmtCZr +UeNDsJxiC+eksGWqpu0QoKdNPYRBB2QQFcvTT0AVt6PTzKaFVBvF/dnLuODjXp9Y +R5Ivn5V7QPeMY56Uzr2fJQ== +-----END PRIVATE KEY----- diff --git a/test/smp/regression/adp/cases/quality_gates_rss_otlp_traces_15mb_bounded_265mb/agent-data-plane/empty.yaml b/test/smp/regression/adp/cases/quality_gates_rss_otlp_traces_15mb_bounded_265mb/agent-data-plane/empty.yaml new file mode 100644 index 0000000000..0967ef424b --- /dev/null +++ b/test/smp/regression/adp/cases/quality_gates_rss_otlp_traces_15mb_bounded_265mb/agent-data-plane/empty.yaml @@ -0,0 +1 @@ +{} diff --git a/test/smp/regression/adp/cases/quality_gates_rss_otlp_traces_15mb_bounded_265mb/experiment.yaml b/test/smp/regression/adp/cases/quality_gates_rss_otlp_traces_15mb_bounded_265mb/experiment.yaml new file mode 100644 index 0000000000..9fdd0ef6e0 --- /dev/null +++ b/test/smp/regression/adp/cases/quality_gates_rss_otlp_traces_15mb_bounded_265mb/experiment.yaml @@ -0,0 +1,43 @@ +optimization_goal: memory +erratic: false +target: + name: agent-data-plane + command: /maybe-profile.sh /usr/local/bin/agent-data-plane --config /etc/agent-data-plane/empty.yaml run + cpu_allotment: 4 + memory_allotment: 1 GiB + environment: + DD_HOSTNAME: smp-regression + DD_API_KEY: foo00000001 + DD_DD_URL: http://127.0.0.1:9091 + DD_IPC_CERT_FILE_PATH: /etc/agent-data-plane/cert.pem + DD_LOG_FORMAT_JSON: "true" + DD_DATA_PLANE_STANDALONE_MODE: "true" + DD_DATA_PLANE_TELEMETRY_ENABLED: "true" + DD_DATA_PLANE_TELEMETRY_LISTEN_ADDR: tcp://127.0.0.1:5102 + DD_DATA_PLANE_OTLP_ENABLED: "true" + DD_OTLP_CONFIG: "{}" + DD_MEMORY_LIMIT: 265MiB + DD_MEMORY_SLOP_FACTOR: "0.2" + profiling_environment: + SMP_PROFILING_ENABLED: "true" + DD_SERVICE: agent-data-plane + DD_TRACE_AGENT_URL: unix:///smp-host/apm.socket + DD_PROFILING_NATIVE_PRESET: cpu_live_heap + DD_PROFILING_INLINED_FUNCTIONS: "true" +checks: +- name: memory_usage + description: Acceptable upper bound on the memory used by ADP when handling bounded 15 MiB OTLP traces traffic. + bounds: + series: total_pss_bytes + upper_bound: 265 MiB +report_links: +- text: (metrics) + link: https://app.datadoghq.com/dashboard/4br-nxz-khi?fromUser=true&refresh_mode=paused&tpl_var_adp-run-id%5B0%5D={{ job_id + }}&tpl_var_experiment%5B0%5D={{ experiment }}&view=spans&from_ts={{ start_time_ms }}&to_ts={{ end_time_ms }}&live=false +- text: (profiles) + link: https://app.datadoghq.com/profiling/explorer?query=env%3Asingle-machine-performance%20service%3Aagent-data-plane%20job_id%3A{{ + job_id }}%20experiment%3A{{ experiment }}&agg_m=count&agg_m_source=base&agg_t=count&fromUser=false&viz=stream&start={{ + filter_start }}&end={{ filter_end }}&paused=true +- text: (logs) + link: https://app.datadoghq.com/logs?query=experiment%3A{{ experiment }}%20run_id%3A{{ job_id }}&agg_m=count&agg_m_source=base&agg_q=%40span.url&agg_q_source=base&agg_t=count&fromUser=true&index=single-machine-performance-target-logs&messageDisplay=inline&refresh_mode=paused&storage=hot&stream_sort=time%2Cdesc&top_n=100&top_o=top&viz=stream&x_missing=true&from_ts={{ + filter_start }}&to_ts={{ filter_end }}&live=false diff --git a/test/smp/regression/adp/cases/quality_gates_rss_otlp_traces_15mb_bounded_265mb/lading/lading.yaml b/test/smp/regression/adp/cases/quality_gates_rss_otlp_traces_15mb_bounded_265mb/lading/lading.yaml new file mode 100644 index 0000000000..c1ef9c6316 --- /dev/null +++ b/test/smp/regression/adp/cases/quality_gates_rss_otlp_traces_15mb_bounded_265mb/lading/lading.yaml @@ -0,0 +1,357 @@ +blackhole: +- http: + binding_addr: 127.0.0.1:9091 +target_metrics: +- prometheus: + uri: http://127.0.0.1:5102/scrape +generator: +- grpc: + seed: [2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41, 43, 47, 53, 59, 61, 67, 71, 73, 79, 83, 89, 97, 101, 103, 107, + 109, 113, 127, 131] + target_uri: http://127.0.0.1:4317/opentelemetry.proto.collector.trace.v1.TraceService/Export + bytes_per_second: 3 MiB + parallel_connections: 1 + maximum_prebuild_cache_size_bytes: 16 MiB + variant: + opentelemetry_traces: + error_rate: 0.01 + services: + - name: api-gateway + service_type: http + scope_name: com.example.gateway + resource_attributes: + - key: deployment.environment + value: production + - key: cloud.region + value: + dictionary: cloud_regions + operations: + - id: get-product + method: GET + route: /api/v1/products/{id} + suboperations: + - to: product-service/get-product + - id: list-products + method: GET + route: /api/v1/products + suboperations: + - to: product-service/list-products + - name: product-service + service_type: grpc + grpc: + service: ProductService + scope_name: com.example.products + operations: + - id: get-product + method: GetProduct + suboperations: + - to: product-cache/get-product-by-id + - to: product-db/select-product-by-id + rate: 0.1 + - id: list-products + method: ListProducts + suboperations: + - to: product-cache/get-products + - to: product-db/select-products + rate: 0.1 + - name: product-cache + service_type: database + database: + system: redis + operations: + - id: get-product-by-id + query: GET products:by_id:$1 + - id: get-products + query: GET products:full + - name: product-db + service_type: database + database: + system: postgresql + name: products + operations: + - id: select-product-by-id + table: products + query: SELECT * FROM products WHERE id = $1 + - id: select-products + table: products + query: SELECT * FROM products LIMIT 50 +- grpc: + seed: [2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41, 43, 47, 53, 59, 61, 67, 71, 73, 79, 83, 89, 97, 101, 103, 107, + 109, 113, 127, 132] + target_uri: http://127.0.0.1:4317/opentelemetry.proto.collector.trace.v1.TraceService/Export + bytes_per_second: 3 MiB + parallel_connections: 1 + maximum_prebuild_cache_size_bytes: 16 MiB + variant: + opentelemetry_traces: + error_rate: 0.01 + services: + - name: api-gateway + service_type: http + scope_name: com.example.gateway + resource_attributes: + - key: deployment.environment + value: production + - key: cloud.region + value: + dictionary: cloud_regions + operations: + - id: get-product + method: GET + route: /api/v1/products/{id} + suboperations: + - to: product-service/get-product + - id: list-products + method: GET + route: /api/v1/products + suboperations: + - to: product-service/list-products + - name: product-service + service_type: grpc + grpc: + service: ProductService + scope_name: com.example.products + operations: + - id: get-product + method: GetProduct + suboperations: + - to: product-cache/get-product-by-id + - to: product-db/select-product-by-id + rate: 0.1 + - id: list-products + method: ListProducts + suboperations: + - to: product-cache/get-products + - to: product-db/select-products + rate: 0.1 + - name: product-cache + service_type: database + database: + system: redis + operations: + - id: get-product-by-id + query: GET products:by_id:$1 + - id: get-products + query: GET products:full + - name: product-db + service_type: database + database: + system: postgresql + name: products + operations: + - id: select-product-by-id + table: products + query: SELECT * FROM products WHERE id = $1 + - id: select-products + table: products + query: SELECT * FROM products LIMIT 50 +- grpc: + seed: [2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41, 43, 47, 53, 59, 61, 67, 71, 73, 79, 83, 89, 97, 101, 103, 107, + 109, 113, 127, 133] + target_uri: http://127.0.0.1:4317/opentelemetry.proto.collector.trace.v1.TraceService/Export + bytes_per_second: 3 MiB + parallel_connections: 1 + maximum_prebuild_cache_size_bytes: 16 MiB + variant: + opentelemetry_traces: + error_rate: 0.01 + services: + - name: api-gateway + service_type: http + scope_name: com.example.gateway + resource_attributes: + - key: deployment.environment + value: production + - key: cloud.region + value: + dictionary: cloud_regions + operations: + - id: get-product + method: GET + route: /api/v1/products/{id} + suboperations: + - to: product-service/get-product + - id: list-products + method: GET + route: /api/v1/products + suboperations: + - to: product-service/list-products + - name: product-service + service_type: grpc + grpc: + service: ProductService + scope_name: com.example.products + operations: + - id: get-product + method: GetProduct + suboperations: + - to: product-cache/get-product-by-id + - to: product-db/select-product-by-id + rate: 0.1 + - id: list-products + method: ListProducts + suboperations: + - to: product-cache/get-products + - to: product-db/select-products + rate: 0.1 + - name: product-cache + service_type: database + database: + system: redis + operations: + - id: get-product-by-id + query: GET products:by_id:$1 + - id: get-products + query: GET products:full + - name: product-db + service_type: database + database: + system: postgresql + name: products + operations: + - id: select-product-by-id + table: products + query: SELECT * FROM products WHERE id = $1 + - id: select-products + table: products + query: SELECT * FROM products LIMIT 50 +- grpc: + seed: [2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41, 43, 47, 53, 59, 61, 67, 71, 73, 79, 83, 89, 97, 101, 103, 107, + 109, 113, 127, 134] + target_uri: http://127.0.0.1:4317/opentelemetry.proto.collector.trace.v1.TraceService/Export + bytes_per_second: 3 MiB + parallel_connections: 1 + maximum_prebuild_cache_size_bytes: 16 MiB + variant: + opentelemetry_traces: + error_rate: 0.01 + services: + - name: api-gateway + service_type: http + scope_name: com.example.gateway + resource_attributes: + - key: deployment.environment + value: production + - key: cloud.region + value: + dictionary: cloud_regions + operations: + - id: get-product + method: GET + route: /api/v1/products/{id} + suboperations: + - to: product-service/get-product + - id: list-products + method: GET + route: /api/v1/products + suboperations: + - to: product-service/list-products + - name: product-service + service_type: grpc + grpc: + service: ProductService + scope_name: com.example.products + operations: + - id: get-product + method: GetProduct + suboperations: + - to: product-cache/get-product-by-id + - to: product-db/select-product-by-id + rate: 0.1 + - id: list-products + method: ListProducts + suboperations: + - to: product-cache/get-products + - to: product-db/select-products + rate: 0.1 + - name: product-cache + service_type: database + database: + system: redis + operations: + - id: get-product-by-id + query: GET products:by_id:$1 + - id: get-products + query: GET products:full + - name: product-db + service_type: database + database: + system: postgresql + name: products + operations: + - id: select-product-by-id + table: products + query: SELECT * FROM products WHERE id = $1 + - id: select-products + table: products + query: SELECT * FROM products LIMIT 50 +- grpc: + seed: [2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41, 43, 47, 53, 59, 61, 67, 71, 73, 79, 83, 89, 97, 101, 103, 107, + 109, 113, 127, 135] + target_uri: http://127.0.0.1:4317/opentelemetry.proto.collector.trace.v1.TraceService/Export + bytes_per_second: 3 MiB + parallel_connections: 1 + maximum_prebuild_cache_size_bytes: 16 MiB + variant: + opentelemetry_traces: + error_rate: 0.01 + services: + - name: api-gateway + service_type: http + scope_name: com.example.gateway + resource_attributes: + - key: deployment.environment + value: production + - key: cloud.region + value: + dictionary: cloud_regions + operations: + - id: get-product + method: GET + route: /api/v1/products/{id} + suboperations: + - to: product-service/get-product + - id: list-products + method: GET + route: /api/v1/products + suboperations: + - to: product-service/list-products + - name: product-service + service_type: grpc + grpc: + service: ProductService + scope_name: com.example.products + operations: + - id: get-product + method: GetProduct + suboperations: + - to: product-cache/get-product-by-id + - to: product-db/select-product-by-id + rate: 0.1 + - id: list-products + method: ListProducts + suboperations: + - to: product-cache/get-products + - to: product-db/select-products + rate: 0.1 + - name: product-cache + service_type: database + database: + system: redis + operations: + - id: get-product-by-id + query: GET products:by_id:$1 + - id: get-products + query: GET products:full + - name: product-db + service_type: database + database: + system: postgresql + name: products + operations: + - id: select-product-by-id + table: products + query: SELECT * FROM products WHERE id = $1 + - id: select-products + table: products + query: SELECT * FROM products LIMIT 50 diff --git a/test/smp/regression/adp/cases/quality_gates_rss_otlp_traces_15mb_bounded_290mb/agent-data-plane/cert.pem b/test/smp/regression/adp/cases/quality_gates_rss_otlp_traces_15mb_bounded_290mb/agent-data-plane/cert.pem new file mode 100644 index 0000000000..50ae35ddf3 --- /dev/null +++ b/test/smp/regression/adp/cases/quality_gates_rss_otlp_traces_15mb_bounded_290mb/agent-data-plane/cert.pem @@ -0,0 +1,51 @@ +-----BEGIN CERTIFICATE----- +MIIDwTCCAqmgAwIBAgIUGNrRiJ81arCE1jTvLRoxxuLVoHAwDQYJKoZIhvcNAQEL +BQAwgYgxCzAJBgNVBAYTAlVTMQswCQYDVQQIDAJOWTEWMBQGA1UEBwwNTmV3IFlv +cmsgQ2l0eTEWMBQGA1UECgwNRGF0YWRvZywgSW5jLjEoMCYGA1UECwwfU2VsZi1T +aWduZWQgVGVzdGluZyBDZXJ0aWZpY2F0ZTESMBAGA1UEAwwJbG9jYWxob3N0MB4X +DTI1MTExMzE4NDAxMFoXDTM1MTExMTE4NDAxMFowgYgxCzAJBgNVBAYTAlVTMQsw +CQYDVQQIDAJOWTEWMBQGA1UEBwwNTmV3IFlvcmsgQ2l0eTEWMBQGA1UECgwNRGF0 +YWRvZywgSW5jLjEoMCYGA1UECwwfU2VsZi1TaWduZWQgVGVzdGluZyBDZXJ0aWZp +Y2F0ZTESMBAGA1UEAwwJbG9jYWxob3N0MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8A +MIIBCgKCAQEAs9oaPxXZ5t2725jEWJ+kLMbH6tFzKIgGEG2wpzJik1AumsSeax40 +JvA6W20Gyb73KkbCWM7Hm83++5QesDllpIvK0QNlDsz9VzQtiMCRZQ5Dfuw6stl+ +KQaCFvaEXBwvz/kfrIBLDeww9H9VL3YP2JnHIcA4Y5bvdIrSr3q59n7nd9exBtjS +IZxLHxf44/yQMIUcmPESnLNGYLxqIYuHvre+t1CrWduzHwKtsSIP1qy3U2YCRQW6 +mxDaZ+aI0BY8vYNX1w4XEeW8NO1HEu25DPXPWGbcSgHVk2VnQKtMIoVjuCGZGbBz +/TFJo69KoW/3CH3WHpT2JVKPV5itxkP68QIDAQABoyEwHzAdBgNVHQ4EFgQUFHdk +73oIdZ7CkilNi96SveiH/OcwDQYJKoZIhvcNAQELBQADggEBAEMd7CiZkIqtE+O4 +Nj19xiTflKyw0EBklwlq1NrFb6VpGN3vPcu5X2CNH9p+c+zPYgDSTf+IFBYXO/zE +AzNYjFeUQf6Hsh0fTLqaiaueiAZw1o6QJp7/xFdwFcUFJM72lIlgndkoffEJCLOR +GcjAYD2Qv/oCjQ2B5xeHT9Sk4t85dhiK0aLbeSi+9yqtHis15OW8vqVFJXh1SxMV +zSKN9C4Yw0JKMNqlmePjQIc3d28tm4sUOzD2+qF+mSTSZqvAEuO3loQJPexfsDsF +n929iEzFbOshRpjKp/mZ1jzZewDOIg5Zek1UmbqIHf9MHfpdDYA0zcEnzTQqGFtL +BxX9Nnk= +-----END CERTIFICATE----- +-----BEGIN PRIVATE KEY----- +MIIEvAIBADANBgkqhkiG9w0BAQEFAASCBKYwggSiAgEAAoIBAQCz2ho/Fdnm3bvb +mMRYn6Qsxsfq0XMoiAYQbbCnMmKTUC6axJ5rHjQm8DpbbQbJvvcqRsJYzsebzf77 +lB6wOWWki8rRA2UOzP1XNC2IwJFlDkN+7Dqy2X4pBoIW9oRcHC/P+R+sgEsN7DD0 +f1Uvdg/YmcchwDhjlu90itKvern2fud317EG2NIhnEsfF/jj/JAwhRyY8RKcs0Zg +vGohi4e+t763UKtZ27MfAq2xIg/WrLdTZgJFBbqbENpn5ojQFjy9g1fXDhcR5bw0 +7UcS7bkM9c9YZtxKAdWTZWdAq0wihWO4IZkZsHP9MUmjr0qhb/cIfdYelPYlUo9X +mK3GQ/rxAgMBAAECggEAFPVEe7d7JfkOzB84Oi+YPROI9mcj6UQ4mK9/l2w6qnn8 +hFKHN2pUn3j9A+xnjxjuyoFmYlzuS8ysevqevOBjZNJZdxPTMe9XUlMlPztZdhI8 +cUzr5i2MExHMFQrzD5zFQZIBS+PDW0L7zXINJjO20wHQf7FboNdU3hrTRFmj1AJx +ExWk+vnY2YrzQLewsbPtK1FX6wqKhYuOSUOjpNJmf+2+aGfR+Bxx2NBF4marJoj3 +migN1pThUQAoPXX5qRoX3VpEEZEOMycuSXp+raqcBqSFfv8gz/iM6tLfctRgqe0w +266oxipeLLXLmffYvnXrYXwK4Jl5M6Zd9TVjf6GDBQKBgQD+FSW+YEp6l4Zz5Rwo +Xrb104ILMHsd5V59KyNcd2c3mxMEhodN3sQDEd4OQRmMGIfcivb9Sn49GRBMTu29 +f4ax6+F0Su66MOikgdhOYyNWI3TfMbsY/zCyXiGU9MiWVNDzx1nQj8sG7h36dK1l +Yxv6xx/a857kbZYnB53DCQ3dmwKBgQC1NY09e3Qq+hXyuZEJSsHE5LAYd9TeWs+D +FuUmL8FQkGCihQz/fX3+yJar4oXDoIHnhEwGEEKkOoT9EJ4uzW9L0WSy6fopjRs2 +lXTnQBbB7414ZYkTM/oanTh7dBVG307oyb6d5+Jl0NPxs5Fomh6xOMWD8hB0+CTw +bAaO/c5YYwKBgATdlM5ze5mjYzC+924SekB0322lbQYiiU+uTswLgU+ASbnxdY/Z +Lzm70tvFBV84bQmdI6OwFIDJBRXhAQ567bJkiPm4IaAxJZNY5TKDFX8lyKwpgKK2 +6FDSGqSGl3zBfQreC2tCBapJTwunxlZFsph3zbVcqvNG4fQ3Yh8FAl33AoGADR9l +rRAlp38Y280Ibc3WHnYZMoxrA/c7k9iym4NV0onCFcLg4BesaikIkEYFPdd/0M5J +2x6OVOpP+yua6PTDnI/7ZOGA1kV7tQY5ww1nGIBKlG9178gR0p+UGYychddiFYWW +okTKpmjrEFPaseKHWnosA5QiEPZvZmHMT8qdiNUCgYAweUc7+5slfxKYVLUo34p9 +BiED632dV2YA7CYf+iEjXoFjCOH+ZqzI7OGfODpSMpjim3Fxt++UWbJscbNmtCZr +UeNDsJxiC+eksGWqpu0QoKdNPYRBB2QQFcvTT0AVt6PTzKaFVBvF/dnLuODjXp9Y +R5Ivn5V7QPeMY56Uzr2fJQ== +-----END PRIVATE KEY----- diff --git a/test/smp/regression/adp/cases/quality_gates_rss_otlp_traces_15mb_bounded_290mb/agent-data-plane/empty.yaml b/test/smp/regression/adp/cases/quality_gates_rss_otlp_traces_15mb_bounded_290mb/agent-data-plane/empty.yaml new file mode 100644 index 0000000000..0967ef424b --- /dev/null +++ b/test/smp/regression/adp/cases/quality_gates_rss_otlp_traces_15mb_bounded_290mb/agent-data-plane/empty.yaml @@ -0,0 +1 @@ +{} diff --git a/test/smp/regression/adp/cases/quality_gates_rss_otlp_traces_15mb_bounded_290mb/experiment.yaml b/test/smp/regression/adp/cases/quality_gates_rss_otlp_traces_15mb_bounded_290mb/experiment.yaml new file mode 100644 index 0000000000..968e25e1ac --- /dev/null +++ b/test/smp/regression/adp/cases/quality_gates_rss_otlp_traces_15mb_bounded_290mb/experiment.yaml @@ -0,0 +1,43 @@ +optimization_goal: memory +erratic: false +target: + name: agent-data-plane + command: /maybe-profile.sh /usr/local/bin/agent-data-plane --config /etc/agent-data-plane/empty.yaml run + cpu_allotment: 4 + memory_allotment: 1 GiB + environment: + DD_HOSTNAME: smp-regression + DD_API_KEY: foo00000001 + DD_DD_URL: http://127.0.0.1:9091 + DD_IPC_CERT_FILE_PATH: /etc/agent-data-plane/cert.pem + DD_LOG_FORMAT_JSON: "true" + DD_DATA_PLANE_STANDALONE_MODE: "true" + DD_DATA_PLANE_TELEMETRY_ENABLED: "true" + DD_DATA_PLANE_TELEMETRY_LISTEN_ADDR: tcp://127.0.0.1:5102 + DD_DATA_PLANE_OTLP_ENABLED: "true" + DD_OTLP_CONFIG: "{}" + DD_MEMORY_LIMIT: 290MiB + DD_MEMORY_SLOP_FACTOR: "0.2" + profiling_environment: + SMP_PROFILING_ENABLED: "true" + DD_SERVICE: agent-data-plane + DD_TRACE_AGENT_URL: unix:///smp-host/apm.socket + DD_PROFILING_NATIVE_PRESET: cpu_live_heap + DD_PROFILING_INLINED_FUNCTIONS: "true" +checks: +- name: memory_usage + description: Acceptable upper bound on the memory used by ADP when handling bounded 15 MiB OTLP traces traffic. + bounds: + series: total_pss_bytes + upper_bound: 290 MiB +report_links: +- text: (metrics) + link: https://app.datadoghq.com/dashboard/4br-nxz-khi?fromUser=true&refresh_mode=paused&tpl_var_adp-run-id%5B0%5D={{ job_id + }}&tpl_var_experiment%5B0%5D={{ experiment }}&view=spans&from_ts={{ start_time_ms }}&to_ts={{ end_time_ms }}&live=false +- text: (profiles) + link: https://app.datadoghq.com/profiling/explorer?query=env%3Asingle-machine-performance%20service%3Aagent-data-plane%20job_id%3A{{ + job_id }}%20experiment%3A{{ experiment }}&agg_m=count&agg_m_source=base&agg_t=count&fromUser=false&viz=stream&start={{ + filter_start }}&end={{ filter_end }}&paused=true +- text: (logs) + link: https://app.datadoghq.com/logs?query=experiment%3A{{ experiment }}%20run_id%3A{{ job_id }}&agg_m=count&agg_m_source=base&agg_q=%40span.url&agg_q_source=base&agg_t=count&fromUser=true&index=single-machine-performance-target-logs&messageDisplay=inline&refresh_mode=paused&storage=hot&stream_sort=time%2Cdesc&top_n=100&top_o=top&viz=stream&x_missing=true&from_ts={{ + filter_start }}&to_ts={{ filter_end }}&live=false diff --git a/test/smp/regression/adp/cases/quality_gates_rss_otlp_traces_15mb_bounded_290mb/lading/lading.yaml b/test/smp/regression/adp/cases/quality_gates_rss_otlp_traces_15mb_bounded_290mb/lading/lading.yaml new file mode 100644 index 0000000000..c1ef9c6316 --- /dev/null +++ b/test/smp/regression/adp/cases/quality_gates_rss_otlp_traces_15mb_bounded_290mb/lading/lading.yaml @@ -0,0 +1,357 @@ +blackhole: +- http: + binding_addr: 127.0.0.1:9091 +target_metrics: +- prometheus: + uri: http://127.0.0.1:5102/scrape +generator: +- grpc: + seed: [2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41, 43, 47, 53, 59, 61, 67, 71, 73, 79, 83, 89, 97, 101, 103, 107, + 109, 113, 127, 131] + target_uri: http://127.0.0.1:4317/opentelemetry.proto.collector.trace.v1.TraceService/Export + bytes_per_second: 3 MiB + parallel_connections: 1 + maximum_prebuild_cache_size_bytes: 16 MiB + variant: + opentelemetry_traces: + error_rate: 0.01 + services: + - name: api-gateway + service_type: http + scope_name: com.example.gateway + resource_attributes: + - key: deployment.environment + value: production + - key: cloud.region + value: + dictionary: cloud_regions + operations: + - id: get-product + method: GET + route: /api/v1/products/{id} + suboperations: + - to: product-service/get-product + - id: list-products + method: GET + route: /api/v1/products + suboperations: + - to: product-service/list-products + - name: product-service + service_type: grpc + grpc: + service: ProductService + scope_name: com.example.products + operations: + - id: get-product + method: GetProduct + suboperations: + - to: product-cache/get-product-by-id + - to: product-db/select-product-by-id + rate: 0.1 + - id: list-products + method: ListProducts + suboperations: + - to: product-cache/get-products + - to: product-db/select-products + rate: 0.1 + - name: product-cache + service_type: database + database: + system: redis + operations: + - id: get-product-by-id + query: GET products:by_id:$1 + - id: get-products + query: GET products:full + - name: product-db + service_type: database + database: + system: postgresql + name: products + operations: + - id: select-product-by-id + table: products + query: SELECT * FROM products WHERE id = $1 + - id: select-products + table: products + query: SELECT * FROM products LIMIT 50 +- grpc: + seed: [2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41, 43, 47, 53, 59, 61, 67, 71, 73, 79, 83, 89, 97, 101, 103, 107, + 109, 113, 127, 132] + target_uri: http://127.0.0.1:4317/opentelemetry.proto.collector.trace.v1.TraceService/Export + bytes_per_second: 3 MiB + parallel_connections: 1 + maximum_prebuild_cache_size_bytes: 16 MiB + variant: + opentelemetry_traces: + error_rate: 0.01 + services: + - name: api-gateway + service_type: http + scope_name: com.example.gateway + resource_attributes: + - key: deployment.environment + value: production + - key: cloud.region + value: + dictionary: cloud_regions + operations: + - id: get-product + method: GET + route: /api/v1/products/{id} + suboperations: + - to: product-service/get-product + - id: list-products + method: GET + route: /api/v1/products + suboperations: + - to: product-service/list-products + - name: product-service + service_type: grpc + grpc: + service: ProductService + scope_name: com.example.products + operations: + - id: get-product + method: GetProduct + suboperations: + - to: product-cache/get-product-by-id + - to: product-db/select-product-by-id + rate: 0.1 + - id: list-products + method: ListProducts + suboperations: + - to: product-cache/get-products + - to: product-db/select-products + rate: 0.1 + - name: product-cache + service_type: database + database: + system: redis + operations: + - id: get-product-by-id + query: GET products:by_id:$1 + - id: get-products + query: GET products:full + - name: product-db + service_type: database + database: + system: postgresql + name: products + operations: + - id: select-product-by-id + table: products + query: SELECT * FROM products WHERE id = $1 + - id: select-products + table: products + query: SELECT * FROM products LIMIT 50 +- grpc: + seed: [2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41, 43, 47, 53, 59, 61, 67, 71, 73, 79, 83, 89, 97, 101, 103, 107, + 109, 113, 127, 133] + target_uri: http://127.0.0.1:4317/opentelemetry.proto.collector.trace.v1.TraceService/Export + bytes_per_second: 3 MiB + parallel_connections: 1 + maximum_prebuild_cache_size_bytes: 16 MiB + variant: + opentelemetry_traces: + error_rate: 0.01 + services: + - name: api-gateway + service_type: http + scope_name: com.example.gateway + resource_attributes: + - key: deployment.environment + value: production + - key: cloud.region + value: + dictionary: cloud_regions + operations: + - id: get-product + method: GET + route: /api/v1/products/{id} + suboperations: + - to: product-service/get-product + - id: list-products + method: GET + route: /api/v1/products + suboperations: + - to: product-service/list-products + - name: product-service + service_type: grpc + grpc: + service: ProductService + scope_name: com.example.products + operations: + - id: get-product + method: GetProduct + suboperations: + - to: product-cache/get-product-by-id + - to: product-db/select-product-by-id + rate: 0.1 + - id: list-products + method: ListProducts + suboperations: + - to: product-cache/get-products + - to: product-db/select-products + rate: 0.1 + - name: product-cache + service_type: database + database: + system: redis + operations: + - id: get-product-by-id + query: GET products:by_id:$1 + - id: get-products + query: GET products:full + - name: product-db + service_type: database + database: + system: postgresql + name: products + operations: + - id: select-product-by-id + table: products + query: SELECT * FROM products WHERE id = $1 + - id: select-products + table: products + query: SELECT * FROM products LIMIT 50 +- grpc: + seed: [2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41, 43, 47, 53, 59, 61, 67, 71, 73, 79, 83, 89, 97, 101, 103, 107, + 109, 113, 127, 134] + target_uri: http://127.0.0.1:4317/opentelemetry.proto.collector.trace.v1.TraceService/Export + bytes_per_second: 3 MiB + parallel_connections: 1 + maximum_prebuild_cache_size_bytes: 16 MiB + variant: + opentelemetry_traces: + error_rate: 0.01 + services: + - name: api-gateway + service_type: http + scope_name: com.example.gateway + resource_attributes: + - key: deployment.environment + value: production + - key: cloud.region + value: + dictionary: cloud_regions + operations: + - id: get-product + method: GET + route: /api/v1/products/{id} + suboperations: + - to: product-service/get-product + - id: list-products + method: GET + route: /api/v1/products + suboperations: + - to: product-service/list-products + - name: product-service + service_type: grpc + grpc: + service: ProductService + scope_name: com.example.products + operations: + - id: get-product + method: GetProduct + suboperations: + - to: product-cache/get-product-by-id + - to: product-db/select-product-by-id + rate: 0.1 + - id: list-products + method: ListProducts + suboperations: + - to: product-cache/get-products + - to: product-db/select-products + rate: 0.1 + - name: product-cache + service_type: database + database: + system: redis + operations: + - id: get-product-by-id + query: GET products:by_id:$1 + - id: get-products + query: GET products:full + - name: product-db + service_type: database + database: + system: postgresql + name: products + operations: + - id: select-product-by-id + table: products + query: SELECT * FROM products WHERE id = $1 + - id: select-products + table: products + query: SELECT * FROM products LIMIT 50 +- grpc: + seed: [2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41, 43, 47, 53, 59, 61, 67, 71, 73, 79, 83, 89, 97, 101, 103, 107, + 109, 113, 127, 135] + target_uri: http://127.0.0.1:4317/opentelemetry.proto.collector.trace.v1.TraceService/Export + bytes_per_second: 3 MiB + parallel_connections: 1 + maximum_prebuild_cache_size_bytes: 16 MiB + variant: + opentelemetry_traces: + error_rate: 0.01 + services: + - name: api-gateway + service_type: http + scope_name: com.example.gateway + resource_attributes: + - key: deployment.environment + value: production + - key: cloud.region + value: + dictionary: cloud_regions + operations: + - id: get-product + method: GET + route: /api/v1/products/{id} + suboperations: + - to: product-service/get-product + - id: list-products + method: GET + route: /api/v1/products + suboperations: + - to: product-service/list-products + - name: product-service + service_type: grpc + grpc: + service: ProductService + scope_name: com.example.products + operations: + - id: get-product + method: GetProduct + suboperations: + - to: product-cache/get-product-by-id + - to: product-db/select-product-by-id + rate: 0.1 + - id: list-products + method: ListProducts + suboperations: + - to: product-cache/get-products + - to: product-db/select-products + rate: 0.1 + - name: product-cache + service_type: database + database: + system: redis + operations: + - id: get-product-by-id + query: GET products:by_id:$1 + - id: get-products + query: GET products:full + - name: product-db + service_type: database + database: + system: postgresql + name: products + operations: + - id: select-product-by-id + table: products + query: SELECT * FROM products WHERE id = $1 + - id: select-products + table: products + query: SELECT * FROM products LIMIT 50 diff --git a/test/smp/regression/adp/config.yaml b/test/smp/regression/adp/config.yaml index 9097e05848..a325bb1893 100644 --- a/test/smp/regression/adp/config.yaml +++ b/test/smp/regression/adp/config.yaml @@ -1,5 +1,5 @@ lading: - version: sha-d608ffbce8f8c77b147d6750b3bb6d6948af239a + version: sha-4f6598ac060672a873a07eacde66072b1888e1c2 target: ddprof_replicas: 0 diff --git a/test/smp/regression/adp/experiments.yaml b/test/smp/regression/adp/experiments.yaml index 9c3717104f..5accc7e7fd 100644 --- a/test/smp/regression/adp/experiments.yaml +++ b/test/smp/regression/adp/experiments.yaml @@ -134,6 +134,364 @@ templates: DD_DATA_PLANE_OTLP_ENABLED: "true" DD_OTLP_CONFIG: "{}" + # Base template for bounded OTLP experiments (15MiB/s total, 5 clients) + otlp_base_bounded_15mb_5_clients: + target: + cpu_allotment: 4 + memory_allotment: 1 GiB + environment: + # Enable the OTLP pipeline. + DD_DATA_PLANE_OTLP_ENABLED: "true" + DD_OTLP_CONFIG: "{}" + + lading: + generator: + - grpc: + seed: [2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41, 43, 47, 53, 59, 61, 67, 71, 73, 79, 83, 89, 97, 101, 103, 107, 109, 113, 127, 131] + target_uri: "http://127.0.0.1:4317/opentelemetry.proto.collector.trace.v1.TraceService/Export" + bytes_per_second: "3 MiB" + parallel_connections: 1 + maximum_prebuild_cache_size_bytes: "16 MiB" + variant: + opentelemetry_traces: + error_rate: 0.01 + services: + - name: api-gateway + service_type: http + scope_name: com.example.gateway + resource_attributes: + - key: deployment.environment + value: production + - key: cloud.region + value: + dictionary: cloud_regions + operations: + - id: get-product + method: GET + route: "/api/v1/products/{id}" + suboperations: + - to: product-service/get-product + - id: list-products + method: GET + route: "/api/v1/products" + suboperations: + - to: product-service/list-products + - name: product-service + service_type: grpc + grpc: + service: ProductService + scope_name: com.example.products + operations: + - id: get-product + method: GetProduct + suboperations: + - to: product-cache/get-product-by-id + - to: product-db/select-product-by-id + rate: 0.1 + - id: list-products + method: ListProducts + suboperations: + - to: product-cache/get-products + - to: product-db/select-products + rate: 0.1 + - name: product-cache + service_type: database + database: + system: redis + operations: + - id: get-product-by-id + query: "GET products:by_id:$1" + - id: get-products + query: "GET products:full" + - name: product-db + service_type: database + database: + system: postgresql + name: products + operations: + - id: select-product-by-id + table: products + query: "SELECT * FROM products WHERE id = $1" + - id: select-products + table: products + query: "SELECT * FROM products LIMIT 50" + - grpc: + seed: [2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41, 43, 47, 53, 59, 61, 67, 71, 73, 79, 83, 89, 97, 101, 103, 107, 109, 113, 127, 132] + target_uri: "http://127.0.0.1:4317/opentelemetry.proto.collector.trace.v1.TraceService/Export" + bytes_per_second: "3 MiB" + parallel_connections: 1 + maximum_prebuild_cache_size_bytes: "16 MiB" + variant: + opentelemetry_traces: + error_rate: 0.01 + services: + - name: api-gateway + service_type: http + scope_name: com.example.gateway + resource_attributes: + - key: deployment.environment + value: production + - key: cloud.region + value: + dictionary: cloud_regions + operations: + - id: get-product + method: GET + route: "/api/v1/products/{id}" + suboperations: + - to: product-service/get-product + - id: list-products + method: GET + route: "/api/v1/products" + suboperations: + - to: product-service/list-products + - name: product-service + service_type: grpc + grpc: + service: ProductService + scope_name: com.example.products + operations: + - id: get-product + method: GetProduct + suboperations: + - to: product-cache/get-product-by-id + - to: product-db/select-product-by-id + rate: 0.1 + - id: list-products + method: ListProducts + suboperations: + - to: product-cache/get-products + - to: product-db/select-products + rate: 0.1 + - name: product-cache + service_type: database + database: + system: redis + operations: + - id: get-product-by-id + query: "GET products:by_id:$1" + - id: get-products + query: "GET products:full" + - name: product-db + service_type: database + database: + system: postgresql + name: products + operations: + - id: select-product-by-id + table: products + query: "SELECT * FROM products WHERE id = $1" + - id: select-products + table: products + query: "SELECT * FROM products LIMIT 50" + - grpc: + seed: [2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41, 43, 47, 53, 59, 61, 67, 71, 73, 79, 83, 89, 97, 101, 103, 107, 109, 113, 127, 133] + target_uri: "http://127.0.0.1:4317/opentelemetry.proto.collector.trace.v1.TraceService/Export" + bytes_per_second: "3 MiB" + parallel_connections: 1 + maximum_prebuild_cache_size_bytes: "16 MiB" + variant: + opentelemetry_traces: + error_rate: 0.01 + services: + - name: api-gateway + service_type: http + scope_name: com.example.gateway + resource_attributes: + - key: deployment.environment + value: production + - key: cloud.region + value: + dictionary: cloud_regions + operations: + - id: get-product + method: GET + route: "/api/v1/products/{id}" + suboperations: + - to: product-service/get-product + - id: list-products + method: GET + route: "/api/v1/products" + suboperations: + - to: product-service/list-products + - name: product-service + service_type: grpc + grpc: + service: ProductService + scope_name: com.example.products + operations: + - id: get-product + method: GetProduct + suboperations: + - to: product-cache/get-product-by-id + - to: product-db/select-product-by-id + rate: 0.1 + - id: list-products + method: ListProducts + suboperations: + - to: product-cache/get-products + - to: product-db/select-products + rate: 0.1 + - name: product-cache + service_type: database + database: + system: redis + operations: + - id: get-product-by-id + query: "GET products:by_id:$1" + - id: get-products + query: "GET products:full" + - name: product-db + service_type: database + database: + system: postgresql + name: products + operations: + - id: select-product-by-id + table: products + query: "SELECT * FROM products WHERE id = $1" + - id: select-products + table: products + query: "SELECT * FROM products LIMIT 50" + - grpc: + seed: [2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41, 43, 47, 53, 59, 61, 67, 71, 73, 79, 83, 89, 97, 101, 103, 107, 109, 113, 127, 134] + target_uri: "http://127.0.0.1:4317/opentelemetry.proto.collector.trace.v1.TraceService/Export" + bytes_per_second: "3 MiB" + parallel_connections: 1 + maximum_prebuild_cache_size_bytes: "16 MiB" + variant: + opentelemetry_traces: + error_rate: 0.01 + services: + - name: api-gateway + service_type: http + scope_name: com.example.gateway + resource_attributes: + - key: deployment.environment + value: production + - key: cloud.region + value: + dictionary: cloud_regions + operations: + - id: get-product + method: GET + route: "/api/v1/products/{id}" + suboperations: + - to: product-service/get-product + - id: list-products + method: GET + route: "/api/v1/products" + suboperations: + - to: product-service/list-products + - name: product-service + service_type: grpc + grpc: + service: ProductService + scope_name: com.example.products + operations: + - id: get-product + method: GetProduct + suboperations: + - to: product-cache/get-product-by-id + - to: product-db/select-product-by-id + rate: 0.1 + - id: list-products + method: ListProducts + suboperations: + - to: product-cache/get-products + - to: product-db/select-products + rate: 0.1 + - name: product-cache + service_type: database + database: + system: redis + operations: + - id: get-product-by-id + query: "GET products:by_id:$1" + - id: get-products + query: "GET products:full" + - name: product-db + service_type: database + database: + system: postgresql + name: products + operations: + - id: select-product-by-id + table: products + query: "SELECT * FROM products WHERE id = $1" + - id: select-products + table: products + query: "SELECT * FROM products LIMIT 50" + - grpc: + seed: [2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41, 43, 47, 53, 59, 61, 67, 71, 73, 79, 83, 89, 97, 101, 103, 107, 109, 113, 127, 135] + target_uri: "http://127.0.0.1:4317/opentelemetry.proto.collector.trace.v1.TraceService/Export" + bytes_per_second: "3 MiB" + parallel_connections: 1 + maximum_prebuild_cache_size_bytes: "16 MiB" + variant: + opentelemetry_traces: + error_rate: 0.01 + services: + - name: api-gateway + service_type: http + scope_name: com.example.gateway + resource_attributes: + - key: deployment.environment + value: production + - key: cloud.region + value: + dictionary: cloud_regions + operations: + - id: get-product + method: GET + route: "/api/v1/products/{id}" + suboperations: + - to: product-service/get-product + - id: list-products + method: GET + route: "/api/v1/products" + suboperations: + - to: product-service/list-products + - name: product-service + service_type: grpc + grpc: + service: ProductService + scope_name: com.example.products + operations: + - id: get-product + method: GetProduct + suboperations: + - to: product-cache/get-product-by-id + - to: product-db/select-product-by-id + rate: 0.1 + - id: list-products + method: ListProducts + suboperations: + - to: product-cache/get-products + - to: product-db/select-products + rate: 0.1 + - name: product-cache + service_type: database + database: + system: redis + operations: + - id: get-product-by-id + query: "GET products:by_id:$1" + - id: get-products + query: "GET products:full" + - name: product-db + service_type: database + database: + system: postgresql + name: products + operations: + - id: select-product-by-id + table: products + query: "SELECT * FROM products WHERE id = $1" + - id: select-products + table: products + query: "SELECT * FROM products LIMIT 50" + experiments: # ============================================================================ # DogStatsD: basic regression (CPU, memory, throughput) @@ -332,6 +690,87 @@ experiments: bytes_per_second: "100 MiB" maximum_prebuild_cache_size_bytes: "768 Mb" + - name: quality_gates_rss_otlp_traces_15mb_bounded_190mb + extends: otlp_base_bounded_15mb_5_clients + optimization_goal: memory + + target: + environment: + DD_MEMORY_LIMIT: "190MiB" + DD_MEMORY_SLOP_FACTOR: "0.2" + + checks: + - name: memory_usage + description: "Acceptable upper bound on the memory used by ADP when handling bounded 15 MiB OTLP traces traffic." + bounds: + series: total_pss_bytes + upper_bound: "190 MiB" + + - name: quality_gates_rss_otlp_traces_15mb_bounded_215mb + extends: otlp_base_bounded_15mb_5_clients + optimization_goal: memory + + target: + environment: + DD_MEMORY_LIMIT: "215MiB" + DD_MEMORY_SLOP_FACTOR: "0.2" + + checks: + - name: memory_usage + description: "Acceptable upper bound on the memory used by ADP when handling bounded 15 MiB OTLP traces traffic." + bounds: + series: total_pss_bytes + upper_bound: "215 MiB" + + - name: quality_gates_rss_otlp_traces_15mb_bounded_240mb + extends: otlp_base_bounded_15mb_5_clients + optimization_goal: memory + + target: + environment: + DD_MEMORY_LIMIT: "240MiB" + DD_MEMORY_SLOP_FACTOR: "0.2" + + checks: + - name: memory_usage + description: "Acceptable upper bound on the memory used by ADP when handling bounded 15 MiB OTLP traces traffic." + bounds: + series: total_pss_bytes + upper_bound: "240 MiB" + + - name: quality_gates_rss_otlp_traces_15mb_bounded_265mb + extends: otlp_base_bounded_15mb_5_clients + optimization_goal: memory + + target: + environment: + DD_MEMORY_LIMIT: "265MiB" + DD_MEMORY_SLOP_FACTOR: "0.2" + + checks: + - name: memory_usage + description: "Acceptable upper bound on the memory used by ADP when handling bounded 15 MiB OTLP traces traffic." + bounds: + series: total_pss_bytes + upper_bound: "265 MiB" + + - name: quality_gates_rss_otlp_traces_15mb_bounded_290mb + extends: otlp_base_bounded_15mb_5_clients + optimization_goal: memory + + target: + environment: + DD_MEMORY_LIMIT: "290MiB" + DD_MEMORY_SLOP_FACTOR: "0.2" + + checks: + - name: memory_usage + description: "Acceptable upper bound on the memory used by ADP when handling bounded 15 MiB OTLP traces traffic." + bounds: + series: total_pss_bytes + upper_bound: "290 MiB" + + # ============================================================================ # OTLP Experiments # ============================================================================