统计
如何读取RakNet的统计数据,以及如何解析统计数据
统计数据对于在线的游戏非常重要,因为它可以让你看到你游戏的传输瓶颈在什么地方。关于统计功能,RakNet提供了结构体RakNetStatics,由RakPeerInterface中的GetStatics()函数返回。这个结构体在Source/RakNetStatics.h中定义。函数StaticsToString()用于将这些统计参数转化为格式化缓存形式。
enum RNSPerSecondMetrics
{
// 每一次调用RakPeerInterface::Send()所推送的字节数。
USER_MESSAGE_BYTES_PUSHED,
// 通过调用RakPeerInterface::Send()所发送的用户数据的字节数。
// 这个数值要小于或等于USER_MESSAGE_BYTES_PUSHED的值
// 由于拥塞,一条消息可能已经推送了,但是没有发送
USER_MESSAGE_BYTES_SENT,
// 重发了多少字节用户消息。如果消息标识为可靠类型但是消息没有到达
// 或消息确认没有到达,这个消息就会重发。
USER_MESSAGE_BYTES_RESENT,
// 接收并且成功了多少字节用户消息
USER_MESSAGE_BYTES_RECEIVED_PROCESSED,
// 接收了,但是由于格式错误而丢弃的消息字节数。这个值通常为0
USER_MESSAGE_BYTES_RECEIVED_IGNORED,
// 事实上发送的数据的字节数,包括每一条消息和每一个数据包的消耗,
// 可靠性消息确认
ACTUAL_BYTES_SENT,
// 事实上接收到的数据的字节数,包括开销和确认
ACTUAL_BYTES_RECEIVED,
// \internal
RNS_PER_SECOND_METRICS_COUNT
};
// \brief 网络统计使用
// 存储与网络使用相关的统计信息
struct RAK_DLL_EXPORT RakNetStatistics
{
// 对于RNSPerSecondMetrics中的每一种类型, 超过最后一秒的值是什么?
uint64_t valueOverLastSecond[RNS_PER_SECOND_METRICS_COUNT];
// 对于RNSPerSecondMetrics中的每一种类型,在整个连接的生命周期的总值是什么?
uint64_t runningTotal[RNS_PER_SECOND_METRICS_COUNT];
// 连接是什么时候开始的?
/// \sa RakNet::GetTimeUS()
RakNet::TimeUS connectionStartTime;
// 我们当前的发送速率被拥塞控制遏制??
// 如果你每一秒钟发送数据量比你实际的带宽要大这个值为TRUE
bool isLimitedByCongestionControl;
// 如果isLimitedByCongestionControl是true, 限制是什么,每一秒钟的字节数是多少?
uint64_t BPSLimitByCongestionControl;
//发送速率是否受到RakPeer::SetPerConnectionOutgoingBandwidthLimit()函数的限制?
bool isLimitedByOutgoingBandwidthLimit;
// 如果isLimitedByOutgoingBandwidthLimit为true,每一秒钟字节数的限制是什么?
uint64_t BPSLimitByOutgoingBandwidthLimit;
// 每一个优先级,有多少消息在等待发送?
unsigned int messageInSendBuffer[NUMBER_OF_PRIORITIES];
// 每一个优先级,有多少字节数据等待发送?
double bytesInSendBuffer[NUMBER_OF_PRIORITIES];
// 有多少字节数据等待在重发缓存?这个数据包括等待确认的消息,
// 正常应该是较小的值
// 如果这个值随着时间增长,需要发送数据的速率正在超过了带宽能力
// 参考BPSLimitByCongestionControl值
unsigned int messagesInResendBuffer;
// 有多少字节等待在重发队列也可参考messagesInResendBuffer值
uint64_t bytesInResendBuffer;
// 在最后一秒,系统丢包率是多少?这个值范围是从0.0 (没有)到1.0 (100%丢包)
float packetlossLastSecond;
// 在连接期间,平均总的丢包率是多少?
float packetlossTotal;
};
By 北洋小郭
转载请注明出处,切勿用于商业。谢谢!