[v2] metrics/windows: build rte_metrics library

Message ID 1610415051-10593-1-git-send-email-roretzla@linux.microsoft.com (mailing list archive)
State Superseded, archived
Delegated to: Thomas Monjalon
Headers
Series [v2] metrics/windows: build rte_metrics library |

Checks

Context Check Description
ci/checkpatch success coding style OK
ci/iol-broadcom-Functional success Functional Testing PASS
ci/iol-broadcom-Performance success Performance Testing PASS
ci/iol-abi-testing success Testing PASS
ci/iol-testing success Testing PASS
ci/iol-intel-Functional success Functional Testing PASS
ci/iol-intel-Performance success Performance Testing PASS
ci/Intel-compilation success Compilation OK
ci/intel-Testing success Testing PASS

Commit Message

Tyler Retzlaff Jan. 12, 2021, 1:30 a.m. UTC
  From: Tyler Retzlaff <roretzla@microsoft.com>

declare reduced set of exports for rte_metrics on windows and include
it in the set of libraries to build and install.

rte_metrics_tel* exports depend on conditionally available component.
this change minimally allows enabling the building of rte_metrics on
windows.

Signed-off-by: Tyler Retzlaff <roretzla@microsoft.com>
---
 lib/librte_metrics/rte_metrics_exports.def | 9 +++++++++
 lib/meson.build                            | 1 +
 2 files changed, 10 insertions(+)
 create mode 100644 lib/librte_metrics/rte_metrics_exports.def
  

Comments

Thomas Monjalon Jan. 17, 2021, 10:19 p.m. UTC | #1
12/01/2021 02:30, Tyler Retzlaff:
> From: Tyler Retzlaff <roretzla@microsoft.com>
> 
> declare reduced set of exports for rte_metrics on windows and include
> it in the set of libraries to build and install.
> 
> rte_metrics_tel* exports depend on conditionally available component.
> this change minimally allows enabling the building of rte_metrics on
> windows.
> 
> Signed-off-by: Tyler Retzlaff <roretzla@microsoft.com>

Not sure it makes sense without the new telemetry feature.
Please focus on telemetry lib instead of half-enabling
the old metrics lib.
  
Tyler Retzlaff Jan. 19, 2021, 9:31 p.m. UTC | #2
On Sun, Jan 17, 2021 at 11:19:55PM +0100, Thomas Monjalon wrote:
> 
> Not sure it makes sense without the new telemetry feature.
> Please focus on telemetry lib instead of half-enabling
> the old metrics lib.
> 

can you elaborate? (or reference a mailing list discussion) that gives some
guidance?

is the telemetry lib a replacement for metrics? the component we have now
relies on the non-telemetry functions exported from metrics but does not
use the telemetry functions.

also, i notice that the meson.build for telemetry lib has an include path
that references rte_metrics but does not appear to actually include any of
the headers from rte_metrics (vestigial? missed in previous cleanup perhaps?)

thanks!
  
Thomas Monjalon Jan. 19, 2021, 9:52 p.m. UTC | #3
19/01/2021 22:31, Tyler Retzlaff:
> On Sun, Jan 17, 2021 at 11:19:55PM +0100, Thomas Monjalon wrote:
> > 
> > Not sure it makes sense without the new telemetry feature.
> > Please focus on telemetry lib instead of half-enabling
> > the old metrics lib.
> > 
> 
> can you elaborate? (or reference a mailing list discussion) that gives some
> guidance?
> 
> is the telemetry lib a replacement for metrics? the component we have now
> relies on the non-telemetry functions exported from metrics but does not
> use the telemetry functions.
> 
> also, i notice that the meson.build for telemetry lib has an include path
> that references rte_metrics but does not appear to actually include any of
> the headers from rte_metrics (vestigial? missed in previous cleanup perhaps?)

I think Bruce and Ciara will better explain than me
the intent of the telemetry lib and the compatibility path with the metrics lib.
  
Bruce Richardson Jan. 20, 2021, 10:37 a.m. UTC | #4
On Tue, Jan 19, 2021 at 10:52:03PM +0100, Thomas Monjalon wrote:
> 19/01/2021 22:31, Tyler Retzlaff:
> > On Sun, Jan 17, 2021 at 11:19:55PM +0100, Thomas Monjalon wrote:
> > > 
> > > Not sure it makes sense without the new telemetry feature.
> > > Please focus on telemetry lib instead of half-enabling
> > > the old metrics lib.
> > > 
> > 
> > can you elaborate? (or reference a mailing list discussion) that gives some
> > guidance?
> > 
> > is the telemetry lib a replacement for metrics? the component we have now
> > relies on the non-telemetry functions exported from metrics but does not
> > use the telemetry functions.
> > 
> > also, i notice that the meson.build for telemetry lib has an include path
> > that references rte_metrics but does not appear to actually include any of
> > the headers from rte_metrics (vestigial? missed in previous cleanup perhaps?)
> 
> I think Bruce and Ciara will better explain than me
> the intent of the telemetry lib and the compatibility path with the metrics lib.
> 

The include path addition for metrics to the telemetry library does indeed
look like it was just missed being removed, since I can compile things up
successfully with it removed.

With regards to interaction between telemetry library and metrics library,
they are complementary but not replacements for each other. The metrics
library provides support for tracking metrics, mostly on a per-port basis.
The original telemetry library implementation was based on top of the
metrics library and supported reporting out data from that library. More
recent versions of the telemetry library have reworked that support to
allow the reporting of arbitrary telemetry data, not just from the metrics
library, but the old interface is still supported.

/Bruce
  
Thomas Monjalon Jan. 20, 2021, 11:09 a.m. UTC | #5
20/01/2021 11:37, Bruce Richardson:
> On Tue, Jan 19, 2021 at 10:52:03PM +0100, Thomas Monjalon wrote:
> > 19/01/2021 22:31, Tyler Retzlaff:
> > > On Sun, Jan 17, 2021 at 11:19:55PM +0100, Thomas Monjalon wrote:
> > > > 
> > > > Not sure it makes sense without the new telemetry feature.
> > > > Please focus on telemetry lib instead of half-enabling
> > > > the old metrics lib.
> > > > 
> > > 
> > > can you elaborate? (or reference a mailing list discussion) that gives some
> > > guidance?
> > > 
> > > is the telemetry lib a replacement for metrics? the component we have now
> > > relies on the non-telemetry functions exported from metrics but does not
> > > use the telemetry functions.
> > > 
> > > also, i notice that the meson.build for telemetry lib has an include path
> > > that references rte_metrics but does not appear to actually include any of
> > > the headers from rte_metrics (vestigial? missed in previous cleanup perhaps?)
> > 
> > I think Bruce and Ciara will better explain than me
> > the intent of the telemetry lib and the compatibility path with the metrics lib.
> > 
> 
> The include path addition for metrics to the telemetry library does indeed
> look like it was just missed being removed, since I can compile things up
> successfully with it removed.
> 
> With regards to interaction between telemetry library and metrics library,
> they are complementary but not replacements for each other. The metrics
> library provides support for tracking metrics, mostly on a per-port basis.
> The original telemetry library implementation was based on top of the
> metrics library and supported reporting out data from that library. More
> recent versions of the telemetry library have reworked that support to
> allow the reporting of arbitrary telemetry data, not just from the metrics
> library, but the old interface is still supported.

The question is what is available in rte_metrics which is not already
available with rte_telemetry only?
I think rte_metrics is used only for rte_bitratestats and rte_latencystats.
Can we use rte_telemetry for this and forget rte_metrics?
  
Bruce Richardson Jan. 20, 2021, 11:54 a.m. UTC | #6
On Wed, Jan 20, 2021 at 12:09:19PM +0100, Thomas Monjalon wrote:
> 20/01/2021 11:37, Bruce Richardson:
> > On Tue, Jan 19, 2021 at 10:52:03PM +0100, Thomas Monjalon wrote:
> > > 19/01/2021 22:31, Tyler Retzlaff:
> > > > On Sun, Jan 17, 2021 at 11:19:55PM +0100, Thomas Monjalon wrote:
> > > > > 
> > > > > Not sure it makes sense without the new telemetry feature.
> > > > > Please focus on telemetry lib instead of half-enabling
> > > > > the old metrics lib.
> > > > > 
> > > > 
> > > > can you elaborate? (or reference a mailing list discussion) that gives some
> > > > guidance?
> > > > 
> > > > is the telemetry lib a replacement for metrics? the component we have now
> > > > relies on the non-telemetry functions exported from metrics but does not
> > > > use the telemetry functions.
> > > > 
> > > > also, i notice that the meson.build for telemetry lib has an include path
> > > > that references rte_metrics but does not appear to actually include any of
> > > > the headers from rte_metrics (vestigial? missed in previous cleanup perhaps?)
> > > 
> > > I think Bruce and Ciara will better explain than me
> > > the intent of the telemetry lib and the compatibility path with the metrics lib.
> > > 
> > 
> > The include path addition for metrics to the telemetry library does indeed
> > look like it was just missed being removed, since I can compile things up
> > successfully with it removed.
> > 
> > With regards to interaction between telemetry library and metrics library,
> > they are complementary but not replacements for each other. The metrics
> > library provides support for tracking metrics, mostly on a per-port basis.
> > The original telemetry library implementation was based on top of the
> > metrics library and supported reporting out data from that library. More
> > recent versions of the telemetry library have reworked that support to
> > allow the reporting of arbitrary telemetry data, not just from the metrics
> > library, but the old interface is still supported.
> 
> The question is what is available in rte_metrics which is not already
> available with rte_telemetry only?
> I think rte_metrics is used only for rte_bitratestats and rte_latencystats.
> Can we use rte_telemetry for this and forget rte_metrics?
>
No, we can't.
In short, metrics is a data store. Telemetry is a data output mechanism.

Telemetry cannot directly replace metrics because it does not store any
data, it simply matches incoming requests against callbacks to retrieve and
export data. The actual management of the underlying data sources is the
responsibility of the library/app which has registered the callback.

Metrics, on the other hand, is a data storage library, and allows the
registration of groups of statictics which can be tracked and updated. It
does also provide some callbacks to allow the data to be output by
telemetry, but this functionality is not the primary goal of the lib. Both
bitratestats and latencystats use metrics to manage their stats data -
again any output provided is incidental to the primary purpose.

Regards,
/Bruce
  
Thomas Monjalon Jan. 20, 2021, 12:13 p.m. UTC | #7
20/01/2021 12:54, Bruce Richardson:
> On Wed, Jan 20, 2021 at 12:09:19PM +0100, Thomas Monjalon wrote:
> > 20/01/2021 11:37, Bruce Richardson:
> > > On Tue, Jan 19, 2021 at 10:52:03PM +0100, Thomas Monjalon wrote:
> > > > 19/01/2021 22:31, Tyler Retzlaff:
> > > > > On Sun, Jan 17, 2021 at 11:19:55PM +0100, Thomas Monjalon wrote:
> > > > > > 
> > > > > > Not sure it makes sense without the new telemetry feature.
> > > > > > Please focus on telemetry lib instead of half-enabling
> > > > > > the old metrics lib.
> > > > > > 
> > > > > 
> > > > > can you elaborate? (or reference a mailing list discussion) that gives some
> > > > > guidance?
> > > > > 
> > > > > is the telemetry lib a replacement for metrics? the component we have now
> > > > > relies on the non-telemetry functions exported from metrics but does not
> > > > > use the telemetry functions.
> > > > > 
> > > > > also, i notice that the meson.build for telemetry lib has an include path
> > > > > that references rte_metrics but does not appear to actually include any of
> > > > > the headers from rte_metrics (vestigial? missed in previous cleanup perhaps?)
> > > > 
> > > > I think Bruce and Ciara will better explain than me
> > > > the intent of the telemetry lib and the compatibility path with the metrics lib.
> > > > 
> > > 
> > > The include path addition for metrics to the telemetry library does indeed
> > > look like it was just missed being removed, since I can compile things up
> > > successfully with it removed.
> > > 
> > > With regards to interaction between telemetry library and metrics library,
> > > they are complementary but not replacements for each other. The metrics
> > > library provides support for tracking metrics, mostly on a per-port basis.
> > > The original telemetry library implementation was based on top of the
> > > metrics library and supported reporting out data from that library. More
> > > recent versions of the telemetry library have reworked that support to
> > > allow the reporting of arbitrary telemetry data, not just from the metrics
> > > library, but the old interface is still supported.
> > 
> > The question is what is available in rte_metrics which is not already
> > available with rte_telemetry only?
> > I think rte_metrics is used only for rte_bitratestats and rte_latencystats.
> > Can we use rte_telemetry for this and forget rte_metrics?
> >
> No, we can't.
> In short, metrics is a data store. Telemetry is a data output mechanism.
> 
> Telemetry cannot directly replace metrics because it does not store any
> data, it simply matches incoming requests against callbacks to retrieve and
> export data. The actual management of the underlying data sources is the
> responsibility of the library/app which has registered the callback.
> 
> Metrics, on the other hand, is a data storage library, and allows the
> registration of groups of statictics which can be tracked and updated. It
> does also provide some callbacks to allow the data to be output by
> telemetry, but this functionality is not the primary goal of the lib. Both
> bitratestats and latencystats use metrics to manage their stats data -
> again any output provided is incidental to the primary purpose.

When you say "we can't", you mean it is not a desirable addition?
I am fine with keeping the design as is, split in libs.
  
Bruce Richardson Jan. 20, 2021, 1:57 p.m. UTC | #8
On Wed, Jan 20, 2021 at 01:13:46PM +0100, Thomas Monjalon wrote:
> 20/01/2021 12:54, Bruce Richardson:
> > On Wed, Jan 20, 2021 at 12:09:19PM +0100, Thomas Monjalon wrote:
> > > 20/01/2021 11:37, Bruce Richardson:
> > > > On Tue, Jan 19, 2021 at 10:52:03PM +0100, Thomas Monjalon wrote:
> > > > > 19/01/2021 22:31, Tyler Retzlaff:
> > > > > > On Sun, Jan 17, 2021 at 11:19:55PM +0100, Thomas Monjalon wrote:
> > > > > > > 
> > > > > > > Not sure it makes sense without the new telemetry feature.
> > > > > > > Please focus on telemetry lib instead of half-enabling
> > > > > > > the old metrics lib.
> > > > > > > 
> > > > > > 
> > > > > > can you elaborate? (or reference a mailing list discussion) that gives some
> > > > > > guidance?
> > > > > > 
> > > > > > is the telemetry lib a replacement for metrics? the component we have now
> > > > > > relies on the non-telemetry functions exported from metrics but does not
> > > > > > use the telemetry functions.
> > > > > > 
> > > > > > also, i notice that the meson.build for telemetry lib has an include path
> > > > > > that references rte_metrics but does not appear to actually include any of
> > > > > > the headers from rte_metrics (vestigial? missed in previous cleanup perhaps?)
> > > > > 
> > > > > I think Bruce and Ciara will better explain than me
> > > > > the intent of the telemetry lib and the compatibility path with the metrics lib.
> > > > > 
> > > > 
> > > > The include path addition for metrics to the telemetry library does indeed
> > > > look like it was just missed being removed, since I can compile things up
> > > > successfully with it removed.
> > > > 
> > > > With regards to interaction between telemetry library and metrics library,
> > > > they are complementary but not replacements for each other. The metrics
> > > > library provides support for tracking metrics, mostly on a per-port basis.
> > > > The original telemetry library implementation was based on top of the
> > > > metrics library and supported reporting out data from that library. More
> > > > recent versions of the telemetry library have reworked that support to
> > > > allow the reporting of arbitrary telemetry data, not just from the metrics
> > > > library, but the old interface is still supported.
> > > 
> > > The question is what is available in rte_metrics which is not already
> > > available with rte_telemetry only?
> > > I think rte_metrics is used only for rte_bitratestats and rte_latencystats.
> > > Can we use rte_telemetry for this and forget rte_metrics?
> > >
> > No, we can't.
> > In short, metrics is a data store. Telemetry is a data output mechanism.
> > 
> > Telemetry cannot directly replace metrics because it does not store any
> > data, it simply matches incoming requests against callbacks to retrieve and
> > export data. The actual management of the underlying data sources is the
> > responsibility of the library/app which has registered the callback.
> > 
> > Metrics, on the other hand, is a data storage library, and allows the
> > registration of groups of statictics which can be tracked and updated. It
> > does also provide some callbacks to allow the data to be output by
> > telemetry, but this functionality is not the primary goal of the lib. Both
> > bitratestats and latencystats use metrics to manage their stats data -
> > again any output provided is incidental to the primary purpose.
> 
> When you say "we can't", you mean it is not a desirable addition?
> I am fine with keeping the design as is, split in libs.
> 

Well, I primarily meant "we can't" as in the library is not designed to do
that right now, and so cannot do what is asked. For the second interpretation
of it being a desirable addition or not, I also agree that expanding the
scope of telemetry to also cover data management is not something we want.
Any rework of metrics and associated library should be kept separate from
telemetry, and allow each lib to try and focus on just doing one thing.
So +1 for keeping things split.

/Bruce
  

Patch

diff --git a/lib/librte_metrics/rte_metrics_exports.def b/lib/librte_metrics/rte_metrics_exports.def
new file mode 100644
index 000000000..4cb7352ae
--- /dev/null
+++ b/lib/librte_metrics/rte_metrics_exports.def
@@ -0,0 +1,9 @@ 
+EXPORTS
+	rte_metrics_get_names
+	rte_metrics_get_values
+	rte_metrics_init
+	rte_metrics_deinit
+	rte_metrics_reg_name
+	rte_metrics_reg_names
+	rte_metrics_update_value
+	rte_metrics_update_values
diff --git a/lib/meson.build b/lib/meson.build
index ed00f8914..845397fba 100644
--- a/lib/meson.build
+++ b/lib/meson.build
@@ -45,6 +45,7 @@  if is_windows
 		'mempool', 'mbuf', 'net', 'meter', 'ethdev', 'pci',
 		'cmdline',
 		'hash',
+		'metrics',
 	] # only supported libraries for windows
 endif