Linux 如何使用perf在多处理器计算机中获取每个cpu消息?

Linux 如何使用perf在多处理器计算机中获取每个cpu消息?,linux,multiprocessing,perf,Linux,Multiprocessing,Perf,我的工作是测量多处理器计算机中的每个节点,例如使用perf的4个核。包括缓存未命中、LLC加载、LLC加载未命中、LLC存储、LLC存储未命中等等,我只得到总的统计数据 有办法区分它们吗?根据您的perf版本,您可以使用-a和-C开关的组合 发件人: 演示机只有两个CPU,但我们可以限制为CPU 1 perf stat -B -e cycles:u,instructions:u -a -C 1 sleep 5 Performance counter stats for 'slee

我的工作是测量多处理器计算机中的每个节点,例如使用perf的4个核。包括缓存未命中、LLC加载、LLC加载未命中、LLC存储、LLC存储未命中等等,我只得到总的统计数据


有办法区分它们吗?

根据您的perf版本,您可以使用-a和-C开关的组合

发件人:

演示机只有两个CPU,但我们可以限制为CPU 1

   perf stat -B -e cycles:u,instructions:u -a -C 1 sleep 5

    Performance counter stats for 'sleep 5':

    301,141,166 cycles
    225,595,284 instructions             #      0.749 IPC

    5.002125198  seconds time elapsed
因此,如果您有4个处理器,您可以:

perf stat -B -e cycles:u,instructions:u -a -C 0 sleep 5
perf stat -B -e cycles:u,instructions:u -a -C 1 sleep 5
perf stat -B -e cycles:u,instructions:u -a -C 2 sleep 5
perf stat -B -e cycles:u,instructions:u -a -C 3 sleep 5

是的,但是当我在多个CPU中用一个命令运行我的程序时,我怎么知道每个CPU的消息呢。以您的方式,我只是在CPU1中获取数据。为了澄清我的问题,我想知道的是特定进程的统计数据是基于每个cpu的。那么“perf stat-a-a”和-a“disable cpu count aggregation”如何呢?我得到32个cpu数据,但我只有4个。你怎么看?我认为运行4个perf实例(每个处理器一个实例)和同时运行4个处理器一个实例是不同的情况。哦,我发现我的计算机有32个CPU,对不起~