看板 C_and_CPP 關於我們 聯絡資訊
恕刪... 在多核心CPU上面跑,不管Process是否具multithread OS是不是會自動配置處理Process的核心 調配空閒出來的核心去做事 ? 例如雙核CPU(a,b),可能會是a->b->a...兩個核心交錯處理同一個Process或Thread 而非其一核心,一直處理同一個Process或Thread : ※ 引述《hoson (林老師賣的冰淇淋)》之銘言: : 1.我目前寫了一個程式 可是都沒有用到thread等多工的概念 : 可以從XP的工作管理員發現 兩顆CPU都有在運作 兩個的計算量是差不多大的 : 然後總共的CPU使用率約八十 : 想請問 是因為OS將我的程式的運算量自動分配到兩個core上嗎? : 推 co1e945:http://en.wikipedia.org/wiki/Affinity_mask 03/17 17:58 : → co1e945:這裡就有在windows上對thread設affinity的範例了.. 03/17 17:58 : → co1e945:他是把t1綁c1,t2綁c2依此類推. 但設affinity通常不見得有 03/17 17:59 : → co1e945:幫助. 因為affinity主要是避免換core時,private cache要跟 03/17 17:59 : → co1e945:著搬的問題,或是如果cache被清掉,miss rate會提高.. 03/17 18:00 : → co1e945:但除非你的的程式都是計算非常少I/O,而且計算的locality高 03/17 18:00 : → co1e945:不然affinity反而可能讓效能變低. 因為本來scheduler就偏 03/17 18:01 : → co1e945:向不把thread搬core跑,但如果有空閒的CPU就會移過去.. 03/17 18:02 : → co1e945:在有I/O的時候,CPU就容易空下來.所以thread大於core數,且 03/17 18:03 : → co1e945:有I/O, affnity反而不好. 03/17 18:03 : → co1e945:對了,thread其實通常大於core數.因為你的系統不是只有你 03/17 18:04 : → co1e945:的這隻程式.. 03/17 18:04 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 111.242.108.108 ※ 編輯: licheer 來自: 111.242.108.108 (10/08 23:59) ※ 編輯: licheer 來自: 111.242.108.108 (10/09 00:00)
chengcti:you got it. 10/09 09:30
licheer:tks 10/30 12:13