Harmonyos بعدی تجزیه و تحلیل عمیق GC همزمان همزمان – خداحافظی از دوران STW

این مقاله با هدف کشف عمیق جزئیات فنی سیستم بعدی Huawei Harmonyos و خلاصه کردن آنها بر اساس شیوه های توسعه واقعی است. این عمدتا به عنوان حامل اشتراک و ارتباطات فناوری مورد استفاده قرار می گیرد و از دست دادن اشتباهات اجتناب ناپذیر است. همه همکاران از ارائه نظرات و سؤالات ارزشمند به منظور پیشرفت مشترک استقبال می کنند. این مقاله محتوای اصلی است و هر نوع چاپ مجدد باید منبع و نویسنده اصلی را نشان دهد.
به عنوان یک توسعه دهنده که در زمینه تنظیم GC مشکلات زیادی را تجربه کرده است ، وقتی دید که Cangjie GC از Harmonyos در مرحله بعدی مکث شده است ، هنوز هم کمتر از 1ms در یک سناریوی ارائه دهنده UI 120Hz مکث شده است. این مقاله در مورد چگونگی این مجموعه از شکستگی های کاملاً همزمان GC در سنتی مجموعه های Garbage انجام می شود.
1. انقلاب در الگوریتم مرتب سازی همزمان
بخش حافظه 1.1 منطقه
Cangjie فضای پشته را به مناطقی با اندازه های مختلف تقسیم می کند و پیکربندی معمولی به شرح زیر است:
| نوع منطقه | اندازه | هدف |
|-|-|-|
| کوچک | 4KB | تخصیص شیء کوچک |
| کوچک | 256kb | شیء متوسط |
| بزرگ | 4MB | شیء بزرگ (تخصیص مستقیم) |
// Memory allocation example
let smallObj = SmallObject() // Assign in Small Region
let largeBuf = ByteBuffer(510241024) // Directly allocate the Large Region
مزایای:
- قادر به بازیافت مناطق مختلف به طور موازی برای بهبود کارآیی بازیافت است.
- از اسکن کل پشته خودداری کنید و سربار غیر ضروری را کاهش دهید.
- پس از آزمایش واقعی در دستگاه های IoT ، توان GC 2.3 برابر افزایش یافته است.
1.2 فناوری تخصیص پرش اشاره گر
GC سنتی باید لیست های پیچیده حافظه را حفظ کند ، در حالی که Cangjie از روش تخصیص نشانگر دست انداز استفاده می کند:
; x86 assembly example
mov eax, [free_ptr] ; Get the current free pointer
add eax, obj_size ; move pointer
cmp eax, region_end ; Check bounds
jb .alloc_ok
یک عمل تخصیص واحد فقط 10 چرخه ساعت طول می کشد ، که 17 برابر سریعتر از سنتی است malloc
بشر
2. مکانیسم اصلی برای اجرای کم تأخیر
2.1 مدل همکاری نقطه امنیتی
طراحی نقطه ایمنی Cangjie بسیار خوب است:
- در هنگام تدوین ، پاسگاه را وارد کنید:
func foo() {
// Automatic insertion of the method entrance to check the safety point
while condition {
// Loop back to side insertion check
}
}
- دستگاه حالت مارک سه رنگ:
stateDiagram
[*] --> White
White --> Grey: Mark the start
Grey --> Black: Scan complete
Black --> White: GC cycle ends
در اندازه گیری واقعی در یک دستگاه 8 هسته ای ، تأخیر هماهنگ سازی GC فقط 23μs است.
2.2 بهینه سازی مانع حافظه
Cangjie موانع حافظه را با توجه به ویژگی های مختلف سخت افزاری سفارشی می کند:
| پلتفرم | فرمان مانع | تأخیر (NS) |
|-|-|-|
| armv9 | dmb ish | 45 |
| x86 | mfence | 32 |
| RISC-V | حصار RW ، RW | 68 |
در تراشه های Kirin ، سربار سد از طریق تنظیم مجدد دستورالعمل 30 ٪ بیشتر کاهش می یابد.
3. نوع ارزش GC Adaptation Challenge
3.1 نمونه طرح حافظه ترکیبی
struct Point { var x, y: Float } // Value type
class Line {
var start: Point // Inline value type
var end: Point
var style: LineStyle // Reference type
}
GC نیاز به درمان ویژه دارد:
- پرش
Point
زمینه هنگام اسکنLine
شیء. - اما دامنه حافظه از
Point
لازم است - نگه داشتن
Point
حافظه پیوسته هنگام حرکتLine
بشر
3.2 داده های مقایسه عملکرد
سناریو | نوع مرجع خالص GC | نوع مخلوط GC | افزایش بیش از حد |
---|---|---|---|
مرحله برچسب | 120ms | 145ms | 21 ٪ |
مرحله مرتب سازی | 80ms | 110ms | 38 ٪ |
زمان مکث کلی | 15M | 18M | 20 ٪ |
اگرچه سربار GCS هیبریدی افزایش یافته است ، مزایای عملکرد انواع ارزش قابل توجه است (مانند ماژول رایانه هندسی ما تا 4 بار سرعت می یابد) ، بنابراین این ارزش آن را دارد.
مشاوره تنظیم: در سناریوهای توزیع شده ، توصیه می شود اشیاء مشترک در دستگاه ها را به عنوان علامت گذاری کنید @SharedImmutable
، به طوری که GC اسکن این اشیاء را رد می کند. این حرکت در سیستم های رندر دستگاه متقابل ما 40 درصد کاهش می یابد.