mirror of
https://github.com/overte-org/overte.git
synced 2025-08-06 22:39:18 +02:00
remove unused and incorrect stats from DS stats
This commit is contained in:
parent
97cd65cf80
commit
6707535ced
3 changed files with 5 additions and 136 deletions
|
@ -67,8 +67,6 @@ const QString AUDIO_BUFFER_GROUP_KEY = "audio_buffer";
|
||||||
|
|
||||||
InboundAudioStream::Settings AudioMixer::_streamSettings;
|
InboundAudioStream::Settings AudioMixer::_streamSettings;
|
||||||
|
|
||||||
bool AudioMixer::_printStreamStats = false;
|
|
||||||
|
|
||||||
bool AudioMixer::_enableFilter = true;
|
bool AudioMixer::_enableFilter = true;
|
||||||
|
|
||||||
bool AudioMixer::shouldMute(float quietestFrame) {
|
bool AudioMixer::shouldMute(float quietestFrame) {
|
||||||
|
@ -81,12 +79,7 @@ AudioMixer::AudioMixer(ReceivedMessage& message) :
|
||||||
_minAudibilityThreshold(LOUDNESS_TO_DISTANCE_RATIO / 2.0f),
|
_minAudibilityThreshold(LOUDNESS_TO_DISTANCE_RATIO / 2.0f),
|
||||||
_performanceThrottlingRatio(0.0f),
|
_performanceThrottlingRatio(0.0f),
|
||||||
_attenuationPerDoublingInDistance(DEFAULT_ATTENUATION_PER_DOUBLING_IN_DISTANCE),
|
_attenuationPerDoublingInDistance(DEFAULT_ATTENUATION_PER_DOUBLING_IN_DISTANCE),
|
||||||
_noiseMutingThreshold(DEFAULT_NOISE_MUTING_THRESHOLD),
|
_noiseMutingThreshold(DEFAULT_NOISE_MUTING_THRESHOLD)
|
||||||
_sendAudioStreamStats(false),
|
|
||||||
_datagramsReadPerCallStats(0, READ_DATAGRAMS_STATS_WINDOW_SECONDS),
|
|
||||||
_timeSpentPerCallStats(0, READ_DATAGRAMS_STATS_WINDOW_SECONDS),
|
|
||||||
_timeSpentPerHashMatchCallStats(0, READ_DATAGRAMS_STATS_WINDOW_SECONDS),
|
|
||||||
_readPendingCallsPerSecondStats(1, READ_DATAGRAMS_STATS_WINDOW_SECONDS)
|
|
||||||
{
|
{
|
||||||
auto nodeList = DependencyManager::get<NodeList>();
|
auto nodeList = DependencyManager::get<NodeList>();
|
||||||
auto& packetReceiver = nodeList->getPacketReceiver();
|
auto& packetReceiver = nodeList->getPacketReceiver();
|
||||||
|
@ -527,42 +520,6 @@ void AudioMixer::sendStatsPacket() {
|
||||||
_totalMixes = 0;
|
_totalMixes = 0;
|
||||||
_numStatFrames = 0;
|
_numStatFrames = 0;
|
||||||
|
|
||||||
QJsonObject readPendingDatagramStats;
|
|
||||||
|
|
||||||
QJsonObject rpdCallsStats;
|
|
||||||
rpdCallsStats["calls_per_sec_avg_30s"] = _readPendingCallsPerSecondStats.getWindowAverage();
|
|
||||||
rpdCallsStats["calls_last_sec"] = _readPendingCallsPerSecondStats.getLastCompleteIntervalStats().getSum() + 0.5;
|
|
||||||
|
|
||||||
readPendingDatagramStats["calls"] = rpdCallsStats;
|
|
||||||
|
|
||||||
QJsonObject packetsPerCallStats;
|
|
||||||
packetsPerCallStats["avg_30s"] = _datagramsReadPerCallStats.getWindowAverage();
|
|
||||||
packetsPerCallStats["avg_1s"] = _datagramsReadPerCallStats.getLastCompleteIntervalStats().getAverage();
|
|
||||||
|
|
||||||
readPendingDatagramStats["packets_per_call"] = packetsPerCallStats;
|
|
||||||
|
|
||||||
QJsonObject packetsTimePerCallStats;
|
|
||||||
packetsTimePerCallStats["usecs_per_call_avg_30s"] = _timeSpentPerCallStats.getWindowAverage();
|
|
||||||
packetsTimePerCallStats["usecs_per_call_avg_1s"] = _timeSpentPerCallStats.getLastCompleteIntervalStats().getAverage();
|
|
||||||
packetsTimePerCallStats["prct_time_in_call_30s"] =
|
|
||||||
_timeSpentPerCallStats.getWindowSum() / (READ_DATAGRAMS_STATS_WINDOW_SECONDS * USECS_PER_SECOND) * 100.0;
|
|
||||||
packetsTimePerCallStats["prct_time_in_call_1s"] =
|
|
||||||
_timeSpentPerCallStats.getLastCompleteIntervalStats().getSum() / USECS_PER_SECOND * 100.0;
|
|
||||||
|
|
||||||
readPendingDatagramStats["packets_time_per_call"] = packetsTimePerCallStats;
|
|
||||||
|
|
||||||
QJsonObject hashMatchTimePerCallStats;
|
|
||||||
hashMatchTimePerCallStats["usecs_per_hashmatch_avg_30s"] = _timeSpentPerHashMatchCallStats.getWindowAverage();
|
|
||||||
hashMatchTimePerCallStats["usecs_per_hashmatch_avg_1s"]
|
|
||||||
= _timeSpentPerHashMatchCallStats.getLastCompleteIntervalStats().getAverage();
|
|
||||||
hashMatchTimePerCallStats["prct_time_in_hashmatch_30s"]
|
|
||||||
= _timeSpentPerHashMatchCallStats.getWindowSum() / (READ_DATAGRAMS_STATS_WINDOW_SECONDS*USECS_PER_SECOND) * 100.0;
|
|
||||||
hashMatchTimePerCallStats["prct_time_in_hashmatch_1s"]
|
|
||||||
= _timeSpentPerHashMatchCallStats.getLastCompleteIntervalStats().getSum() / USECS_PER_SECOND * 100.0;
|
|
||||||
readPendingDatagramStats["hashmatch_time_per_call"] = hashMatchTimePerCallStats;
|
|
||||||
|
|
||||||
statsObject["read_pending_datagrams"] = readPendingDatagramStats;
|
|
||||||
|
|
||||||
// add stats for each listerner
|
// add stats for each listerner
|
||||||
auto nodeList = DependencyManager::get<NodeList>();
|
auto nodeList = DependencyManager::get<NodeList>();
|
||||||
QJsonObject listenerStats;
|
QJsonObject listenerStats;
|
||||||
|
@ -688,13 +645,6 @@ void AudioMixer::broadcastMixes() {
|
||||||
++framesSinceCutoffEvent;
|
++framesSinceCutoffEvent;
|
||||||
}
|
}
|
||||||
|
|
||||||
static const int FRAMES_PER_SECOND = int(ceilf(1.0f / AudioConstants::NETWORK_FRAME_SECS));
|
|
||||||
|
|
||||||
// check if it has been approximately one second since our last call to perSecondActions
|
|
||||||
if (nextFrame % FRAMES_PER_SECOND == 0) {
|
|
||||||
perSecondActions();
|
|
||||||
}
|
|
||||||
|
|
||||||
nodeList->eachNode([&](const SharedNodePointer& node) {
|
nodeList->eachNode([&](const SharedNodePointer& node) {
|
||||||
|
|
||||||
if (node->getLinkedData()) {
|
if (node->getLinkedData()) {
|
||||||
|
@ -750,10 +700,11 @@ void AudioMixer::broadcastMixes() {
|
||||||
nodeList->sendPacket(std::move(mixPacket), *node);
|
nodeList->sendPacket(std::move(mixPacket), *node);
|
||||||
nodeData->incrementOutgoingMixedAudioSequenceNumber();
|
nodeData->incrementOutgoingMixedAudioSequenceNumber();
|
||||||
|
|
||||||
// send an audio stream stats packet if it's time
|
static const int FRAMES_PER_SECOND = int(ceilf(1.0f / AudioConstants::NETWORK_FRAME_SECS));
|
||||||
if (_sendAudioStreamStats) {
|
|
||||||
|
// send an audio stream stats packet to the client approximately every second
|
||||||
|
if (nextFrame % FRAMES_PER_SECOND == 0) {
|
||||||
nodeData->sendAudioStreamStatsPackets(node);
|
nodeData->sendAudioStreamStatsPackets(node);
|
||||||
_sendAudioStreamStats = false;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
++_sumListeners;
|
++_sumListeners;
|
||||||
|
@ -781,64 +732,6 @@ void AudioMixer::broadcastMixes() {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void AudioMixer::perSecondActions() {
|
|
||||||
_sendAudioStreamStats = true;
|
|
||||||
|
|
||||||
int callsLastSecond = _datagramsReadPerCallStats.getCurrentIntervalSamples();
|
|
||||||
_readPendingCallsPerSecondStats.update(callsLastSecond);
|
|
||||||
|
|
||||||
if (_printStreamStats) {
|
|
||||||
|
|
||||||
printf("\n================================================================================\n\n");
|
|
||||||
|
|
||||||
printf(" readPendingDatagram() calls per second | avg: %.2f, avg_30s: %.2f, last_second: %d\n",
|
|
||||||
_readPendingCallsPerSecondStats.getAverage(),
|
|
||||||
_readPendingCallsPerSecondStats.getWindowAverage(),
|
|
||||||
callsLastSecond);
|
|
||||||
|
|
||||||
printf(" Datagrams read per call | avg: %.2f, avg_30s: %.2f, last_second: %.2f\n",
|
|
||||||
_datagramsReadPerCallStats.getAverage(),
|
|
||||||
_datagramsReadPerCallStats.getWindowAverage(),
|
|
||||||
_datagramsReadPerCallStats.getCurrentIntervalAverage());
|
|
||||||
|
|
||||||
printf(" Usecs spent per readPendingDatagram() call | avg: %.2f, avg_30s: %.2f, last_second: %.2f\n",
|
|
||||||
_timeSpentPerCallStats.getAverage(),
|
|
||||||
_timeSpentPerCallStats.getWindowAverage(),
|
|
||||||
_timeSpentPerCallStats.getCurrentIntervalAverage());
|
|
||||||
|
|
||||||
printf(" Usecs spent per packetVersionAndHashMatch() call | avg: %.2f, avg_30s: %.2f, last_second: %.2f\n",
|
|
||||||
_timeSpentPerHashMatchCallStats.getAverage(),
|
|
||||||
_timeSpentPerHashMatchCallStats.getWindowAverage(),
|
|
||||||
_timeSpentPerHashMatchCallStats.getCurrentIntervalAverage());
|
|
||||||
|
|
||||||
double WINDOW_LENGTH_USECS = READ_DATAGRAMS_STATS_WINDOW_SECONDS * USECS_PER_SECOND;
|
|
||||||
|
|
||||||
printf(" %% time spent in readPendingDatagram() calls | avg_30s: %.6f%%, last_second: %.6f%%\n",
|
|
||||||
_timeSpentPerCallStats.getWindowSum() / WINDOW_LENGTH_USECS * 100.0,
|
|
||||||
_timeSpentPerCallStats.getCurrentIntervalSum() / USECS_PER_SECOND * 100.0);
|
|
||||||
|
|
||||||
printf("%% time spent in packetVersionAndHashMatch() calls: | avg_30s: %.6f%%, last_second: %.6f%%\n",
|
|
||||||
_timeSpentPerHashMatchCallStats.getWindowSum() / WINDOW_LENGTH_USECS * 100.0,
|
|
||||||
_timeSpentPerHashMatchCallStats.getCurrentIntervalSum() / USECS_PER_SECOND * 100.0);
|
|
||||||
|
|
||||||
DependencyManager::get<NodeList>()->eachNode([](const SharedNodePointer& node) {
|
|
||||||
if (node->getLinkedData()) {
|
|
||||||
AudioMixerClientData* nodeData = (AudioMixerClientData*)node->getLinkedData();
|
|
||||||
|
|
||||||
if (node->getType() == NodeType::Agent && node->getActiveSocket()) {
|
|
||||||
printf("\nStats for agent %s --------------------------------\n",
|
|
||||||
node->getUUID().toString().toLatin1().data());
|
|
||||||
nodeData->printUpstreamDownstreamStats();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
_datagramsReadPerCallStats.currentIntervalComplete();
|
|
||||||
_timeSpentPerCallStats.currentIntervalComplete();
|
|
||||||
_timeSpentPerHashMatchCallStats.currentIntervalComplete();
|
|
||||||
}
|
|
||||||
|
|
||||||
void AudioMixer::parseSettingsObject(const QJsonObject &settingsObject) {
|
void AudioMixer::parseSettingsObject(const QJsonObject &settingsObject) {
|
||||||
if (settingsObject.contains(AUDIO_BUFFER_GROUP_KEY)) {
|
if (settingsObject.contains(AUDIO_BUFFER_GROUP_KEY)) {
|
||||||
QJsonObject audioBufferGroupObject = settingsObject[AUDIO_BUFFER_GROUP_KEY].toObject();
|
QJsonObject audioBufferGroupObject = settingsObject[AUDIO_BUFFER_GROUP_KEY].toObject();
|
||||||
|
@ -903,12 +796,6 @@ void AudioMixer::parseSettingsObject(const QJsonObject &settingsObject) {
|
||||||
} else {
|
} else {
|
||||||
qDebug() << "Repetition with fade disabled";
|
qDebug() << "Repetition with fade disabled";
|
||||||
}
|
}
|
||||||
|
|
||||||
const QString PRINT_STREAM_STATS_JSON_KEY = "print_stream_stats";
|
|
||||||
_printStreamStats = audioBufferGroupObject[PRINT_STREAM_STATS_JSON_KEY].toBool();
|
|
||||||
if (_printStreamStats) {
|
|
||||||
qDebug() << "Stream stats will be printed to stdout";
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (settingsObject.contains(AUDIO_ENV_GROUP_KEY)) {
|
if (settingsObject.contains(AUDIO_ENV_GROUP_KEY)) {
|
||||||
|
|
|
@ -110,17 +110,7 @@ private:
|
||||||
|
|
||||||
static InboundAudioStream::Settings _streamSettings;
|
static InboundAudioStream::Settings _streamSettings;
|
||||||
|
|
||||||
static bool _printStreamStats;
|
|
||||||
static bool _enableFilter;
|
static bool _enableFilter;
|
||||||
|
|
||||||
bool _sendAudioStreamStats;
|
|
||||||
|
|
||||||
// stats
|
|
||||||
MovingMinMaxAvg<int> _datagramsReadPerCallStats; // update with # of datagrams read for each readPendingDatagrams call
|
|
||||||
MovingMinMaxAvg<quint64> _timeSpentPerCallStats; // update with usecs spent inside each readPendingDatagrams call
|
|
||||||
MovingMinMaxAvg<quint64> _timeSpentPerHashMatchCallStats; // update with usecs spent inside each packetVersionAndHashMatch call
|
|
||||||
|
|
||||||
MovingMinMaxAvg<int> _readPendingCallsPerSecondStats; // update with # of readPendingDatagrams calls in the last second
|
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif // hifi_AudioMixer_h
|
#endif // hifi_AudioMixer_h
|
||||||
|
|
|
@ -366,14 +366,6 @@
|
||||||
"help": "Dropped frames and mixing during starves repeat the last frame, eventually fading to silence",
|
"help": "Dropped frames and mixing during starves repeat the last frame, eventually fading to silence",
|
||||||
"default": false,
|
"default": false,
|
||||||
"advanced": true
|
"advanced": true
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "print_stream_stats",
|
|
||||||
"type": "checkbox",
|
|
||||||
"label": "Print Stream Stats",
|
|
||||||
"help": "Audio upstream and downstream stats of each agent printed to audio-mixer stdout",
|
|
||||||
"default": false,
|
|
||||||
"advanced": true
|
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
|
|
Loading…
Reference in a new issue