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

标签 python multithreading macos ubuntu

关闭。这个问题需要details or clarity .它目前不接受答案。












想改进这个问题?通过 editing this post 添加详细信息并澄清问题.


8年前关闭。







Improve this question




当有许多读写操作时,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 线程

最佳答案

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

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

关于python - Ubuntu vs OSX 和 SSD vs HDD 上的多处理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19758414/

相关文章:

objective-c - NSStatusItem 的自定义 NSView 类中的 NSMenu 未出现在状态栏底部

python - 如何遍历由节点组成的二叉树? (里面有代码)

python - 如何关闭 mongodb python 连接?

c# - 持续运行 BackgroundWorker

java swing线程回调

java - 这个等待通知线程语义的真正目的是什么?

macos - 我刚刚在我的 Mac 终端中输入 x = 'ls' 做了什么?

macos - 由于单声道版本无法启动 Omnisharp

python - 如何将参数传递给 Python 3 中的自定义静态类型提示?

python - 在python中重新排序文件名