Hi Cristian,

Thanks for trying to make a policy clearer.
We need to make a decision in the coming week.
Below are comments on the style and content.

2015-06-08 15:50, Cristian Dumitrescu:
>  doc/guides/guidelines/statistics.rst | 42 
> ++++++++++++++++++++++++++++++++++++

Maybe we should have a more general file like design.rst.
In order to have a lot of readers of such guidelines, they must be concise.

Please wrap lines to be not too long and/or split lines after the end of a 
sentence.

> +Library Statistics
> +==================
> +
> +Description
> +-----------
> +
> +This document describes the guidelines for DPDK library-level statistics 
> counter support. This includes guidelines for turning library statistics on 
> and off, requirements for preventing ABI changes when library statistics are 
> turned on and off, etc.

Should we consider that driver stats and lib stats are different in DPDK? Why?

> +Motivation to allow the application to turn library statistics on and off
> +-------------------------------------------------------------------------
> +
> +It is highly recommended that each library provides statistics counters to 
> allow the application to monitor the library-level run-time events. Typical 
> counters are: number of packets received/dropped/transmitted, number of 
> buffers allocated/freed, number of occurrences for specific events, etc.
> +
> +Since the resources consumed for library-level statistics counter collection 
> have to be spent out of the application budget and the counters collected by 
> some libraries might not be relevant for the current application, in order to 
> avoid any unwanted waste of resources and/or performance for the application, 
> the application is to decide at build time whether the collection of 
> library-level statistics counters should be turned on or off for each library 
> individually.

It would be good to have acknowledgements or other opinions on this.
Some of them were expressed in other threads. Please comment here.

> +Library-level statistics counters can be relevant or not for specific 
> applications:
> +* For application A, counters maintained by library X are always relevant 
> and the application needs to use them to implement certain features, as 
> traffic accounting, logging, application-level statistics, etc. In this case, 
> the application requires that collection of statistics counters for library X 
> is always turned on;
> +* For application B, counters maintained by library X are only useful during 
> the application debug stage and not relevant once debug phase is over. In 
> this case, the application may decide to turn on the collection of library X 
> statistics counters during the debug phase and later on turn them off;

Users of binary package have not this choice.

> +* For application C, counters maintained by library X are not relevant at 
> all. It might me that the application maintains its own set of statistics 
> counters that monitor a different set of run-time events than library X (e.g. 
> number of connection requests, number of active users, etc). It might also be 
> that application uses multiple libraries (library X, library Y, etc) and it 
> is interested in the statistics counters of library Y, but not in those of 
> library X. In this case, the application may decide to turn the collection of 
> statistics counters off for library X and on for library Y.
> +
> +The statistics collection consumes a certain amount of CPU resources 
> (cycles, cache bandwidth, memory bandwidth, etc) that depends on:
> +* Number of libraries used by the current application that have statistics 
> counters collection turned on;
> +* Number of statistics counters maintained by each library per object type 
> instance (e.g. per port, table, pipeline, thread, etc);
> +* Number of instances created for each object type supported by each library;
> +* Complexity of the statistics logic collection for each counter: when only 
> some occurrences of a specific event are valid, several conditional branches 
> might involved in the decision of whether the current occurrence of the event 
> should be counted or not (e.g. on the event of packet reception, only TCP 
> packets with destination port within a certain range should be recorded), etc.
> +
> +Mechanism to allow the application to turn library statistics on and off
> +------------------------------------------------------------------------
> +
> +Each library that provides statistics counters should provide a single build 
> time flag that decides whether the statistics counter collection is enabled 
> or not for this library. This flag should be exposed as a variable within the 
> DPDK configuration file. When this flag is set, all the counters supported by 
> current library are collected; when this flag is cleared, none of the 
> counters supported by the current library are collected:
> +
> +     #DPDK file ?./config/common_linuxapp?, ?./config/common_bsdapp?, etc
> +     CONFIG_RTE_LIBRTE_<LIBRARY_NAME>_COLLECT_STATS=y/n

Why not simply CONFIG_RTE_LIBRTE_<LIBRARY_NAME>_STATS (without COLLECT)?

> +The default value for this DPDK configuration file variable (either ?yes? or 
> ?no?) is left at the decision of each library.
> +
> +Prevention of ABI changes due to library statistics support
> +-----------------------------------------------------------
> +
> +The layout of data structures and prototype of functions that are part of 
> the library API should not be affected by whether the collection of 
> statistics counters is turned on or off for the current library. In practical 
> terms, this means that space is always allocated in the API data structures 
> for statistics counters and the statistics related API functions are always 
> built into the code, regardless of whether the statistics counter collection 
> is turned on or off for the current library.
> +
> +When the collection of statistics counters for the current library is turned 
> off, the counters retrieved through the statistics related API functions 
> should have the default value of zero.

Reply via email to