1. 程式人生 > >多核處理器&類UNIX系統 -> 之多程序和多執行緒效能比較

多核處理器&類UNIX系統 -> 之多程序和多執行緒效能比較

網路上有很多討論關於在*NIX系統在SMP環境下到底是應該用多執行緒還是多程序, 到底哪一個有更好的效能,  比如有很多人認為考慮到linux使用1-1執行緒模型(對核心來說, 執行緒就是一個程序)並且系統已經為程序處理做了很多優化,效率提升, 所以在liunx SMP環境下, 多程序和多執行緒幾乎有做一些的效能, 加上多執行緒得考慮locking,更加容易導致問題. 有人認為無論是建立還是切換, 執行緒肯定是要cheaper一些, 所以如果追求效能的話應該儘量使用多執行緒.   

觀點很多,從各個角度,很難說有絕對的真理, 以下的link是IBM團隊分別在多核的Solaris 10系統和多核的 Red Hat Enterprise Linux 5.4系統上做的一系列不同場景的比較, 非常詳細, 當你需要考慮在你的多核環境中使用何種方式時, 可以從以下分析中獲得一些資料和啟發.

An Old Question on New Platforms:

Threads vs. Processes: Which is better to achievehigher performance?

– Each process has own virtual memory space

#Using processes provides better inter-process isolation

– Threads in one process shares a virtual memory space

#Multi-thread processing is better for performance due toits memory efficiency (smaller footprint)ƒ 

Is this answer still valid on today’s processors withmultiple cores and multiple SMT threads in a core?

Check the answer below form IBM analysis.

相關推薦

處理器&UNIX系統 -> 程序執行效能比較

網路上有很多討論關於在*NIX系統在SMP環境下到底是應該用多執行緒還是多程序, 到底哪一個有更好的效能,  比如有很多人認為考慮到linux使用1-1執行緒模型(對核心來說, 執行緒就是一個程序)並且系統已經為程序處理做了很多優化,效率提升, 所以在liunx SMP環

C++ 併發程式設計互斥鎖條件變數的效能比較

介紹 本文以最簡單生產者消費者模型,通過執行程式,觀察該程序的cpu使用率,來對比使用互斥鎖 和 互斥鎖+條件變數的效能比較。 本例子的生產者消費者模型,1個生產者,5個消費者。 生產者執行緒往佇列裡放入資料,5個消費者執行緒從佇列取資料,取資料前需要判斷一下佇列中是否有資料,這個佇列是全域性佇列,是執行緒間

[py]你真的了解處理器嗎? 了解線程

註意 董事會 fusion 整體 用戶 繼續 高速 多核處理器 真的 你真的了解多核處理器嗎? 1.雙核≠雙性能 多核不一定會使你的手機或電腦速度更快,但它將提高你的PC的整體性能,這是一個有所不同的細微的技術特色。多核處理器的性能提升並不是簡單CPU核心的倍數,因為受到

[轉帖]AMD、英特爾為何爭相走向膠水處理器?真相在此

AMD、英特爾為何爭相走向膠水多核處理器?真相在此 膠水多核到底好不好?這個事不是簡單一句話能說明的,今天的超能課堂裡我們就來聊聊MCM膠水多核技術的過去及未來。 作者:孟憲瑞來源: 超能網|2018-11-21 15:25  收藏

DVFS及處理器功耗優化技術詳解

    概述         降低嵌入式系統功耗有多種方法,其中動態電源管理(DPM)和動態電壓頻率調整技術(DVFS)是降低系統功耗的兩種關鍵技術。其中動態電源管理主要依據裝置工作負載的變化切換器工作狀態以達到系統功耗最小化。本篇部落格則主要從DVFS技術做詳細的介紹。DV

Linux 的 Spinlock 在 MIPS 處理器中的設計與實現

引言 隨著科技的發展,尤其是在嵌入式領域,高效能、低功耗的處理器成為眾多廠商追逐的目標,但是由於技術和工藝的瓶頸,試圖在單核處理器上達到這樣的目標變得越發困難,於是人們提出了多核處理器的概念。多核處理器的核心思想是一個處理器中包含若干個核(或執行緒),所有核(或執行緒)之間共享 IO、Cache、記憶體等資

spinlock在處理器上的效能比較

#define _GNU_SOURCE#include <sched.h>#include <stdio.h>#include <pthread.h>#include <unistd.h>#include <stdlib.h>#includ

MySQL利用處理器

在工作中可能遇到這樣的情況,隨著業務的增長,使用者量也在逐漸增長,終究有一天,一到高峰期,資料庫伺服器CPU利用率直飈100%。 最簡單的做法就是直接提升硬體效能,簡單粗暴,直接有效。 假如我們最開始的伺服器CPU核數是4,然後我們覺得4個有點扛不住,那就直

作業系統與處理器

這篇文章解答了我心中的疑問,那就是作業系統會自動排程cpu資源來處理多程序,多執行緒的併發。      早在上世紀90年代末,就有眾多業界人士呼籲用CMP(單晶片多處理器)技術來替代複雜性較高的單執行緒CPU。IBM、惠普、Sun等高階伺服器廠商,更是相繼推出了多核伺服器CPU。不過,由於伺服器價格高、應

處理器處理器的區別

最近遇到了一個讓人很是疑惑的問題,然後寫出來供大家解疑: 多個處理器&多核處理器? 多個處理器:多個單核處理器,就是說電腦和處理器有多個,但是這個電腦的處理器是單核的; 多核處理器:單個多核處理器,也就是說電腦有一個處理器,但是這個處理器是多核的;      

MySQL利用處理器 innodb_read_io_threads

在工作中可能遇到這樣的情況,隨著業務的增長,使用者量也在逐漸增長,終究有一天,一到高峰期,資料庫伺服器CPU利用率直飈100%。最簡單的做法就是直接提升硬體效能,簡單粗暴,直接有效。假如我們最開始的伺服器CPU核數是4,然後我們覺得4個有點扛不住,那就直接給他搞16個核。這下

ARM處理器啟動過程分析

說明: 該流程圖按照程式碼執行時間順序劃分為4部分: 1.     Bootloader在圖片上半部,最先啟動; 2.     Kernel在圖片下半部,由bootloader引導啟動; 3.CPU0執行流程在圖片左半部,bootloader程式碼會進行判斷,先行啟

異構處理器開發嵌入式應用入門

By Toradex Raul Rosetto Mu?oz 1). 簡介 每天都有新的異構多核處理器/片上系統 SoC 面市。在 SoC 上整合微控制器和外設控制核正變得越來越普遍,看看最新發布的 NXP? :i.MX 6SoloX、i.MX7 和即將面世的 i.MX 8。

執行處理器 SMP 分析

首先分析執行緒的優勢: 1、提高程式的併發性(執行緒級並行,而非指令級並行); 2、一個程序內的所有執行緒共享所有資源; 3、切換執行緒的代價下; 4、互動式程式可以通過多執行緒方式改善響應時間。 多執行緒實現的方式: 1、程式採用多執行緒設計方案; 2、多核處理器為單一的

HBase概念學習(八)開發一個twitter系統表設計

至少 創建用戶 列表 ase wke long 少包 mali 。。 這邊文章先將可能的需求分析一下,設計出HBase表,下一步再開始編寫client代碼。 TwiBase系統 1、背景 為了加深HBase基本概念的學習,參考HBase實戰這本書實際動手做了這個樣

Java基礎學習筆記八 Java基礎語法接口

java cas 發現 過程 類類型 結果 覆寫 實例 new 接口 接口概念 接口是功能的集合,同樣可看做是一種數據類型,是比抽象類更為抽象的”類”。接口只描述所應該具備的方法,並沒有具體實現,具體的實現由接口的實現類(相當於接口的子類)來完成

unix系統軟件升級小技巧

span roo -m -s 升級版 mave 系統 技巧 最新 在安裝完軟件之後,在同一層目錄生成一個硬鏈接,並把當前軟件的目錄映射到這個鏈接上,後面的操作都只通過這個鏈接去做,以後升級版本的時候,把最新的軟件目錄映射到這個鏈接上就可以了。 如我剛裝的apache-mav

Python——Python中的程序執行

轉載請註明出處:https://blog.csdn.net/l1028386804/article/details/83042246 一、多程序 Python實現對程序的方式主要有兩種,一種方法是使用os模組中的fork方法,另一種方法是使用multiprocessing模組。區別在於:

C# 執行學習系列四取消、超時子執行操作

1、簡介 雖然ThreadPool、Thread能開啟子執行緒將一些任務交給子執行緒去承擔,但是很多時候,因為某種原因,比如子執行緒發生異常、或者子執行緒的業務邏輯不符合我們的預期,那麼這個時候我們必須關閉它,而不是讓它繼續執行,消耗資源.讓CPU不在把時間和資源花在沒有意義的程式碼上.  

C#學習篇基礎回顧(16)----- 程序執行

程序 程序(Process)是Windows系統的一個基本概念。一個應用程式在作業系統中執行被視為一個程序,程序可以包括一個或多個執行緒。 程序之間是相對獨立的,一個程序無法訪問另一個程序的資料(除非使用分散式計算方式),一個程序執行失敗也不會影響另一個程序。 執行緒