在从 ami 启动的 windows 服务器 ec2 实例上,steamvr 在自动登录后启动时遇到严重错误

问题描述 投票:0回答:1

当我从 AMI 启动新实例时(此 AMI 在登录后打开 steamVR),steamVR 运行出错。据我所知,这是因为当基于 AMI 启动实例时,附加到 ec2 实例的 EBS 卷需要从 AMI 所基于的快照中获取所有数据。首次读取时 I/O 操作很慢,因此在登录时启动 SteamVR 时,它会遇到严重错误。更多细节在这里:https://forums.developer.nvidia.com/t/failed-watchdog-timeout-in-thread-server-main-in-cloudxrremotehmd-after-10-440015-seconds-aborting/180742/ 10

本帖最后回复如下:

“上周我们确实找到了解决方法。事实证明,这个问题专门与带有 EBS 的 AWS 机器有关。当您在 AWS 中启动 EBS 支持的机器时,EBS 卷需要从它所基于的快照中补充上。快照数据由 S3 支持,因此第一次从卷中读取数据非常慢。我们现在使用一个小的 PowerShell 脚本基本上 cat {files} > /dev/null 中的所有文件启动 SteamVR 之前的 CloudXR 和 SteamVR 目录。这会将这些文件混合到卷中,以便它们很快,从那时起我们就没有遇到崩溃的问题。有关此的更多信息,请参见此处:https://docs.aws.amazon .com/AWSEC2/latest/WindowsGuide/ebs-initialize.html#ebs-initialize-windows。希望这有帮助。”

如何只为 steamvr 和 cloudxr 目录中的文件初始化 ebs 卷?如果我确实使用 fio/dd 来初始化整个卷 (200gb),那需要多长时间?

任何帮助将不胜感激!

amazon-web-services amazon-ec2 amazon-ebs ec2-ami steamvr
1个回答
0
投票

当从 AMI 创建 Amazon EBS 卷时,AWS 实际上不会将块复制到 Amazon EBS 卷。

相反,当首次访问 EBS 卷上的块时,EBS 服务会检查该块是否为空(未使用)或者它是否是存储在 AMI 中的块。如果它存储在 AMI 中,则 EBS 服务会将块从 AMI 快照复制到 EBS 卷。这就是为什么会有轻微的延迟。

如果您希望避免延迟,则需要访问块以强制执行“从快照复制到卷”操作。一种方法是

cat
一个文件,这会导致保存该文件的底层存储块被复制到卷中。

因此,为了加快对

steamvr
cloudxr
目录的访问,您可以简单地启动一个命令来读取这些目录中的文件。

基于Concatenating thousands of files: > vs >>,你可以使用类似的东西:

find /steamvr /cloudxr  -print0 | xargs -0 cat >/dev/null

(根据需要调整目录名称。)

© www.soinside.com 2019 - 2024. All rights reserved.