On 07/22/2017 03:51 PM, Stokes, Ian wrote:
>> Add two counters to dp_netdev_rxq which will be used for storing the
>> processing cycles of an rxq. Processing cycles will be stored in reference
>> to a defined interval. One counter is used for storing cycles during the
>> current in progress interval, while the other is used to store the cycles
>> of the last fully complete interval.
>>
>> cycles_count_intermediate was used to count cycles for a pmd. With some
>> small additions we can also use it to count the cycles used for processing
>> an rxq.
>>
>> Signed-off-by: Kevin Traynor <[email protected]>
>
> Think I flagged this before but OVS doesn't compile cleanly after applying
> this patch.
>
> lib/dpif-netdev.c:3117:1: error: 'dp_netdev_rxq_get_cycles' defined but not
> used [-Werror=unused-function]
> dp_netdev_rxq_get_cycles(struct dp_netdev_rxq *rx,
> ^~~~~~~~~~~~~~~~~~~~~~~~
> lib/dpif-netdev.c:3109:1: error: 'dp_netdev_rxq_set_cycles' defined but not
> used [-Werror=unused-function]
> dp_netdev_rxq_set_cycles(struct dp_netdev_rxq *rx,
>
> Consider rolling it into patch 4 of the series to avoid the issue.
Hmm, I thought I had fixed this but obviously not :(
As you suggested, I moved them to the next patch where they are first used.
>> ---
>> lib/dpif-netdev.c | 42 +++++++++++++++++++++++++++++++++++++++---
>> 1 file changed, 39 insertions(+), 3 deletions(-)
>>
>> diff --git a/lib/dpif-netdev.c b/lib/dpif-netdev.c index 0b8a0c8..273db38
>> 100644
>> --- a/lib/dpif-netdev.c
>> +++ b/lib/dpif-netdev.c
>> @@ -336,4 +336,11 @@ enum pmd_cycles_counter_type { };
>>
>> +enum rxq_cycles_counter_type {
>> + RXQ_CYCLES_PROC_CURR, /* Cycles spent successfully polling and
>> + processing polled packets */
>> + RXQ_CYCLES_PROC_LAST,
>> + RXQ_N_CYCLES
>> +};
>> +
>> #define XPS_TIMEOUT_MS 500LL
>>
>> @@ -347,4 +354,5 @@ struct dp_netdev_rxq {
>> particular core. */
>> struct dp_netdev_pmd_thread *pmd; /* pmd thread that polls this
>> queue. */
>> + atomic_ullong cycles[RXQ_N_CYCLES]; /* Processing cycles. */
>> };
> Very minor nit but not crazy about the alignment of the comments within the
> struct above.
>
I just deleted the comment as it's not really necessary and it won't
line up with the rest correctly.
>>
>> @@ -671,5 +679,11 @@ static void pmd_load_cached_ports(struct
>> dp_netdev_pmd_thread *pmd) static inline void
>> dp_netdev_pmd_try_optimize(struct dp_netdev_pmd_thread *pmd);
>> -
>> +static void
>> +dp_netdev_rxq_set_cycles(struct dp_netdev_rxq *rx,
>> + enum rxq_cycles_counter_type type,
>> + unsigned long long cycles); static uint64_t
>> +dp_netdev_rxq_get_cycles(struct dp_netdev_rxq *rx,
>> + enum rxq_cycles_counter_type type);
>> static void
>> dpif_netdev_xps_revalidate_pmd(const struct dp_netdev_pmd_thread *pmd, @@
>> -3077,4 +3091,5 @@ cycles_count_end(struct dp_netdev_pmd_thread *pmd,
>> static inline void cycles_count_intermediate(struct dp_netdev_pmd_thread
>> *pmd,
>> + struct dp_netdev_rxq *rxq,
>> enum pmd_cycles_counter_type type)
>> OVS_NO_THREAD_SAFETY_ANALYSIS
>> @@ -3085,4 +3100,25 @@ cycles_count_intermediate(struct
>> dp_netdev_pmd_thread *pmd,
>>
>> non_atomic_ullong_add(&pmd->cycles.n[type], interval);
>> + if (rxq && (type == PMD_CYCLES_PROCESSING)) {
>> + /* Add to the amount of current processing cycles. */
>> + non_atomic_ullong_add(&rxq->cycles[RXQ_CYCLES_PROC_CURR],
>> interval);
>> + }
>> +}
>> +
>> +static void
>> +dp_netdev_rxq_set_cycles(struct dp_netdev_rxq *rx,
>> + enum rxq_cycles_counter_type type,
>> + unsigned long long cycles) {
>> + atomic_store_relaxed(&rx->cycles[type], cycles); }
>> +
>> +static uint64_t
>> +dp_netdev_rxq_get_cycles(struct dp_netdev_rxq *rx,
>> + enum rxq_cycles_counter_type type) {
>> + unsigned long long tmp;
>> + atomic_read_relaxed(&rx->cycles[type], &tmp);
>> + return tmp;
>> }
>>
>> @@ -3589,5 +3625,5 @@ dpif_netdev_run(struct dpif *dpif)
>> port->rxqs[i].rx,
>> port->port_no);
>> - cycles_count_intermediate(non_pmd, process_packets ?
>> + cycles_count_intermediate(non_pmd, NULL,
>> process_packets ?
>>
>> PMD_CYCLES_PROCESSING
>> : PMD_CYCLES_IDLE);
>> @@ -3753,5 +3789,5 @@ reload:
>> dp_netdev_process_rxq_port(pmd, poll_list[i].rxq->rx,
>> poll_list[i].port_no);
>> - cycles_count_intermediate(pmd,
>> + cycles_count_intermediate(pmd, NULL,
>> process_packets ?
>> PMD_CYCLES_PROCESSING
>> : PMD_CYCLES_IDLE);
>> --
>> 1.8.3.1
>
_______________________________________________
dev mailing list
[email protected]
https://mail.openvswitch.org/mailman/listinfo/ovs-dev