2012-02-18 70 views
1

我對線程有點困惑。如果我有一個文件服務器並且它由N個CPU組成,那麼爲了最大限度地提高服務器性能,最大數量的用戶模式線程應該是多少。其他進程不會干擾線程。那麼我的意見是每個cpu 1個線程就足夠了,因爲如果我們產生更多的話,那麼我們將不得不等待I/O操作完成。如果我們創建更多的線程,那麼我們將浪費資源並且將被阻塞,直到其他線程完成。我不確定我們是否嘗試讀取文件或將文件寫入另一個分區或另一個驅動器,如果我們可以爲此創建一個新線程。你能分享你的意見嗎?最大輸出的最佳線程數

回答

2

CPU吞吐量的最佳線程數與CPU數完全相同,這正是您命名的原因。 (儘管這與超線程帶入圖像中的花式「部分」內核相比變得更加複雜,但基本規則仍然或多或少地成立。)

在現實世界中,如果您在您的任何位置阻止I/O過程,然後有額外的線程可以有效地重疊CPU處理和I/O處理。

+0

我是否必須提及關於同步或異步I/O操作?你能否更詳細地解釋一下我的意思:額外的線程可以幫助重疊CPU處理和I/O處理? – bokarinho 2012-02-18 08:20:38

+1

我的意思是,如果你的代碼對I/O使用任何阻塞操作 - 對內存,對磁盤,對網絡,任何 - 具有比CPU更多的線程將潛在地允許有用的工作在原始線程被阻止時繼續進行 – 2012-02-18 08:22:33