ডিভাইস আপডেট করার জন্য super পার্টিশনের সঠিকভাবে সাইজ করা গুরুত্বপূর্ণ। আকার সরাসরি একটি ডিভাইস কতগুলি আপডেট নিতে পারে এবং কতজন ব্যবহারকারী সফলভাবে আপডেটগুলি নিতে পারে তার উপর প্রভাব ফেলে।
বিবেচনা করার জন্য কয়েকটি গুরুত্বপূর্ণ ভেরিয়েবল রয়েছে। প্রথমটি হল ফ্যাক্টরি সাইজ , যা ডিভাইসটি প্রথমবার ফ্ল্যাশ করার সময় সমস্ত গতিশীল পার্টিশনের আকার। দ্বিতীয়টি হল বৃদ্ধির হার , যা ডিভাইসের সম্পূর্ণ আপডেটযোগ্য জীবনে OS আকার বৃদ্ধির শতাংশ।
অতিরিক্তভাবে, ভার্চুয়াল A/B ডিভাইসগুলি আপডেটের সময় /data তে স্থান ব্যবহার করতে পারে এবং super আকার দেওয়ার সময় এটি বিবেচনা করা উচিত। যদি /data তে খুব বেশি স্থানের প্রয়োজন হয়, তবে কিছু ব্যবহারকারী আপডেটটি নিতে অক্ষম (অথবা অনিচ্ছুক) হন। তবে, যদি জানা যায় যে বেশিরভাগ ব্যবহারকারীর কিছু শতাংশ স্থান খালি থাকে, তবে ডিভাইসগুলি সহজেই super থেকে সেই স্থানটি বিয়োগ করতে পারে। অথবা, ডিভাইসগুলি গ্যারান্টি দিতে পারে যে /data কখনই প্রয়োজন হবে না, কেবল super যথেষ্ট বড় করে।
এই ভেরিয়েবলগুলির উপর ভিত্তি করে super পার্টিশন সাইজিং গাইড করার জন্য নীচে কিছু মডেল দেওয়া হল।
/ডেটার উপর নির্ভর করুন
ভার্চুয়াল A/B /data এর আকার বাড়ানোর জন্য super সঙ্কুচিত করার জন্য উৎসাহিত করে। আপডেটের সময় সেই স্থানের কিছু অংশ প্রয়োজন হয়। আপডেটযোগ্যতার উপর প্রভাব বোঝার জন্য, সময়ের সাথে সাথে কত শতাংশ ডিভাইসে সেই পরিমাণ স্থান খালি থাকার সম্ভাবনা রয়েছে তা জানা অপরিহার্য। এই সংখ্যাটি বের করা ডিভাইসের হার্ডওয়্যার এবং ব্যবহারকারীদের ডিভাইসের আচরণের উপর অত্যন্ত নির্ভরশীল। নীচের উদাহরণগুলিতে, এই সংখ্যাটিকে AllowedUserdataUse বলা হয়।
কম্প্রেশন ছাড়াই
কম্প্রেশন ছাড়া, একটি সম্পূর্ণ OTA-এর জন্য OS-এর আকারের প্রায় একই স্ন্যাপশট প্রয়োজন, তাই super : সাইজ করার সময় এটি অবশ্যই বিবেচনায় নেওয়া উচিত।
FinalDessertSize = FactorySize + (FactorySize * ExpectedGrowth) Super = Max(FinalDessertUpdate, FinalDessertSize * 2 - AllowedUserdataUse)
উদাহরণস্বরূপ, একটি ভার্চুয়াল A/B ডিভাইস বিবেচনা করুন যার ফ্যাক্টরি সাইজ ৪ গিগাবাইট, প্রত্যাশিত প্রবৃদ্ধি ৫০%, এবং প্রায় সকল ব্যবহারকারীর ১ গিগাবাইট বিনামূল্যে আছে (অথবা আপডেটের জন্য ১ গিগাবাইট পর্যন্ত জায়গা খালি করতে ইচ্ছুক) এই জ্ঞান সহ। এই ডিভাইসের জন্য, super এইভাবে আকার দেওয়া যেতে পারে:
FinalDessertSize = 4GB + (4GB * 0.5) = 6GB Super = Max(6GB, 6GB * 2 - 1GB) = Max(6GB, 11GB)
সুতরাং, এই ডিভাইসটিতে একটি ১১ জিবি super পার্টিশন থাকা উচিত।
কম্প্রেশন সহ
কম্প্রেশনের সাথে, একটি সম্পূর্ণ OTA-এর জন্য OS এর আকারের প্রায় 70% স্ন্যাপশট প্রয়োজন:
FinalDessertSize = FactorySize + (FactorySize * ExpectedGrowth) FinalOTASnapshotSize = FinalDessertSize * 0.7 Super = Max(FinalDessertUpdate, FinalDessertSize + FinalOTASnapshotSize - AllowedUserdataUse)
উদাহরণস্বরূপ, ভার্চুয়াল A/B কম্প্রেশন সহ কনফিগার করা একটি ডিভাইস বিবেচনা করুন, যার ফ্যাক্টরি আকার 4GB, প্রত্যাশিত বৃদ্ধি 50%, এবং জ্ঞান যে প্রায় সমস্ত ব্যবহারকারীর 1 GB বিনামূল্যে আছে (অথবা একটি আপডেটের জন্য 1 GB পর্যন্ত স্থান খালি করতে ইচ্ছুক)। এই ডিভাইসের জন্য, super আকার এইভাবে করা যেতে পারে:
FinalDessertSize = 4GB + (4GB * 0.5) = 6GB FinalOTASnapshotSize = 6GB * 0.7 = 4.2GB Super = Max(6GB, 6GB + 4.2GB - 1GB) = Max(6GB, 9.2GB) = 9.2GB
সুতরাং, এই ডিভাইসটিতে 9.2 GB super পার্টিশন থাকা উচিত।
/ডেটার উপর নির্ভর না করেই
যদি আপনি এমন OTA চান যার জন্য /data তে কখনও স্ন্যাপশট স্পেসের প্রয়োজন হয় না, তাহলে super সাইজিং করা সহজ।
কম্প্রেশন ছাড়াই
কম্প্রেশন ছাড়া ভার্চুয়াল A/B ডিভাইসের জন্য, অথবা একটি সাধারণ A/B ডিভাইসের জন্য:
FinalDessertSize = FactorySize + (FactorySize * ExpectedGrowth) Super = FinalDessertSize * 2
উদাহরণস্বরূপ, একটি ভার্চুয়াল A/B ডিভাইস বিবেচনা করুন যার ফ্যাক্টরি সাইজ ৪ গিগাবাইট এবং প্রত্যাশিত বৃদ্ধি ৫০%। যাতে এই ডিভাইসটি OTA স্ন্যাপশটের জন্য /data ব্যবহার না করে, তার হিসাবটি এরকম দেখাবে:
FinalDessertSize = 4GB + (4GB * 0.5) = 6GB Super = FinalDessertSize * 2 = 12GB
সুতরাং, এই ডিভাইসটিতে একটি 12 গিগাবাইট super পার্টিশন থাকা উচিত।
কম্প্রেশন সহ
কম্প্রেশন সহ একটি ভার্চুয়াল A/B ডিভাইসের জন্য:
FinalDessertSize = FactorySize + (FactorySize * ExpectedGrowth) FinalOTASnapshotSize = FinalDessertSize * 0.7 Super = FinalDessertSize + FinalOTASnapshotSize
উদাহরণস্বরূপ, একটি ভার্চুয়াল A/B কম্প্রেশন ডিভাইস বিবেচনা করুন যার ফ্যাক্টরি সাইজ 4 GB এবং প্রত্যাশিত বৃদ্ধি 50%। এই ডিভাইসটি OTA স্ন্যাপশটের জন্য কখনই /data ব্যবহার না করে তা নিশ্চিত করার জন্য, এর গণনাটি এরকম দেখাবে:
FinalDessertSize = 4GB + (4GB * 0.5) = 6GB FinalOTASnapshotSize = 6GB * 0.7 = 4.2GB Super = 6GB + 4.2GB = 10.2GB
সুতরাং, এই ডিভাইসটিতে একটি 10.2 GB super পার্টিশন থাকা উচিত।
সতর্কতা
এটা লক্ষ্য করা প্রলুব্ধকর হতে পারে যে যদি ফ্যাক্টরির আকার ৪ জিবি হয় এবং চূড়ান্ত আপডেট ৫ জিবি হয়, তাহলে super ১০ জিবি না করে ৯ জিবি করতে হবে। তবে, যদি প্রথম আপডেট এবং চূড়ান্ত আপডেট উভয়ই ৫ জিবি হয়, তাহলে super স্থান চূড়ান্ত আপডেটের জন্য অপর্যাপ্ত হতে পারে। উপরের সূত্রগুলি ধরে নেয় যে পার্টিশন বৃদ্ধি যেকোনো সময় ঘটতে পারে। চূড়ান্ত আপডেট প্রয়োগের জন্য প্রয়োজনীয় স্থান প্রথম আপডেট প্রয়োগের জন্য প্রয়োজনীয় স্থানের সমান হতে পারে।
মনে রাখবেন যে কম্প্রেশন অনুপাত একটি আনুমানিক। একটি OS ইমেজ তার বিষয়বস্তুর উপর নির্ভর করে ভালো বা খারাপ কম্প্রেশন করতে পারে। যদি EROFS এর মতো কম্প্রেশন করা ফাইল সিস্টেম ব্যবহার করা হয়, তাহলে ভার্চুয়াল A/B থেকে অতিরিক্ত কম্প্রেশনের ফলে হ্রাসকারী রিটার্ন পাওয়া যায়। এই ক্ষেত্রে নির্দেশিকা হিসেবে আনকম্প্রেসড সূত্রগুলির একটি ব্যবহার করা ভালো।
আকার গণনা করুন
পূর্ববর্তী উদাহরণগুলিতে FactorySize এর মান বের করতে, সমস্ত ডায়নামিক পার্টিশনের আকার একসাথে যোগ করুন। AOSP ডায়নামিক পার্টিশনের চিত্রগুলি হল:
-
system.img -
vendor.img -
product.img -
system_ext.img -
vendor_dlkm.img -
system_dlkm.img
অ-বিভাজিত ছবির উপর ভিত্তি করে আকার গণনা করতে ভুলবেন না। অ্যান্ড্রয়েড 12 বা তার আগের ভার্সন তৈরি করার সময়, ছবিগুলি ডিফল্টরূপে বিভাজিত থাকে এবং simg2img ব্যবহার করে বিভাজিত করা যেতে পারে।
একটি OTA প্যাকেজ থেকে পার্টিশনের আকার গণনা করাও সম্ভব। এটি করার ফলে প্রতিটি পার্টিশনের জন্য ভার্চুয়াল A/B স্ন্যাপশটের আকারও অনুমান করা যায়:
python3 system/update_engine/scripts/payload_info.py path/to/ota-package.zip
অথবা, আপনি OTA বিশ্লেষণ টুল ব্যবহার করতে পারেন। এই টুলটি কোনও ফাইল আপলোড করে না এবং স্থানীয়ভাবে OTA প্যাকেজ বিশ্লেষণ করে।
ExpectedGrowth এর মান বের করতে, পূর্বে প্রকাশিত একটি ডিভাইস ব্যবহার করুন। বৃদ্ধি গণনা করতে সবচেয়ে পুরনো এবং সাম্প্রতিক super ইমেজ ব্যবহার করুন।