mirror of https://github.com/PentHertz/srsLTE.git
Added computation for the metrics
This commit is contained in:
parent
d34aba8065
commit
8873b7c42f
|
@ -13,6 +13,7 @@
|
||||||
#ifndef SRSLTE_PDCP_ENTITY_BASE_H
|
#ifndef SRSLTE_PDCP_ENTITY_BASE_H
|
||||||
#define SRSLTE_PDCP_ENTITY_BASE_H
|
#define SRSLTE_PDCP_ENTITY_BASE_H
|
||||||
|
|
||||||
|
#include "srslte/adt/accumulators.h"
|
||||||
#include "srslte/common/buffer_pool.h"
|
#include "srslte/common/buffer_pool.h"
|
||||||
#include "srslte/common/common.h"
|
#include "srslte/common/common.h"
|
||||||
#include "srslte/common/interfaces_common.h"
|
#include "srslte/common/interfaces_common.h"
|
||||||
|
@ -170,6 +171,7 @@ protected:
|
||||||
|
|
||||||
// Metrics helpers
|
// Metrics helpers
|
||||||
pdcp_bearer_metrics_t metrics = {};
|
pdcp_bearer_metrics_t metrics = {};
|
||||||
|
srslte::rolling_average<double> tx_pdu_ack_latency_ms;
|
||||||
};
|
};
|
||||||
|
|
||||||
inline uint32_t pdcp_entity_base::HFN(uint32_t count)
|
inline uint32_t pdcp_entity_base::HFN(uint32_t count)
|
||||||
|
|
|
@ -549,6 +549,7 @@ bool pdcp_entity_lte::store_sdu(uint32_t tx_count, const unique_byte_buffer_t& s
|
||||||
sdu_copy->N_bytes = sdu->N_bytes;
|
sdu_copy->N_bytes = sdu->N_bytes;
|
||||||
|
|
||||||
// Metrics
|
// Metrics
|
||||||
|
sdu_copy->set_timestamp();
|
||||||
metrics.num_tx_buffered_pdus++;
|
metrics.num_tx_buffered_pdus++;
|
||||||
metrics.num_tx_buffered_pdus_bytes += sdu->N_bytes;
|
metrics.num_tx_buffered_pdus_bytes += sdu->N_bytes;
|
||||||
|
|
||||||
|
@ -596,10 +597,20 @@ void pdcp_entity_lte::notify_delivery(const std::vector<uint32_t>& pdcp_sns)
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Metrics
|
||||||
|
tx_pdu_ack_latency_ms.push(std::chrono::duration_cast<std::chrono::milliseconds>(
|
||||||
|
std::chrono::high_resolution_clock::now() - it->second->get_timestamp())
|
||||||
|
.count());
|
||||||
|
metrics.num_tx_acked_bytes += it->second->N_bytes;
|
||||||
|
metrics.num_tx_buffered_pdus_bytes -= it->second->N_bytes;
|
||||||
|
metrics.num_tx_buffered_pdus--;
|
||||||
|
|
||||||
// If ACK'ed bytes are equal to (or exceed) PDU size, remove PDU and disarm timer.
|
// If ACK'ed bytes are equal to (or exceed) PDU size, remove PDU and disarm timer.
|
||||||
undelivered_sdus_queue.erase(sn);
|
undelivered_sdus_queue.erase(sn);
|
||||||
discard_timers_map.erase(sn);
|
discard_timers_map.erase(sn);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
metrics.num_tx_buffered_pdus = undelivered_sdus_queue.size();
|
||||||
}
|
}
|
||||||
|
|
||||||
/****************************************************************************
|
/****************************************************************************
|
||||||
|
|
Loading…
Reference in New Issue