【问题标题】:What are llvm_pipe threads?llvm_pipe 线程是什么?
【发布时间】:2021-09-09 21:05:08
【问题描述】:

我正在编写一个使用大量线程的 Rust 应用程序。我注意到 CPU 使用率很高,所以我做了top,然后点击H 来查看线程:

    PID USER      PR  NI    VIRT    RES    SHR S  %CPU  %MEM     TIME+ COMMAND                
         
 247759 root      20   0 3491496 104400  64676 R  32.2   1.0   0:02.98 my_app           
 247785 root      20   0 3491496 104400  64676 S  22.9   1.0   0:01.89 llvmpipe-0             
 247786 root      20   0 3491496 104400  64676 S  21.9   1.0   0:01.71 llvmpipe-1             
 247792 root      20   0 3491496 104400  64676 S  20.9   1.0   0:01.83 llvmpipe-7             
 247789 root      20   0 3491496 104400  64676 S  20.3   1.0   0:01.60 llvmpipe-4             
 247790 root      20   0 3491496 104400  64676 S  20.3   1.0   0:01.64 llvmpipe-5             
 247787 root      20   0 3491496 104400  64676 S  19.9   1.0   0:01.70 llvmpipe-2             
 247788 root      20   0 3491496 104400  64676 S  19.9   1.0   0:01.61 llvmpipe-3    

这些 llvmpipe-n 线程是什么?为什么my_app 会启动它们?他们肯定是来自my_app 吗?

【问题讨论】:

  • 请注意,这个问题可能更适合superuser
  • 什么样的应用程序?你在使用什么库?快速谷歌搜索导致docs.mesa3d.org/drivers/llvmpipe.html
  • @HHK 我正在使用glium,这是一个执行 OpenGL 渲染的 rust crate。另外,我在虚拟机中。你认为 llvm 管道是来自 glium 还是来自 VM?我不明白为什么要在虚拟机之外虚拟化顶点处理,所以我猜是虚拟机

标签: linux multithreading rust process llvm


【解决方案1】:

正如 HHK 链接的那样,llvmpipe 线程来自您的 OpenGL 驱动程序,即 Mesa。

您说您在虚拟机中运行它。 VM 通常不虚拟化 GPU 硬件,因此 Mesa OpenGL 驱动程序正在执行软件渲染。为了获得更好的性能,Mesa 派生线程在 CPU 上进行并行计算。

【讨论】:

    猜你喜欢
    • 2010-11-14
    • 1970-01-01
    • 2021-12-09
    • 2011-07-09
    • 2011-05-31
    • 2011-06-29
    • 1970-01-01
    相关资源
    最近更新 更多