عملکرد یکی از معیارهای بسیار مهم برای هر توسعهدهنده امبدد سیستمها و همچنین تیم توسعه است. چه در حال توسعه یک دستگاه با منابع محدود باشید یا یک ماژول با کارایی بالا و یا حتی یک سیستم معمولی؛ هر گونه اتلاف در چرخه پردازش باعث هدر رفت هزینه، زمان و انرژی میشود. بسیاری از امبدد سیستمهای امروزی با RTOS ساخته میشوند، اما تجربه نشان میدهد که بسیاری از توسعهدهندگان بدون ارزیابی عملکرد RTOS به سراغ انتخاب آن میروند که این میتواند مشکلاتی در کارایی و بهینهسازی سیستم به همراه داشته باشد. برای بهینهسازی بهتر، انتخاب RTOS باید با دقت بیشتری انجام شود و عملکرد آن به طور کامل بررسی گردد.
از آنجا که دادههای کمی برای مقایسه سیستمعاملهای بلادرنگ مختلف منتشر شده، جای تعجب نیست که تیمها عملکرد RTOS را در نظر نمیگیرند. ویژگیهای متنوع و گسترده هر RTOS باعث میشوند که مقایسه دقیق و منصفانه میان آنها دشوار باشد. با توجه به اینکه دادههای محدودی در این زمینه موجود است، برای انتخاب درست RTOS باید از معیارهای دقیق و آزمونهای همسان استفاده کرد تا عملکرد واقعی هر سیستمعامل مشخص شود.
در این مطلب، نحوه تست عملکرد سه سیستمعامل بلادرنگ محبوب و متنباز (Zephyr RTOS، FreeRTOS و Eclipse ThreadX) و یک سیستمعامل تجاری (PX5 RTOS) را بررسی خواهیم کرد تا توسعهدهندگان بتوانند بر اساس نیاز خود، بهترین گزینه را انتخاب کنند.
برای مشاهده گزارش کاملی از نتایج تستها، میتوانید گزارش عملکرد RTOS 2024 را از اینجا دانلود کنید. اینجا فقط بر روی نحوه تست کردن سیستمعاملهای بلادرنگ مختلف تمرکز خواهیم کرد.
همانطور که احتمالاً حدس میزنید، همه سیستمعاملهای بلادرنگ (RTOS) یکسان ساخته و طراحی نشدهاند. در واقع هر RTOS با اهداف متفاوتی طراحی میشود. این بدان معناست که RTOS ها قابلیتها و ویژگیهای متفاوتی دارند. هر RTOS نقاط قوت، ضعف، ویژگیها و استاندارد مخصوص به خود را دارد. حال سؤال این است که چگونه میتوان بیطرفانه، این سیستمها را مقایسه کرد.
اولین کاری که باید انجام دهیم این است که بپذیریم همه ویژگیها و عملکردهای یک سیستم عامل بیدرنگ (RTOS) را نمیتوانیم مورد آزمایش قرار دهیم. برای مثال، FreeRTOS یک ویژگی بسیار جالب دارد که به شما این امکان را میدهد هسته سیستم را برای کارهایی که نیاز به مصرف انرژی زیادی ندارند در مود تیکلس (Tickless) ران کنید. اگرچه این ویژگی فوقالعاده است، اما همه سیستمهای عامل بیدرنگ این ویژگی را ندارند، بنابراین مقایسه این ویژگی با دیگر سیستمها دشوار خواهد بود.
به جای تمرکز بر ویژگیهای منحصربهفرد در هر RTOS، باید روی ویژگیهایی تمرکز کنیم که در همه سیستمهای عامل بیدرنگ (RTOS) مشترک هستند که البته این ویژگیها کم هم نیستند. به عنوان مثال، همه RTOSها حداقل یک زمانبند (scheduler)، صف پیامها (message queues)، نشانبر یا سمافور (semaphores)، مدیریت حافظه (memory management) و چند ویژگی دیگر را دارند. این ویژگیها تقریباً مبنای همه RTOSهایی هستند که امروزه وجود دارند؛ بنابراین باید روی این ویژگیها تمرکز کرد. مقایسه این ویژگیها به ما کمک میکند که یک دید کلی نسبت به عملکرد احتمالی ویژگیهای متمایزکننده داشته باشیم.
اگر قصد دارید عملکرد RTOS ها را مقایسه کنید، نیاز به یک بستر آزمایشی خواهید داشت. بستر آزمایشی به شما این امکان را میدهد تا ویژگیهای پایه و استاندارد این سیستمها را به شکل یکسان آزمایش کنید. بر همین اساس از معیارهای Thread Metric که یک مجموعه آزمون از بنیاد Eclipse است، به عنوان ابزار مورد استفاده برای ارزیابی عملکرد RTOSها استفاده خواهیم کرد.
مجموعه Thread Metric شامل هشت تست مختلف است که یکی از آنها تست کالیبراسیون برای اطمینان از شباهت عملکرد پلتفرمها است. به عنوان مثال، اگر یک سیستم عامل بیدرنگ (RTOS) بهدرستی در بستر آزمایشی قرار گیرد، با تنظیمات مشابه و کامپایل شده با کامپایلر GCC، انتظار میرود که آزمون کالیبراسیون نتایجی حدود ۷۰,۰۰۰ واحد برای هر RTOS ارائه دهد. اگر نتیجه کالیبراسیون از مقدار مورد انتظار فاصله داشته باشد، نشاندهنده تفاوت در تنظیمات (مانند کامپایلر یا تنظیمات دیگر) است و نتایج آزمونهای دیگر قابل اعتماد نخواهند بود، به خصوص برای مقایسه مستقیم بین سیستمها.
بر همین اساس پنج ویژگی کلیدی و اساسی که هر RTOS باید داشته باشد را از مجموعه معیارهای Thread Metric انتخاب کردیم. این 5 مورد شامل موارد زیر میشوند:
با توجه به اینکه هر آزمون ۳۰ ثانیه به طول میانجامد و نتیجه بر اساس مقدار شمارش شده محاسبه میشود، میتوان به راحتی عملکرد RTOSها را مقایسه کرد. همچنین، نکته مهم این است که یک RTOS ممکن است در یک آزمون خاص عملکرد عالی داشته باشد، اما در آزمونهای دیگر نتواند به همان خوبی عمل کند. این موضوع نشاندهنده اهمیت بررسی همه جانبه و توجه به عملکرد در زمینههای مختلف است.
شاید فکر کنید که با وجود یک مجموعه معیار، تنها کافی است سیستم عامل بیدرنگ (RTOS) خود را در این مجموعه وارد کنید، چند تست انجام دهید، مقایسه کنید و کار تمام است. متأسفانه، اینگونه نیست. صرف وجود یک مجموعه معیار به تنهایی کافی نیست و باید اطمینان حاصل کنید که هر RTOS بهطور صحیح و مشابه پیکربندی شده تا نتایج واقعی و مقایسهپذیری به دست آید.
زمانی که اندازهگیریهای اولیه را برای زمانبندی غیر انحصاری انجام دادم، به نتایجی دست پیدا کردم که به شرح زیر هستند:
با نگاه به این تصویر، میتوان بهوضوح متوجه شد که PX5 RTOS عملکرد بهتری نسبت به سیستمهای عامل بیدرنگ متنباز (open-source RTOSes) دارد است. در واقع، اگر به سیستمهای متنباز نگاه کنید، به نظر میرسد که Zephyr RTOS عملکرد بسیار ضعیفی دارد. به نظر همه چیز واضح و روشن است، درست است؟ Zephyr RTOS عملکرد خوبی ندارد… یا دارد؟
در تصویر بالا، Zephyr با تنظیمات پیشفرض خود مورد آزمایش قرار گرفته است؛ اما این به چه معناست؟
این یعنی:
میتوانیم درباره این موضوع که آیا فعال بودن این ویژگیها به طور پیشفرض کار درستی هست یا نه بحث کنیم؛ اما آیا سایر سیستم عاملهای بیدرنگ (RTOSها) دیگر این ویژگیها را به طور پیشفرض فعال دارند یا نه؟
خیر! من تغییرات جزئی در RTOSها اعمال کردم. هدف این بود که به گونهای آنها را تنظیم کنیم که این ویژگیها غیرفعال باشند تا پیکربندی همه RTOS به اندازه کافی نزدیک به هم باشد و بتوانیم بهطور دقیق عملکرد آنها را مقایسه کنیم.
برای دستیابی به یک مقایسه منصفانه، مجبور شدم این ویژگیها را در Zephyr RTOS غیرفعال کنم. وقتی این کار را انجام دادم، همانطور که در زیر مشاهده میکنید، نتایج کمی تغییر کرد.
تنها تغییری که رخ داد این بود که عملکرد Zephyr تقریباً سه برابر بهتر شده بود. البته همچنان حدود ۳۰٪ کندتر از PX5 RTOS و ۲۰٪ کندتر از ThreadX عمل میکند، اما اکنون مقایسه عملکردها منطقیتر و قابل اعتمادتر شده است و میتوان نتایج اولیهای از این مقایسه به دست آورد.
مقایسه عملکرد سیستم عاملهای بیدرنگ (RTOSها) کار آسانی نیست. هر RTOS ویژگیها و پیکربندیهای منحصربهفردی دارد که باید آنها را در نظر بگیرید تا به مقایسهای دقیق دست پیدا کنید. وقتی شرایط برابر باشد، میتوانیم عملکرد هر RTOS را بررسی کنیم، آنها را با یکدیگر مقایسه کنیم و نهایتاً به نتایجی در مورد چگونگی تأثیر RTOS بر پروژههای خود برسیم.
هر پروژه نیازها و الزامات خاص خود را دارد و هر RTOS نیز جایگاه خاص خود را دارد. به عنوان یک مهندس، در اختیار داشتن دادهها به ما کمک میکند ویژگیهای عملکردی را درک کنیم و بعد طبق آن تصمیمات صحیحی برای طراحی بگیریم.
منبع : embedded
نویسنده شو !
سیسوگ با افتخار فضایی برای اشتراک گذاری دانش شماست. برای ما مقاله بنویسید.