Android-এর পারফর্ম্যান্স বুস্ট করা: কার্নেলের জন্য AutoFDO চালু করা হচ্ছে
৪ মিনিট লাগবে
আমরা Android LLVM টুলচেন টিম। আমাদের অন্যতম প্রধান অগ্রাধিকার হল LLVM ইকোসিস্টেমে অপ্টিমাইজেশন টেকনিকের মাধ্যমে Android-এর পারফর্ম্যান্স উন্নত করা। Android-কে আরও দ্রুত, মসৃণ ও দক্ষ করে তোলার জন্য আমরা ক্রমাগত উপায় খুঁজে চলেছি। আমাদের অপ্টিমাইজেশন সংক্রান্ত বেশিরভাগ কাজ ইউজারস্পেসে হলেও, কার্নেলই হল সিস্টেমের প্রাণ। আজ, আমরা আনন্দের সাথে শেয়ার করছি যে, ব্যবহারকারীদের জন্য উল্লেখযোগ্য পারফর্ম্যান্স বুস্ট প্রদান করতে আমরা কীভাবে Android কার্নেলে অটোমেটিক ফিডব্যাক-ডিরেক্টেড অপ্টিমাইজেশন (AutoFDO) নিয়ে আসছি।
AutoFDO কী?
স্ট্যান্ডার্ড সফ্টওয়্যার বিল্ডের সময়, কম্পাইলার হাজার হাজার ছোট ছোট সিদ্ধান্ত নেয়, যেমন কোনও ফাংশন ইনলাইন করা হবে কিনা এবং স্ট্যাটিক কোড হিন্টের উপর ভিত্তি করে কোনও কন্ডিশনের কোন ব্রাঞ্চ নেওয়া হতে পারে।এইসব হিউরিস্টিক উপযোগী হলেও, বাস্তব জীবনে ফোন ব্যবহারের সময় কোড এক্সিকিউশন সম্পর্কে এগুলি সবসময় সঠিক অনুমান করতে পারে না।
AutoFDO, কম্পাইলারকে গাইড করার জন্য বাস্তব জীবনের এক্সিকিউশন প্যাটার্ন ব্যবহার করে এটি পরিবর্তন করে। এই প্যাটার্নগুলি আসল ব্যবহারের সময় কোড দ্বারা নেওয়া সবচেয়ে সাধারণ নির্দেশাবলী কার্যকর করার পথগুলিকে উপস্থাপন করে, যা CPU-এর ব্রাঞ্চিং ইতিহাস রেকর্ড করে ক্যাপচার করা হয়। এই ডেটা ফ্লিট ডিভাইস থেকে সংগ্রহ করা যেতে পারে, কার্নেলের জন্য আমরা এটি ল্যাব এনভায়রনমেন্টে সিন্থেসাইজ করি, যেমন সবচেয়ে জনপ্রিয় ১০০টি অ্যাপ চালানো। এই ডেটা ক্যাপচার করার জন্য আমরা স্যাম্পলিং প্রোফাইলার ব্যবহার করি, যা কোডের কোন অংশ 'হট' (ঘন ঘন ব্যবহার করা হয়) এবং কোন অংশ 'কোল্ড' তা শনাক্ত করে। আমরা যখন এইসব প্রোফাইল সহ কার্নেল আবার তৈরি করি, তখন কম্পাইলার প্রকৃত Android ওয়ার্কলোড অনুযায়ী আরও স্মার্ট অপ্টিমাইজেশন সংক্রান্ত সিদ্ধান্ত নিতে পারে।
এই অপ্টিমাইজেশনের প্রভাব বুঝতে, এইসব মূল তথ্য বিবেচনা করুন:
- Android-এ, কার্নেল সিপিইউ (CPU) টাইমের প্রায় ৪০% ব্যবহার করে।
- আমরা ইতিমধ্যেই ইউজারস্পেসে নেটিভ এক্সিকিউটেবল এবং লাইব্রেরি অপ্টিমাইজ করতে AutoFDO ব্যবহার করছি, যার ফলে কোল্ড অ্যাপ লঞ্চে প্রায় ৪% উন্নতি এবং বুট টাইম ১% কমেছে।
বাস্তব-জগতের পারফর্ম্যান্স জয়
আমরা কন্ট্রোল করা ল্যাব এনভায়রনমেন্ট থেকে প্রোফাইল ব্যবহার করে Android-এর মূল মেট্রিক জুড়ে উল্লেখযোগ্য উন্নতি দেখেছি। অ্যাপ ক্রল ও লঞ্চ করার মাধ্যমে এইসব প্রোফাইল সংগ্রহ করা হয়েছে এবং ৬.১, ৬.৬ ও ৬.১২ কার্নেল জুড়ে Pixel ডিভাইসে পরিমাপ করা হয়েছে।
সবচেয়ে উল্লেখযোগ্য উন্নতি নিচে তালিকাভুক্ত করা হয়েছে। এইসব কার্নেল ভার্সনের জন্য AutoFDO প্রোফাইলের বিবরণ android16-6.12 এবং android15-6.6 কার্নেলের জন্য সংশ্লিষ্ট Android কার্নেল রিপোজিটরিতে পাওয়া যাবে।
এগুলি শুধু তাত্ত্বিক সংখ্যা নয়। এর ফলে, ব্যবহারকারী আরও দ্রুত ইন্টারফেস, দ্রুত অ্যাপ পরিবর্তন, ব্যাটারির আয়ু বৃদ্ধি এবং সামগ্রিকভাবে আরও রেসপন্সিভ ডিভাইস ব্যবহারের সুবিধা পান।
কীভাবে এটি কাজ করে: পাইপলাইন
আমাদের ডিপ্লয়মেন্ট স্ট্র্যাটেজিতে একটি অত্যাধুনিক পাইপলাইন অন্তর্ভুক্ত থাকে যাতে প্রোফাইল প্রাসঙ্গিক থাকে এবং পারফর্ম্যান্স স্থিতিশীল থাকে।
ধাপ ১: প্রোফাইল সংগ্রহ
ইউজারস্পেস বাইনারি প্রোফাইল করার জন্য আমরা ইন্টার্নাল টেস্ট ফ্লিটের উপর নির্ভর করলেও, জেনেরিক কার্নেল ইমেজ (GKI)-এর জন্য আমরা কন্ট্রোল করা ল্যাব এনভায়রনমেন্টে শিফট করেছি। ডিভাইস রিলিজ সাইকেল থেকে প্রোফাইলিং ডিকাপল করলে, ডিপ্লয় করা কার্নেল ভার্সন নির্বিশেষে নমনীয়, তাৎক্ষণিক আপডেট করা যায়। গুরুত্বপূর্ণভাবে, পরীক্ষাগুলি নিশ্চিত করে যে এই ল্যাব-ভিত্তিক ডেটা বাস্তব-জগতের ফ্লিট থেকে প্রাপ্ত পারফর্ম্যান্সের সাথে তুলনীয় পারফর্ম্যান্স প্রদান করে।
- টুল ও এনভায়রনমেন্ট: আমরা লেটেস্ট কার্নেল ইমেজ সহ টেস্ট ডিভাইস ফ্ল্যাশ করি এবং নির্দেশ কার্যকর করার স্ট্রিম ক্যাপচার করতে simpleperf ব্যবহার করি। এই প্রসেস ব্রাঞ্চিং ইতিহাস রেকর্ড করতে হার্ডওয়্যার ক্ষমতার উপর নির্ভর করে, বিশেষত Pixel ডিভাইসে ARM Embedded Trace Extension (ETE) এবং ARM Trace Buffer Extension (TRBE) ব্যবহার করে।
- ওয়ার্কলোড: আমরা Android অ্যাপ কম্প্যাটিবিলিটি টেস্ট স্যুট (C-Suite) থেকে সেরা ১০০টি সবচেয়ে জনপ্রিয় অ্যাপ ব্যবহার করে একটি প্রতিনিধিত্বমূলক ওয়ার্কলোড তৈরি করি। সবচেয়ে সঠিক ডেটা ক্যাপচার করতে, আমরা এগুলির উপর ফোকাস করি:
- অ্যাপ লঞ্চ করা: সবচেয়ে বেশি দৃশ্যমান ব্যবহারকারীর বিলম্বের জন্য অপ্টিমাইজ করা হচ্ছে
- AI-চালিত অ্যাপ ক্রলিং: ক্রমাগত, পরিবর্তনশীল ব্যবহারকারীর ইন্টার্যাকশন সিমুলেট করা
- সিস্টেম-ওয়াইড মনিটরিং: শুধু ফোরগ্রাউন্ড অ্যাপ অ্যাক্টিভিটিই নয়, তার সাথে ব্যাকগ্রাউন্ডের গুরুত্বপূর্ণ ওয়ার্কলোড এবং ইন্টার-প্রসেস কমিউনিকেশন ক্যাপচার করা
- যাচাইকরণ: এই সিন্থেসাইজ করা ওয়ার্কলোড আমাদের ইন্টার্নাল ফ্লিট থেকে সংগ্রহ করা এক্সিকিউশন প্যাটার্নের সাথে ৮৫% মিল দেখায়।
- টার্গেট করা ডেটা: এই পরীক্ষাগুলি পর্যাপ্ত পরিমাণে পুনরাবৃত্তি করার মাধ্যমে, আমরা হাই-ফিডেলিটি এক্সিকিউশন প্যাটার্ন ক্যাপচার করি যা সবচেয়ে জনপ্রিয় অ্যাপ্লিকেশনগুলির সাথে বাস্তব-জগতের ব্যবহারকারীর ইন্টার্যাকশনকে সঠিকভাবে উপস্থাপন করে। এছাড়াও, এই এক্সটেনসিবল ফ্রেমওয়ার্ক আমাদের কভারেজ আরও বাড়ানোর জন্য অতিরিক্ত ওয়ার্কলোড ও বেঞ্চমার্ক নিরবচ্ছিন্নভাবে ইন্টিগ্রেট করতে সাহায্য করে।
ধাপ ২: প্রোফাইল প্রসেস করা
আমরা প্রসেস না করা ট্রেস ডেটা পোস্ট-প্রসেস করি যাতে এটি পরিষ্কার, কার্যকর এবং কম্পাইলারের জন্য প্রস্তুত থাকে।
- এগ্রিগেশন: আমরা একাধিক টেস্ট রান ও ডিভাইস থেকে পাওয়া ডেটা একত্রিত করে একটি সিস্টেম ভিউতে দেখাই।
- কনভার্সন: আমরা প্রয়োজন অনুযায়ী অবাঞ্ছিত সিম্বল ফিল্টার করে, র' ট্রেস AutoFDO প্রোফাইল ফর্ম্যাটে কনভার্ট করি।
- প্রোফাইল ট্রিম করা: "কোল্ড" ফাংশনের জন্য ডেটা সরাতে আমরা প্রোফাইল ট্রিম করি, যাতে সেগুলি স্ট্যান্ডার্ড অপ্টিমাইজেশন ব্যবহার করতে পারে। এটি খুব কম ব্যবহৃত কোডে রিগ্রেশন প্রতিরোধ করে এবং বাইনারি সাইজে অপ্রয়োজনীয় বৃদ্ধি এড়ায়।
ধাপ ৩: প্রোফাইল পরীক্ষা করা
প্রোফাইলগুলি যাতে স্থায়িত্বের ঝুঁকি ছাড়াই ধারাবাহিকভাবে পারফর্ম্যান্স দিতে পারে তা নিশ্চিত করার জন্য ডিপ্লয়মেন্টের আগে কঠোরভাবে যাচাই করা হয়।
- প্রোফাইল ও বাইনারি বিশ্লেষণ: আমরা নতুন প্রোফাইলের কন্টেন্ট (হট ফাংশন, স্যাম্পেল কাউন্ট ও প্রোফাইলের সাইজ সহ) আগের ভার্সনের সাথে কঠোরভাবে তুলনা করি। এছাড়াও, আমরা নতুন কার্নেল ইমেজ তৈরি করতে প্রোফাইল ব্যবহার করি, বাইনারি বিশ্লেষণ করে নিশ্চিত করি যে টেক্সট বিভাগে করা পরিবর্তনগুলি প্রত্যাশার সাথে সামঞ্জস্যপূর্ণ।
- পারফর্ম্যান্স যাচাইকরণ: আমরা নতুন কার্নেল ইমেজে টার্গেট করা বেঞ্চমার্ক রান করি। এটি নিশ্চিত করে যে এটি পূর্ববর্তী বেসলাইন দ্বারা প্রতিষ্ঠিত পারফরম্যান্সের উন্নতি বজায় রাখে।
ক্রমাগত আপডেট
সময়ের সাথে সাথে কোড স্বাভাবিকভাবেই "পরিবর্তিত" হয়, তাই স্ট্যাটিক প্রোফাইল শেষ পর্যন্ত তার কার্যকারিতা হারাবে। সর্বোচ্চ পারফর্ম্যান্স বজায় রাখতে, নিয়মিত আপডেট পেতে আমরা ক্রমাগত পাইপলাইন চালাই:
- নিয়মিত রিফ্রেশ: প্রতিটি GKI রিলিজের আগে আমরা Android কার্নেল LTS ব্রাঞ্চে প্রোফাইল রিফ্রেশ করি, যাতে প্রতিটি বিল্ডে লেটেস্ট প্রোফাইল ডেটা অন্তর্ভুক্ত থাকে।
- ভবিষ্যতে আরও আপডেট: আমরা বর্তমানে
android16-6.12ওandroid15-6.6ব্রাঞ্চে এইসব আপডেট ডেলিভার করছি এবং আসন্নandroid17-6.18-এর মতো নতুন GKI ভার্সনে সহায়তা প্রদান করব।
স্থায়িত্ব নিশ্চিত করা
প্রোফাইল-গাইডেড অপ্টিমাইজেশন সম্পর্কে একটি সাধারণ প্রশ্ন হল, এটি স্থিতিশীলতার ঝুঁকি তৈরি করে কিনা। AutoFDO মূলত সোর্স কোডের লজিক পরিবর্তন করার পরিবর্তে ফাংশন ইনলাইনিং এবং কোড লেআউটের মতো কম্পাইলার হিউরিস্টিককে প্রভাবিত করে, তাই এটি কার্নেলের ফাংশনাল ইন্টিগ্রিটি বজায় রাখে। এই প্রযুক্তিটি ইতিমধ্যেই ব্যাপকভাবে প্রমাণিত হয়েছে, যা বছরের পর বছর ধরে Android প্ল্যাটফর্ম লাইব্রেরি, ChromeOS এবং Google-এর নিজস্ব সার্ভার পরিকাঠামোর জন্য একটি স্ট্যান্ডার্ড অপ্টিমাইজেশন হিসেবে কাজ করছে।
আরও সামঞ্জস্যপূর্ণ আচরণ নিশ্চিত করতে, আমরা "ডিফল্ট হিসেবে রক্ষণশীল" স্ট্র্যাটেজি প্রয়োগ করি। আমাদের হাই-ফিডেলিটি প্রোফাইলে ক্যাপচার করা হয়নি এমন ফাংশন স্ট্যান্ডার্ড কম্পাইলার পদ্ধতি ব্যবহার করে অপ্টিমাইজ করা হয়। এটি নিশ্চিত করে যে কার্নেলের "কোল্ড" বা খুব কমই কার্যকর করা অংশগুলি ঠিক তেমন আচরণ করে যেমনটি তারা একটি স্ট্যান্ডার্ড বিল্ডে করবে, পারফরম্যান্স রিগ্রেশন বা কর্নার কেসে অপ্রত্যাশিত আচরণ প্রতিরোধ করে।
ভবিষ্যতের দিকে তাকানো
আমরা বর্তমানে android16-6.12 এবং android15-6.6 ব্রাঞ্চ জুড়ে AutoFDO ডিপ্লয় করছি। এই প্রাথমিক রোল-আউটের পরে, আমরা এই প্রযুক্তিকে আরও উন্নত করার জন্য বেশ কয়েকটি আশাব্যঞ্জক উপায় দেখতে পাচ্ছি:
- আরও বেশি ডিভাইসে ব্যবহার: আমরা নতুন GKI কার্নেল ভার্সন এবং বর্তমান
aarch64-এর বাইরে অতিরিক্ত বিল্ড টার্গেটে AutoFDO প্রোফাইল ডিপ্লয় করার জন্য উন্মুখ হয়ে আছি। - GKI মডিউল অপ্টিমাইজেশন: বর্তমানে, আমাদের অপ্টিমাইজেশন মূল কার্নেল বাইনারির (
vmlinux) উপর ফোকাস করে। GKI মডিউলে AutoFDO প্রসারিত করলে কার্নেল সাবসিস্টেমের একটি বড় অংশে পারফর্ম্যান্সের সুবিধা পাওয়া যেতে পারে। - ভেন্ডর মডিউল সাপোর্ট: আমরা ড্রাইভার ডেভেলপমেন্ট কিট (DDK) ব্যবহার করে তৈরি করা ভেন্ডর মডিউলের জন্য AutoFDO-কে সাপোর্ট করতেও আগ্রহী। আমাদের বিল্ড সিস্টেম (Kleaf) এবং প্রোফাইলিং টুলে (simpleperf) আগে থেকেই সহায়তা উপলভ্য থাকায়, এটি ভেন্ডরদের তাদের নির্দিষ্ট হার্ডওয়্যার ড্রাইভারগুলিতে একই অপ্টিমাইজেশন কৌশল প্রয়োগ করতে দেয়।
- আরও বেশি প্রোফাইল কভারেজ: আরও বেশি ক্রিটিকাল ইউজার জার্নি (CUJ) থেকে প্রোফাইল সংগ্রহ করে সেগুলি অপ্টিমাইজ করার সম্ভাবনা রয়েছে।
Android কার্নেলে AutoFDO নিয়ে আসার মাধ্যমে, আমরা নিশ্চিত করছি যে OS-এর মূল ভিত্তিটি আপনার প্রতিদিন ডিভাইস ব্যবহার করার পদ্ধতির জন্য অপ্টিমাইজ করা হয়েছে।
-
প্রোডাক্ট সংক্রান্ত খবরআজ, Android Dev Summit-এ, আমরা অনেক টুল এবং API-এর ব্যাপক উপলভ্যতা ঘোষণা করছি যা প্রতিদিনের ঘর্ষণ দূর করতে এবং আপনাকে দুর্দান্ত Android অ্যাপ তৈরি করার জন্য আরও নমনীয়তা দেওয়ার জন্য ডিজাইন করা হয়েছে।
Matthew McCullough • ৪ মিনিট লাগবে -
প্রোডাক্ট সংক্রান্ত খবরAndroid Studio Rabbit 2 এখন স্টেবল এবং প্রোডাকশনে ব্যবহারের জন্য রেডি। এই রিলিজে আপনার ডেভেলপমেন্ট উন্নত করার জন্য গুরুত্বপূর্ণ ফিচার অন্তর্ভুক্ত করা হয়েছে, যেমন Bring Your Own Agent, নতুন XR এমুলেটর ফিচার, LeakCanary আপডেট, নতুন এজেন্ট স্কিল ম্যানেজার টুল, AI কোড রিভিউ এবং আরও অনেক কিছু।
Matthew Warner • ৩ মিনিট রিডিং -
প্রোডাক্ট সংক্রান্ত খবরযেসব অ্যাপ আসন্ন Android রিলিজকে টার্গেট করে, সেগুলি WRITE_CONTACTS অনুমতি সহ পরিচিতিতে সরাসরি লিখতে পারবে না।
Roxanna Aliabadi Walker • ৬ মিনিট রিডিং
আপনার ইনবক্সে প্রতি সপ্তাহে Android ডেভেলপমেন্ট সংক্রান্ত লেটেস্ট ইনসাইট পান।