ডিভাইস আপডেট করার জন্য 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 ডিভাইস বিবেচনা করুন যার ফ্যাক্টরির আকার 4 GB, প্রত্যাশিত বৃদ্ধি 50%, এবং জ্ঞান যে প্রায় সমস্ত ব্যবহারকারীর কাছে 1 GB বিনামূল্যে (বা আপডেটের জন্য 1 GB পর্যন্ত স্থান খালি করতে ইচ্ছুক) . এই ডিভাইসের জন্য, super
আকার হতে পারে:
FinalDessertSize = 4GB + (4GB * 0.5) = 6GB Super = Max(6GB, 6GB * 2 - 1GB) = Max(6GB, 11GB)
সুতরাং, এই ডিভাইসে একটি 11 জিবি 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 জিবি super
পার্টিশন থাকা উচিত।
/ডেটার উপর নির্ভর না করে
আপনি যদি OTA গুলি পেতে চান যার জন্য কখনই /data
তে স্ন্যাপশট স্থানের প্রয়োজন হয় না, তাহলে super
সাইজ করা সহজ।
কম্প্রেশন ছাড়া
কম্প্রেশন ছাড়া একটি ভার্চুয়াল A/B ডিভাইস বা একটি সাধারণ A/B ডিভাইসের জন্য:
FinalDessertSize = FactorySize + (FactorySize * ExpectedGrowth) Super = FinalDessertSize * 2
উদাহরণস্বরূপ, একটি ভার্চুয়াল A/B ডিভাইস বিবেচনা করুন যার কারখানার আকার 4 GB এবং প্রত্যাশিত বৃদ্ধি 50%। এই ডিভাইসটি কখনই 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 জিবি super
পার্টিশন থাকা উচিত।
সতর্কতা
এটি পর্যবেক্ষণ করতে প্রলুব্ধ হতে পারে যে যদি কারখানার আকার 4 জিবি হয়, এবং চূড়ান্ত আপডেটটি 5 জিবি হয়, তাহলে super
10 জিবি না হয়ে 9 জিবি হওয়া দরকার। যাইহোক, যদি প্রথম আপডেট এবং চূড়ান্ত আপডেট উভয়ই 5 GB হয়, তাহলে চূড়ান্ত আপডেটের জন্য super
এ স্থান অপর্যাপ্ত হতে পারে। উপরের সূত্রগুলি অনুমান করে যে পার্টিশন বৃদ্ধি যে কোনও সময় ঘটতে পারে। চূড়ান্ত আপডেট প্রয়োগ করার জন্য প্রয়োজনীয় স্থানটি প্রথম আপডেট প্রয়োগ করার জন্য প্রয়োজনীয় স্থানের মতোই হতে পারে।
নোট করুন যে কম্প্রেশন অনুপাত একটি অনুমান। একটি OS চিত্র তার বিষয়বস্তুর উপর নির্ভর করে ভাল বা খারাপ সংকুচিত হতে পারে। যদি EROFS-এর মতো একটি সংকুচিত ফাইল সিস্টেম ব্যবহার করা হয়, ভার্চুয়াল A/B থেকে অতিরিক্ত কম্প্রেশনের আয় কম হয়। এই ক্ষেত্রে এটি একটি নির্দেশিকা হিসাবে uncompressed সূত্রগুলির একটি ব্যবহার করা ভাল।
পরিমাপ
উপরের উদাহরণগুলিতে FinalDessertSize
এর মান খুঁজে পেতে, সমস্ত গতিশীল পার্টিশনের মাপ একসাথে যোগ করুন। 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
ইমেজ ব্যবহার করুন।