Specialization for protocol performance tests, added dashboard to visualize test result

This commit is contained in:
NagyZoltanPeter 2025-03-27 17:01:59 +01:00
parent fe56434931
commit 5dde63c3b9
No known key found for this signature in database
GPG Key ID: 16EADB9673B65368
2 changed files with 998 additions and 492 deletions

View File

@ -42,6 +42,7 @@ x-pg-exporter-env: &pg_exp_env
networks: networks:
simulation: simulation:
name: simulation
driver: bridge driver: bridge
ipam: ipam:
driver: default driver: default
@ -95,6 +96,7 @@ services:
bootstrap: bootstrap:
image: ${NWAKU_IMAGE:-wakuorg/nwaku:latest} image: ${NWAKU_IMAGE:-wakuorg/nwaku:latest}
# container_name: bootstrap
restart: on-failure restart: on-failure
labels: labels:
com.centurylinklabs.watchtower.enable: '${WATCHTOWER_ENABLED:-true}' com.centurylinklabs.watchtower.enable: '${WATCHTOWER_ENABLED:-true}'
@ -115,6 +117,10 @@ services:
servicenode: servicenode:
image: ${NWAKU_IMAGE:-wakuorg/nwaku:latest} image: ${NWAKU_IMAGE:-wakuorg/nwaku:latest}
# container_name: servicenode
cpu_count: 1
cpuset: "4"
mem_limit: 512m
restart: on-failure restart: on-failure
labels: labels:
com.centurylinklabs.watchtower.enable: '${WATCHTOWER_ENABLED:-true}' com.centurylinklabs.watchtower.enable: '${WATCHTOWER_ENABLED:-true}'
@ -170,6 +176,7 @@ services:
edgenode: edgenode:
image: ${NWAKU_IMAGE:-wakuorg/nwaku:latest} image: ${NWAKU_IMAGE:-wakuorg/nwaku:latest}
# container_name: edgenode
restart: on-failure restart: on-failure
ports: ports:
- 127.0.0.1:60002:60002/tcp - 127.0.0.1:60002:60002/tcp
@ -319,6 +326,9 @@ services:
# This service is used when the Waku node has the 'store' protocol enabled # This service is used when the Waku node has the 'store' protocol enabled
# and the store-message-db-url is set to use Postgres # and the store-message-db-url is set to use Postgres
image: postgres:15.4-alpine3.18 image: postgres:15.4-alpine3.18
cpu_count: 1
cpuset: "4"
mem_limit: 2g
restart: on-failure:5 restart: on-failure:5
shm_size: "${POSTGRES_SHM:-1g}" # Set default shared memory size to 1 GB shm_size: "${POSTGRES_SHM:-1g}" # Set default shared memory size to 1 GB
environment: environment:

View File

@ -22,6 +22,106 @@
"id": 2, "id": 2,
"links": [], "links": [],
"panels": [ "panels": [
{
"collapsed": false,
"gridPos": {
"h": 1,
"w": 24,
"x": 0,
"y": 0
},
"id": 9,
"panels": [],
"title": "Lightpush / Filter",
"type": "row"
},
{
"datasource": {
"type": "prometheus",
"uid": "PBFA97CFB590B2093"
},
"fieldConfig": {
"defaults": {
"custom": {
"hideFrom": {
"legend": false,
"tooltip": false,
"viz": false
},
"scaleDistribution": {
"type": "linear"
}
}
},
"overrides": []
},
"gridPos": {
"h": 8,
"w": 12,
"x": 0,
"y": 1
},
"id": 1,
"options": {
"calculate": false,
"cellGap": 1,
"color": {
"exponent": 0.5,
"fill": "dark-orange",
"mode": "scheme",
"reverse": true,
"scale": "exponential",
"scheme": "Reds",
"steps": 64
},
"exemplars": {
"color": "rgba(255,0,255,0.7)"
},
"filterValues": {
"le": 1e-9
},
"legend": {
"show": true
},
"rowsFrame": {
"layout": "auto"
},
"tooltip": {
"mode": "single",
"showColorScale": false,
"yHistogram": false
},
"yAxis": {
"axisPlacement": "left",
"reverse": false,
"unit": "s"
}
},
"pluginVersion": "11.5.2",
"targets": [
{
"datasource": {
"type": "prometheus",
"uid": "PBFA97CFB590B2093"
},
"disableTextWrap": false,
"editorMode": "code",
"exemplar": false,
"expr": "sum by(le) (increase(waku_service_request_handling_duration_seconds_bucket{instance=\"servicenode:8008\", service=\"/vac/waku/lightpush/2.0.0-beta1\"}[$__rate_interval]))",
"format": "heatmap",
"fullMetaSearch": false,
"includeNullMetadata": true,
"instant": false,
"interval": "",
"legendFormat": "{{le}}",
"range": true,
"refId": "A",
"useBackend": false
}
],
"title": "Lightpush request performance",
"type": "heatmap"
},
{ {
"datasource": { "datasource": {
"type": "prometheus", "type": "prometheus",
@ -85,10 +185,10 @@
"gridPos": { "gridPos": {
"h": 8, "h": 8,
"w": 12, "w": 12,
"x": 0, "x": 12,
"y": 0 "y": 1
}, },
"id": 5, "id": 11,
"options": { "options": {
"legend": { "legend": {
"calcs": [], "calcs": [],
@ -105,105 +205,32 @@
"pluginVersion": "11.5.2", "pluginVersion": "11.5.2",
"targets": [ "targets": [
{ {
"editorMode": "builder",
"expr": "rate(waku_service_requests_total{service = \"/vac/waku/lightpush/2.0.0-beta1\", instance=\"servicenode:8008\"}[$__rate_interval])",
"legendFormat": "{{service}}",
"range": true,
"refId": "A"
},
{
"datasource": {
"type": "prometheus",
"uid": "PBFA97CFB590B2093"
},
"disableTextWrap": false, "disableTextWrap": false,
"editorMode": "builder", "editorMode": "builder",
"expr": "container_cpu_load_average_10s{name=\"waku-simulator-servicenode-1\"}", "expr": "rate(waku_service_requests_total{service=\"/vac/waku/filter-subscribe/2.0.0-beta1\", instance=\"servicenode:8008\"}[$__rate_interval])",
"format": "time_series",
"fullMetaSearch": false, "fullMetaSearch": false,
"hide": false,
"includeNullMetadata": true, "includeNullMetadata": true,
"legendFormat": "", "legendFormat": "{{service}}",
"range": true, "range": true,
"refId": "A", "refId": "B",
"useBackend": false "useBackend": false
} }
], ],
"title": "Container CPU usage", "title": "Lightpush and filter request rate",
"type": "timeseries" "type": "timeseries"
}, },
{
"datasource": {
"type": "prometheus",
"uid": "PBFA97CFB590B2093"
},
"fieldConfig": {
"defaults": {
"custom": {
"hideFrom": {
"legend": false,
"tooltip": false,
"viz": false
},
"scaleDistribution": {
"type": "linear"
}
}
},
"overrides": []
},
"gridPos": {
"h": 8,
"w": 12,
"x": 12,
"y": 0
},
"id": 4,
"options": {
"calculate": false,
"cellGap": 1,
"color": {
"exponent": 0.5,
"fill": "dark-orange",
"mode": "scheme",
"reverse": false,
"scale": "exponential",
"scheme": "Turbo",
"steps": 64
},
"exemplars": {
"color": "rgba(255,0,255,0.7)"
},
"filterValues": {
"le": 1e-9
},
"legend": {
"show": true
},
"rowsFrame": {
"layout": "auto"
},
"tooltip": {
"mode": "single",
"showColorScale": false,
"yHistogram": false
},
"yAxis": {
"axisPlacement": "left",
"reverse": false,
"unit": "s"
}
},
"pluginVersion": "11.5.2",
"targets": [
{
"datasource": {
"type": "prometheus",
"uid": "PBFA97CFB590B2093"
},
"disableTextWrap": false,
"editorMode": "builder",
"expr": "sum by(le) (increase(waku_filter_handle_message_duration_seconds_bucket{instance=\"servicenode:8008\"}[$__rate_interval]))",
"format": "heatmap",
"fullMetaSearch": false,
"includeNullMetadata": true,
"legendFormat": "{{le}}",
"range": true,
"refId": "A",
"useBackend": false
}
],
"title": "Filter message handling performance",
"type": "heatmap"
},
{ {
"datasource": { "datasource": {
"type": "prometheus", "type": "prometheus",
@ -228,94 +255,7 @@
"h": 8, "h": 8,
"w": 12, "w": 12,
"x": 0, "x": 0,
"y": 8 "y": 9
},
"id": 1,
"options": {
"calculate": false,
"cellGap": 1,
"color": {
"exponent": 0.5,
"fill": "dark-orange",
"mode": "scheme",
"reverse": false,
"scale": "exponential",
"scheme": "Turbo",
"steps": 64
},
"exemplars": {
"color": "rgba(255,0,255,0.7)"
},
"filterValues": {
"le": 1e-9
},
"legend": {
"show": true
},
"rowsFrame": {
"layout": "auto"
},
"tooltip": {
"mode": "single",
"showColorScale": false,
"yHistogram": false
},
"yAxis": {
"axisPlacement": "left",
"reverse": false,
"unit": "s"
}
},
"pluginVersion": "11.5.2",
"targets": [
{
"datasource": {
"type": "prometheus",
"uid": "PBFA97CFB590B2093"
},
"disableTextWrap": false,
"editorMode": "code",
"exemplar": false,
"expr": "sum by(le) (increase(waku_service_request_handling_duration_seconds_bucket{instance=\"servicenode:8008\", service=\"/vac/waku/lightpush/2.0.0-beta1\"}[$__rate_interval]))",
"format": "heatmap",
"fullMetaSearch": false,
"includeNullMetadata": true,
"instant": false,
"interval": "",
"legendFormat": "{{le}}",
"range": true,
"refId": "A",
"useBackend": false
}
],
"title": "Lightpush request performance",
"type": "heatmap"
},
{
"datasource": {
"type": "prometheus",
"uid": "PBFA97CFB590B2093"
},
"fieldConfig": {
"defaults": {
"custom": {
"hideFrom": {
"legend": false,
"tooltip": false,
"viz": false
},
"scaleDistribution": {
"type": "linear"
}
}
},
"overrides": []
},
"gridPos": {
"h": 8,
"w": 12,
"x": 0,
"y": 16
}, },
"id": 2, "id": 2,
"options": { "options": {
@ -325,9 +265,9 @@
"exponent": 0.5, "exponent": 0.5,
"fill": "dark-orange", "fill": "dark-orange",
"mode": "scheme", "mode": "scheme",
"reverse": false, "reverse": true,
"scale": "exponential", "scale": "exponential",
"scheme": "Turbo", "scheme": "Reds",
"steps": 64 "steps": 64
}, },
"exemplars": { "exemplars": {
@ -398,8 +338,105 @@
"gridPos": { "gridPos": {
"h": 8, "h": 8,
"w": 12, "w": 12,
"x": 12,
"y": 9
},
"id": 4,
"options": {
"calculate": false,
"cellGap": 1,
"color": {
"exponent": 0.5,
"fill": "dark-orange",
"mode": "scheme",
"reverse": true,
"scale": "exponential",
"scheme": "Reds",
"steps": 64
},
"exemplars": {
"color": "rgba(255,0,255,0.7)"
},
"filterValues": {
"le": 1e-9
},
"legend": {
"show": true
},
"rowsFrame": {
"layout": "auto"
},
"tooltip": {
"mode": "single",
"showColorScale": false,
"yHistogram": false
},
"yAxis": {
"axisPlacement": "left",
"reverse": false,
"unit": "s"
}
},
"pluginVersion": "11.5.2",
"targets": [
{
"datasource": {
"type": "prometheus",
"uid": "PBFA97CFB590B2093"
},
"disableTextWrap": false,
"editorMode": "builder",
"expr": "sum by(le) (increase(waku_filter_handle_message_duration_seconds_bucket{instance=\"servicenode:8008\"}[$__rate_interval]))",
"format": "heatmap",
"fullMetaSearch": false,
"includeNullMetadata": true,
"legendFormat": "{{le}}",
"range": true,
"refId": "A",
"useBackend": false
}
],
"title": "Filter message handling performance",
"type": "heatmap"
},
{
"collapsed": false,
"gridPos": {
"h": 1,
"w": 24,
"x": 0, "x": 0,
"y": 24 "y": 17
},
"id": 10,
"panels": [],
"title": "Store",
"type": "row"
},
{
"datasource": {
"type": "prometheus",
"uid": "PBFA97CFB590B2093"
},
"fieldConfig": {
"defaults": {
"custom": {
"hideFrom": {
"legend": false,
"tooltip": false,
"viz": false
},
"scaleDistribution": {
"type": "linear"
}
}
},
"overrides": []
},
"gridPos": {
"h": 8,
"w": 12,
"x": 0,
"y": 18
}, },
"id": 3, "id": 3,
"options": { "options": {
@ -409,9 +446,9 @@
"exponent": 0.5, "exponent": 0.5,
"fill": "dark-orange", "fill": "dark-orange",
"mode": "scheme", "mode": "scheme",
"reverse": false, "reverse": true,
"scale": "exponential", "scale": "exponential",
"scheme": "Turbo", "scheme": "Reds",
"steps": 64 "steps": 64
}, },
"exemplars": { "exemplars": {
@ -458,6 +495,465 @@
], ],
"title": "Store query performance", "title": "Store query performance",
"type": "heatmap" "type": "heatmap"
},
{
"datasource": {
"type": "prometheus",
"uid": "PBFA97CFB590B2093"
},
"fieldConfig": {
"defaults": {
"color": {
"mode": "palette-classic"
},
"custom": {
"axisBorderShow": false,
"axisCenteredZero": false,
"axisColorMode": "text",
"axisLabel": "",
"axisPlacement": "auto",
"barAlignment": 0,
"barWidthFactor": 0.6,
"drawStyle": "line",
"fillOpacity": 0,
"gradientMode": "none",
"hideFrom": {
"legend": false,
"tooltip": false,
"viz": false
},
"insertNulls": false,
"lineInterpolation": "linear",
"lineWidth": 1,
"pointSize": 5,
"scaleDistribution": {
"type": "linear"
},
"showPoints": "auto",
"spanNulls": false,
"stacking": {
"group": "A",
"mode": "none"
},
"thresholdsStyle": {
"mode": "off"
}
},
"mappings": [],
"thresholds": {
"mode": "absolute",
"steps": [
{
"color": "green",
"value": null
},
{
"color": "red",
"value": 80
}
]
}
},
"overrides": []
},
"gridPos": {
"h": 8,
"w": 12,
"x": 12,
"y": 18
},
"id": 12,
"options": {
"legend": {
"calcs": [],
"displayMode": "list",
"placement": "bottom",
"showLegend": true
},
"tooltip": {
"hideZeros": false,
"mode": "single",
"sort": "none"
}
},
"pluginVersion": "11.5.2",
"targets": [
{
"disableTextWrap": false,
"editorMode": "builder",
"expr": "rate(waku_service_requests_total{service=\"/vac/waku/store-query/3.0.0\", instance=\"servicenode:8008\"}[$__rate_interval])",
"fullMetaSearch": false,
"includeNullMetadata": true,
"legendFormat": "{{service}}",
"range": true,
"refId": "A",
"useBackend": false
}
],
"title": "Store request rate",
"type": "timeseries"
},
{
"collapsed": false,
"gridPos": {
"h": 1,
"w": 24,
"x": 0,
"y": 26
},
"id": 8,
"panels": [],
"title": "General load",
"type": "row"
},
{
"datasource": {
"type": "prometheus",
"uid": "PBFA97CFB590B2093"
},
"fieldConfig": {
"defaults": {
"color": {
"mode": "palette-classic"
},
"custom": {
"axisBorderShow": false,
"axisCenteredZero": false,
"axisColorMode": "text",
"axisLabel": "",
"axisPlacement": "auto",
"barAlignment": 0,
"barWidthFactor": 0.6,
"drawStyle": "line",
"fillOpacity": 0,
"gradientMode": "none",
"hideFrom": {
"legend": false,
"tooltip": false,
"viz": false
},
"insertNulls": false,
"lineInterpolation": "linear",
"lineWidth": 1,
"pointSize": 5,
"scaleDistribution": {
"type": "linear"
},
"showPoints": "auto",
"spanNulls": false,
"stacking": {
"group": "A",
"mode": "none"
},
"thresholdsStyle": {
"mode": "off"
}
},
"mappings": [],
"thresholds": {
"mode": "absolute",
"steps": [
{
"color": "green",
"value": null
},
{
"color": "red",
"value": 80
}
]
},
"unit": "Bps"
},
"overrides": []
},
"gridPos": {
"h": 8,
"w": 12,
"x": 0,
"y": 27
},
"id": 6,
"options": {
"legend": {
"calcs": [],
"displayMode": "list",
"placement": "bottom",
"showLegend": true
},
"tooltip": {
"hideZeros": false,
"mode": "single",
"sort": "none"
}
},
"pluginVersion": "11.5.2",
"targets": [
{
"disableTextWrap": false,
"editorMode": "builder",
"expr": "rate(libp2p_network_bytes_total{instance=\"servicenode:8008\"}[$__rate_interval])",
"fullMetaSearch": false,
"includeNullMetadata": true,
"legendFormat": "{{direction}}",
"range": true,
"refId": "A",
"useBackend": false
}
],
"title": "Libp2p traffic",
"type": "timeseries"
},
{
"datasource": {
"type": "prometheus",
"uid": "PBFA97CFB590B2093"
},
"fieldConfig": {
"defaults": {
"color": {
"mode": "palette-classic"
},
"custom": {
"axisBorderShow": false,
"axisCenteredZero": false,
"axisColorMode": "text",
"axisLabel": "",
"axisPlacement": "auto",
"barAlignment": 0,
"barWidthFactor": 0.6,
"drawStyle": "line",
"fillOpacity": 0,
"gradientMode": "none",
"hideFrom": {
"legend": false,
"tooltip": false,
"viz": false
},
"insertNulls": false,
"lineInterpolation": "linear",
"lineWidth": 1,
"pointSize": 5,
"scaleDistribution": {
"type": "linear"
},
"showPoints": "auto",
"spanNulls": false,
"stacking": {
"group": "A",
"mode": "none"
},
"thresholdsStyle": {
"mode": "off"
}
},
"mappings": [],
"thresholds": {
"mode": "absolute",
"steps": [
{
"color": "green",
"value": null
},
{
"color": "red",
"value": 80
}
]
}
},
"overrides": [
{
"__systemRef": "hideSeriesFrom",
"matcher": {
"id": "byNames",
"options": {
"mode": "exclude",
"names": [
"container_cpu_load_average_10s{container_label_com_centurylinklabs_watchtower_enable=\"true\", container_label_com_docker_compose_config_hash=\"9143910c3ff7f3cc6e93e16d42dd1398351d422302cfa879f2a1b3e214672bd4\", container_label_com_docker_compose_container_number=\"1\", container_label_com_docker_compose_depends_on=\"postgres:service_started:false,contract-repo-deployer:service_completed_successfully:false\", container_label_com_docker_compose_image=\"sha256:fe750fd914f91a82357855f3b29eeef8a71e71154d8f490f35cc6b5fa8b04779\", container_label_com_docker_compose_oneoff=\"False\", container_label_com_docker_compose_project=\"waku-simulator\", container_label_com_docker_compose_project_config_files=\"/home/nzp/dev/status/waku-protocol-perf-measurement/waku-simulator/docker-compose.yml\", container_label_com_docker_compose_project_working_dir=\"/home/nzp/dev/status/waku-protocol-perf-measurement/waku-simulator\", container_label_com_docker_compose_service=\"servicenode\", container_label_com_docker_compose_version=\"2.33.1\", container_label_commit=\"unknown\", container_label_description=\"Wakunode: Waku client\", container_label_maintainer=\"vaclav@status.im\", container_label_quay_expires_after=\"30d\", container_label_source=\"https://github.com/waku-org/nwaku\", id=\"/system.slice/docker-87331622e74db4422818f65ea6cea953189cb57a53ce65e2ed5d156d1dee2481.scope\", image=\"quay.io/wakuorg/nwaku-pr:3299\", instance=\"cadvisor:8080\", job=\"cadvisor\", name=\"waku-simulator-servicenode-1\"}"
],
"prefix": "All except:",
"readOnly": true
}
},
"properties": [
{
"id": "custom.hideFrom",
"value": {
"legend": false,
"tooltip": false,
"viz": true
}
}
]
}
]
},
"gridPos": {
"h": 8,
"w": 12,
"x": 12,
"y": 27
},
"id": 5,
"options": {
"legend": {
"calcs": [],
"displayMode": "list",
"placement": "bottom",
"showLegend": true
},
"tooltip": {
"hideZeros": false,
"mode": "single",
"sort": "none"
}
},
"pluginVersion": "11.5.2",
"targets": [
{
"disableTextWrap": false,
"editorMode": "builder",
"expr": "container_cpu_load_average_10s{name=\"waku-simulator-servicenode-1\"}",
"format": "time_series",
"fullMetaSearch": false,
"includeNullMetadata": true,
"legendFormat": "{{name}}",
"range": true,
"refId": "A",
"useBackend": false
}
],
"title": "Container CPU usage",
"type": "timeseries"
},
{
"datasource": {
"type": "prometheus",
"uid": "PBFA97CFB590B2093"
},
"fieldConfig": {
"defaults": {
"color": {
"mode": "palette-classic"
},
"custom": {
"axisBorderShow": false,
"axisCenteredZero": false,
"axisColorMode": "text",
"axisLabel": "",
"axisPlacement": "auto",
"barAlignment": 0,
"barWidthFactor": 0.6,
"drawStyle": "line",
"fillOpacity": 0,
"gradientMode": "none",
"hideFrom": {
"legend": false,
"tooltip": false,
"viz": false
},
"insertNulls": false,
"lineInterpolation": "linear",
"lineWidth": 1,
"pointSize": 5,
"scaleDistribution": {
"type": "linear"
},
"showPoints": "auto",
"spanNulls": false,
"stacking": {
"group": "A",
"mode": "none"
},
"thresholdsStyle": {
"mode": "off"
}
},
"mappings": [],
"thresholds": {
"mode": "absolute",
"steps": [
{
"color": "green",
"value": null
},
{
"color": "red",
"value": 80
}
]
}
},
"overrides": [
{
"__systemRef": "hideSeriesFrom",
"matcher": {
"id": "byNames",
"options": {
"mode": "exclude",
"names": [
"{instance=\"servicenode:8008\", job=\"nwaku\", type_name=\"seq[InternalRaisesFuture[system.void, (CancelledError,)]]\"}"
],
"prefix": "All except:",
"readOnly": true
}
},
"properties": [
{
"id": "custom.hideFrom",
"value": {
"legend": false,
"tooltip": false,
"viz": true
}
}
]
}
]
},
"gridPos": {
"h": 8,
"w": 12,
"x": 0,
"y": 35
},
"id": 7,
"options": {
"legend": {
"calcs": [],
"displayMode": "list",
"placement": "bottom",
"showLegend": true
},
"tooltip": {
"hideZeros": false,
"mode": "single",
"sort": "none"
}
},
"pluginVersion": "11.5.2",
"targets": [
{
"datasource": {
"type": "prometheus",
"uid": "PBFA97CFB590B2093"
},
"disableTextWrap": false,
"editorMode": "builder",
"expr": "nim_gc_mem_bytes{instance=\"servicenode:8008\"}",
"fullMetaSearch": false,
"hide": false,
"includeNullMetadata": true,
"instant": false,
"legendFormat": "{{instance}}",
"range": true,
"refId": "B",
"useBackend": false
}
],
"title": "Memory usage",
"type": "timeseries"
} }
], ],
"preload": false, "preload": false,