iT邦幫忙

0

執行緒數量的問題

  • 分享至 

  • xImage

為什麼我看到例如intel E5-2620 v3 執行緒只有12,但我工作管理員去看時執行緒卻有1千以上的號碼,我原本的理解是如果只有12個那號碼應該是1-12在跳怎麼會看到有一千多的號碼呢?

參考一下這篇對執行緒的說明
這間教室有12張桌子,外面有1362個的學生等著考試~

為了輪流進來考試,必須等候叫號進來使用。rock
krarm iT邦好手 1 級 ‧ 2015-10-14 23:01:23 檢舉
這個問題要解釋清楚
大概要懂

1. 作業系統
2. 計算機結構與組織
3. 程式設計
4. 晶圓設計效率
5. Intel的商業策略

講完大概半場鐵人賽(15 day)了!

因為發問題目的觀念偏離很大,所以很難拉回來解釋清楚!
我自己的觀念不見得完全正確
而且自己很多觀念都是硬把教科書背下來,後來自己慢慢腦補,

所以回答只能稍微點一下...
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中
0
frank98xp
iT邦新手 4 級 ‧ 2015-10-13 16:31:38
最佳解答

原po指的應該是這個
工作管理員->處理程序頁籤

原po看到「執行緒」欄位,以為這個是cpu規格中寫的「執行緒數量 12」
直覺認為應該只會有1~12,不可能超過

可以排除弄混PID/工作序列的可能

接下來,查了一下工作管理員欄位的說明
http://windows.microsoft.com/zh-TW/windows7/What-do-the-Task-Manager-memory-columns-mean?7ecde800
其中有一段
執行緒 處理程序中執行的執行緒數量。

所以原po看到的應該是該「程序」(程式/服務/軟體)所使用的「執行緒」數量
而這些「執行緒」要等作業系統分配去執行

例如,我自己寫一隻程式,要吃到50個執行緒,
不管在本機/其他電腦上,工作管理員看到的都會是50

至於作業系統怎麼分配資源讓這50個執行緒跑完,又是另一個故事了

看更多先前的回應...收起先前的回應...

1.終於有人看懂問題了哭哭哭,我看了提他CPU的規格資料確實如您所說有多少Core就有多少執行緒如果有HT的功能規格就直接寫2倍的執行緒,如果沒有HT的功能的CPU執行緒等於Core的數量

2.假設有個程式需要30個執行緒而我用2620 v3的CPU並且開啟HT所以我有12個執行緒,所以可以同時間執行最大12個執行緒,這時會先執行第一批的12個執行緒在執行第二批的12個執行緒最後再執行最後的6個執行緒,執行完後再回到第一批的執行緒,諸如此類不斷的輪迴是這樣嗎?

外獅佬 iT邦大師 1 級 ‧ 2015-10-14 09:03:10 檢舉

xsuper0027提到:
假設有個程式需要30個執行緒而我用2620 v3的CPU並且開啟HT所以我有12個執行緒,所以可以同時間執行最大12個執行緒,這時會先執行第一批的12個執行緒在執行第二批的12個執行緒最後再執行最後的6個執行緒,執行完後再回到第一批的執行緒,諸如此類不斷的輪迴是這樣嗎?

當然不是....

外獅佬 iT邦大師 1 級 ‧ 2015-10-14 09:04:17 檢舉

這樣來說,全部的CPU資源都給你的程式用就好了...那其他服務、背景程式怎麼辦?疑惑
放給它當機嗎?開心

wiselou大哥你到底懂不懂啊你都沒在看別人在說什麼還想要吐槽別人,我說的是假設情況,我當然知道OS有需要用的資源,通常為了釐清一個觀念我們都會用一個最簡易的方式來說明概念,你到底懂不懂啊,你應該跑錯地方了,你應該去吐槽幫幫忙不是IT幫幫忙,或是瞎扯幫幫忙都很適合你

weiclin iT邦高手 4 級 ‧ 2015-10-14 12:14:25 檢舉

但你的假設情況本身就是錯誤的啊...
工作排程是作業系統的工作, 作法也有很多種
wiki 就列了不少 https://en.wikipedia.org/wiki/Scheduling_(computing)

絕對不是你講的那麼單純分成什麼第一批第二批的輪流

外獅佬 iT邦大師 1 級 ‧ 2015-10-14 13:39:47 檢舉

xsuper0027提到:
你應該去吐槽幫幫忙不是IT幫幫忙,或是瞎扯幫幫忙都很適合你

是是是~您說的真好、真棒開心

外獅佬 iT邦大師 1 級 ‧ 2015-10-14 13:47:19 檢舉

除了multi threading之外,不知道您有沒有聽過SMP(Symmetric multiprocessing)這種架構呢?開心

看來你連基本的假設,狀態簡單化的這種基本概念都沒有,我想你還是不要回我這串好了

外獅佬 iT邦大師 1 級 ‧ 2015-10-14 14:19:24 檢舉

你好像搞錯什麼了...我不是來回答的,我是來湊熱鬧的開心

外獅佬是好心才回你的.

至於有沒有聽過SMP不重要,我只是單純對執行緒的概念有興趣而已

不是來回答的那你回文做什麼呢?
第一我標題就已經是"問題"而且你也回有關執行緒的東西雖然不是我想知道的,但你還是回答了
第二只是湊熱鬧有要對別人說吐槽兩個字嗎
第三如果你是湊熱你應該是到"討論""分享"之類的標題去湊熱鬧,連這都搞不清楚

to hitomitanaka:一開始他是好心我同意雖然不是我要的答案,但要吐槽別人我是覺得很糟糕的

外獅佬 iT邦大師 1 級 ‧ 2015-10-14 14:28:31 檢舉

SMP了解一下,會對你的執行續思考有多一層的了解
只是,需要動不動鬼吼鬼叫罵人嗎?
我也沒有說我懂,只是按照你的推測,要求幾個執行續,電腦就該配給你幾個core
這麼說,不是資源都被你吃光了嗎?開心

外獅佬 iT邦大師 1 級 ‧ 2015-10-14 14:32:38 檢舉

xsuper0027提到:
湊熱鬧有要對別人說吐槽

至於這個問題,這兩個字是我說的嗎?疑惑
我可不敢沾超人大的光啊開心

答案不是 你要不要. 懂??
前面kradark已經有說明,請去體會一下.
Hyper-Threading ... 跟 Multi-Threading 根本兩回事.
要學正確的觀念,不要拿一個很懶散把名詞亂縮減的作業系統顯示
出來的訊息,然後自己發想.....

To wiselou大大我看錯人了對不起哭哭哭哭請接受我12萬分的對不起,小弟只是對那些要回答別人卻又要數落別人的人很感冒,一切都是我的錯=="。

外獅佬 iT邦大師 1 級 ‧ 2015-10-14 17:03:00 檢舉

道歉收下了,只是很多事情,可以更冷眼一點,犯不著那麼激動。

話說 發問應該要更低調一點...正面對嗆沒有什麼好處吧...
更何況...資訊界很小的- -......

to diskdupekimo我認同你的看法,但你似乎倒果為因了,我發問是很誠懇地發問,但有些人愛回答又愛批評別人,那又何必回復別人呢,所以我這串你應該是要說"回文要低調一點,正面對嗆沒好處",這裡是幫幫忙不是幫倒忙,如果每個人回文都要吐槽一下只會讓更多人不想來而已

4
wiseguy
iT邦超人 1 級 ‧ 2015-10-12 09:29:27

通常開機時,所執行過的系統程式、系統服務、Driver,就已經佔去多個 ID 了,若尚未到最大值 (通常是 65535),OS 通常不會在一次開機生命期中立即回收再使用,所以只會一直長,直到用完,再從頭循環。
只是循環通常不會從 1 開始。一般比較小的號碼,會保留給系統用。所以你自己的程式,有可能都是 3,4 位數。

看更多先前的回應...收起先前的回應...

圖片是intel E5-2620 v3官方資料,這邊寫的執行緒才12個,怎麼會有65535呢?您說的執行緒跟圖片的執行緒是同一個東西嗎?

wiseguy iT邦超人 1 級 ‧ 2015-10-13 09:21:28 檢舉

本來還想吐槽你自己把 CPU HT 跟 OS thread 中文搞混,不過樓下 weiclin 已經回答了,原文名稱去 google 一下吧。

我很想問我到底那裏提到HT

還有就算我搞混,有啥好吐槽的,就是不太了解才會問,真不懂你是什麼心態

2
yesongow
iT邦大師 1 級 ‧ 2015-10-12 12:56:05

ㄧ個是作業系統的工作序列
另外ㄧ個是硬體核心數量

我記得CPU執行最小單元就是執行緒,當有多個執行緒時則CPU以循序方式執行所有執行緒已達成多工的要求,這地方所講的執行緒是硬體還是作業系統?

6
weiclin
iT邦高手 4 級 ‧ 2015-10-12 18:11:18

你看到的 CPU 執行緒數量指的是 Intel 的超執行緒 (HT, Hyper Thread) 技術
可以參考維基的說明 https://zh.wikipedia.org/wiki/%E8%B6%85%E5%9F%B7%E8%A1%8C%E7%B7%92
也有人將其稱為虛擬核心, 開啟了 HT 功能以後, 工作管理員會看到核心數量變成兩倍 6->12

所以 Intel 這邊的執行緒數量指的是 CPU 同時可以處理的數量
我會建議你把 CPU 那邊的執行緒當成核心數量去看就好了, 比較不會混亂

實際上作業系統可能有超過上千個執行緒正在運作中
而這上千個執行緒就分享這 12 個 CPU 核心, 同一瞬間只會有 12 個執行緒得到 CPU 運算資源
作業系統的執行緒並不會受限於 CPU 的核心數量,不然某些程式動不動就開幾十幾百個執行緒那都不能用了

一般提到執行緒, 都 **不會是** 講 CPU 的 Hyper Thread, 而是講作業系統的執行緒
除非你是在關於電腦硬體的地方看到這個名詞

2
krarm
iT邦好手 1 級 ‧ 2015-10-13 14:26:26

Hyper-threading是行銷名詞
有些解釋是說給消費者聽的

就算CPU只有一個核心
而且沒有支援超執行緒
還是可以執行多執行緒的程式碼

我記得java剛出來
我的電腦是Pentium 75
超純量的單核心處理器
也跑著multi-threading的範例
但不確定同時間到底跑幾個thread

看更多先前的回應...收起先前的回應...

我沒提到HT啊,怎麼後面都在回HT

krarm iT邦好手 1 級 ‧ 2015-10-13 14:36:27 檢舉

xsuper0027提到:
為什麼我看到例如intel E5-2620 v3 執行緒只有12

這件事講的就是HT,

譬如你說「三民主義,吾黨所宗」,雖沒有講到國歌兩個字,
但它的確是國歌!

weiclin iT邦高手 4 級 ‧ 2015-10-13 15:57:14 檢舉

因為你自己貼的 Intel 官方資料上面的執行緒就是指 HT

frank98xp iT邦新手 4 級 ‧ 2015-10-13 16:29:58 檢舉

intel E5-2620 是6核心,照理來說應該只會有6個執行緒
但是因為他有支援HT,因此執行緒可以跑到雙倍,
於是6*2=12執行緒
所以你看到的執行緒12個就是這樣來的

我要發表回答

立即登入回答