[問題] 多核心CPU不能獨立運行嗎?

看板Linux作者 (gech)時間12年前 (2012/03/24 01:30), 編輯推噓3(3023)
留言26則, 6人參與, 最新討論串1/1
我用的是Intel Q9400 四核心處理器 系統用Ubuntu11.04 我有兩個大的程式(互相獨立),分別跑要各花一天;但是一起跑的話要花兩天以上的時間。 可是這個四個核心不是應該可以獨立運行的嗎? 為什麼一起跑的時候不是花一天的時間,而是比兩倍的時間還長呢? 我想到的可能性 1.memory不夠用,互相牽制。top指令的資訊如下: PR NI VIRT RES SHR S %CPU %MEM TIME+ SWAP COMMAND 20 0 1040m 1.0g 1004 R 100 14.8 42:37.82 6908 task1 20 0 20972 18m 880 R 100 0.3 1:59.37 1712 task2 %MEM加起來不到20%,我也沒有跑甚麼其他程式,所以應該不是memory不夠。 2.context switch太頻繁,浪費時間。可是我想想現代的系統都有很多context switch 應該不是這個原因。 所以我覺得對這個問題很疑惑,希望大家可以來討論一下~ -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 122.116.119.144

03/24 01:47, , 1F
BUS頻寬被吃掉 可能是 CPU<->MEMORY or MEMORY<->HD
03/24 01:47, 1F

03/24 01:48, , 2F
等情況 若你使用一般PC很容易被一項卡
03/24 01:48, 2F

03/24 01:54, , 3F
另外有一種可能:倒楣兩個PROCESS都被fork在同一個核
03/24 01:54, 3F

03/24 02:49, , 4F
chenyen大,有甚麼方法可以check這個可能性嗎?
03/24 02:49, 4F

03/24 02:50, , 5F
top的數據似乎跟這些無關...如果這樣只能換主機了嗎?
03/24 02:50, 5F

03/24 02:50, , 6F
WolfLord大,我用top看常常有兩個cpu的工作很滿
03/24 02:50, 6F

03/24 02:51, , 7F
而且是切來切去的,所以應該不是在同一個核裡吧
03/24 02:51, 7F

03/24 08:54, , 8F
程式是不是把結果寫到資料庫? 可能是卡在輸出結果這邊
03/24 08:54, 8F

03/24 13:15, , 9F
第一個,跑一個程式時,也有可能是四個核心一起處理
03/24 13:15, 9F

03/24 13:16, , 10F
現在變成兩個一起跑,只有兩個核心各處理一個,當然這不準
03/24 13:16, 10F

03/24 13:16, , 11F
第二個,有沒有考慮到disk IO部分?兩個程式一起跑
03/24 13:16, 11F

03/24 13:17, , 12F
disk IO變得比較多,就可能慢下來了
03/24 13:17, 12F

03/24 18:52, , 13F
我從Ubuntu的cpu freq小程式看到的排程情況,程式不會被綁
03/24 18:52, 13F

03/24 18:53, , 14F
在特定的CPU,CPU之間還會照輪,會動用(升至工作頻)第2個CPU
03/24 18:53, 14F

03/24 18:54, , 15F
是必須第一個CPU滿載. 合理推測原po的程式並非 cpu bound
03/24 18:54, 15F

03/24 18:54, , 16F
所以再多顆都不會改善,瓶頸不在CPU這裏
03/24 18:54, 16F

03/24 23:24, , 17F
我看top的wa(iowait)大概都很低,所以應該不是硬碟問題
03/24 23:24, 17F

03/24 23:26, , 18F
可是剛剛top結果發現task1 task2都用35~40%的memory
03/24 23:26, 18F

03/24 23:27, , 19F
task1 task2裡面的步驟都是一樣的
03/24 23:27, 19F

03/24 23:28, , 20F
可能同時一起啟動,有時會剛好一起執行很耗memory的步驟
03/24 23:28, 20F

03/24 23:29, , 21F
我想解決的方式可能是...不要同時開始執行吧
03/24 23:29, 21F

03/24 23:30, , 22F
前後隔個兩三個小時這樣 或是再加記憶體(只是DDR2插滿了)
03/24 23:30, 22F

03/25 11:59, , 23F
如果瓶頸是在memory bandwidth,超過所需之量後,加多memory
03/25 11:59, 23F

03/25 12:00, , 24F
應該也沒用. memory bandwidth 決定於 RAM module與晶片組
03/25 12:00, 24F

03/25 12:00, , 25F
二者之較小值.
03/25 12:00, 25F

03/26 12:39, , 26F
可能還是要用工作站級的主機比較好~~果然還是有差的
03/26 12:39, 26F
文章代碼(AID): #1FRBD5j7 (Linux)