Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

This detailed workload setup provides a comprehensive overview of the Kafka consumer environment on Linux, detailing how cloud events are handled, system resource configurations, and message publishing mechanisms.

...

  •  Configuring a performance test scenario with a load-testing tool, possibly using something like k6 for generating load. 

    Code Block
    languagepy
    titleK6 Scenarios
    collapsetrue
     produce_cm_avc_event: {
                executor: 'shared-iterations',
                exec: 'produce_cm_avc_event',
                vus: 1000, // You can adjust VUs to meet performance requirements
                iterations: $TOTAL_MESSAGES, // Total messages to publish  (for example: 100 K , 200 K)
                maxDuration: '15m', // Adjust depending on the expected completion time
            }

    Explanation:

    • executor: 'shared-iterations': The shared-iterations executor divides the total number of iterations among the virtual users (VUs). This is ideal if you know the total amount of work (in this case, messages) that you want to execute but not how long it will take.
    • exec: Refers to the function or scenario name that handles the actual work (in this case, generating CM AVC events).
    • vus: The number of virtual users that will be running concurrently. You can adjust this based on how much load you want to simulate.
    • iterations: The total number of iterations (or messages in your case) that the virtual users will complete. You can set this based on your performance test needs, e.g., 100000 or 200000.
    • maxDuration: The maximum time the test is allowed to run. If the iterations are not completed within this time, the test will stop.

    Suggested Adjustments:

    • Make sure to replace $TOTAL_MESSAGES with a specific value, such as 100000 or 200000, depending on your test requirements.
    • You may want to tune the vus and maxDuration depending on your system's capacity and how fast you expect the messages to be processed. If you're testing scalability, start with a smaller number and increase.

Test Environment


#

Environment/Workload

Description

1Tested on Linux

Laptop :                Dell Inc. XPS 15 9530
Processor :           13th Gen Intel® Core™ i9-13900H @2.60GHz
Installed RAM :    32.0 GiB 
Edition :               Fedora Linux 40 (Workstation Edition)u

PassMark Bench Mark: 28820

2Tested on Windows

Laptop :                Lenovo ThinkPad
Processor :            11th Gen Intel(R) Core(TM) i5-1135G7 @ 2.40GHz 
Installed RAM  :    40.0 GB (39.7 GB usable)
Edition :                Windows 11 Pro

PassMark Bench Mark: 9761

2Number of CPS Instance

1


NCMP resource configYAML Configuration: Defines deployment resources for the NCMP service:
Replicas: 1
CPU Reservations: 2 CPUs
Memory Reservations: 2 GB
CPU Limits: 3 CPUs
Memory Limits: 3 GB

Kafka Topic configurationCM Notification Topic Configuration:
Enabled: false
Group ID: cm_events
Topic Name: dmi-cm-events

Publishing topic name
dmi-cm-events

Forwarded topic name
cm-events
4Total number of Cm Avc cloud events

100,000/200,000 Kafka messages sent through the Kafka topic.

5

Cloud event headers

The headers for each Kafka message contain the following fields:
ce_type: "org.onap.cps.ncmp.events.avc1_0_0.AvcEvent"
ce_source: "DMI"
ce_destination: "dmi-cm-events"
ce_specversion: "1.0"
ce_time: ISO-formatted timestamp
ce_id: A unique ID generated using crypto.randomUUID()
ce_dataschema: "urn:cps.onap.cps.ncmp.events.avc1_0_0.AvcEvent:1.0.0"
ce_correlationid: Correlation ID generated using crypto.randomUUID()
6Kafka payload 


Code Block
languagejs
titleSampleAvcInputEvent.json
collapsetrue
{
  "data": {
    "push-change-update": {
      "datastore-changes": {
        "ietf-yang-patch:yang-patch": {
          "patch-id": "34534ffd98",
          "edit": [
            {
              "edit-id": "ded43434-1",
              "operation": "replace",
              "target": "ran-network:ran-network/NearRTRIC[@id='22']/GNBCUCPFunction[@id='cucpserver2']/NRCellCU[@id='15549']/NRCellRelation[@id='14427']",
              "value": {
                "attributes": []
              }
            },
            {
              "edit-id": "ded43434-2",
              "operation": "create",
              "target": "ran-network:ran-network/NearRTRIC[@id='22']/GNBCUCPFunction[@id='cucpserver1']/NRCellCU[@id='15548']/NRCellRelation[@id='14426']",
              "value": {
                "attributes": [
                  {
                    "isHoAllowed": false
                  }
                ]
              }
            },
            {
              "edit-id": "ded43434-3",
              "operation": "delete",
              "target": "ran-network:ran-network/NearRTRIC[@id='22']/GNBCUCPFunction[@id='cucpserver1']/NRCellCU[@id='15548']/NRCellRelation[@id='14426']"
            }
          ]
        }
      }
    }
  }
}


8Number of DMI Plugin stub1 DMI Plugin Stub is used for testing purposes.
9Commit ID 81eb7dfc2f100a72692d2cbd7ce16540ee0a0fd4  
10Commit ID linkCommit Link
11K6 script (to publish cloud events)

The test script used to publish cloud events is located at:

..\cps\k6-tests\once-off-test\kafka\produce-avc-event.js

...

Metric

Linux (i9)

Windows (i5)

Linux (i9)

Windows (i5)

Total number of kafka messages

100,000


200,000

CPU Usage (%)

44.2 

82.1 

78.3

72.6

Memory Usage (MB)

244 

195

212

222

Total Threads

321

320

320

319

First Message Processed (HH:MM:SS)

16:37:11

17:30:51

16.52.54

17.42.56

Last Message Processed (HH:MM:SS)

16:37:14

17:31:03

16.52.59

17.43.10

Total Time to Process Messages (Seconds)

3

12

5

14

Message Throughput (Messages/Second)

33,333

8,333

40,000

14,286

Estimated Bandwith (1.5Kb/message) Mbps39198469167


Linux (i9),                   100,000

Linux (i9),                    200,000

Windows (i5),             100,000

Windows (i5),             200,000

...