JavaScript- 动态监测CPU/内存使用情况

26

我正在考虑使用WebGL和相关技术在JavaScript中编写游戏。我想让游戏尽可能智能化,因此我正在研究如何监测CPU/内存使用情况。

例如:

  • 对于高CPU使用率,稍微降低一下图形效果或将计算转移到服务器上
  • 对于高内存使用率,将数据转移到服务器进行存储(以便后续检索)

我想获取Chrome在其任务管理器中提供的数据。我知道如何跟踪FPS,并且这可以带来一些灵活性,但我想获取尽可能多的信息。主要用例是“低功耗”模式,其中尽可能少地利用CPU(适用于笔记本电脑),或当用户浏览论坛等时处于空闲模式。

我知道如何使用剖析器,但我想从JavaScript中访问这些工具。

这可行吗?如果不行,您是否知道是否已经提出了标准化方案?

我愿意使用扩展程序,只要它可以从JavaScript查询,但如果本地功能存在,我想避免使用扩展程序。我正在尝试针对最新版本的Firefox和Chrome,但如果有一个支持这一功能,我可以限制自己只使用一个浏览器。


如果你在谈论优化 CSS 动画的性能方面,以下内容可能会有所帮助: https://dev59.com/-4jca4cB1Zd3GeqPtTiy https://dev59.com/ylkS5IYBdhLWcg3wu4vL#39517917 - V. Rubinetti
2个回答

16

嗯,JavaScript没有直接调用获取这些信息的方法(这将是一个严重的安全问题)。但是这个问题有解决方案,您可以使用worker pools来模拟一个函数在后台运行一些计算以计算CPU使用率,worker pools实际上是JavaScript的线程。

但是,由于您正在构建3D应用程序,我不建议这样做,因为了解当前CPU使用率会不必要地消耗大量CPU资源,就像用冲锋枪杀死苍蝇一样。

然而,我的建议是只关注每秒帧数,因为它们与您的应用程序相关,并且是您需要的确切基准指标。不要担心CPU负载,您的应用程序并不直接依赖于它,特别是如果您拥有双核或四核处理器。您还应该查看您的应用程序GPU使用情况,以及如何在兼容的浏览器上充分利用GPU(最新版本的Chrome使用GPU加速)。

祝你的游戏好运!


2
我刚在英特尔的网站上发现了这个API演示,它也应该会非常吸引你 http://software.intel.com/en-us/articles/intel-cpu-web-api-documentation-and-examples/ - Halim Qarroum
+1 那个英特尔链接很酷!然而,我不同意如果它被限制在每个页面上(它只能看到它的CPU/内存使用情况),那么它将成为一个严重的安全问题。我会把这个问题保持几天,以防其他人有想法。 - beatgammit
该链接中的视频是私有的。 - Rafael Barros
请注意:“Intel Web API是作为浏览器插件实现的”,“Linux和Mac OS的移植正在进行中”https://software.intel.com/en-us/articles/intel-web-api-connector-documentation-and-examples,而该工具似乎已经停止更新。 - Nickolay

0

我们无法从客户端Javascript中检索CPU使用率或RAM,但重要的是刷新率,即每秒刷新的实际帧数。

如果FPS超过24且稳定,则我们感觉不到任何延迟。为了保险起见,最好超过30FPS,以保持一定的余量。这样每个帧刷新留下约40毫秒。

简单来说,以下代码使用requestAnimationFrame计算帧时间刷新,将其转换为每秒钟的数量,并使用{{link1:navigator.sendBeacon()}}将其以JSON格式POST到端点/usermetrics上的服务器。

let t = Date.now();
requestAnimationFrame( () => {
  let fps = Math.round(1000 / (Date.now() - t));
  console.log(fps + "FPS");
  navigator.sendBeacon('/usermetrics', JSON.stringify(fps))
})

从控制台我们可以观察到POST信标。

enter image description here

根据您的应用程序上下文,您可能需要战略性地使用它,基本上在FPS低于30时减少负载。

性能API

另一个例子,循环FPS计数器


1
想要注意,我是授予这些赏金的人。我进行了编辑。它的目的是为了推广我制作的一个工具,用于查看崩溃情况,自10月2日起可用于http://thisbeautiful.w3spaces.com/notbad.htm。当检测到崩溃时,它会打开一个选项卡,请考虑将其视为基督教工具! - Beauty Of Salvation In Christ

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接