簡體   English   中英

JVM + Linux + Intel的超線程=

[英]JVM + Linux + Intel's Hyperthreading =

我注意到JVM線程由於某些原因在Linux下作為進程運行(如果我錯了,請糾正我)。 此外,事實上英特爾的超線程僅為屬於同一進程的兩個線程提供了額外的並行化。

這是否意味着單個多線程JVM程序不會從Linux下的超線程中獲利,因為它的線程不是來自CPU的線程“觀點”?

Linux中的調度程序不會區分進程和線程。 clone系統調用定義的進程可以共享一系列資源。 通常使用的線程和進程只是常用配方的名稱。

如果您將線程視為JVM中的進程,那么這只是命名法的混合。 通過通常的定義,如果進程共享一個虛擬地址空間,那么它們就是進程中的“線程”。

無論使用何種術語,所有硬件調度都將受益於超線程。 同樣完全公平,超線程不允許您並行運行更多線程:它使上下文切換更快,從而為進程提供更多的運行時間。

“JVM線程在Linux下作為進程運行” - 不是它們作為LWP(輕量級進程)運行。

Java線程在內部實現為本機線程,即LWP(在Linux中),您可以使用ps -eLf查看它們。 雖然本機線程和java線程之間的映射很困難。 可以輕松映射的唯一線程是主線程,因為它將具有與進程ID相同的id。

JVM肯定會從HT中獲利。
來自java中關於HT的文章:

SMT承諾通過在多線程應用程序中更充分地利用現有處理器周期來顯着提高Java的服務器端性能。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM