多核心CPU不能獨立運行嗎? - Linux

Table of Contents

我用的是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

應該不是這個原因。


所以我覺得對這個問題很疑惑,希望大家可以來討論一下~

--

All Comments

Quanna avatarQuanna2012-03-24
BUS頻寬被吃掉 可能是 CPU<->MEMORY or MEMORY<->HD
Eden avatarEden2012-03-26
等情況 若你使用一般PC很容易被一項卡
Iris avatarIris2012-03-30
另外有一種可能:倒楣兩個PROCESS都被fork在同一個核
Iris avatarIris2012-04-03
chenyen大,有甚麼方法可以check這個可能性嗎?
Jacky avatarJacky2012-04-05
top的數據似乎跟這些無關...如果這樣只能換主機了嗎?
WolfLord大,我用top看常常有兩個cpu的工作很滿
Leila avatarLeila2012-04-09
而且是切來切去的,所以應該不是在同一個核裡吧
Poppy avatarPoppy2012-04-14
程式是不是把結果寫到資料庫? 可能是卡在輸出結果這邊
Delia avatarDelia2012-04-19
第一個,跑一個程式時,也有可能是四個核心一起處理
Audriana avatarAudriana2012-04-19
現在變成兩個一起跑,只有兩個核心各處理一個,當然這不準
第二個,有沒有考慮到disk IO部分?兩個程式一起跑
Blanche avatarBlanche2012-04-20
disk IO變得比較多,就可能慢下來了
Eartha avatarEartha2012-04-24
我從Ubuntu的cpu freq小程式看到的排程情況,程式不會被綁
Poppy avatarPoppy2012-04-26
在特定的CPU,CPU之間還會照輪,會動用(升至工作頻)第2個CPU
Liam avatarLiam2012-04-28
是必須第一個CPU滿載. 合理推測原po的程式並非 cpu bound
所以再多顆都不會改善,瓶頸不在CPU這裏
Isla avatarIsla2012-05-01
我看top的wa(iowait)大概都很低,所以應該不是硬碟問題
Jacky avatarJacky2012-05-06
可是剛剛top結果發現task1 task2都用35~40%的memory
Madame avatarMadame2012-05-08
task1 task2裡面的步驟都是一樣的
Mason avatarMason2012-05-09
可能同時一起啟動,有時會剛好一起執行很耗memory的步驟
Vanessa avatarVanessa2012-05-12
我想解決的方式可能是...不要同時開始執行吧
Poppy avatarPoppy2012-05-12
前後隔個兩三個小時這樣 或是再加記憶體(只是DDR2插滿了)
Jack avatarJack2012-05-17
如果瓶頸是在memory bandwidth,超過所需之量後,加多memory
Quintina avatarQuintina2012-05-22
應該也沒用. memory bandwidth 決定於 RAM module與晶片組
二者之較小值.
Liam avatarLiam2012-05-22
可能還是要用工作站級的主機比較好~~果然還是有差的