Как я могу получить образцы при запуске go с включенным pkg / profile?

В моем основном блоке есть следующее:

func main() {
    defer profile.Start().Stop()

    fmt.Println("running version", version, "built on", date)
    fmt.Println()
    cmd.Execute()

    time.Sleep(2 * time.Second)
}

где cmd - подкоманда кобры. Я делаю сборку, а затем запускаю двоичный файл. Я вижу, что он генерирует файл pprof:

2018/09/13 18:43:26 profile: cpu profiling enabled, /tmp/profile705487093/cpu.pprof
... output deleted ...
2018/09/13 18:43:31 profile: cpu profiling disabled, /tmp/profile705487093/cpu.pprof

Затем я пытаюсь его проанализировать, используя:

go tool pprof /root/code/debug/evented /tmp/profile705487093/cpu.pprof

Но когда открывается pprof, я вижу следующее:

File: evented
Type: cpu
Time: Sep 13, 2018 at 6:43pm (UTC)
Duration: 5.49s, Total samples = 0

В случае, если это поможет, я запускаю go version go1.11 linux/amd64 на Ubuntu 16.04.5 LTS. Не уверен, имеет ли это значение, но я пытаюсь проверить вывод pprof на капле DigitalOcean.

Что-то я делаю не так? Спасибо!

Это сообщение в блоге Go подробно описывает, как использовать pprof: blog.golang.org/profiling-go-programs

Adrian 13.09.2018 22:40

Спасибо, но это бесполезно.

Geo 13.09.2018 23:16
0
2
265
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Немного просмотрев комментарии к профилю pkg, мне удалось получить несколько образцов, выполнив следующие действия:

runtime.SetCPUProfileRate(5000)

перед звонком на линию defer profile.Start().Stop().

Это не должно быть так, значение hz по умолчанию - 100, которое должно фактически получать образцы, чем то, что вы установили.

nilsocket 13.09.2018 23:38

со значением по умолчанию 100 у меня 0, как на моем Mac, так и в цифровом океане

Geo 14.09.2018 07:21

Другие вопросы по теме