perf record -a: por que não vejo uma amostra por núcleo em cada amostra?

3

Eu tenho alguns antes / depois do traçado do perf e estou tentando entender por que eles têm números de amostras radicalmente diferentes (cerca de 2x) em cada traço. Os traços foram coletados através do mesmo script e, portanto, representam a mesma quantidade de tempo de parede que está sendo analisado. Os traços foram gravados com perf record -ag .

No momento em que os rastreamentos chegam a mim, eles foram executados através do script perf, então eu tenho a saída de texto. Minha primeira pergunta foi como interpretar os campos de cada 'cabeçalho de amostra':

swapper     0 [000] 27324.824397: cycles: 

Em particular, não tenho certeza do que representa [000].

Em segundo lugar, com 12 reportados como nrcpus online / avail, não consigo descobrir por que não vejo 12 pilhas capturadas para cada amostra. Neste exemplo em particular, vejo seis pilhas de permutadores [000], seguidas de seis pilhas de permutadores [001], até que os processos mais interessantes sejam acionados. Eu estou querendo saber se isso é um fator de CPU parada ao contrário de processadores que foram pegos realmente executando o processo ocioso (swapper)? Pelo meu pensamento, dois perfis com -ag na mesma máquina para o mesmo tempo de parede devem ter aproximadamente o mesmo número de amostras, uma vez que todos os núcleos devem ser gravados em cada amostra, independentemente da ocupação do sistema.

Qualquer ajuda para descobrir o que estou perdendo seria muito apreciada!

Obrigado Terry

Estas são as informações completas do cabeçalho, se isso ajudar:

# captured on: Tue Feb 23 06:17:04 2016
# hostname : du76-tip-EC-1
# os release : 3.13.0-66-generic
# perf version : 3.13.11-ckt27
# arch : x86_64
# nrcpus online : 12
# nrcpus avail : 12
# cpudesc : Intel(R) Xeon(R) CPU E5-1650 v2 @ 3.50GHz
# cpuid : GenuineIntel,6,62,4
# total memory : 65813064 kB
# cmdline : /usr/lib/linux-tools-3.13.0-66/perf record -g --output /var/log/cpu_profile/record --all-cpus 
# event : name = cycles, type = 0, config = 0x0, config1 = 0x0, config2 = 0x0, excl_usr = 0, excl_kern = 0, excl_host = 0, excl_gu
est = 1, precise_ip = 0, attr_mmap2 = 0, attr_mmap  = 1, attr_mmap_data = 0
# HEADER_CPU_TOPOLOGY info available, use -I to display
# HEADER_NUMA_TOPOLOGY info available, use -I to display
# pmu mappings: cpu = 4, software = 1, uncore_irp = 24, uncore_pcu = 13, tracepoint = 2, uncore_imc_0 = 16, uncore_imc_1 = 17, unc
ore_imc_2 = 18, uncore_imc_3 = 19, uncore_imc_4 = 20, uncore_imc_5 = 21, uncore_imc_6 = 22, uncore_imc_7 = 23, uncore_qpi_0 = 25, 
uncore_qpi_1 = 26, uncore_qpi_2 = 27, uncore_cbox_0 = 7, uncore_cbox_1 = 8, uncore_cbox_2 = 9, uncore_cbox_3 = 10, uncore_cbox_4 =
 11, uncore_cbox_5 = 12, uncore_r2pcie = 28, uncore_r3qpi_0 = 29, uncore_r3qpi_1 = 30, breakpoint = 5, uncore_ha_0 = 14, uncore_ha
_1 = 15, uncore_ubox = 6
# ========
    
por Terry E. 05.03.2016 / 00:19

1 resposta

2

I can't figure out why I dont' see 12 stacks captured for each sample

É porque o processador

Intel(R) Xeon(R) CPU E5-1650 v2 @ 3.50GHz

tem apenas 6 núcleos físicos capazes de executar 12 threads (Tecnologia Intel Hyper-Threading).

Por favor, publique também detalhes como exatamente você reporta os resultados dos registros. Eu costumava trabalhar apenas com perf-stat , o que dava resultados bastante diretos. Também é importante saber qual programa você executa, se é um programa multi-threading e assim por diante. O desempenho também pode ser afetado pelo Intel Turbo.

    
por 05.03.2016 / 00:33

Tags