Ubuntu vs OSX和SSD与HDD的多处理

时间:2013-11-03 21:33:41

标签: python multithreading macos ubuntu

当有许多读写操作时,HDD与SSD设置是否可以降低处理器利用率?

所以我写了一个产生多个进程的程序。在OSX上它运行良好并且使用100%的cpu。用数百个线程重载它很好。在Ubuntu上,它在推送大量线程时冻结。当我将总线程数限制为处理器的最大数量时,Ubuntu机器并没有利用所有的计算能力 - 只有大约50%。我的线程在第一分钟左右开始几乎100%运行,然后突然变得随机,使用波形像利用率图并不总是在同一时间开始。

规格:

OSX,SSD,Intel i7 4核x 2线程,每个= 8个线程

Ubuntu,HDD,3930K Intel i7 6核x 2个线程,每个= 12个线程

1 个答案:

答案 0 :(得分:1)

在硬件级别上,一次只能对设备进行一次操作。如果驱动器正忙,则请求的操作正在排队。它可能正在等待的队列很少,它们在不同的操作系统,硬件甚至驱动程序中都有所不同。有不同的队列管理方法,在软件方面最流行的是fifo(先进先出),但在驱动器方面它可能是NCQ(特殊队列管理,选择最先写入/读取的数据)所有这些队列尺寸有限。如果硬件级别队列已满(例如已填充磁盘高速缓存),则系统将停止请求磁盘访问的应用程序的所有操作。因此,如果您的应用程序正在执行某些磁盘操作,则可能只是在等待磁盘驱动器。

由于SSD技术使整个处理速度更快,因此访问延迟比HDD快10-20倍,因此很可能您的应用程序因为HDD而不使用100%的CPU。