স্টোরেজ প্রয়োগ করা

Android 8-এ storaged-এর জন্য সহায়তা যোগ করা হয়েছে, এটি একটি Android নেটিভ ডেমোন যা Android ডিভাইসে স্টোরেজ মেট্রিক্স সংগ্রহ ও প্রকাশ করে।

  • প্রতিদিনের diskstats-এর জন্য, storaged মাঝে মাঝে পার্স করে /sys/block/mmcblk0/stat (eMMC স্টোরেজ ডিভাইস) অথবা /sys/block/sda/stat (নন-eMMC ডিভাইস)।
  • eMMC লাইফটাইমের জন্য, storaged পার্স করে /d/mmc0/mmc0:001/ext_csd (if উপলভ্য)।
  • অ্যাপ I/O সংক্রান্ত সমস্যার জন্য, storaged মাঝে মাঝে ট্রাভার্স করে /proc/uid_io/stats এবং পার্স করা ডেটা বজায় রাখে, যার মধ্যে সব অ্যাপের (শুধু রানিং অ্যাপ নয়) ডেটা অন্তর্ভুক্ত। dumpsys অ্যাপের I/O ব্যবহার সংক্রান্ত তথ্য বাগ রিপোর্টে লগ করতে storaged-কে কল করতে পারে।

Diskstat (স্টল করা diskstats সহ) এবং eMMC তথ্য Android ইভেন্ট লগে লগ করা হয়, যেখানে একটি প্ল্যাটফর্ম চেক-ইন পরিষেবা লগ সংগ্রহ করে।

storaged অপারেশন অটোমেটিক হয় এবং সম্পূর্ণভাবে Android ফ্রেমওয়ার্ক দ্বারা পরিচালিত হয়, তাই আপনাকে কোনও ইমপ্লিমেন্টেশন কাজ করতে হবে না। এই পৃষ্ঠায় storaged-এর ডিজাইন (নতুন ইন্টারফেস সহ) এবং কীভাবে এটি ব্যবহার করে কার্নেল থেকে I/O স্ট্যাটাস পেতে হয় তা বর্ণনা করা হয়েছে।

স্টোরেজ ডিজাইন

অ্যাকাউন্টিং ও অনুমতির ক্ষেত্রে নমনীয়তার জন্য, storaged কার্নেল মডিউল হিসেবে প্রয়োগ করা হয় যা প্রতি-uid I/O তথ্য (স্ট্যান্ডার্ড proc/PID/io ব্যবহার করার পরিবর্তে) ফেরত পাঠায়। প্রতিটি I/O অনুরোধের জন্য কাঁচা I/O ডেটা কার্নেল task_struct-এ স্টোর ও আপডেট করা হয় এবং কার্নেল ট্র্যাক করে যে কখন কোনও প্রসেস বন্ধ হয়ে যায়, যাতে এটি শেষ storaged পোলিং ইভেন্ট থেকে হওয়া I/O ব্যবহার মিস না করে।

ফ্রেমওয়ার্ক যখন uid ফোরগ্রাউন্ড/ব্যাকগ্রাউন্ড সুইচ সম্পর্কে এটিকে বিজ্ঞপ্তি দেয় অথবা storaged ডেমন যখন কোনও রিপোর্টের অনুরোধ করে, শুধুমাত্র তখনই মডিউলটি কাঁচা ডেটা পড়ে এবং প্রসেস করে। সেই সময়, মডিউলটি ফ্রেমওয়ার্ক ও storaged ডেমনের সাথে যোগাযোগ করার জন্য কার্নেল থেকে একটি ফাইল নোড এক্সপোর্ট করে।

storaged /proc/uid_io/stats ইন্টারফেস চালু করে, যা সিস্টেমের প্রতিটি UID-এর জন্য I/O স্ট্যাটিস্টিক্সের একটি তালিকা রিটার্ন করে। ফর্ম্যাটটি হল:

<uid>: <foreground read bytes> <foreground write bytes> <foreground read chars> <foreground write chars> <background read bytes> <background write bytes> <background read chars> <background write chars>
  • রিড/রাইট বাইট হল স্টোরেজ ডিভাইস থেকে I/O ইভেন্ট।
  • read/write chars (বাইট হিসেবেও) হল read/write syscalls-এর মাধ্যমে অনুরোধ করা ডেটা।

কার্নেল থেকে I/O স্ট্যাটাস পাওয়া

কার্নেল থেকে I/O ব্যবহার সংক্রান্ত ডেটা ডাম্প করতে, -u বিকল্পের সাথে storaged কমান্ড ব্যবহার করুন।

কমান্ড: storaged -u

কমান্ড আউটপুট ফর্ম্যাট: name/uid fg_rchar fg_wchar fg_rbytes fg_wbytes bg_rchar bg_wchar bg_rbytes bg_wbytes fg_fsync bg_fsync

মনে রাখবেন: এই আউটপুটটি proc/uid_io/stats-এর আউটপুটের মতো। এর কারণ হল storaged, /proc/uid_io/stats থেকে ডেটা প্রসেস করে এবং নিজস্ব ডেটা তৈরি করে।

আউটপুটের উদাহরণ:

com.google.android.backuptransport  2269  60  0  0  1719845663  143912573  149065728  184180736
com.android.vending  2170  60  0  0  219904796  38693092  174436352  18944000