JVM + Linux + Intel的超线程=

时间:2011-11-26 14:09:45

标签: java linux multithreading jvm hyperthreading

我注意到JVM线程由于某些原因在Linux下作为进程运行(如果我错了,请纠正我)。此外,英特尔的超线程仅为属于同一进程的两个线程提供了额外的并行化。

这是否意味着单个多管理JVM程序从Linux下的超线程中获利,因为它的线程不是来自CPU的线程“观点”?

2 个答案:

答案 0 :(得分:11)

Linux中的调度程序不会区分进程和线程。根据{{​​3}}系统调用的定义,流程可以共享一系列资源。通常使用的线程和进程只是常用配方的名称。

如果您将线程视为JVM中的进程,那么这只是命名法的混合。通过通常的定义,如果进程共享一个虚拟地址空间,那么它们就是进程中的“线程”。

无论使用何种术语,所有硬件调度都将受益于超线程。同样公平地说,超线程不允许您并行运行更多线程:它使上下文切换更快,从而使进程有更多的运行时间。

答案 1 :(得分:1)

“JVM线程在Linux下作为进程运行” - 不能以LWP(轻量级进程)运行。

Java线程在内部实现为本机线程,即LWP(在Linux中),您可以使用ps -eLf查看它们。虽然本机线程和java线程之间的映射很困难。唯一可以轻松映射的线程是主线程,因为它的id与进程ID相同。

JVM肯定会从HT中获利。
来自HT in java的文章:

  

SMT承诺显着增加Java的服务器端   通过更充分地利用现有处理器周期来实现性能   多线程应用程序。