我用的是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
應該不是這個原因。
所以我覺得對這個問題很疑惑,希望大家可以來討論一下~
--
我有兩個大的程式(互相獨立),分別跑要各花一天;但是一起跑的話要花兩天以上的時間。
可是這個四個核心不是應該可以獨立運行的嗎?
為什麼一起跑的時候不是花一天的時間,而是比兩倍的時間還長呢?
我想到的可能性
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