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