我的一个服务器中有两个物理CPU。我看到他们两个都有8个与之相关的虚拟处理器。我有一些问题。
答案 0 :(得分:3)
如何找到与我的进程ID关联的作业在哪个CPU上运行?
您只能使用JNA或JNI执行此操作。
我的工作是CPU广泛的,所以它可以同时使用CPU及其虚拟处理器,也可以在其中一个CPU和虚拟处理器上运行。
如果您只有一个线程,它将只使用一个逻辑线程。如果你有更多繁忙的线程,它可以使用更多的逻辑线程(可能是你所有的CPU)
如果允许作业在两个CPU及其虚拟处理器上运行,可能导致性能下降,因为数据将在它们之间进行。
是
我试图通过使用mpstat找到与CPU利用率相关的信息,其中“wt”coloumn给出“读/写操作期间CPU的理想时间”但总是取0值。
读/写延迟是IO设备,而不是CPU之间。
你能否建议任何其他命令来监控我的进程ID的CPU利用率。我见过top,mpstat。
他们是你能得到的最好的。
使用和分析来自procstat的可读形式的统计数据我该怎么办?
假设您使用过商业分析器,它的运行效率与您的运行效率相同......
您需要创建微基准测试,以了解如何在系统上运行一个或多个线程。这将使您了解如何进行缩放,如果不进行缩放,则必须进行进一步分析以确定原因。您将无法使用分析工具确定这一点。
编辑:如果您想了解如何使用线程关联,JNI或JNA的示例,您可以尝试https://github.com/peter-lawrey/Java-Thread-Affinity
注意:它适用于Linux。