Size: a a a

2020 October 27

ML

Maksim Lapshin in ErlangRus
Petr Kozorezov
На тему возможности использвать perf в предстаящем релизе эрланга тема безусловно классная позволяет очень много чего делать, но если раньше с ним не сталкивался, то ботать и ботать. Пока у меня получилось сделать вот такие вот красивые flamegraph'ы.
Если я правильно прочитал, то ядро больше всего жрет?
источник

PK

Petr Kozorezov in ErlangRus
Maksim Lapshin
Если я правильно прочитал, то ядро больше всего жрет?
Это, как я понимаю, ветка записи ответа от ковбой хэндлера в сеть, поэтому именно тут, возможно, действительно ядро больше всего ест, но я уже столько раз натыкался на то, что плохо понимаю эти выводы, что не берусь утверждать точно.
Нужно больше разбираться со всем этим тулингом.
источник

ИИ

Иванов Иванов... in ErlangRus
Petr Kozorezov
Это, как я понимаю, ветка записи ответа от ковбой хэндлера в сеть, поэтому именно тут, возможно, действительно ядро больше всего ест, но я уже столько раз натыкался на то, что плохо понимаю эти выводы, что не берусь утверждать точно.
Нужно больше разбираться со всем этим тулингом.
тут же вызовы вложенные. получается что  последующее входит в предыдущее. или как?
источник

PK

Petr Kozorezov in ErlangRus
Иванов Иванов
тут же вызовы вложенные. получается что  последующее входит в предыдущее. или как?
Да, так. Но действительно получается, что ядро ест больше всего.
источник

ИИ

Иванов Иванов... in ErlangRus
Petr Kozorezov
Да, так. Но действительно получается, что ядро ест больше всего.
ну странно тогда, что больше половинны ядерного времени происходит tcp_rcv + establish - на каждый чих соединения поднимаются? или это без учета частоты вызовов а только длительность?
источник

ИИ

Иванов Иванов... in ErlangRus
короче диаграмма прикольная, но без нормального толкования толку от нее мало
источник

PK

Petr Kozorezov in ErlangRus
Полностью согласен.
источник

PK

Petr Kozorezov in ErlangRus
Просто снять perf'ом трейс элементарно. Самый сок в том, чтобы понять, что в этом трейсе. Это аналогично с другими профайлерами.
источник

PK

Petr Kozorezov in ErlangRus
Я изначально хотел показать, что perf'ом можно профайлить эрланг код, бим и ядро одновременно с цельным колл стеком. И, имхо, это реально круто! Наконец-то, например, можно удобно понять, на что bif'ы тратят время.
источник

PK

Petr Kozorezov in ErlangRus
Например, для меня было открытие, что bif'ы после непосредственно исполнения кода вызывают GC если он нужен. Да, это логично, но, что это работает именно так я не знал.
источник

PK

Petr Kozorezov in ErlangRus
вот ещё интересная, имхо, картинка, poll треда в erts
источник

PK

Petr Kozorezov in ErlangRus
не берусь интропретировать действительно ли в нём больше половины времени ест ядро, но поизучать есть что :)
источник

DF

Denis Fakhrtdinov in ErlangRus
Ну если это холостой поллинг, то почему нет?..
источник

SP

Sergey Prokhorov in ErlangRus
а это разве не epoll?
источник

SP

Sergey Prokhorov in ErlangRus
выглядит так, что мы ждали в epoll, который вернул что "вот сокет готовый для записи" и второй пик это собственно запись
источник

SP

Sergey Prokhorov in ErlangRus
а оно, кстати, ширину показывает как wall-clock time или именно время исполнения на CPU?
источник

SP

Sergey Prokhorov in ErlangRus
то время когда процесс OS не выполняется процессором (ждет прерывания или в очереди планировщика) в ширину полоски входит?
источник

PK

Petr Kozorezov in ErlangRus
Sergey Prokhorov
а оно, кстати, ширину показывает как wall-clock time или именно время исполнения на CPU?
очень хороший вопрос, у меня он уже не раз возникал, но разобраться в этом поленился :)
источник

PK

Petr Kozorezov in ErlangRus
а ещё я часто вижу вот такую конструкцию (не обращайте внимания на разность цветов, это тут ничего не значит), и меня терзают сомнения, что он действительно умеет в стек выстраивать вызовы через сообщения
источник

SP

Sergey Prokhorov in ErlangRus
Petr Kozorezov
а ещё я часто вижу вот такую конструкцию (не обращайте внимания на разность цветов, это тут ничего не значит), и меня терзают сомнения, что он действительно умеет в стек выстраивать вызовы через сообщения
а что здесь не так? Я так понимаю бледно-зелёный это вызывающий процесс, темно залёный - это собственно gen_statem процесс?
источник