Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/317.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python Ubuntu与OSX、SSD与HDD上的多处理_Python_Multithreading_Macos_Ubuntu - Fatal编程技术网

Python Ubuntu与OSX、SSD与HDD上的多处理

Python Ubuntu与OSX、SSD与HDD上的多处理,python,multithreading,macos,ubuntu,Python,Multithreading,Macos,Ubuntu,当存在许多读写操作时,HDD vs SSD设置是否可以降低处理器利用率 所以我写了一个程序,可以产生多个进程。在OSX上,它运行良好,并利用了100%的cpu。用数百个线程重载它会很好。在Ubuntu上,当推送大量线程时,它会冻结。当我限制处理器的最大线程总数时,Ubuntu机器并没有利用所有的计算能力——只有大约50%。我的线程确实在第一分钟左右以接近100%的速度运行,然后突然变得随机,出现了一个波浪状的利用率图,它并不总是在同一时间开始 规格: OSX、SSD、英特尔i7 4核x 2线程每

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

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

规格:

OSX、SSD、英特尔i7 4核x 2线程每个=8个线程


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


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

谢谢您的回复。我只想到了一个细节。我的线程确实在第一分钟左右以接近100%的速度运行,然后突然变得随机,出现了一个波浪状的利用率图,它并不总是在同一时间开始。这可能是由磁盘缓存大小引起的。您的应用程序试图每秒写入的数据不超过磁盘的容量。例如,100次操作后,其中99次写入成功,1次保留在缓存中。在另一个100之后,另一个99已经完成,但缓存中还剩下2个。。。过了一段时间,缓存被填满,发生了我上面描述的事情。这确实发生了。我通过将一个文件中读取的相同数据发送到一个变量来测试它,这样我就不必每次都从磁盘读取数据。它在整个过程中以100%的速度平稳运行。我想我会添加一个SSD。。。