作为我正在开展的项目的一部分,我想将 Unity3D 应用程序放在服务器上,以便全天候运行。此应用程序只是通过套接字接受传入请求、渲染图像(快速渲染具有最高优先级)并通过套接字返回渲染的图像。
我应该使用什么操作系统? Unity3D 尚未完全支持 Linux,因此选择归结为 Windows Server 或 Windows Desktop。
我对这类事情没有太多经验,但从我自己的研究来看,我得出结论,有两种方法可以解决这个问题:
A) 安装 Windows Server 并对其进行修改以使 3D 加速正常工作。
B) 安装 Windows 桌面并进行修改以使其更快/更稳定。
您会推荐哪一个?这两种选择在稳定性和/或性能方面是否有任何权衡?
答案1
我的建议是台式机。
在我以前工作的地方,我们有一个实时的 3D 图形来记录版本控制服务器的提交/中断(这是在 2009 年),我们很快发现,桌面系统和服务器系统上的 3D 图形的稳定性有很大区别。
桌面系统是为最终用户设计的,最终用户预计会想要玩游戏和使用精美的图形,因此桌面构建中的图形子系统具有更多安全措施来防止出现问题。
许多台式机系统也不是无头式设计的,因此许多图形驱动程序会主动监控硬件是否崩溃和过热,并重新加载/恢复驱动程序,以便系统用户可以看到他们在做什么,从而采取补救措施。
另一方面,服务器构建旨在长时间运行,通常不连接任何类型的显示器,因此恢复故障显示驱动程序的软件可能并不那么重要,特别是因为大多数 Windows 服务器的图形输出层都已调整为使用远程桌面从工作站进行访问。
最后,桌面版本已将图形子系统从内核代码中删除,虽然这对于服务器版本来说也基本如此,但服务器版本中图形驱动程序崩溃的风险比桌面版本更大,从而导致更多需要重新启动机器的问题。
然而,您可能会发现桌面版本存在一个问题,那就是垃圾的积累。临时文件不断积累,Windows 索引其搜索索引等,是的,我敢说桌面版本确实需要至少偶尔重新启动。
话虽如此,我的办公室电脑(一台 64 位 Windows 7 机器)几乎每天 24 小时不间断运行,并且持续处于高强度使用状态,但我通常每月手动进行一次受控重启即可。
如果系统上没有其他活动,只有 3D 应用程序在运行,并且只要您关闭非必要服务(例如 Windows 搜索),那么就应该没问题。
实施手动策略,每月重启一次以安装更新等,这样就没问题了。
至于网络性能,在我的办公室电脑上,我有许多 IIS7 站点用于监控我的其他机器,其中许多站点我可以通过笔记本电脑等设备远程访问,对于最多有 100 个用户的内部工具来说,一切都运行良好。
答案2
CharlesH 指出,并非所有显卡都受 Windows Server 支持。我找不到我们打算使用的显卡的任何 Windows Server 驱动程序。据同事说,Quardo 卡等(确实有 Windows Server 驱动程序)不适合我们的预期用途。因此,看来 Windows Desktop 是我们唯一的选择。