From 82b742533bdbf977ec95997fc0011a47a672bcc8 Mon Sep 17 00:00:00 2001 From: Maria Matějka Date: Fri, 26 Oct 2018 09:32:35 +0200 Subject: Perf: Protocol to measure BIRD performance internally This protocol is highly experimental and nobody should use it in production. Anyway it may help you getting some insight into what eats so much time in filter processing. --- proto/perf/config.Y | 58 +++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 58 insertions(+) create mode 100644 proto/perf/config.Y (limited to 'proto/perf/config.Y') diff --git a/proto/perf/config.Y b/proto/perf/config.Y new file mode 100644 index 00000000..617b2233 --- /dev/null +++ b/proto/perf/config.Y @@ -0,0 +1,58 @@ +/* + * BIRD -- Benchmarking Dummy Protocol Configuration + * + * (c) 2018 Maria Matejka + * + * Can be freely distributed and used under the terms of the GNU GPL. + */ + +CF_HDR + +#include "filter/filter.h" +#include "proto/perf/perf.h" + +CF_DEFINES + +#define PERF_CFG ((struct perf_config *) this_proto) + +CF_DECLS + +CF_KEYWORDS(PERF, EXP, FROM, TO, REPEAT, THRESHOLD, MIN, MAX, KEEP, MODE, IMPORT, EXPORT) + +CF_GRAMMAR + +proto: perf_proto '}' ; + +perf_proto_start: proto_start PERF +{ + this_proto = proto_config_new(&proto_perf, $1); + PERF_CFG->from = 10; + PERF_CFG->to = 20; + PERF_CFG->repeat = 4; + PERF_CFG->threshold_max = 500 MS_; + PERF_CFG->threshold_min = 1 MS_; + PERF_CFG->keep = 0; + PERF_CFG->mode = PERF_MODE_IMPORT; +}; + +perf_proto: + perf_proto_start proto_name '{' + | perf_proto perf_proto_item ';' + ; + +perf_proto_item: + proto_channel { this_proto->net_type = $1->net_type; } + | EXP FROM NUM { PERF_CFG->from = $3; } + | EXP TO NUM { PERF_CFG->to = $3; } + | REPEAT NUM { PERF_CFG->repeat = $2; } + | THRESHOLD MIN expr_us { PERF_CFG->threshold_min = $3; } + | THRESHOLD MAX expr_us { PERF_CFG->threshold_max = $3; } + | KEEP bool { PERF_CFG->keep = $2; } + | MODE IMPORT { PERF_CFG->mode = PERF_MODE_IMPORT; } + | MODE EXPORT { PERF_CFG->mode = PERF_MODE_EXPORT; } +; + + +CF_CODE + +CF_END -- cgit v1.2.3