Skip to content

Commit 1fda1ac

Browse files
author
jparisu
committed
Final implementation with RSS
Signed-off-by: jparisu <[email protected]>
1 parent 50a0a45 commit 1fda1ac

File tree

1 file changed

+72
-40
lines changed

1 file changed

+72
-40
lines changed

test/performance/memory_usage/run_memory_usage_test.sh

Lines changed: 72 additions & 40 deletions
Original file line numberDiff line numberDiff line change
@@ -1,32 +1,41 @@
11
#!/bin/bash
22

3+
# How to launch from a colcon workspace:
4+
# bash ./src/fastdds_statistics_backend/test/performance/memory_usage/run_memory_usage_test.sh --fastdds ./build/fastrtps/examples/cpp/dds/BasicConfigurationExample/BasicConfigurationExample --backend ./build/fastdds_statistics_backend/examples/cpp/HelloWorldExample/HelloWorldExample
5+
36
############################################################
47
# Script Arguments
58
############################################################
69

710
WORKSPACE_DIR=$(pwd)
811
FASTDDS_EXAMPLE_EXECUTABLE="${WORKSPACE_DIR}/BasicConfigurationExample/BasicConfigurationExample"
9-
BACKEND_EXAMPLE_EXECUTABLE="${WORKSPACE_DIR}/HelloWorldExampleHelloWorldExample"
12+
BACKEND_EXAMPLE_EXECUTABLE="${WORKSPACE_DIR}/HelloWorldExample/HelloWorldExample"
1013

1114
RESULT_PAHT='./result'
12-
RESULT_FILE="memory_usage.csv"
13-
MEASURAMENT_RATE=0.2
15+
RESULT_FILE="backend_memory_usage.csv"
1416
LIBRARIES_TO_MEASURE="libfastcdr libfastrtps libfastdds_statistics_backend stack heap anon"
1517

16-
ENTITIES_LOOP_ITERATIONS=2
17-
ENTITIES_LOOP_ELAPSED=10
18+
ENTITIES_LOOP_ITERATIONS=5
19+
ENTITIES_LOOP_ELAPSED=30
1820
ENTITIES_IN_LOOP=3
1921
STATISTIC_TOPICS="HISTORY_LATENCY_TOPIC;NETWORK_LATENCY_TOPIC;PUBLICATION_THROUGHPUT_TOPIC;SUBSCRIPTION_THROUGHPUT_TOPIC;RTPS_SENT_TOPIC;RTPS_LOST_TOPIC;HEARTBEAT_COUNT_TOPIC;ACKNACK_COUNT_TOPIC;NACKFRAG_COUNT_TOPIC;GAP_COUNT_TOPIC;DATA_COUNT_TOPIC;RESENT_DATAS_TOPIC;SAMPLE_DATAS_TOPIC;PDP_PACKETS_TOPIC;EDP_PACKETS_TOPIC;DISCOVERY_TOPIC;PHYSICAL_DATA_TOPIC"
2022
SLEEP_RESIDUAL_TIME=2
2123

2224
PUBLICATION_RATE=10
23-
NUMBER_OF_TOPICS=2
25+
RESET_BACKEND=" "
26+
BUMP_BACKEND=" "
2427

28+
DEBUG=0
2529

2630
############################################################
2731
# Functions needed in script
2832
############################################################
2933

34+
# pmap result:
35+
# column 1: Initial memory address
36+
# column 2: Virtual memory
37+
# column 3: RSS
38+
3039
# TODO comment
3140
get_memory_usage_from_library () {
3241
# Get arguments
@@ -47,13 +56,16 @@ get_memory_usage_from_library () {
4756

4857
LINE_=${line}
4958

50-
NEW_VALUE_WITH_K_="$(echo -n "${LINE_}" | awk '{print $2}')"
59+
# Column 1 ->
60+
NEW_VALUE_WITH_K_="$(echo -n "${LINE_}" | awk '{print $3}')"
5161

52-
NEW_VALUE_="$(echo -n "${NEW_VALUE_WITH_K_::-1}")"
62+
# This is only needed without --extended to remove K
63+
# NEW_VALUE_="$(echo -n "${NEW_VALUE_WITH_K_::-1}")"
64+
NEW_VALUE_=${NEW_VALUE_WITH_K_}
5365

5466
RESULT_=$((${RESULT_}+${NEW_VALUE_}))
5567

56-
done <<< "$(pmap ${PID_} | grep ${LIBRARY_NAME_})"
68+
done <<< "$(pmap ${PID_} --extended | grep ${LIBRARY_NAME_})"
5769

5870
fi
5971

@@ -83,13 +95,16 @@ print_memory_usage () {
8395
done
8496

8597
# Print total
86-
TOTAL_MEMORY_USAGE_="$(pmap ${PID_} | tail -n 1 | awk '/[0-9]/K{print $2}')"
98+
# TOTAL_MEMORY_USAGE_="$(pmap ${PID_} | tail -n 1 | awk '/[0-9]/K{print $2}')"
99+
TOTAL_MEMORY_USAGE_="$(pmap ${PID_} --extended | tail -n 1 | awk '{print $4}')"
87100
# If there are lines, analyze them
88101
if [ ! -z "$PMAP_RESULT_" ];
89102
then
90-
echo -n "${TOTAL_MEMORY_USAGE_::-1}" >> ${RESULT_FILE_}
103+
# This is only needed without --extended to remove K
104+
# echo -n "${TOTAL_MEMORY_USAGE_::-1}" >> ${RESULT_FILE_}
105+
echo -n "${TOTAL_MEMORY_USAGE_}" >> ${RESULT_FILE_}
91106
else
92-
echo -n "-" >> ${RESULT_FILE_}
107+
echo -n "0" >> ${RESULT_FILE_}
93108
fi
94109

95110
echo "" >> ${RESULT_FILE_}
@@ -132,11 +147,6 @@ do
132147
shift # past argument
133148
shift # past value
134149
;;
135-
--measurament-rate)
136-
MEASURAMENT_RATE="$2"
137-
shift # past argument
138-
shift # past value
139-
;;
140150
--measurament-libraries)
141151
LIBRARIES_TO_MEASURE="$2"
142152
shift # past argument
@@ -149,7 +159,7 @@ do
149159
shift # past value
150160
;;
151161
--loop-elapsed)
152-
ENTITIES_LOOP_ELAPSE="$2"
162+
ENTITIES_LOOP_ELAPSED="$2"
153163
shift # past argument
154164
shift # past value
155165
;;
@@ -163,21 +173,24 @@ do
163173
shift # past argument
164174
shift # past value
165175
;;
166-
--residual-time)
167-
SLEEP_RESIDUAL_TIME="$2"
168-
shift # past argument
169-
shift # past value
170-
;;
171176

172177
--publication-rate)
173178
PUBLICATION_RATE="$2"
174179
shift # past argument
175180
shift # past value
176181
;;
177-
--n-topics)
178-
NUMBER_OF_TOPICS="$2"
182+
--reset)
183+
RESET_BACKEND=" --reset "
184+
shift # past argument
185+
;;
186+
--bump)
187+
BUMP_BACKEND=" --bump-file __tmp_backend_test_bump_ "
188+
shift # past argument
189+
;;
190+
191+
--debug)
192+
DEBUG=1
179193
shift # past argument
180-
shift # past value
181194
;;
182195

183196
*) # unknown option
@@ -230,13 +243,20 @@ echo "total(KB)" >> ${RESULT_FILE_PATH}
230243
############################################################
231244
echo
232245
echo "---------------------------------------------------------------------------"
233-
echo "Executing Fast DDS Statistics Backend exaple ${BACKEND_EXAMPLE_EXECUTABLE}"
246+
echo "Executing Fast DDS Statistics Backend example ${BACKEND_EXAMPLE_EXECUTABLE}"
234247
echo "---------------------------------------------------------------------------"
235248
echo
236249

237-
${BACKEND_EXAMPLE_EXECUTABLE} monitor --time=1000 &
238-
# ${BACKEND_EXAMPLE_EXECUTABLE} monitor --time=1000 > /dev/null 2>&1 &
239-
BACKEND_EXAMPLE_PID=$!
250+
RESET_TIME=$((${ENTITIES_LOOP_ELAPSED}+((${SLEEP_RESIDUAL_TIME}*2)*${ENTITIES_IN_LOOP})+(${SLEEP_RESIDUAL_TIME}*2)))
251+
252+
if [ $DEBUG -eq 1 ];
253+
then
254+
${BACKEND_EXAMPLE_EXECUTABLE} monitor ${RESET_BACKEND} ${BUMP_BACKEND} --time=${RESET_TIME} &
255+
BACKEND_EXAMPLE_PID=$!
256+
else
257+
${BACKEND_EXAMPLE_EXECUTABLE} monitor ${RESET_BACKEND} ${BUMP_BACKEND} --time=${RESET_TIME} > /dev/null 2>&1 &
258+
BACKEND_EXAMPLE_PID=$!
259+
fi
240260

241261

242262
############################################################
@@ -256,16 +276,21 @@ do
256276
echo
257277

258278
# Excute as many entities as required
279+
declare -a fastdds_entities_pid=()
259280
# TODO
260-
FASTDDS_STATISTICS="${STATISTIC_TOPICS}" ${FASTDDS_EXAMPLE_EXECUTABLE} publisher --interval ${PUBLICATION_RATE} --topic "TestTopic${i}" > /dev/null 2>&1 &
261-
PUBLISHER_PID=$!
262-
sleep ${SLEEP_RESIDUAL_TIME}
263-
FASTDDS_STATISTICS="${STATISTIC_TOPICS}" ${FASTDDS_EXAMPLE_EXECUTABLE} subscriber --topic "TestTopic${i}" > /dev/null 2>&1 &
264-
SUBSCRIBER_PID=$!
265-
sleep ${SLEEP_RESIDUAL_TIME}
281+
for j in $(seq 1 ${ENTITIES_IN_LOOP});
282+
do
283+
FASTDDS_STATISTICS="${STATISTIC_TOPICS}" ${FASTDDS_EXAMPLE_EXECUTABLE} publisher --interval ${PUBLICATION_RATE} --topic "TestTopic${i}" > /dev/null 2>&1 &
284+
fastdds_entities_pid+=($!)
285+
sleep ${SLEEP_RESIDUAL_TIME}
266286

267-
# Store memory usage measure
268-
print_memory_usage "${BACKEND_EXAMPLE_PID}" "${LIBRARIES_TO_MEASURE}" "${RESULT_FILE_PATH}"
287+
FASTDDS_STATISTICS="${STATISTIC_TOPICS}" ${FASTDDS_EXAMPLE_EXECUTABLE} subscriber --topic "TestTopic${i}" > /dev/null 2>&1 &
288+
fastdds_entities_pid+=($!)
289+
sleep ${SLEEP_RESIDUAL_TIME}
290+
291+
# Store memory usage measure
292+
print_memory_usage "${BACKEND_EXAMPLE_PID}" "${LIBRARIES_TO_MEASURE}" "${RESULT_FILE_PATH}"
293+
done
269294

270295
# Sleep for some time
271296
sleep ${ENTITIES_LOOP_ELAPSED}
@@ -275,13 +300,20 @@ do
275300

276301
# Kill entities
277302
echo "Killing Fast DDS Entities"
278-
kill ${PUBLISHER_PID}
279-
kill ${SUBSCRIBER_PID}
303+
for pid_value in "${fastdds_entities_pid[@]}"
304+
do
305+
echo "Killing PID ${pid_value}"
306+
kill $pid_value
307+
done
280308

281309
# Store memory usage measure
282310
sleep ${SLEEP_RESIDUAL_TIME}
283311
print_memory_usage "${BACKEND_EXAMPLE_PID}" "${LIBRARIES_TO_MEASURE}" "${RESULT_FILE_PATH}"
284312

313+
# Wait for data to be removed and store measure
314+
sleep ${SLEEP_RESIDUAL_TIME}
315+
print_memory_usage "${BACKEND_EXAMPLE_PID}" "${LIBRARIES_TO_MEASURE}" "${RESULT_FILE_PATH}"
316+
285317
done
286318

287319
############################################################

0 commit comments

Comments
 (0)