问题、意见和错误

如果您有关于 NVIDIA CloudXR SDK 的问题或意见,或者要报告 SDK 的错误,请访问 CloudXR 论坛

如果您要报告错误,请在您的电子邮件中提供以下信息

  • 操作系统。

  • GPU 型号。

  • NVIDIA 显卡驱动版本。

  • 使用的头戴式显示器/设备。

  • 重现问题的步骤。

  • 客户端和服务器启用详细模式的日志文件。

    有关更多信息,请参阅 日志文件

  • 对于性能或网络问题,请共享 ETL 文件。

    有关更多信息,请参阅 ETL 跟踪

日志文件

从一开始,CloudXR 库就会将自己的日志文件写入磁盘。后来添加了一个 API,允许客户端发送消息以包含在 CloudXR 日志中。对于 CloudXR 4.0,我们改变了 CloudXR 消息日志记录的责任和控制权。现在,客户端从库接收日志消息,并且可以选择何时以及如何记录它们,无论是我们的示例文件记录器,还是许多现有的日志记录工具之一。有关更多详细信息,请参阅 修订后的 CloudXR 日志记录

Windows

在 Windows 上,客户端和服务器会在当前用户的 AppData 文件夹下的 logs 子目录中创建日志文件。历史上,作为一种回退方案,使用的完整路径是 C:\Users\*user-name*\AppData\Local\NVIDIA\CloudXR\logs\

现在,客户端应用程序可以向 CloudXR 指定输出文件的位置,无论是日志、跟踪文件、流记录还是帧捕获 – 这在 CloudXR 文件存储 中有更深入的介绍。对于 CloudXR 4.0 版本,我们不再为所有服务器和客户端使用一个子文件夹,而是根据应用程序使用更深一级的子文件夹。对于 SteamVR 服务器,它会进入上述路径,但进一步位于 \CloudXR\SteamVR\logs\ 下。对于 Windows 客户端示例,文件现在会进入 \CloudXR\ClientSample\logs\。对于实验性服务器示例,输出文件会转到 \CloudXR\ServerSample\logs\

其他消息会发送到调试输出,可以使用标准调试器捕获这些消息。此外,对于 Windows 客户端,以下命令行参数可以提供额外的帮助

  • -w:窗口模式。
    此选项不会驱动 VR 头戴式显示器,而是将视频馈送显示到 PC 屏幕上。
  • -v:启用详细日志记录。
    当向 NVIDIA 发送日志以进行调试时,请确保使用此参数捕获详细日志。

如果服务器崩溃,则会在服务器日志目录中创建一个 crashdump.dmp 文件。

Android

以前在 Android 上,日志存储在一个硬编码的位置 /sdcard/CloudXR/。由于 Android 文件系统权限的最新更改,该位置已无法访问。因此,客户端应用程序必须告知 CloudXR 其数据文件夹的位置。有关此方面的更多详细信息,请查看 CloudXR 文件存储

要为 Android 客户端从头戴式显示器捕获更详细的日志消息,请将头戴式显示器连接到 Windows PC 并运行 adb.exe logcat CloudXR \*:S 命令。

日志文件名

  • CloudXR 服务器日志文件:CloudXR Server log <Date Time stamp>.txt

  • CloudXR 客户端日志文件:CloudXR Client Log <Date Time stamp>.txt

  • 流服务器日志文件:Streamer Server Log <Date Time stamp>.txt

  • 流 Windows 客户端日志文件:Streamer Client Log <Date Time stamp>.txt

注意

为防止存储空间溢出,我们建议您根据需要在客户端限制文件大小。各种服务器日志和跟踪文件将根据需要尽可能大。

其他日志记录功能

在所有客户端平台上,当以 -v 详细模式运行时,帧时序信息将显示在 CloudXR 客户端日志中。时序输出格式如下

[16:33:59] fps: 71.7, s2st:  30.3, qt:  7.5, late:   0.0 ms
[16:33:59] fps: 71.8, s2st:  28.8, qt: 10.0, late:   0.0 ms
[16:33:59] fps: 71.9, s2st:  28.3, qt: 11.4, late:   0.0 ms
[16:33:59] fps: 12.1, s2st:  27.7, qt:  8.2, late:  68.9 ms
[16:33:59] fps: 99.3, s2st:  20.0, qt:  1.2, late:   8.1 ms
[16:33:59] fps: 71.6, s2st:  20.9, qt:  3.1, late:   0.0 ms

这四个字段与下面项目符号列表中的前四个字段匹配。

要捕获更详细的 QoS 统计信息,您可以使用启动选项 -tqs-trace-qos-stats。这将捕获一个单独的 CSV 日志,可以在电子表格中打开,也可以使用自定义应用程序轻松处理,并包含以下字段

  • 每秒帧数

  • CXR 中的帧时间 (毫秒)

  • 客户端队列时间 (毫秒)

  • 延迟等待锁存 (毫秒)

  • 平均视频速率 (kbps)

  • 估计可用带宽 (kbps)

  • 带宽利用率 (%)

  • 数据包丢失(累计)

  • 抖动 (微秒)

  • 往返延迟 (毫秒)

  • 接收的数据包(累计)

  • 丢弃的接收数据包(累计)

除了 fps 之外,在客户端日志和 QoS CSV 日志中都输出的三个字段是

  • Frame Time in CXRs2st: 值是指从 CXR 服务器接收到眼睛纹理到眼睛纹理离开客户端上的 CloudXR 库之间的时间段,或者从提交到提交(服务器到客户端)。

  • Client Queue Timeqt: 是解码帧用于去抖动的时间段。这是整体 Frame Time in CXR 值的一部分。

  • Late Awaiting Latchlate: 是指 cxrLatchFrame() 调用等待帧可用于出队的时间段。

服务器和客户端还有其他日志记录功能选项可以使用启动选项(有关更多信息,请参阅 命令行选项)。

以下是一些其他选项

  • -d 强制在流式传输时每 1000 帧捕获 PNG 屏幕截图。
    然后可以比较相应的客户端和服务器图像。
  • -p 指示客户端和服务器在 streamer 日志记录中禁用隐私。

崩溃转储

如果服务器崩溃,则会在服务器系统上的日志目录中创建一个 crashdump.dmp 文件。可以将此文件发送给 NVIDIA 进行分析。

ETL 跟踪

对于流式传输期间发生的问题,您可能需要收集详细的流事件以及常规日志,并将此信息发送给 CloudXR 支持团队进行分析。

事件跟踪日志 (ETL) 捕获客户端、服务器和网络事件及时序的跟踪。捕获这些日志可以帮助确定流式传输期间发生故障或其他问题的原因。ETL 捕获对于调试与网络相关的问题(例如低质量、卡顿和高延迟)也非常有用。仅当连接成功建立并且流式传输开始时,ETL 才包含有用的信息。如果您无法连接,ETL 将无济于事。ETL 是 NVIDIA 自定义的用于调试问题的格式,我们有仅供内部使用的工具来将数据后处理为内部调试应用程序中可用的、可浏览的数据,并且不旨在供客户直接查看。

要启用 ETL 日志记录,您需要在客户端或服务器启动选项中添加 -t-trace-stream-events。有关更多信息,请参阅 命令行选项

注意

实际的日志记录发生在服务器上,但您可以在客户端请求它。

警告

跟踪仅在您退出 CloudXR 服务器和 SteamVR 之后完成。

与其他服务器日志输出一样,ETL 跟踪输出将放置在 logs 文件夹中。扩展名为 .etl 且包含当前日期和时间的文件包含生成的 ETL 跟踪。例如,您可能会看到类似 20210703-152354-NvStreamer.etl 的文件。

警告

如果您没有在 logs 文件夹中获得预期的 ETL 跟踪文件,则可能与帐户权限有关。ETL 跟踪捕获使用 Windows 系统服务来记录事件,并且它要求 SteamVR 进程在管理员帐户中运行,或者从属于 Performance Log Users 组的用户帐户运行。

如果您不是机器上的原始管理员帐户,我们建议您将您的用户帐户添加到 Performance Log Users 组。管理员组中的辅助帐户可能无法工作。这是无法捕获 ETL 跟踪的帐户的解决方法。

本地事件跟踪 (CloudXR 可视化分析器)

本地事件跟踪可以帮助您了解性能或卡顿问题。当您在客户端或服务器上指定 -tle-trace-local-events 启动选项时,将在相应的 CloudXR logs 目录中生成一个名为 Event Trace DATE TIME.json 的文件。该文件包含带时间戳的事件,例如客户端上视频帧解码何时开始和完成。服务器和客户端生成他们自己单独的本地跟踪,其中包含不同的事件。

注意

跟踪仅捕获 30 秒,并且延迟到客户端连接后 10 秒开始,以确保流已稳定。

您可以通过启动 TestTools\trace_vis 中的 index.html 网页来查看该文件。此步骤将在您的浏览器中启动 CloudXR 可视化分析器,并且系统将提示您选择要打开的跟踪文件。当您打开此文件时,您应该会看到如下屏幕截图所示的可视化效果(单击任一图像以查看完整尺寸)

../_images/sample_trace.png

客户端跟踪示例

../_images/sample_trace_server.png

服务器跟踪示例

上面的图像显示了客户端跟踪和服务器跟踪的示例默认输出。

以下是您可以与跟踪进行交互的一些方式

  • 当您单击代表事件的彩色框时,分析器将显示更详细的信息,例如事件名称和 ID、事件的开始和结束时间以及总持续时间,对于帧数据,它包括当前分辨率。

  • 当您在一个事件中连续按 Control+Click 多个框时,分析器将为每个事件显示一个框,并报告所选事件的总持续时间和平均持续时间,以及推断的 FPS 速率。

  • 您还可以使用滚轮放大和缩小图形,并在时间行中单击并拖动以移动数据的查看窗口。

在您的浏览器中,您可以打开多个选项卡中的 index.html 文件,或者在分屏中并排打开,并在选项卡之间快速切换,以便轻松比较跟踪。