سوال در مورد flame graphs

flame-graphs
performance

#1

سلام
نمیدونم جای درستی این پست رو زدم یا نه

من برای بالا بردن performance روی اپ هایی که با reactJs تولید میشه در حال تحقیق بودم که در مقاله ی زیر

به موردی به نام flame graphs برخوردم و نویسنده اون مقاله تاکید داشت که قبل از خوندن اون flame graphs رو یاد بگیرید . یک ویدیو هم در سایتش بود
یه مقدار نگاه کردم ولی چیزی متوجه نشدم . امیدوارم دوستان اطلاعاتشون رو توی این زمینه ارائه بدن . با تشکر از همه


#2

Flamegraph در مختصات y تعداد فانکشن های فراخوانی شده و x مدت زمانی که طول کشیده را نشون میده
اگر قسمتی از گرف بسیار بلند باشه ولی پهن اصلا نباشه مهم نیست ولی اگر هم بلند و هم پهن باشه اونجا احتمالا منابع داره هدر میره چون خیلی فانکشن فراخوانی میشه و زمان میبره


#3

تشکر از پاسختون .

آیا این روش برای همه برنامه های تحت وب بدون در نظر گرفتن تکنولوژی استفاده شده توی اون بکار میره یا برای برنامه های خاصی هست ؟
بیشتر در چه مواردی میان این روش رو استفاده میکنن ؟

لطفا میکنید چند تا منبع که ساده تر flame graph رو یاد بدن که بشه در عمل ازش استفاده کرد معرفی کنید .


#4

این بیشتر برای تحلیل اثر کد بر cpu بهره گرفته میشه و به درد همه آنالیز ها نمیخوره همه برمیگرده به اینکه چه چیزی میخواهی آنالیز کنی
مثلا برای latency و تجربه کاربر به 99 percentileزمان کامل کردن درخواست نگاه کن و خیلی متریک های دیگه


#5

یعنی برای برنامه ها یا سایت هایی با امکانات بیشتری کاربرد داره ؟ :thinking:
لطف میکنید بیشتر در این مورد مثال بزنید یا منبع ای رو برای اون معرفی کنید

غیر از مواردی که عنوان کردین . آیا موارد دیگه ای وجود داره که بیشتر حائز اهمیت باشه ؟


#6

flamegraph وقتی استفاده میکنی که میخواهی ببینی کجای کد بیشترین منبع استفاده میکنه و طول میکشه
ولی متریک های دیگه برای نشون دادن تجربه کاربر وجود داره مثله گرف request بر ثانیه
یا تعداد در خواست با خطا و…

کتاب Designing Data Intensive Applications برخی ازین متریک هارو توضیح داده
شما همچنین میتونین از ابزارهای آماده برای اینکار استفاده کنید
Zipkin, Prometheus , Grafana برای اینکار ساخته شدن

https://prometheus.io/docs/instrumenting/exporters/


#7

deamon هایی مثل https://github.com/etsy/statsd
میتونی نصب کنی بعد به prometheus یا graphite وصل کنی تا متریک هارو ببینی