профилирование golang runtime.systemstack

У меня есть сетевое приложение, написанное на go. бизнес-логика не важна.
Проблема в том, что я изо всех сил пытаюсь использовать все возможности моей машины
и когда я профилирую приложение, большая часть времени уходит на работу во время выполнения. Кажется, что МНОГО времени уходит на runtime.systemstack
Я не понимаю, что это значит и как повысить производительность.
Я добавляю профилирование связанных методов медленного выполнения.
svg-файл


person Amit Shani    schedule 23.07.2016    source источник
comment
какую версию go вы используете?   -  person Rohanil    schedule 22.05.2018


Ответы (1)


Если вы выполняли профилирование процессора (go test -cpuprofile), проблема 10609 упоминала "среда выполнения: профиль процессора бесполезно из-за системного стека" (исправлено здесь, для Go 1.5)

Вы можете получить более интересное представление с недавней трассировкой Go 1.10: см. "Использование новых функций трассировки Go 1.10 для отладки интеграционного теста"

go test -trace trace.out
go tool trace -http=localhost:8080 trace.out

См. пример здесь. Вы будете четко видеть период бездействия для каждого из ваших процессоров.

person VonC    schedule 16.05.2018