به گفته hackster
آزمونها نشان میدهند که Docker میتواند عملکرد زمان واقعی را در رباتیک بهبود بخشد و باور رایج که معتقد است این تکنولوژی برای برنامههای زمانبحش خیلی کند است را رد میکند.
اجرای Docker containers فقط برای افرادی نیست که OCD خفیفی دارند و دوست دارند همه چیز در جای خود قرار گیرد. کانتینرسازی به استراتژی ارزشمندی برای تیمهای توسعه نرمافزاری حرفهای تبدیل شده است که قصد دارند از مشکلات پیچیده وابستگیها جلوگیری کنند. با نگه داشتن تمام نیازهای یک برنامه در یک بسته واحد و جدا از بقیه سیستم، دستیابی به عملکرد ثابت برنامه و امنیت بالاتر بسیار راحتتر میشود. اما هر چیزی، از جمله Docker، هزینه دارد، درست است؟
عقل سلیم میگوید که هزینه اصلی این کار، کاهش اندک عملکرد است. به هر حال، هر لایه اضافی نرمافزاری باید هزینه محاسباتی خاصی داشته باشد و این موضوع به طور شهودی منطقی به نظر میرسد. برای اکثر برنامهها، به ویژه در دنیای کسبوکار، امروزه منابع سختافزاری به حد فراوانی در دسترس است. به این ترتیب، کاهش اندک عملکرد معمولاً یک تعویض قابل قبول برای مزایای متعدد کانتینرسازی است. اما در دنیای برنامههای زمان واقعی و رباتیک، هر گونه تاخیر بیش از حد است و به همین دلیل معمولاً از Docker اجتناب میشود.
با این حال، گاهی اوقات اشتباه میکند. آیا نباید قبل از اتخاذ یک تصمیم مهم، از خود بپرسیم که آیا واقعاً استنباطهای ما صحیح است؟ تیم robocore به این سوال پاسخ مثبت داد، بنابراین آنها تحقیقی عمیق در مورد Docker انجام دادند تا دادههای دقیقتری به دست آورده و ببینند آیا واقعاً سرعت را کاهش میدهد یا خیر.
تیم تحقیقاتی روی بارهای کاری رباتیک با نیازهای سختگیرانه زمان واقعی مانند حلقههای کنترل، جریانهای حسگر با نرخ بالا و خطمشیهای درک تصویر تمرکز کرد. با استفاده از Jetson Orin Nano، آنها آزمونهایی را برای مقایسه نصبهای Dockerized ROS 2 با اجرای بومی انجام دادند. این آزمایشها تأخیر، نرخ انتقال و jitter را تحت شرایط مختلف پردازنده اندازهگیری کردند.
آنها متوجه شدند که در حالت بیکار، تفاوتها بین اجرای بومی و کانتینرized قابل توجه نبود. جالبتر اینکه، تحت بار سنگین، Docker اغلب با بومی تطابق داشت یا حتی در مقایسه با بدترین حالت تأخیر، بهتر عمل کرد. این ممکن است غافلگیرکننده به نظر برسد، اما مشخص شد که دلیل این تقویت غیرمنتظره، مربوط به زمانبندی عادلانه لینوکس (CFS) است.
CFS گاهی اوقات میتواند زمان CPU را به طور یکنواختتری به گروه فرآیندهای کانتینر اختصاص دهد که نسبت به فرآیندهای معادل مستقیماً روی میزبان اجرا میشوند و باعث کاهش نوسانات عملکرد میشود.آزمونهای نرخ انتقال نیز نشان داد که تحت Docker هیچ جریمه عملکردی قابل توجهی وجود ندارد. در واقع، تنظیمات کانتینری در بعضی موارد نرخهای هدف پیامی را تحت فشار CPU به طور ثابتتری حفظ کردند.
آزمونهای jitter که برای درک پایداری حلقههای کنترل اهمیت دارند، نشان دادند که عملکرد میانه بسیار نزدیک به عملکرد بومی بود. پیکربندی دقیق مانند افزایش حافظه مشترک، استفاده از IPC میزبان، و اختصاص صریح هستههای CPU میتواند عملکرد کانتینر را بیشتر بهبود بخشد.
نمودار نتایج تحقیقات
نمودار نتایج تحقیقات
وبسایت: http://www.arvidtek.com
www.arvidtek.com | گروه مهندسی آرویدتک | فعال حوزه الکترونیک و مخابرات | فروشگاه تخصصی قطعات الکترونیک
نویسنده شو !
سیسوگ با افتخار فضایی برای اشتراک گذاری دانش شماست. برای ما مقاله بنویسید.