mirror of
https://github.com/overte-org/overte.git
synced 2025-08-09 18:13:05 +02:00
wire up thread count to settings, tweak stats
This commit is contained in:
parent
cddb72bbd7
commit
00086fcc06
2 changed files with 43 additions and 4 deletions
|
@ -785,14 +785,17 @@ void AvatarMixer::sendStatsPacket() {
|
||||||
QJsonObject slavesObject;
|
QJsonObject slavesObject;
|
||||||
// gather stats
|
// gather stats
|
||||||
int slaveNumber = 1;
|
int slaveNumber = 1;
|
||||||
|
int tightLoopFrames = _numTightLoopFrames;
|
||||||
|
int tenTimesPerFrame = tightLoopFrames * 10;
|
||||||
_slavePool.each([&](AvatarMixerSlave& slave) {
|
_slavePool.each([&](AvatarMixerSlave& slave) {
|
||||||
QJsonObject slaveObject;
|
QJsonObject slaveObject;
|
||||||
int nodesProcessed, packetsProcessed;
|
int nodesProcessed, packetsProcessed;
|
||||||
quint64 processIncomingPacketsElapsedTime;
|
quint64 processIncomingPacketsElapsedTime;
|
||||||
slave.harvestStats(nodesProcessed, packetsProcessed, processIncomingPacketsElapsedTime);
|
slave.harvestStats(nodesProcessed, packetsProcessed, processIncomingPacketsElapsedTime);
|
||||||
slaveObject["nodesProcessed"] = nodesProcessed;
|
slaveObject["nodesProcessed"] = (nodesProcessed > tenTimesPerFrame) ? nodesProcessed / tightLoopFrames : ((float)nodesProcessed / (float)tightLoopFrames);
|
||||||
slaveObject["packetsProcessed"] = packetsProcessed;
|
slaveObject["packetsProcessed"] = (packetsProcessed > tenTimesPerFrame) ? packetsProcessed / tightLoopFrames : ((float)packetsProcessed / (float)tightLoopFrames);
|
||||||
slaveObject["timing_average_processIncomingPackets"] = (float)processIncomingPacketsElapsedTime / (float)_numTightLoopFrames;
|
slaveObject["timing_average_processIncomingPackets"] = (processIncomingPacketsElapsedTime > tenTimesPerFrame)
|
||||||
|
? processIncomingPacketsElapsedTime / tightLoopFrames : ((float)processIncomingPacketsElapsedTime / (float)tightLoopFrames);
|
||||||
|
|
||||||
slavesObject[QString::number(slaveNumber)] = slaveObject;
|
slavesObject[QString::number(slaveNumber)] = slaveObject;
|
||||||
slaveNumber++;
|
slaveNumber++;
|
||||||
|
@ -914,10 +917,13 @@ void AvatarMixer::handlePacketVersionMismatch(PacketType type, const HifiSockAdd
|
||||||
|
|
||||||
void AvatarMixer::parseDomainServerSettings(const QJsonObject& domainSettings) {
|
void AvatarMixer::parseDomainServerSettings(const QJsonObject& domainSettings) {
|
||||||
const QString AVATAR_MIXER_SETTINGS_KEY = "avatar_mixer";
|
const QString AVATAR_MIXER_SETTINGS_KEY = "avatar_mixer";
|
||||||
|
QJsonObject avatarMixerGroupObject = domainSettings[AVATAR_MIXER_SETTINGS_KEY].toObject();
|
||||||
|
|
||||||
|
|
||||||
const QString NODE_SEND_BANDWIDTH_KEY = "max_node_send_bandwidth";
|
const QString NODE_SEND_BANDWIDTH_KEY = "max_node_send_bandwidth";
|
||||||
|
|
||||||
const float DEFAULT_NODE_SEND_BANDWIDTH = 5.0f;
|
const float DEFAULT_NODE_SEND_BANDWIDTH = 5.0f;
|
||||||
QJsonValue nodeBandwidthValue = domainSettings[AVATAR_MIXER_SETTINGS_KEY].toObject()[NODE_SEND_BANDWIDTH_KEY];
|
QJsonValue nodeBandwidthValue = avatarMixerGroupObject[NODE_SEND_BANDWIDTH_KEY];
|
||||||
if (!nodeBandwidthValue.isDouble()) {
|
if (!nodeBandwidthValue.isDouble()) {
|
||||||
qDebug() << NODE_SEND_BANDWIDTH_KEY << "is not a double - will continue with default value";
|
qDebug() << NODE_SEND_BANDWIDTH_KEY << "is not a double - will continue with default value";
|
||||||
}
|
}
|
||||||
|
@ -925,6 +931,22 @@ void AvatarMixer::parseDomainServerSettings(const QJsonObject& domainSettings) {
|
||||||
_maxKbpsPerNode = nodeBandwidthValue.toDouble(DEFAULT_NODE_SEND_BANDWIDTH) * KILO_PER_MEGA;
|
_maxKbpsPerNode = nodeBandwidthValue.toDouble(DEFAULT_NODE_SEND_BANDWIDTH) * KILO_PER_MEGA;
|
||||||
qDebug() << "The maximum send bandwidth per node is" << _maxKbpsPerNode << "kbps.";
|
qDebug() << "The maximum send bandwidth per node is" << _maxKbpsPerNode << "kbps.";
|
||||||
|
|
||||||
|
const QString AUTO_THREADS = "auto_threads";
|
||||||
|
bool autoThreads = avatarMixerGroupObject[AUTO_THREADS].toBool();
|
||||||
|
if (!autoThreads) {
|
||||||
|
bool ok;
|
||||||
|
const QString NUM_THREADS = "num_threads";
|
||||||
|
int numThreads = avatarMixerGroupObject[NUM_THREADS].toString().toInt(&ok);
|
||||||
|
if (!ok) {
|
||||||
|
qWarning() << "Avatar mixer: Error reading thread count. Using 1 thread.";
|
||||||
|
numThreads = 1;
|
||||||
|
}
|
||||||
|
qDebug() << "Avatar mixer will use specified number of threads:" << numThreads;
|
||||||
|
_slavePool.setNumThreads(numThreads);
|
||||||
|
} else {
|
||||||
|
qDebug() << "Avatar mixer will automatically determine number of threads to use. Using:" << _slavePool.numThreads() << "threads.";
|
||||||
|
}
|
||||||
|
|
||||||
const QString AVATARS_SETTINGS_KEY = "avatars";
|
const QString AVATARS_SETTINGS_KEY = "avatars";
|
||||||
|
|
||||||
static const QString MIN_SCALE_OPTION = "min_avatar_scale";
|
static const QString MIN_SCALE_OPTION = "min_avatar_scale";
|
||||||
|
@ -942,4 +964,5 @@ void AvatarMixer::parseDomainServerSettings(const QJsonObject& domainSettings) {
|
||||||
|
|
||||||
qDebug() << "This domain requires a minimum avatar scale of" << _domainMinimumScale
|
qDebug() << "This domain requires a minimum avatar scale of" << _domainMinimumScale
|
||||||
<< "and a maximum avatar scale of" << _domainMaximumScale;
|
<< "and a maximum avatar scale of" << _domainMaximumScale;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -1299,6 +1299,22 @@
|
||||||
"placeholder": 5.0,
|
"placeholder": 5.0,
|
||||||
"default": 5.0,
|
"default": 5.0,
|
||||||
"advanced": true
|
"advanced": true
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "auto_threads",
|
||||||
|
"label": "Automatically determine thread count",
|
||||||
|
"type": "checkbox",
|
||||||
|
"help": "Allow system to determine number of threads (recommended)",
|
||||||
|
"default": false,
|
||||||
|
"advanced": true
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "num_threads",
|
||||||
|
"label": "Number of Threads",
|
||||||
|
"help": "Threads to spin up for avatar mixing (if not automatically set)",
|
||||||
|
"placeholder": "1",
|
||||||
|
"default": "1",
|
||||||
|
"advanced": true
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue