diff --git a/test/performance/broker-imc/dev.config b/test/performance/broker-imc/dev.config index f847c2986ee..f73d1b09600 100644 --- a/test/performance/broker-imc/dev.config +++ b/test/performance/broker-imc/dev.config @@ -1,7 +1,7 @@ ### Creating this benchmark: -# mako create_benchmark test/performance/broker-latency/dev.config +# mako create_benchmark test/performance/broker-imc/dev.config ### Updating this benchmark: -# mako update_benchmark test/performance/broker-latency/dev.config +# mako update_benchmark test/performance/broker-imc/dev.config project_name: "Knative" benchmark_name: "Development - Broker Latency & Throughput" diff --git a/test/performance/channel-imc/100-channel-perf-setup.yaml b/test/performance/channel-imc/100-channel-perf-setup.yaml index 8cd660fe8a5..afff1bfc634 100644 --- a/test/performance/channel-imc/100-channel-perf-setup.yaml +++ b/test/performance/channel-imc/100-channel-perf-setup.yaml @@ -131,7 +131,7 @@ metadata: --- -apiVersion: eventing.knative.dev/v1alpha1 +apiVersion: messaging.knative.dev/v1alpha1 kind: Subscription metadata: name: in-memory-test-channel-sub diff --git a/test/performance/channel-imc/continuous/100-channel-imc-setup.yaml b/test/performance/channel-imc/continuous/100-channel-imc-setup.yaml new file mode 100644 index 00000000000..fcb589f8c65 --- /dev/null +++ b/test/performance/channel-imc/continuous/100-channel-imc-setup.yaml @@ -0,0 +1,106 @@ +# Copyright 2019 The Knative Authors +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +--- + +apiVersion: v1 +kind: Service +metadata: + name: channel-imc-consumer + namespace: default +spec: + selector: + role: channel-imc-consumer + ports: + - protocol: TCP + port: 80 + targetPort: cloudevents + name: http + +--- + +apiVersion: v1 +kind: Service +metadata: + name: channel-imc-aggregator + namespace: default +spec: + selector: + role: channel-imc-aggregator + ports: + - name: grpc + port: 10000 + targetPort: grpc + protocol: TCP + +--- + +apiVersion: v1 +kind: ServiceAccount +metadata: + name: perf-eventing + namespace: default + +--- + +kind: ClusterRole +apiVersion: rbac.authorization.k8s.io/v1 +metadata: + name: perf-eventing +rules: + - apiGroups: [""] + resources: ["nodes", "pods"] + verbs: ["list"] + +--- + +apiVersion: rbac.authorization.k8s.io/v1 +kind: ClusterRoleBinding +metadata: + name: perf-eventing +subjects: + - kind: ServiceAccount + name: perf-eventing + namespace: default +roleRef: + kind: ClusterRole + name: perf-eventing + apiGroup: rbac.authorization.k8s.io + +--- + +apiVersion: messaging.knative.dev/v1alpha1 +kind: InMemoryChannel +metadata: + name: channel-imc + namespace: default + +--- + + +apiVersion: messaging.knative.dev/v1alpha1 +kind: Subscription +metadata: + name: channel-imc-sub + namespace: default +spec: + channel: + apiVersion: messaging.knative.dev/v1alpha1 + kind: InMemoryChannel + name: channel-imc + subscriber: + ref: + apiVersion: v1 + kind: Service + name: channel-imc-consumer diff --git a/test/performance/channel-imc/continuous/200-channel-imc.yaml b/test/performance/channel-imc/continuous/200-channel-imc.yaml new file mode 100644 index 00000000000..ed18118991a --- /dev/null +++ b/test/performance/channel-imc/continuous/200-channel-imc.yaml @@ -0,0 +1,137 @@ +# Copyright 2019 The Knative Authors +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +apiVersion: batch/v1beta1 +kind: CronJob +metadata: + name: channel-imc-send-receive + namespace: default + labels: + role: channel-imc-consumer +spec: + schedule: "0/15 * * * *" + # History must be zero to ensure no failed pods stick around and block the next job + successfulJobsHistoryLimit: 0 + failedJobsHistoryLimit: 0 + jobTemplate: + spec: + completions: 1 + parallelism: 1 + backoffLimit: 0 + # Allow up to 14 minutes, then clean up to make room for the next attempt + activeDeadlineSeconds: 840 + template: + metadata: + labels: + role: channel-imc-consumer + spec: + serviceAccountName: perf-eventing + restartPolicy: Never + containers: + - name: sender-receiver + image: knative.dev/eventing/test/test_images/performance + args: + - "--roles=sender,receiver" + - "--sink=http://channel-imc-kn-channel.default.svc.cluster.local" + - "--aggregator=channel-imc-aggregator:10000" + - "--pace=100:10,400:20,800:30,1000:60,2000:60,3000:60" + - "--verbose" + env: + - name: GOGC + value: "off" + - name: POD_NAME + valueFrom: + fieldRef: + fieldPath: metadata.name + - name: POD_NAMESPACE + valueFrom: + fieldRef: + fieldPath: metadata.namespace + resources: + requests: + cpu: 1000m + memory: 6Gi + ports: + - name: cloudevents + containerPort: 8080 + +--- + +apiVersion: batch/v1beta1 +kind: CronJob +metadata: + name: channel-imc-aggregator + namespace: default + labels: + role: channel-imc-aggregator +spec: + schedule: "0/15 * * * *" + # History must be zero to ensure no failed pods stick around and block the next job + successfulJobsHistoryLimit: 0 + failedJobsHistoryLimit: 0 + jobTemplate: + spec: + completions: 1 + parallelism: 1 + backoffLimit: 0 + # Allow up to 14 minutes, then clean up to make room for the next attempt + activeDeadlineSeconds: 840 + template: + metadata: + labels: + role: channel-imc-aggregator + spec: + serviceAccountName: perf-eventing + restartPolicy: Never + containers: + - name: aggregator + image: knative.dev/eventing/test/test_images/performance + args: + - "--role=aggregator" + # set to the number of sender-receiver + - "--expect-records=2" + - "--mako-tags=channel=imc" + - "--verbose" + - "--benchmark-key=5683818216292352" + - "--benchmark-name=Development - Channel Latency & Throughput" + ports: + - name: grpc + containerPort: 10000 + resources: + requests: + cpu: 1000m + memory: 2Gi + volumeMounts: + - name: config-mako + mountPath: /etc/config-mako + terminationMessagePolicy: FallbackToLogsOnError + - name: mako + image: gcr.io/knative-performance/mako-microservice:latest + env: + - name: GOOGLE_APPLICATION_CREDENTIALS + value: /var/secret/robot.json + volumeMounts: + - name: service-account + mountPath: /var/secret + ports: + - name: quickstore + containerPort: 9813 + terminationMessagePolicy: FallbackToLogsOnError + volumes: + - name: config-mako + configMap: + name: config-mako + - name: service-account + secret: + secretName: service-account diff --git a/test/performance/channel-imc/dev.config b/test/performance/channel-imc/dev.config new file mode 100644 index 00000000000..321e5d3435c --- /dev/null +++ b/test/performance/channel-imc/dev.config @@ -0,0 +1,61 @@ +### Creating this benchmark: +# mako create_benchmark test/performance/channel-imc/dev.config +### Updating this benchmark: +# mako update_benchmark test/performance/channel-imc/dev.config + +project_name: "Knative" +benchmark_name: "Development - Channel Latency & Throughput" +description: "Measure latency and throughput of channels." +benchmark_key: '5683818216292352' + +# Human owners for manual benchmark adjustments. +owner_list: "grantrodgers@google.com" +owner_list: "chizhg@google.com" +owner_list: "xiyue@google.com" +owner_list: "gracegao@google.com" +owner_list: "nachocano@google.com" + +# Anyone can add their IAM robot here to publish to this benchmark. +owner_list: "mako-job@knative-eventing-performance.iam.gserviceaccount.com" +# This is grantrodgers' robot: +owner_list: "mako-upload@grantrodgers-crd.iam.gserviceaccount.com" +owner_list: "mako-upload@xiyue-knative-project.iam.gserviceaccount.com" +owner_list: "mako-upload@gracegao-knative-gcp-testing.iam.gserviceaccount.com" +owner_list: "mako-upload@knative-project-228222.iam.gserviceaccount.com" + +# Define the name and type for x-axis of run charts +input_value_info: { + value_key: "t" + label: "time" + type: TIMESTAMP +} + +# Note: value_key is stored repeatedly and should be very short (ideally one or two characters). +metric_info_list: { + value_key: "pl" + label: "publish-latency" +} +metric_info_list: { + value_key: "pe" + label: "publish-errors" +} +metric_info_list: { + value_key: "st" + label: "send-throughput" +} +metric_info_list: { + value_key: "dl" + label: "deliver-latency" +} +metric_info_list: { + value_key: "de" + label: "deliver-errors" +} +metric_info_list: { + value_key: "dt" + label: "deliver-throughput" +} +metric_info_list: { + value_key: "ft" + label: "failure-throughput" +}