🔵 عنوان مقاله
How We Saved 70% CPU and 60% Memory in Refinery’s Go Code
🟢 خلاصه مقاله:
**تیم Refinery روی یک سرویس مهم مبتنی بر Go با مصرف بالای CPU و Memory کار میکرد و با پروفایلینگ دقیق (pprof، tracing و بنچمارکهای انتهابهانتها) گلوگاههای واقعی را پیدا کرد. بیشترین صرفهجویی با حذف کارهای غیرضروری بهدست آمد: حذف پردازشها و serialization تکراری، دوری از reflection در مسیرهای داغ، جایگزینی JSON در hot path با دسترسی مستقیم/کدگذاری ساده، پیشاختصاص slices/maps و بازاستفاده از بافرها برای کاهش allocation و فشار GC. در همروندی، بهجای goroutineهای بدونمهار، از worker poolهای محدود و backpressure استفاده شد، کارها batch و دادهها تا حد امکان stream شدند تا قفلزنی و جابهجایی زمینه کاهش یابد. همچنین چند حلقه O(n^2) با ایندکسگذاری مبتنی بر map/set جایگزین شد، نتایج گران با cache کردن تکرار نشد و الگوهای I/O با خواندن/نوشتن تجمیعی بهینه شدند. در نهایت با تکیه بر allocationهای روی stack، استفاده از sync.Pool و روشهای zero-copy، نیاز به GC پایین آمد. نتیجه: حدود 70% کاهش مصرف CPU و 60% کاهش Memory همراه با بهبود تاخیرهای p95/p99. درس کلیدی: بهینهسازی اغلب یعنی کمتر کار کردن—اندازهگیری کن، کار زائد را حذف کن و سادهسازی را تکرار کن.
#Go #Golang #Performance #Profiling #CPU #Memory #Optimization #pprof
🟣لینک مقاله:
https://golangweekly.com/link/176624/web
➖➖➖➖➖➖➖➖
👑 @gopher_academy
How We Saved 70% CPU and 60% Memory in Refinery’s Go Code
🟢 خلاصه مقاله:
**تیم Refinery روی یک سرویس مهم مبتنی بر Go با مصرف بالای CPU و Memory کار میکرد و با پروفایلینگ دقیق (pprof، tracing و بنچمارکهای انتهابهانتها) گلوگاههای واقعی را پیدا کرد. بیشترین صرفهجویی با حذف کارهای غیرضروری بهدست آمد: حذف پردازشها و serialization تکراری، دوری از reflection در مسیرهای داغ، جایگزینی JSON در hot path با دسترسی مستقیم/کدگذاری ساده، پیشاختصاص slices/maps و بازاستفاده از بافرها برای کاهش allocation و فشار GC. در همروندی، بهجای goroutineهای بدونمهار، از worker poolهای محدود و backpressure استفاده شد، کارها batch و دادهها تا حد امکان stream شدند تا قفلزنی و جابهجایی زمینه کاهش یابد. همچنین چند حلقه O(n^2) با ایندکسگذاری مبتنی بر map/set جایگزین شد، نتایج گران با cache کردن تکرار نشد و الگوهای I/O با خواندن/نوشتن تجمیعی بهینه شدند. در نهایت با تکیه بر allocationهای روی stack، استفاده از sync.Pool و روشهای zero-copy، نیاز به GC پایین آمد. نتیجه: حدود 70% کاهش مصرف CPU و 60% کاهش Memory همراه با بهبود تاخیرهای p95/p99. درس کلیدی: بهینهسازی اغلب یعنی کمتر کار کردن—اندازهگیری کن، کار زائد را حذف کن و سادهسازی را تکرار کن.
#Go #Golang #Performance #Profiling #CPU #Memory #Optimization #pprof
🟣لینک مقاله:
https://golangweekly.com/link/176624/web
➖➖➖➖➖➖➖➖
👑 @gopher_academy
Honeycomb
How We Saved 70% of CPU and 60% of Memory in Refinery’s Go Code, No Rust Required.
We've just released Refinery 3. 0 , a performance-focused update which significantly improves Refinery's CPU and memory efficiency.
👍2❤1
🔵 عنوان مقاله
some odd discrepancies when profiling their Go code on macOS.
🟢 خلاصه مقاله:
این مطلب در Golang Weekly به این میپردازد که چرا هنگام پروفایل کردن برنامههای Go روی macOS گاهی نتایج ناسازگار و غافلگیرکننده دیده میشود؛ پروفایلها بین اجراها تغییر میکنند و معمولاً با اعداد بهدستآمده روی Linux یا در CI همخوان نیستند. ریشه مسئله بیشتر به تفاوت ابزارها، رفتار سیستمعامل و ویژگیهای بار کاری برمیگردد: نمونهبرداری pprof ممکن است نقاط داغ کوتاهعمر را نبیند، مدیریت توان و زمانبندی macOS بر نرخ نمونهگیری و زمان اجرای رشتهها اثر میگذارد، و حضور cgo یا کتابخانههای بومی میتواند ردگیری پشته و نمادگذاری را دشوار کند. توصیهها شامل ترکیب pprof با Instruments، اجرای طولانیتر برای پایداری نمونهگیری، کنترل نویز محیطی (مثل ثابت نگهداشتن GOMAXPROCS و اجرای سیستم در شرایط کمبار)، تکرار چندباره اندازهگیری و نهایتاً مقایسه با مقادیری است که روی Linux (در صورت استقرار نهایی) بهدست میآیند. جمعبندی این است که پروفایلهای macOS را راهنمایی جهتدار بدانید و تصمیمهای نهایی کارایی را بر اساس پلتفرم مقصد اتخاذ کنید.
#Go #Golang #macOS #Profiling #Performance #pprof #Instruments #AppleSilicon
🟣لینک مقاله:
https://golangweekly.com/link/176897/web
➖➖➖➖➖➖➖➖
👑 @gopher_academy
some odd discrepancies when profiling their Go code on macOS.
🟢 خلاصه مقاله:
این مطلب در Golang Weekly به این میپردازد که چرا هنگام پروفایل کردن برنامههای Go روی macOS گاهی نتایج ناسازگار و غافلگیرکننده دیده میشود؛ پروفایلها بین اجراها تغییر میکنند و معمولاً با اعداد بهدستآمده روی Linux یا در CI همخوان نیستند. ریشه مسئله بیشتر به تفاوت ابزارها، رفتار سیستمعامل و ویژگیهای بار کاری برمیگردد: نمونهبرداری pprof ممکن است نقاط داغ کوتاهعمر را نبیند، مدیریت توان و زمانبندی macOS بر نرخ نمونهگیری و زمان اجرای رشتهها اثر میگذارد، و حضور cgo یا کتابخانههای بومی میتواند ردگیری پشته و نمادگذاری را دشوار کند. توصیهها شامل ترکیب pprof با Instruments، اجرای طولانیتر برای پایداری نمونهگیری، کنترل نویز محیطی (مثل ثابت نگهداشتن GOMAXPROCS و اجرای سیستم در شرایط کمبار)، تکرار چندباره اندازهگیری و نهایتاً مقایسه با مقادیری است که روی Linux (در صورت استقرار نهایی) بهدست میآیند. جمعبندی این است که پروفایلهای macOS را راهنمایی جهتدار بدانید و تصمیمهای نهایی کارایی را بر اساس پلتفرم مقصد اتخاذ کنید.
#Go #Golang #macOS #Profiling #Performance #pprof #Instruments #AppleSilicon
🟣لینک مقاله:
https://golangweekly.com/link/176897/web
➖➖➖➖➖➖➖➖
👑 @gopher_academy
Dolthub
Go CPU Profiling on MacOS is Broken
Profiling on MacOS gives unexpected and misleading results.