【问题标题】:How to use OpenGL to monitor GPU usage in Java?如何使用 OpenGL 监控 Java 中的 GPU 使用情况?
【发布时间】:2019-04-08 22:23:57
【问题描述】:

我希望监控硬件的超时使用情况,并且遇到了 OpenGL,因为很多人都说这是一个可能的解决方案。

我正在努力寻找如何使用 OpenGL 获取 GPU 信息的示例或资源。

可以用Java完成吗?怎么做?

或者有其他选择吗?

【问题讨论】:

  • 你要检索什么样的信息?
  • 内存和正在使用的内存
  • 恐怕您需要寻找 OpenGL 扩展才能实现这一目标(因此每个 GPU 供应商都应该为您提供)。它看起来不像 OpenGL API 的开箱即用功能。
  • JOGL - monitor GPU memory的可能重复

标签: java opengl gpu monitor


【解决方案1】:

OpenGL 主要是与 GPU 无关的 API,因此它没有关于 GPU 性能特征的准确信息,也没有提供某些东西的温度。另一方面,您可以使用glGetString 函数检索一些信息,这些信息可以帮助您更好地了解您正在处理的 GPU 类型。 GL_VENDORGL_RENDERER 值的组合对于平台来说是唯一的。

对于 Java,任何 OpenGL 包装器都应该是合适的,可能JOGL 是最著名的。


编辑。

虽然这并不常见,但不同的供应商都会提供您正在寻找的信息。我只能找到一些关于 GPU 内存的见解,但它给了其他人的希望:http://nasutechtips.blogspot.com/2011/02/how-to-get-gpu-memory-size-and-usage-in.html

【讨论】:

    【解决方案2】:

    如果有人想知道如何使用 GPU,我找到了一种使用 nvidia-smi 命令然后读取输出的方法。仅适用于 nvidia gpus tho,您可以更改命令以获取其他信息,例如内存或任何使用查询命令的信息

    /**
    * Returns current GPU usage percentage for NVIDIA GPU's
    */
    public static int getGPUUsagePercentage() {
        try {
            Process process = Runtime.getRuntime().exec("nvidia-smi --query-gpu=utilization.gpu --format=csv");
            BufferedReader stdInput = new BufferedReader(new InputStreamReader(process.getInputStream()));
            stdInput.readLine();
            return Integer.parseInt(stdInput.readLine().replace(" %", ""));
        } catch (Exception e) {
            e.printStackTrace();
            return -1;
        }
    }
    

    【讨论】:

      猜你喜欢
      • 2019-02-12
      • 2016-07-18
      • 1970-01-01
      • 1970-01-01
      • 2021-01-21
      • 1970-01-01
      • 1970-01-01
      • 2012-03-15
      • 1970-01-01
      相关资源
      最近更新 更多