簡體   English   中英

MPP體系結構上的多線程應用程序

[英]Multithread applications on MPP architecture

簡而言之:

在將始終在MPP基礎架構(例如串聯HPNS)(水平可擴展性)中運行的應用程序上添加多線程可擴展性(垂直可擴展性)值得嗎?

現在,讓我更深入:

我已經在很多地方看到使用Java在MPP( 大規模並行處理 )下進行的開發傾向於認為,如果是Java,則可以使用Java提供的所有內容( 您知道,Write可以在任何地方運行! )在多線程庫( 例如線程, AKKA,線程池等 )可以通過使用並行機制提高性能來提供很多幫助。

忘了事實,如果它是MPP,它是水平可伸縮的,這意味着如果您需要更快的應用程序,則必須將其設計為運行該應用程序的多個副本,每個副本都在不同的處理器上運行。

另一方面,我們擁有SMP( 對稱多處理 )基礎架構( 這里有Windows,Linux,UNIX之類的任何環境 ),在這些基礎架構中,您不必擔心,因為可擴展性是垂直的,因此您可以擁有更多它們的執行將分布在操作系統可用的不同內核上的多個線程在這里,我確實同意使用多線程庫 )。

因此,考慮到這一點,我的問題是,是否需要創建一個將執行大量數據並具有大量驗證和其他要求的應用程序,而使用並行性將在很大程度上幫助改善負載時間,但是它必須在MPP環境( 例如Tandem HPNS )下運行。

開發人員是否應該花時間在添加多線程庫上以增加並行性和並發性?

只是一些注意事項:

1)我並不是說SMP更好或者MPP更好,它們只是不同的基礎架構; 我的觀點僅在於在MPP環境中使用多線程庫,這是因為在MPP上使用多線程的應用程序將僅使用服務器可能擁有的N個CPU中的一個CPU。

2)我並不是說MPP服務器不支持多線程庫,您可以在HPNS上運行多線程,但是即使您有20個線程,也沒有真正的並行性,因為一個線程阻塞了另一個線程; 除非您將應用程序分發(正在運行多個副本)在不同的CPU上。

不,我認為在始終以串聯方式運行的應用程序上添加多線程可伸縮性是沒有道理的,因為串聯不提供內核級線程,因此即使您編寫多線程應用程序也不會帶來任何好處。

甚至串聯的HPNS Java也按照Java規范提供多線程,但是其性能無法與linux或任何其他支持內核級線程的OS媲美。 串聯的實際目的是HA可用性,因為其硬件冗余。

暫無
暫無

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

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