Ubuntu vs OSX 和 SSD vs HDD 上的多处理



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

所以我写了一个生成多个进程的程序。在OSX上,它运行良好并利用了100%的CPU。用数百个线程重载它效果很好。在 Ubuntu 上,它在推送大量线程时冻结。当我将处理器的总线程数限制为最大值时,Ubuntu 机器并没有利用所有的计算能力——只有大约 50%。我的线程确实在第一分钟左右以接近 100% 的速度运行,然后突然间它变得随机,带有类似波浪的利用率图,并不总是同时开始。

规格:

OSX、固态盘、英特尔 i7 4 核 x 2 个线程,每个 = 8 个线程

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

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

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

最新更新