برنامه Spring Boot 3 در AWS Lambda – Part 14 اندازه گیری سرما و گرما با تنظیمات تصویر و حافظه Native GraalVM شروع می شود

مقدمه
در مقاله قسمت 12 از سری خود، نحوه توسعه و استقرار تابع Lambda را با زمان اجرا سفارشی حاوی GraalVM Native Image با GraalVM 22 که از برنامه Spring Cloud Function AWS ایجاد شده است، بررسی کردیم. در قسمت 13 ما عملکرد (شروع سرد و گرم) چنین عملکرد لامبدا را با 1024 مگابایت حافظه اندازهگیری کردیم.
در این مقاله، عملکرد (شروع سرد و گرم) عملکرد لامبدا را با استفاده از این رویکرد با تنظیمات حافظه متفاوت بین 256 و 1536 مگابایت اندازهگیری میکنیم تا مبادله بین هزینه و عملکرد را بررسی کنیم.
اندازه گیری شروع سرد و گرم عملکرد لامبدا با زمان اجرا سفارشی حاوی GraalVM Native Image با تنظیمات حافظه متفاوت
ما دقیقاً از همان آزمایشی که در قسمت 13 این سری مقاله توضیح داده شد، اما با تنظیمات حافظه متفاوت بین 256 و 1536 مگابایت دوباره استفاده خواهیم کرد.
در اینجا نتایج آزمایش آمده است:
زمان شروع سرد (c) و گرم (m) بر حسب میلی ثانیه:
تنظیم حافظه | c p50 | ج p75 | c p90 | c p99 | c p99.9 | حداکثر c | در p50 | w p75 | در p90 | w p99 | w p99.9 | حداکثر w |
---|---|---|---|---|---|---|---|---|---|---|---|---|
256 مگابایت | 1634.84 | 1659.54 | 1691.35 | 1778.03 | 1785.15 | 1785.7 | 6.56 | 6.99 | 7.63 | 18.33 | 372.54 | 857.7 |
512 مگابایت | 1244.44 | 1278.48 | 1313.45 | 1414.28 | 1421.36 | 1421.94 | 6.66 | 7.10 | 7.94 | 25.41 | 181.86 | 414.99 |
768 مگابایت | 1111.53 | 1126.07 | 1139.66 | 1192.08 | 1202.86 | 1203.07 | 6.58 | 6.93 | 7.48 | 12.46 | 115.18 | 278.91 |
1024 مگابایت | 1051.03 | 1061.58 | 1080.86 | 1119.34 | 1149.45 | 1230.28 | 6.45 | 6.77 | 7.33 | 12.50 | 90.92 | 218.17 |
1280 مگابایت | 1022.02 | 1035.39 | 1058.41 | 1065.76 | 1104.64 | 1174.79 | 6.58 | 6.96 | 7.54 | 12.37 | 70.77 | 271.13 |
1536 مگابایت | 1009.83 | 1029.20 | 1048.41 | 1161.32 | 1116.24 | 1148.24 | 6.66 | 7.04 | 7.75 | 12.08 | 63.03 | 215.62 |
نتیجه گیری
در این مقاله، شروع سرمای و گرمای اندازهگیریشده عملکرد لامبدا با استفاده از زمان اجرا سفارشی حاوی تصویر بومی GraalVM با زمان اجرا GraalVM 21 ایجاد شده از اپلیکیشن Spring Cloud Function AWS معرفی شده در قسمت 12 با تنظیمات حافظه متفاوت بین 256 و 1536 مگابایت.
ما موارد مشابهی را مشاهده می کنیم که در مقاله عملکرد لامبدا خالص با GraalVM Native Image توضیح داده شده است – اندازه گیری شروع سرد و گرم با استفاده از تنظیمات مختلف حافظه لامبدا. زمانهای شروع گرم بسیار نزدیک به یکدیگر هستند همچنین با تنظیمات حافظه عملکرد لامبدا پایین مانند 256 یا 512 مگابایت که تفاوت عمدتاً برای صدکهای بالا قابل مشاهده است (>= p90). زمان شروع سرد برای 256 و 512 مگابایت بسیار زیاد است و از 768 مگابایت حافظه شروع می شود و با دادن حافظه بیشتر لامبدا فقط کمی کاهش می یابد، اما برای حافظه بیش از 1024 مگابایت تفاوت محسوسی وجود ندارد. بسته به نیازهای عملکرد خود، میتوانید حافظه کمتری نسبت به 1024 مگابایت به لامبدا بدهید، همانطور که در ابتدا در برنامه نمونه ارائه کردیم و با 768 مگابایت یا حتی کمی حافظه کمتر، نسبت عملکرد قیمت بسیار خوبی داشته باشید.
ما همچنین مشاهدات مشابهی را که در پایان بخش 13 توضیح داده شد به اشتراک گذاشتیم. هنگامی که زمانهای شروع سرد را با زمانهای اندازهگیری شده در مقاله تابع لامبدا خالص با GraalVM Native Image مقایسه میکنیم – اندازهگیری سرد و گرم با استفاده از تنظیمات مختلف حافظه لامبدا (جایی که تابع لامبدا است) شروع میشود. از هیچ چارچوبی مانند Spring Boot استفاده نمی کند)، در هنگام استفاده از تابع لامبدا خالص، مقادیری در حدود 0.5-0.6 ثانیه برای هر صدک کمتر می بینیم. من شخصاً فکر می کنم که نمونه برنامه Spring Boot 3 من دارای پتانسیل بهینه سازی است زیرا نمی توانم تفاوت بزرگی را در زمان شروع سرد بین آنها توضیح دهم. انتظار من (شاید ساده لوحانه) این است که استفاده از فریم ورک Spring Boot 3 با تصویر AWS Lambda و GraalVM Native در مقایسه با استفاده از تابع لامبدا خالص، تنها به 0.2-0.3 زمان شروع سرد بیشتر منجر شود.
در زمان انتشار این مقاله، نسخههای جدیدتر فریمورکها و ابزارهای مورد استفاده در دسترس قرار گرفت (زمان اجرا GraalVM 23، Spring Boot 3.4 و نسخه بهروزرسانی کتابخانه Spring Cloud Function) بنابراین میتوانید نسخه را تغییر دهید و تصویر GraalVM Native را مجدداً کامپایل کنید. دستورالعمل های قسمت 2 سری و دوباره اندازه گیری عملکرد. همچنین به زودی اندازهگیریهای جدید را با این نسخهها منتشر میکنم و برنامه نمونه را ارتقا میدهم.