2013-02-05 64 views
0

如何通過使用經過時間(執行任何代碼段所花費的時間)來推導出linux操作系統所具有的處理器數量。我有時鐘滴答執行特定操作。如何做我測量機上從計算linux中處理器內核的數量

+1

一個系統上工作經過的時間?我不這麼認爲。或者我誤解了你的問題。如果你能進一步闡述,這將是有用的。 –

+2

* nproc *命令有什麼問題? – KBart

+0

已用時間可定義爲執行特定數量代碼所花費的時間數 –

回答

2

的內核數量的代碼部分,您可以獲取有關CPU使用

cat /proc/cpuinfo信息(無處理器&沒有核心的等)。

但是,如果您正在嘗試計算執行linux-kernel內部特定代碼所採用的時鐘滴答,您可以試試。

#include <sys/time.h> 

unsigned long ini,end; 
preempt_disable(); 
rdtscl(ini); 
...your code.... 
rdtscl(end); 
preempt_enable(); 
printk("time lapse in cpu clics: %lu\n",(end-ini)); 

瞭解更多詳情http://www.xml.com/ldd/chapter/book/ch06.htmldownload.intel.com/embedded/software/IA/324264.pdf,如果你的代碼是花更多的時間,那麼你也可以有效地使用的jiffies。

併爲用戶空間應用程序,你可以用它給的時間在納秒分辨率或oprofile的各種定時功能(http://oprofile.sourceforge.net/about/)&參考Timer function to provide time in nano seconds using C++

+0

@KBart已用時間是執行任意數量代碼所需的時間。 –

+0

我知道它是什麼,我不知道如何計算基於它的內核數量。附:由於@akp擴大了他的答案,所以反對票被刪除。 – KBart

+0

@akp我評論的第一部分是傑克·韋爾奇的答案,只是忘了添加他的名字。對造成的不便表示歉意。 – KBart

1

我想我們可以做這樣的事情:

寫一些代碼可以執行一些繁重的數學工作,可以並行運行 - 例如尋找素數的天真方法。然後在多個線程中運行,從一開始,然後上升。在某一時刻,計算N個第一素數所需的時間將是,線程數將與(可用的)處理器內核的數量相同。

但它找到的處理器數量非常笨拙的方法,並且它幾乎可以肯定不會有高負載,或在虛擬機上運行的系統,等等,等等

相關問題