সুপার সাইজ কিভাবে

ডিভাইস আপডেট করার জন্য 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 ইমেজ ব্যবহার করুন।