2012-02-18 87 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