

本文属于机器翻译版本。若本译文内容与英语原文存在差异，则一律以英文原文为准。

# 实时性能统计数据
<a name="realtime-performance-stats"></a>

Amazon GameLift Streams 在活跃的直播会话期间收集性能统计信息，每秒测量一次资源利用率。使用这些统计数据来监控应用程序的性能，识别资源瓶颈，并优化您的流媒体体验。

性能统计数据包括应用程序级统计信息（特定应用程序的 CPU 和内存利用率）和系统级统计信息（共享计算基础架构的 CPU、内存、GPU 和 VRAM 使用率）。

您可以通过两种方式接收绩效统计数据：
+ **会话期间实时：**使用 Amazon GameLift Streams Web SDK 在收集统计数据时接收数据。这使您能够在与应用程序交互时构建性能叠加层并监控资源利用率。
+ **会话后格式为 CSV 文件：**导出会话文件时，统计数据将包含为`stats/perf_stats_v1.csv`。这为会话后的分析和调试提供了完整的记录。

## 接收性能统计数据
<a name="realtime-performance-stats-using"></a>

### 实时接收统计数据
<a name="realtime-performance-stats-using-realtime"></a>

要在活动会话期间在客户端应用程序中接收性能统计信息，请在调用 `StartStreamSession` API **true** 时将`SharedWithClient`参数设置为。Amazon GameLift Streams Web SDK 提供了一个`performanceStats`回调，每当直播会话收到新的统计数据时，该回调就会触发。

**警告**  
不要`SharedWithClient`为最终用户的生产会话启用此功能。仅在客户端可信时启用它，例如用于内部调试和测试。

初始化 Amazon GameLift Streams Web SDK 时，设置`clientConnection.performanceStats`为将接收性能统计信息的回调函数。

```
const gls = new gameliftstreams.GameLiftStreams({
    videoElement: document.getElementById('streamVideoElement'),
    audioElement: document.getElementById('streamAudioElement'),
    inputConfiguration: {
        ...
    },
    clientConnection: {
        ...
        performanceStats: (perfStats) => {
            // Your callback logic here
            console.log('CPU: ' + perfStats.application.cpuNormalized);
            console.log('Memory: ' + perfStats.application.memoryMB + ' MB');
            console.log('GPU: ' + perfStats.system.gpuPercent + '%');
        },
    }
});
```

回调接收一个包含应用程序级和系统级统计信息的`PerformanceStats`对象。有关接口结构的详细信息，请参阅[入门产品页面](https://aws.amazon.com/gamelift/streams/getting-started/)上的 Amazon GameLift Streams Web SDK 文档。

使用测试 GameLift 流功能时，Amazon Streams 控制台还包括一个内置的性能叠加层，使您无需任何实施工作即可实时监控统计信息。

您可以将性能统计数据与 A GameLift mazon Streams Web SDK 中的`getAudioRTCStats()`和函数提供的 `getVideoRTCStats()` WebRTC 统计数据相结合。这种组合提供了流媒体性能的完整画面，包括网络统计信息、客户端帧速率和资源利用率。

### 在会话结束后接收统计数据
<a name="realtime-performance-stats-using-csv"></a>

Amazon GameLift Streams 会在每次直播会话期间自动收集性能统计信息。导出会话文件时，统计数据会像导出的 ZIP 文件一样包含`stats/perf_stats_v1.csv`在内。这提供了会话期间收集的所有统计数据的完整记录，用于会话后分析和调试。

有关导出会话文件的更多信息，请参阅[导出直播会话文件](stream-sessions-export-files.md)。

## 性能统计数据参考
<a name="realtime-performance-stats-csv"></a>

下表列出了 Amazon GameLift Streams 收集的所有性能统计数据。应用程序统计信息特定于当前会话，而共享系统统计信息反映了多租户流类上会话对共享计算的总利用率。

**多租户流类的标准化统计数据**  
Amazon Stre GameLift ams 支持多租户流类，在这种类中，多个会话可以共享同一个计算实例。标准化统计数据（应用程序 CPU 和内存利用率）衡量应用程序相对于其分配的公平份额的资源使用情况。公平份额的计算方法是根据流类租约将计算实例上的可用 CPU 和内存总量平均除以计算实例。  
值为 1.0 表示您的应用程序正好使用其公平份额分配。低于 1.0 的值表示您的使用量少于配额。值超过 1.0 表示使用过度，这可能会导致会话性能下降。在多租户流类别（租期大于 1）上，过度使用还可能影响共享同一计算实例的其他会话。

下表中列出的统计名称用作导出文件中的 CSV 列标题。通过 Amazon GameLift Streams Web SDK 实时接收统计数据时，这些统计数据可通过`PerformanceStats`界面获得，属性名称采用驼峰大小写。有关确切的接口结构和属性名称，请参阅[入门产品页面](https://aws.amazon.com/gamelift/streams/getting-started/)上的 Amazon GameLift Streams Web SDK API 参考指南。


| 统计数据名称（CSV 列） | 说明 | Scope | 
| --- | --- | --- | 
| timestamp | 测量时间，采用 ISO 8601 格式。 | 全部 | 
| app\_cpu\_normalized | 应用程序的 CPU 使用率根据公平份额分配进行标准化，其中 1.0 表示目标公平份额限制。使用率超过 1.0 表示使用过度，这可能会导致性能问题 | 应用程序 | 
| app\_mem\_mb | 应用程序使用的总内存 (RAM)（以 MiB 为单位） | 应用程序 | 
| app\_mem\_normalized | 应用程序的内存使用量根据公平份额分配进行标准化，其中 1.0 表示目标公平份额限制。使用率超过 1.0 表示使用过度，这可能会导致性能问题 | 应用程序 | 
| shared\_sys\_cpu\_pct | 共享计算中总 CPU 使用率的百分比。 | 共享系统 | 
| shared\_sys\_mem\_mb | 实例上使用的总内存（以 MiB 为单位）。 | 共享系统 | 
| shared\_sys\_mem\_pct | 共享计算中使用的总内存的百分比。 | 共享系统 | 
| shared\_sys\_gpu\_pct | 共享计算中 GPU 总利用率的百分比。 | 共享系统 | 
| shared\_sys\_vram\_mb | 共享计算上使用的总虚拟内存（GPU 内存）（以 MiB 为单位）。 | 共享系统 | 
| shared\_sys\_vram\_pct | 共享计算中使用的 VRAM（GPU 内存）总量的百分比。 | 共享系统 | 