From 54ad6efd342695d0a7dad5380cc989a8d846f518 Mon Sep 17 00:00:00 2001 From: Tibor Frank Date: Wed, 10 Jan 2018 15:48:25 +0100 Subject: CSIT-898: WRK improvments Change-Id: I92aafaaedce5891727a983b8cf024a0fb0db7524 Signed-off-by: Tibor Frank --- resources/libraries/python/tcp.py | 48 +++++++++++++++++++++- .../robot/performance/performance_setup.robot | 7 ++++ resources/libraries/robot/tcp/tcp_setup.robot | 27 ++++++++---- 3 files changed, 73 insertions(+), 9 deletions(-) (limited to 'resources/libraries') diff --git a/resources/libraries/python/tcp.py b/resources/libraries/python/tcp.py index 5ae1ebf929..ecd6210f69 100644 --- a/resources/libraries/python/tcp.py +++ b/resources/libraries/python/tcp.py @@ -33,4 +33,50 @@ class TCPUtils(object): """ with VatTerminal(node) as vat: - vat.vat_terminal_exec_cmd_from_template("start_http_server.vat") + vat.vat_terminal_exec_cmd_from_template( + "start_http_server.vat") + + @staticmethod + def start_http_server_params(node, prealloc_fifos, fifo_size, + private_segment_size): + """Start HTTP server on the given node. + + test http server static prealloc-fifos fifo-size + private-segment-size + + Where N is the max number of connections you expect to handle at one + time and should be small if you test for CPS and exchange few + bytes, say 4, if each connection just exchanges few packets. Or it + should be much larger, up to 1024/4096 (i.e. 1-4MB) if you have only + one connection and exchange a lot of packets, i.e., when you test for + RPS. If you need to allocate lots of FIFOs, so you test for CPS, make + private-segment-size something like 4g. + + Example: + + For CPS + test http server static prealloc-fifos 10000 fifo-size 64 + private-segment-size 4000m + + For RPS + test http server static prealloc-fifos 500000 fifo-size 4 + test http server static prealloc-fifos 500000 fifo-size 4 + private-segment-size 4000m + + :param node: Node to start HTTP server on. + :param prealloc_fifos: Max number of connections you expect to handle at + one time. + :param fifo_size: FIFO size in kB. + :param private_segment_size: Private segment size. Number + unit. + :type node: dict + :type prealloc_fifos: str + :type fifo_size: str + :type private_segment_size: str + """ + + with VatTerminal(node, json_param=False) as vat: + vat.vat_terminal_exec_cmd_from_template( + "start_http_server_params.vat", + prealloc_fifos=prealloc_fifos, + fifo_size=fifo_size, + private_segment_size=private_segment_size) diff --git a/resources/libraries/robot/performance/performance_setup.robot b/resources/libraries/robot/performance/performance_setup.robot index 0e909aa455..f1ad973bb8 100644 --- a/resources/libraries/robot/performance/performance_setup.robot +++ b/resources/libraries/robot/performance/performance_setup.robot @@ -422,6 +422,13 @@ | | ${intf_name}= | Get Linux interface name | ${tg} | | ... | ${tg['interfaces']['${tg_if1}']['pci_address']} | | Set Linux interface IP | ${tg} | ${intf_name} | 192.168.10.1 | 24 +| | Set Linux interface IP | ${tg} | ${intf_name} | 192.168.20.1 | 24 +| | Set Linux interface IP | ${tg} | ${intf_name} | 192.168.30.1 | 24 +| | Set Linux interface IP | ${tg} | ${intf_name} | 192.168.40.1 | 24 +| | Set Linux interface IP | ${tg} | ${intf_name} | 192.168.50.1 | 24 +| | Set Linux interface IP | ${tg} | ${intf_name} | 192.168.60.1 | 24 +| | Set Linux interface IP | ${tg} | ${intf_name} | 192.168.70.1 | 24 +| | Set Linux interface IP | ${tg} | ${intf_name} | 192.168.80.1 | 24 | | Set Linux interface up | ${tg} | ${intf_name} | | Install wrk | ${tg} diff --git a/resources/libraries/robot/tcp/tcp_setup.robot b/resources/libraries/robot/tcp/tcp_setup.robot index 09f6afd592..6da7f0fb15 100644 --- a/resources/libraries/robot/tcp/tcp_setup.robot +++ b/resources/libraries/robot/tcp/tcp_setup.robot @@ -20,24 +20,35 @@ | Documentation | L2 keywords to set up VPP to test tcp. *** Keywords *** -| Set up HTTP server on the VPP node +| Set up HTTP server with paramters on the VPP node | | [Documentation] | | ... | Configure IP address on the port, set it up and start HTTP server on | | ... | the VPP. | | ... | | ... | *Arguments:* -| | ... | - ${dut1_if1_ip4} - IP address to be set on the dut1_if1 interface. +| | ... | - ${prealloc_fifos} - Max number of connections you expect to handle +| | ... | at one time. Type: string +| | ... | - ${fifo_size} - FIFO size in kB. Type: string +| | ... | - ${private_segment_size} - Private segment size. Number + unit. | | ... | Type: string -| | ... | - ${ip4_len} - Length of the netmask. Type: integer | | ... | | ... | *Example:* | | ... -| | ... | \| Set up HTTP server on the VPP node \| 192.168.10.2 \| 24 \| +| | ... | \| Set up HTTP server with paramters on the VPP node \| 400 \| 4096\ +| | ... | \| 2g \| | | ... -| | [Arguments] | ${dut1_if1_ip4} | ${ip4_len} +| | [Arguments] | ${prealloc_fifos} | ${fifo_size} | ${private_segment_size} | | ... | | Set Interface State | ${dut1} | ${dut1_if1} | up -| | Set Interface Address | ${dut1} | ${dut1_if1} | ${dut1_if1_ip4} | ${ip4_len} +| | Set Interface Address | ${dut1} | ${dut1_if1} | 192.168.10.2 | 24 +| | Set Interface Address | ${dut1} | ${dut1_if1} | 192.168.20.2 | 24 +| | Set Interface Address | ${dut1} | ${dut1_if1} | 192.168.30.2 | 24 +| | Set Interface Address | ${dut1} | ${dut1_if1} | 192.168.40.2 | 24 +| | Set Interface Address | ${dut1} | ${dut1_if1} | 192.168.50.2 | 24 +| | Set Interface Address | ${dut1} | ${dut1_if1} | 192.168.60.2 | 24 +| | Set Interface Address | ${dut1} | ${dut1_if1} | 192.168.70.2 | 24 +| | Set Interface Address | ${dut1} | ${dut1_if1} | 192.168.80.2 | 24 | | Vpp Node Interfaces Ready Wait | ${dut1} -| | Start HTTP server | ${dut1} -| | Sleep | 30 +| | Start HTTP server params | ${dut1} | ${prealloc_fifos} | ${fifo_size} +| | ... | ${private_segment_size} +| | Sleep | 30 \ No newline at end of file -- cgit 1.2.3-korg