我的服务器中有两个物理CPU。我看到他们都有8个虚拟处理器与他们相关联。我有一些疑问。
发布于 2012-01-31 17:36:21
如何找到与进程Id相关联的作业在哪个CPU上运行?
你只能用JNA或JNI做这件事。
我的工作是广泛的CPU,所以它可以同时使用CPU和它们的虚拟处理器,或者它将运行在一个CPU和虚拟处理器上。
如果您只有一个线程,它将只使用一个逻辑线程。如果有更多繁忙的线程,则可以使用更多的逻辑线程(可能是所有CPU)。
如果允许在CPU和它们的虚拟处理器上运行作业,
会导致性能下降,因为它们之间的数据将被超出。
是。
I试图通过使用mpstat找到与CPU利用率相关的信息,其中"wt“颜色给出了”读写操作期间CPU的理想时间“,但这总是获得0的值。
读写延迟是对IO设备的延迟,而不是CPU之间的延迟。
可以建议任何其他命令,通过这些命令我可以监视进程id的CPU利用率。我见过顶部,mpstat。
他们是你能得到的最好的。
用于使用和分析来自procstat的可读形式的统计数据,我能做什么?
假设你使用了一个商业分析器,并且它运行得尽可能高效.
您需要创建微基准测试来查看如何在系统上使用一个或多个线程。这将给你一个如何缩放的想法,如果它不缩放,你必须做进一步的分析来确定为什么。您将无法使用分析工具来确定这一点。
编辑:如果您想要使用线程关联、JNI或JNA的示例,可以尝试https://github.com/peter-lawrey/Java-Thread-Affinity。
注意:它适用于Linux。
https://stackoverflow.com/questions/9084058
复制相似问题