我刚刚组装了一台新电脑,在玩 Minecraft 时遇到了问题。
新电脑是 Inel i7 3820K,配备 32GB RAM 和 3 个 WD Black 1TB 硬盘,使用 Intel Matrix Storage 组成 RAID 0。显卡是 Nvidia GTX 560,配备 1024M VRAM,由 eVGA 制造。
无论如何,我遇到的问题是,当我在地图上靠近我朋友的基地时(是的,这是在服务器上),我的角色/相机几乎无法播放。它变得非常不稳定,命令和操作都延迟了。起初我以为这可能只是网络连接,但当我离开他的基地时,一切都再次加速了。
当然,他确实在很小的区域内运行着许多复杂的机器和其他装置,我想也许只是事情太多了,我的电脑的 wifi 卡住了,但我不认为是这样。我朋友的网速比我的差很多,他从安提瓜玩游戏没有问题,而我在俄亥俄州。
我唯一能想到的可能是我的显示器导致了这个问题,我从 19 英寸的宏碁显示器换成了 30 英寸的戴尔 UltraSharp。会不会是地图某些区域的复杂程度加上我运行游戏的分辨率对我的 GPU 的负担过重,导致我出现延迟?
这真的很烦人,我想弄清楚这个问题,但之前的电脑出现过这么多问题,我对这个问题感到很困惑。我打算尝试一些其他游戏,比如《天际》或《杀出重围:HR》,看看是否遇到同样的问题。
答案1
首先我要说的是,这些都是非常好的答案,但我想花点时间亲自看看我能在自己的两个大屏幕上生成什么样的数字。
由于至少有一个答案提到了 GPU 的内存,而 OP 提到了包含许多对象的场景,因此我将测量不同级别的 VRAM 消耗,并且由于另一个答案提到了分辨率,因此我将在一个屏幕上进行全屏渲染,并将这些数字与在两个屏幕上进行全屏渲染进行比较。这可以被认为是具有更高分辨率的更大显示器,因为屏幕空间是原来的两倍。我还将做一个两个镜像的小示例,在保持相同分辨率的同时模拟更大的屏幕空间。
通过比较的数字,我可以演示显卡需要缴纳多少税。
钻机:
- 四核 2600k @ 5GHz
- 微星 580 GTX Lightning Xtreme
- 此版本比 MSI 原装版本频率更高,但我自己没有为本次测试超频
- 此版本有 3 GB DDR5
- 驱动程序版本 304.79;完全全新安装
- 16 GB DDR3 系统 RAM
- 2 个 32 英寸 LED 屏幕,分辨率为 1920x1080
- 一个通过 HDMI 连接,一个通过无源适配器从 DP 输出连接到 HDMI 输入
- 我将使用 MSI Afterburner v2.2.1 监控 VRAM 使用情况
第一次测试:
对于第一次测试,我们只是坐在一个空闲的启用了 Aero 的 Windows 7 桌面前。除了 Minecraft 之外,我没有其他工具来测量 FPS。
- 116-118 MB 使用量
- 两个屏幕均打开,且处于 1920x1080 模式
- 89-91 MB MB 使用率
- 打开一个屏幕,并处于 1920x1080 模式
- 使用量 78-80 MB
- 打开一个屏幕,并处于 800x600 模式
- 使用 73-74 MB
- 两个屏幕均打开,且处于 800x600 模式
-- 这项测试表明,2 台显示器并不意味着 2 倍 VRAM 使用率,因此可以预期,开销远不止帧缓冲,还值得注意的是,在高分辨率模式下,一台显示器使用的内存约为两台显示器的 77%,而在低分辨率模式下,一台显示器使用的内存约为两台显示器的 93%,进一步说明了开销成本。-- 这意味着 @Huskehn 给出的答案具有误导性,因为仅靠更高的分辨率对 VRAM 使用没有实际影响。
第二次测试:
本次测试使用 VLC 进行全屏蓝光播放(《塔拉迪加之夜》,供后人参考)。除了 Minecraft 之外,我没有其他工具可以测量 FPS。
- 172 MB 使用量
- 双屏开启,单屏全屏,1920x1080 模式
- 为了好玩,我在此模式下将播放速度提高到 8 倍,结果发现占用率增加了 2 MB
- 使用 217 MB
- 单屏开启,双全屏,1920x1080 模式
- 125 MB 使用量
- 打开一个屏幕,并处于 1920x1080 模式
- 106 MB 使用量
- 双屏开启,单屏全屏,800x600 模式
- 130 MB 使用量
- 双屏全屏,800x600 模式
- 94 MB 使用量
- 打开一个屏幕,并处于 800x600 模式
-- 本次测试没什么好说的,除了 VRAM 使用率在整个过程中都保持稳定,直到我仅更改播放速度 -- 当设置为常规速度时,内存使用率恢复正常,这表明帧缓冲区已增加。另一点是,两个视频都没有变得不连贯或看起来很慢,这表明非 3D 应用程序是多么微不足道。
第三次测试:
在本次测试中,我将使用 VirtualBox v4.1.18 在我的第二台显示器上全屏打开 32 位 Windows XP 虚拟机。虚拟机已分配 128 MB 的视频内存(后续测试似乎并不一定证明虚拟机只能使用这么多),并且已启用 2D 和 3D 加速。
我跳过了几种模式,因为其他测试似乎表明可以观察到可预测的差异。
- 151-156 MB 使用量
- 两个屏幕均打开,且处于 1920x1080 模式
- 127 MB 使用量
- 两个屏幕均打开,虚拟机屏幕(以及虚拟机本身)处于 800x600 模式,主机处于 1920x1080 模式
-- 我没有测量当屏幕为@1080时,或者当虚拟机的分辨率内部更改为@800时,是否有不同的消耗
第四次测试:
玩我的世界!
这其中有很多信息,可能是@Solignos 最重要的部分。
首先,由于 Windows 处理全屏应用程序的方式,我无法同时以最大尺寸运行两个 MC 客户端,因此我在前面提到的 VM 中运行另一个客户端并测量结果。我和弟弟一直像这样并排玩,我们从来没有遇到过任何问题!其次,我在后台运行了一个 Minecraft 服务器,这样两个客户端都会渲染相同的世界和几乎相同的视图。我运行了两个客户端,将两个玩家传送到同一个位置,朝同一个方向看,然后关闭客户端以刷新之前渲染的所有内容,然后重新启动它们并且不移动它们。我首先启动了服务器,并注意到 VRAM 从 156 MB 变为 168 MB。第一次断开与两个客户端的连接后,我注意到现在稳定的 230 MB 正在使用中。服务器还配置了最大渲染距离。
MC 图形设置如下:“Fancy”,平滑闪电开启,3D 立体照片关闭,GUI 比例自动,粒子全部,渲染远,性能最大化,摆动开启,高级 OGL 关闭,云开启。虽然主机客户端可以在高级 OGL 开启的情况下以超过 280 fps 的速度运行,但这导致 VM 运行缓慢。我认为这是因为 VirtualBox 目前对较新的 OGL 实现的支持有限。FPS 是通过“F3”统计数据从 MC 中获取的。
除非另有说明,所有测试均以 1920x1080 录制。
- 530 MB 使用率 @ ~300 FPS(主机)
- 客户端在屏幕 1 上的主机中全屏显示,空闲桌面在屏幕 2 上显示,无虚拟机运行
- 530 MB 使用率 @ ~305 FPS(主机)
- 客户端在主机屏幕 1 和 2 上全屏显示(重复屏幕),无虚拟机运行
- 482 MB 使用率 @ ~330 FPS(主机)
- 客户端在主机屏幕 1 上全屏显示,第二个屏幕关闭,无虚拟机运行
- 482 MB 使用率 @ ~330 FPS(主机)
- 客户端在主机屏幕 1 上全屏显示,第二个屏幕关闭,无虚拟机运行
- 480 MB 使用率 @ ~430 FPS(主机)
- 客户端在主机屏幕 1 上全屏显示,第二个屏幕空闲桌面,均为 800x600,没有运行虚拟机
- 547 MB 使用率 @ ~250 FPS(主机)
- 客户端在屏幕 1 上全屏显示在主机中,空闲的虚拟机桌面显示在屏幕 2 上
- 408 MB 使用率 @ ~70 FPS (虚拟机)
- 客户端在虚拟机中全屏显示在屏幕 2 上,主机桌面处于空闲状态显示在屏幕 1 上
- FPS 一开始在 60 左右,然后慢慢下降到 45,然后在获取所有区块后攀升到 81
- 803-805 MB 使用率 @ ~200 FPS (主机), @ ~50 FPS (虚拟机)
- 客户端在屏幕 1 上的主机中全屏显示,客户端在屏幕 2 上的虚拟机中全屏显示
-- 请注意,MC 缓存很多,不同的场景会导致不同的 VRAM 使用量,因此,虽然我选择了一个复杂的场景,其中有大量火焰和许多活塞在移动,但这仍然是一个接近“最佳情况”的场景,因为环顾四周会导致获取、缓存和特别是重新绘制更多的东西,因为整个屏幕都在变化,而不仅仅是几个部分。但这并不是说 MC 在需要时不会清除缓存。随着远处的区块被渲染,您可以看到 VRAM 稳步增加,并且 VM 加载块所花费的时间与主机系统之间存在巨大差异。加载区块后帧速率的恢复表明,至少对于 Minecraft 来说,获取东西比实际显示它们损失的 FPS 更多。最终测试显示,此设置的“MultiplayerChunkCache”为 961,然后它开始交换东西,但这并没有阻止 VRAM 上升。这种缓存还可以解释为什么在客户端仍在运行时切换到较小的分辨率后 VRAM 没有明显下降。
-- 关于@Diogo 建议的与性能相关的像素数量,前几次运行表明,像素数量增加一倍/一半并不等同于性能增加一倍/一半。使用 FPS 作为性能衡量标准,将像素数量减少一半只能获得约 10% 的性能提升,因为第二个屏幕没有渲染任何困难的内容。因此,我镜像了我的显示器,VRAM 使用率没有变化,FPS 略有变化。在主机和虚拟机上运行客户端的测试中,主机和虚拟机的 Minecraft 的 FPS 都没有下降 50%,而是只下降了约 25%,尽管两者都具有高级全屏渲染功能,所以像素数在性能方面并不是一个真正有用的标识符。
最终测试:
好吧...我到底能获得多高的 VRAM?!
在虚拟机和主机客户端上,我在 Minecraft 的服务器上徘徊了好几分钟后,最终使用量达到了 1685 MB,然后一切开始趋于平稳难的又过了几分钟,我终于可以达到 1869 MB,然后它不会让步。即使周围都是活塞,周围都是炽热的地狱岩。即使在内存使用率如此之高之后,游戏在主机和 VM 上仍然 100% 可玩;分别为 ~233 和 ~52 FPS。我做到了。我敲出了 Minecraft。两次. 在同一台机器上!
于是我启动了 Skyrim。当我最小化主机的 MC 客户端时,我的 VRAM 只下降到 1837 MB。
在 Skyrim 的土地上,我总共可以使用 2636 MB,而虚拟机中的 Minecraft 仍然保持在约 50 FPS。我没有测量 Skyrim 的 FPS,但它显然很高。
由于没有达到峰值,我感到很恼火,于是最小化了 Skyrim,降到 2617 MB,然后打开了使用 DX 11 的 Civ 5。加载后,我的 VRAM 飙升至 2884 MB,Windows 提示我“您的计算机内存不足...”窗口,指向 Java 进程(服务器或客户端),但我的系统 RAM 只有 9.77 GB(满分 16 GB)。我加载了保存的游戏,它做到了!我达到了 3072 MB 的最大值!我的第二个屏幕空白,我的第一个屏幕开始剧烈闪烁,分辨率降低。由于担心我的卡,我迅速关闭了 PC,但在此之前,我看到了一些警告对话框,上面写着“0x00 处未引用的内存...”。到目前为止,FPS 是仍然两个屏幕上都显示高位。
结论:
如果您已经读到这里,那么恭喜您阅读了本文。这是一种迂回的说法,但@Solignis 遇到的问题不太可能是基于 GPU 或 CPU,而可能是服务器连接不良或 Java/堆设置不足。@Philippe 和 @libertas 的答案是正确的。
在 800x600 和 1920x1080 分辨率下运行的 Minecraft 测试本身表明,尽管像素增加了 432%,但性能并没有受到如此大的影响。
复制屏幕 Minecraft 测试是一种模拟更大屏幕(两个屏幕合并)的方法,但使用相同的分辨率图像,即 1920x1080,只是占用了更多的屏幕空间。如果没有另一个具有相同分辨率的更大屏幕,这非常有说服力地表明尺寸本身不会明显影响游戏性能。
双重 Minecraft 测试表明渲染更高分辨率的图像(两个屏幕合并)将要对性能有影响,但将图片放大一倍不会使性能减半,也不会使其明显变慢。这意味着您在 Minecraft 中已经体验到了速度缓慢,因此小幅增加图片尺寸的小影响会让游戏变得非常慢。
最后的测试是为了看看 VRAM 消耗和性能之间是否存在关系,但我发现两者之间没有关系。嗯,也就是说,直到你达到最大 VRAM 时,你的性能才会立即变为 0。无论 GPU 跟踪多少信息,都不会明显影响帧速率。我也毫无疑问地证明了,除非你打算做一些荒谬的事情,比如同时玩多个游戏,否则 3 GB 的视频内存在当前一代游戏中是绝对没有意义的;内存是 GPU 上几乎无用的规格,1-1.5 GB 对任何人来说都绰绰有余。
Minecraft 是非常适合这些测试的程序,因为它只有一组纹理,而大型游戏通常可以根据运行的分辨率使用不同大小的纹理,这会引入不同的变量来扭曲测试。作为一款多人游戏,这是另一个好处,因为我能够可靠地渲染近乎重复的图像。Minecraft 足够轻量,可以在 VM 内部运行,这是另一个有用的好处,因此我可以演示极端情况,拥有两个全屏应用程序,并最终能够确定 VirtualBox 的“视频内存”设置是否真正限制了 VM 在其主机 GPU 上可以使用的内存量。
答案2
答案3
我没有读到你的大部分问题,但标题问题的答案是是的,其中“尺寸”指的是“屏幕分辨率”(以像素为单位)。
每个像素都必须以某种方式单独处理……而对于复杂的 3D 渲染程序,由于要应用各种效果,每个像素通常都必须重新计算和重新处理多次:阴影、几何着色器、照明、屏幕空间环境光遮蔽、剔除、抗锯齿等等。这些操作中的每一个都必须有效地查看大量像素(或者实际上是屏幕上的每个像素)并修改其颜色元素(无论是红/绿/蓝还是其他排列)。
屏幕上的像素数量增加二次地如果宽度和高度分量对称增加。因此,使用简单的数字(这些不是常用的实际分辨率):如果您有 500x500 的屏幕,并且升级到 1000x1000 的屏幕,那么您的像素数量不只是增加了一倍——您拥有的像素数量与原来相同,乘以四。因此 500 * 500(乘法)是 250,000;1000*1000 是 1,000,000。如果我们将其推向逻辑极限,并查看分辨率,例如,哦,我不知道,32000x24000,我真的不知道是否有任何现有的图形硬件可以在如此高的分辨率下以可观的帧速率播放现代游戏。这些数字看起来并不大,但是当你将 32000 乘以 24000 时,你会遇到很多复杂性,并且需要处理大量数据。数量巨大!
显示器的物理尺寸并不重要。屏幕分辨率(像素数)直接地影响性能,因为更多数据(更多像素)意味着每个渲染阶段需要进行更多处理。
答案4
尺寸本身并不如果您使用较低的分辨率(例如 800x600)来比较两个不同的显示器,则不会有任何影响。但是,屏幕分辨率会影响:
当使用更高的分辨率(例如 1366x768)时,这意味着每个渲染帧将具有 1366*768 = 1049088 个像素,而不是您的视频卡必须“创建”才能发送到显示器的 800*600 = 480000 个像素。按照这个简单的例子,我可以告诉你(理论上)如果使用 1366x768 分辨率,您的性能将下降约 45%。