>

저에게 퍼포먼스 전후의 트레이스 흔적이 있으며 각 트레이스마다 (약 2 배) 샘플 수가 근본적으로 다른 이유를 이해하려고합니다. 추적은 동일한 스크립트를 통해 수집되었으므로 프로파일 링되는 벽과 동일한 시간을 나타냅니다. 추적은 perf record -ag 로 기록되었습니다. .

트레이스가 나에게 도달 할 때마다 perf 스크립트를 통해 실행되었으므로 텍스트 출력이 있습니다. 첫 번째 질문은 각 '샘플 헤더'의 필드를 해석하는 방법입니다.

swapper     0 [000] 27324.824397: cycles:

특히 [000]이 무엇을 나타내는 지 잘 모르겠습니다.

두 번째로 nrcpus online/avail로 12가보고되었으므로 각 샘플에 대해 12 개의 스택이 캡처되지 않는 이유를 알 수 없습니다. 이 특정 예에서,보다 흥미로운 프로세스가 스핀 업 될 때까지 6 개의 스왑 퍼 스택 [000]과 6 개의 스왑 퍼 스택 [001]이 있습니다. 실제로 유휴 프로세스 (스와 퍼)를 실행하는 데 걸린 CPU와는 반대로 중단 된 CPU의 요인인지 궁금합니다. 내 생각에, 같은 벽 시간 동안 같은 기계에 -ag가있는 두 개의 프로파일은 시스템 사용량에 관계없이 모든 코어가 각 샘플에 기록되어야하기 때문에 거의 같은 수의 샘플을 가져야합니다.

내가 잃어버린 것을 알아내는 데 도움을 주시면 감사하겠습니다!

감사합니다. 테리

도움이되는 경우 전체 헤더 정보는 다음과 같습니다.

# 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
# ========

  • 답변 # 1

    와이즈 비즈

    프로세서 때문입니다

    와이즈 비즈

    12 개의 스레드를 실행할 수있는 물리적 코어는 6 개뿐입니다 (Intel Hyper-Threading Technology).

    레코드 결과를 얼마나 정확하게보고하는지 자세히 게시하십시오. 나는

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

    와만 일했었다. 이 결과는 매우 간단합니다. 또한 멀티 스레딩 프로그램 인 경우 어떤 프로그램을 실행하는지 아는 것이 중요합니다. 성능도 인텔 터보의 영향을받을 수 있습니다.

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

  • 이전 bash - 공백이 아닌 정규 표현식
  • 다음 bash가 쉘 내장 대신 외부`time` 명령을 사용하게하십시오