উপাদান শক্তি পরিমাপ

যখন কম্পোনেন্ট কাঙ্ক্ষিত অবস্থায় থাকে (যেমন চালু, সক্রিয়, স্ক্যানিং) এবং যখন কম্পোনেন্ট বন্ধ থাকে তখন ডিভাইসের দ্বারা টানা বর্তমানের তুলনা করে আপনি পৃথক কম্পোনেন্ট পাওয়ার খরচ নির্ধারণ করতে পারেন। একটি বাহ্যিক পাওয়ার মনিটর, যেমন বেঞ্চ পাওয়ার সাপ্লাই বা বিশেষ ব্যাটারি-মনিটরিং টুল (যেমন মনসুন সলিউশন ইনক। পাওয়ার মনিটর এবং পাওয়ার টুল সফ্টওয়্যার) ব্যবহার করে নামমাত্র ভোল্টেজে ডিভাইসে টানা গড় তাত্ক্ষণিক কারেন্ট পরিমাপ করুন।

নির্মাতারা প্রায়শই একটি পৃথক উপাদান দ্বারা ব্যবহৃত বর্তমান সম্পর্কে তথ্য সরবরাহ করে। অনুশীলনে ডিভাইসের ব্যাটারি থেকে টানা বর্তমানকে সঠিকভাবে উপস্থাপন করলে এই তথ্যটি ব্যবহার করুন। যাইহোক, আপনার ডিভাইস পাওয়ার প্রোফাইলে সেই মানগুলি ব্যবহার করার আগে প্রস্তুতকারকের দ্বারা প্রদত্ত মানগুলি যাচাই করুন৷

বিদ্যুৎ খরচ নিয়ন্ত্রণ করুন

পরিমাপ করার সময়, নিশ্চিত করুন যে ডিভাইসটির কোনও বাহ্যিক চার্জ উত্সের সাথে সংযোগ নেই, যেমন Android ডিবাগ ব্রিজ (adb) চালানোর সময় ব্যবহৃত ডেভেলপমেন্ট হোস্টের সাথে একটি USB সংযোগ। পরীক্ষার অধীনে থাকা ডিভাইসটি হোস্ট থেকে কারেন্ট আঁকতে পারে, এইভাবে ব্যাটারিতে পরিমাপ কমিয়ে দেয়। ইউএসবি অন-দ্য-গো (ওটিজি) সংযোগগুলি এড়িয়ে চলুন, কারণ ওটিজি ডিভাইসটি পরীক্ষার অধীনে ডিভাইস থেকে কারেন্ট আঁকতে পারে।

যে উপাদানটি পরিমাপ করা হচ্ছে তা বাদ দিয়ে, অন্যান্য উপাদানের পরিবর্তনের কারণে ভুল পরিমাপ এড়াতে সিস্টেমটিকে বিদ্যুত খরচের একটি ধ্রুবক স্তরে চালানো উচিত। সিস্টেম ক্রিয়াকলাপ যা শক্তি পরিমাপে অবাঞ্ছিত পরিবর্তনগুলি প্রবর্তন করতে পারে তার মধ্যে রয়েছে:

  • সেলুলার, ওয়াই-ফাই, এবং ব্লুটুথ গ্রহণ, প্রেরণ, বা স্ক্যানিং কার্যকলাপ । সেল রেডিও পাওয়ার পরিমাপ না করার সময়, ডিভাইসটিকে বিমান মোডে সেট করুন এবং উপযুক্ত হিসাবে Wi-Fi বা ব্লুটুথ সক্ষম করুন৷
  • স্ক্রীন অন/অফ । স্ক্রীন চালু থাকা অবস্থায় প্রদর্শিত রং কিছু স্ক্রীন প্রযুক্তিতে পাওয়ার ড্রকে প্রভাবিত করতে পারে। নন-স্ক্রিন উপাদানগুলির জন্য মান পরিমাপ করার সময় স্ক্রীন বন্ধ করুন।
  • সিস্টেম সাসপেন্ড/রিজুমে । একটি স্ক্রীন অফ স্টেট একটি সিস্টেম সাসপেনশন ট্রিগার করতে পারে, ডিভাইসের অংশগুলিকে কম-পাওয়ার বা অফ স্টেটে রেখে। এটি পরিমাপ করা উপাদানটির শক্তি খরচকে প্রভাবিত করতে পারে এবং সিস্টেমটি পর্যায়ক্রমে অ্যালার্ম ইত্যাদি পাঠানোর জন্য পুনরায় শুরু হওয়ার কারণে পাওয়ার রিডিংয়ে বড় বৈচিত্র্য প্রবর্তন করতে পারে। বিস্তারিত জানার জন্য, কন্ট্রোলিং সিস্টেম সাসপেন্ড দেখুন।
  • CPU-গুলি গতি পরিবর্তন করে এবং কম-পাওয়ার শিডিউলার নিষ্ক্রিয় অবস্থায় প্রবেশ/প্রস্থান করে । স্বাভাবিক ক্রিয়াকলাপের সময়, সিস্টেমটি CPU গতি, অনলাইন CPU কোরের সংখ্যা এবং অন্যান্য সিস্টেমের মূল অবস্থা যেমন মেমরি বাসের গতি এবং CPU এবং মেমরির সাথে যুক্ত পাওয়ার রেলের ভোল্টেজগুলিতে ঘন ঘন সমন্বয় করে। পরীক্ষার সময়, এই সমন্বয়গুলি শক্তি পরিমাপকে প্রভাবিত করে:
    • CPU স্পিড স্কেলিং অপারেশন মেমরি বাস এবং অন্যান্য সিস্টেমের মূল উপাদানগুলির ঘড়ি এবং ভোল্টেজ স্কেলিং এর পরিমাণ কমাতে পারে।
    • সময়সূচী কার্যকলাপ কম-পাওয়ার নিষ্ক্রিয় অবস্থায় CPU গুলি ব্যয় করা সময়ের শতাংশকে প্রভাবিত করতে পারে। পরীক্ষার সময় এই সমন্বয়গুলি যাতে ঘটতে না পারে সে সম্পর্কে বিস্তারিত জানতে, CPU গতি নিয়ন্ত্রণ করা দেখুন।

উদাহরণস্বরূপ, জো ড্রয়েড একটি ডিভাইসের জন্য screen.on মান গণনা করতে চায়। তিনি ডিভাইসে বিমান মোড সক্ষম করে, একটি স্থিতিশীল বর্তমান অবস্থায় ডিভাইসটি চালায়, সিপিইউ গতি ধ্রুবক ধরে রাখে এবং সিস্টেম সাসপেন্ড প্রতিরোধ করতে একটি আংশিক ওয়েকলক ব্যবহার করে। জো তারপর ডিভাইসের স্ক্রীন বন্ধ করে দেয় এবং একটি পরিমাপ নেয় (200 mA)। এরপর, জো ন্যূনতম উজ্জ্বলতায় ডিভাইসের স্ক্রীন চালু করে এবং অন্য একটি পরিমাপ নেয় (300 mA)। screen.on এর মান হল 100 mA (300 - 200)।

দ্রষ্টব্য : যে উপাদানগুলির জন্য সক্রিয় থাকা অবস্থায় বর্তমান খরচের সমতল তরঙ্গরূপ নেই (যেমন সেলুলার রেডিও বা Wi-Fi), একটি পাওয়ার মনিটরিং টুল ব্যবহার করে সময়ের সাথে গড় কারেন্ট পরিমাপ করুন৷

ডিভাইসের ব্যাটারির জায়গায় একটি বাহ্যিক শক্তির উৎস ব্যবহার করার সময়, একটি সংযোগহীন ব্যাটারি থার্মিস্টর বা ইন্টিগ্রেটেড ফুয়েল গেজ পিনের কারণে সিস্টেমটি সমস্যার সম্মুখীন হতে পারে (যেমন ব্যাটারির তাপমাত্রার জন্য একটি অবৈধ রিডিং বা অবশিষ্ট ব্যাটারির ক্ষমতা কার্নেল বা অ্যান্ড্রয়েড সিস্টেম বন্ধ করতে পারে) . নকল ব্যাটারিগুলি থার্মিস্টর বা ফুয়েল গেজ পিনগুলিতে সংকেত প্রদান করতে পারে যা একটি স্বাভাবিক সিস্টেমের জন্য তাপমাত্রা এবং চার্জ রিডিংয়ের অবস্থার অনুকরণ করে এবং বাহ্যিক বিদ্যুৎ সরবরাহের সাথে সংযোগ করার জন্য সুবিধাজনক লিডও প্রদান করতে পারে। বিকল্পভাবে, আপনি অনুপস্থিত ব্যাটারি থেকে অবৈধ তথ্য উপেক্ষা করতে সিস্টেম পরিবর্তন করতে পারেন।

নিয়ন্ত্রণ ব্যবস্থা সাসপেন্ড

এই বিভাগটি বর্ণনা করে যে কীভাবে সিস্টেম সাসপেন্ড স্টেট এড়ানো যায় যখন আপনি এটি অন্যান্য পরিমাপের সাথে হস্তক্ষেপ করতে চান না এবং আপনি যখন এটি পরিমাপ করতে চান তখন সিস্টেম সাসপেন্ড স্টেটের পাওয়ার ড্র কীভাবে পরিমাপ করবেন।

সিস্টেম সাসপেন্ড প্রতিরোধ করুন

সিস্টেম সাসপেন্ড শক্তি পরিমাপের অবাঞ্ছিত বৈচিত্র্য প্রবর্তন করতে পারে এবং সক্রিয় শক্তি ব্যবহার পরিমাপের জন্য অনুপযুক্ত কম-পাওয়ার অবস্থায় সিস্টেমের উপাদানগুলি স্থাপন করতে পারে। স্ক্রীন বন্ধ থাকা অবস্থায় সিস্টেমটিকে সাসপেন্ড করা থেকে বিরত রাখতে, একটি অস্থায়ী আংশিক ওয়েকলক ব্যবহার করুন। একটি USB কেবল ব্যবহার করে, ডিভাইসটিকে একটি ডেভেলপমেন্ট হোস্টের সাথে সংযুক্ত করুন, তারপর নিম্নলিখিত কমান্ডটি ইস্যু করুন:

adb shell "echo temporary > /sys/power/wake_lock"

wake_lock এ থাকাকালীন, স্ক্রীন অফ স্টেট একটি সিস্টেম সাসপেন্ড ট্রিগার করে না। (বিদ্যুৎ খরচ পরিমাপ করার আগে ডিভাইস থেকে USB তারের সংযোগ বিচ্ছিন্ন করতে মনে রাখবেন।)

ওয়েকলক অপসারণ করতে:

adb shell "echo temporary > /sys/power/wake_unlock"

পরিমাপ সিস্টেম স্থগিত

সিস্টেম সাসপেন্ড অবস্থায় পাওয়ার ড্র পরিমাপ করতে, পাওয়ার প্রোফাইলে cpu.idle এর মান পরিমাপ করুন। পরিমাপ করার আগে:

  • বিদ্যমান wakelocks (উপরে বর্ণিত হিসাবে) সরান।
  • সেলুলার রেডিওর একযোগে ক্রিয়াকলাপ এড়াতে ডিভাইসটিকে বিমান মোডে রাখুন, যা সিস্টেম সাসপেন্ড দ্বারা নিয়ন্ত্রিত SoC অংশ থেকে পৃথক প্রসেসরে চলতে পারে।
  • নিশ্চিত করুন যে সিস্টেমটি সাসপেন্ড অবস্থায় আছে:
    • বর্তমান রিডিং নিশ্চিত করা একটি স্থির মান স্থির করা. রিডিংগুলি SoC সাসপেন্ড স্টেটের পাওয়ার খরচের জন্য প্রত্যাশিত সীমার মধ্যে হওয়া উচিত এবং সিস্টেমের উপাদানগুলির পাওয়ার খরচ যা চালিত থাকে (যেমন USB PHY)।
    • সিস্টেম কনসোল আউটপুট পরীক্ষা করা হচ্ছে।
    • সিস্টেমের স্থিতির বাহ্যিক ইঙ্গিতগুলির জন্য পর্যবেক্ষণ করা (যেমন সাসপেন্ড না থাকা অবস্থায় একটি LED বন্ধ করা)।

CPU গতি নিয়ন্ত্রণ করুন

সক্রিয় সিপিইউগুলিকে অনলাইনে আনা যেতে পারে বা অফলাইনে রাখা যেতে পারে, তাদের ঘড়ির গতি এবং সংশ্লিষ্ট ভোল্টেজগুলি পরিবর্তন করা যেতে পারে (সম্ভবত মেমরি বাসের গতি এবং অন্যান্য সিস্টেমের মূল পাওয়ার স্টেটগুলিকেও প্রভাবিত করে), এবং কার্নেল নিষ্ক্রিয় লুপে থাকা অবস্থায় নিম্ন শক্তির নিষ্ক্রিয় অবস্থায় প্রবেশ করতে পারে। পাওয়ার প্রোফাইলের জন্য বিভিন্ন CPU পাওয়ার স্টেট পরিমাপ করার সময়, অন্যান্য পরামিতি পরিমাপ করার সময় পাওয়ার ড্র ভ্যারিয়েন্স এড়িয়ে চলুন। পাওয়ার প্রোফাইল অনুমান করে যে সমস্ত CPU-তে একই উপলব্ধ গতি এবং পাওয়ার বৈশিষ্ট্য রয়েছে।

সিপিইউ পাওয়ার পরিমাপ করার সময়, বা অন্যান্য পরিমাপ করার জন্য সিপিইউ পাওয়ার ধ্রুবক ধরে রাখার সময়, অনলাইনে আনা সিপিইউগুলির সংখ্যা স্থির রাখুন (যেমন একটি সিপিইউ অনলাইনে থাকা এবং বাকিগুলি অফলাইন/হটপ্লাগ আউট)। একটি সময়সূচী নিষ্ক্রিয় বাদে সমস্ত CPU গুলি গ্রহণযোগ্য ফলাফল উত্পাদন করতে পারে৷ adb shell stop সাথে অ্যান্ড্রয়েড ফ্রেমওয়ার্ক বন্ধ করা সিস্টেমের সময় নির্ধারণের কার্যকলাপকে কমিয়ে দিতে পারে।

পাওয়ার প্রোফাইল cpu.speeds এন্ট্রিতে আপনাকে অবশ্যই আপনার ডিভাইসের জন্য উপলব্ধ CPU গতি উল্লেখ করতে হবে। উপলব্ধ CPU গতির একটি তালিকা পেতে, চালান:

adb shell cat /sys/devices/system/cpu/cpu0/cpufreq/stats/time_in_state

এই গতিগুলি cpu.active মানের সাথে সম্পর্কিত শক্তি পরিমাপের সাথে মেলে।

প্ল্যাটফর্মের জন্য যেখানে অনলাইনে আনা কোরের সংখ্যা উল্লেখযোগ্যভাবে বিদ্যুৎ খরচকে প্রভাবিত করে, আপনাকে প্ল্যাটফর্মের জন্য cpufreq ড্রাইভার বা গভর্নর পরিবর্তন করতে হতে পারে। বেশিরভাগ প্ল্যাটফর্ম ইউজারস্পেস cpufreq গভর্নর ব্যবহার করে এবং গতি সেট করতে sysfs ইন্টারফেস ব্যবহার করে CPU গতি নিয়ন্ত্রণ করতে সমর্থন করে। উদাহরণস্বরূপ, শুধুমাত্র 1 CPU সহ একটি সিস্টেমে 200MHz এর জন্য গতি সেট করতে বা একটি সাধারণ cpufreq নীতি ভাগ করে নেওয়া সমস্ত CPU, নিম্নলিখিত কমান্ডগুলি চালানোর জন্য সিস্টেম কনসোল বা adb শেল ব্যবহার করুন:

echo userspace > /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor
echo 200000 > /sys/devices/system/cpu/cpu0/cpufreq/scaling_max_freq
echo 200000 > /sys/devices/system/cpu/cpu0/cpufreq/scaling_min_freq
echo 200000 > /sys/devices/system/cpu/cpu0/cpufreq/scaling_setspeed
cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_cur_freq

দ্রষ্টব্য : প্ল্যাটফর্ম cpufreq বাস্তবায়নের উপর নির্ভর করে সঠিক কমান্ডগুলি পৃথক হয়।

এই কমান্ডগুলি নিশ্চিত করে যে নতুন গতি অনুমোদিত সীমার বাইরে নয়, নতুন গতি সেট করুন, তারপর CPU আসলে যে গতিতে চলছে (যাচাই করার জন্য) তা মুদ্রণ করুন। যদি কার্যকর করার পূর্বে বর্তমান ন্যূনতম গতি 200000 এর বেশি হয়, তাহলে আপনাকে প্রথম দুটি লাইনের ক্রম বিপরীত করতে হবে, অথবা সর্বোচ্চ গতি সেট করার আগে সর্বনিম্ন গতি কমাতে আবার প্রথম লাইনটি চালাতে হবে।

বিভিন্ন গতিতে চলমান একটি CPU দ্বারা ব্যবহূত বর্তমান পরিমাপ করতে, কমান্ডটি ব্যবহার করে একটি CPU-বাউন্ড লুপে CPU স্থাপন করতে সিস্টেম কনসোল ব্যবহার করুন:

# while true; do true; done

লুপ চালানোর সময় পরিমাপ নিন।

কিছু ডিভাইস উচ্চ তাপমাত্রা পরিমাপের কারণে তাপীয় থ্রটলিং করার সময় সর্বাধিক CPU গতি সীমিত করতে পারে (অর্থাৎ, টেকসই সময়ের জন্য উচ্চ গতিতে CPU চালানোর পরে)। পরিমাপ করার সময় সিস্টেম কনসোল আউটপুট ব্যবহার করে বা পরিমাপের পরে কার্নেল লগ চেক করে এই ধরনের সীমাবদ্ধতার জন্য দেখুন।

cpu.awake মানের জন্য, সিস্টেমটি সাসপেন্ডে না থাকা এবং কার্য সম্পাদন না করার সময় ব্যবহৃত শক্তি পরিমাপ করুন। সিপিইউ একটি লো-পাওয়ার শিডিউলার আইডল লুপে থাকা উচিত, সম্ভবত একটি এআরএম ওয়েট ফর ইভেন্ট নির্দেশনা বা একটি SoC-নির্দিষ্ট লো-পাওয়ার অবস্থায় নিষ্ক্রিয় ব্যবহারের জন্য উপযুক্ত দ্রুত-প্রস্থান লেটেন্সি সহ।

cpu.active মানের জন্য, যখন সিস্টেমটি সাসপেন্ড মোডে থাকে না এবং কাজগুলি সম্পাদন না করে তখন শক্তি পরিমাপ করুন। একটি সিপিইউ (সাধারণত প্রাথমিক সিপিইউ) কাজটি চালানো উচিত যখন অন্য সমস্ত সিপিইউ একটি নিষ্ক্রিয় অবস্থায় থাকা উচিত।

পর্দা শক্তি পরিমাপ

পাওয়ার অন স্ক্রীন পরিমাপ করার সময়, নিশ্চিত করুন যে স্ক্রীন সক্রিয় থাকা অবস্থায় অন্যান্য ডিভাইসগুলিও চালু থাকে। উদাহরণস্বরূপ, যদি স্ক্রীন চালু থাকা অবস্থায় টাচস্ক্রিন এবং ডিসপ্লে ব্যাকলাইট সাধারণত চালু থাকে, তাহলে নিশ্চিত করুন যে এই ডিভাইসগুলি চালু আছে যখন আপনি পাওয়ার ব্যবহারে স্ক্রীনের বাস্তবসম্মত উদাহরণ পেতে পরিমাপ করুন।

কিছু ডিসপ্লে টেকনোলজি প্রদর্শিত রং অনুসারে পাওয়ার খরচে পরিবর্তিত হয়, যার ফলে পরিমাপের সময় স্ক্রিনে কী প্রদর্শিত হয় তার উপর নির্ভর করে পাওয়ার পরিমাপ যথেষ্ট পরিবর্তিত হয়। পরিমাপ করার সময়, নিশ্চিত করুন যে স্ক্রীনটি এমন কিছু প্রদর্শন করছে যা বাস্তবসম্মত পর্দার শক্তি বৈশিষ্ট্য রয়েছে। একটি সম্পূর্ণ-কালো পর্দার (যা কিছু প্রযুক্তির জন্য সর্বনিম্ন শক্তি খরচ করে) এবং একটি সম্পূর্ণ-সাদা পর্দার মধ্যে লক্ষ্য করুন। একটি সাধারণ পছন্দ হল ক্যালেন্ডার অ্যাপে একটি সময়সূচির একটি দৃশ্য, যেটিতে সাদা পটভূমি এবং অ-সাদা উপাদানের মিশ্রণ রয়েছে।

সর্বনিম্ন এবং সর্বোচ্চ ডিসপ্লে/ব্যাকলাইট উজ্জ্বলতায় পাওয়ার অন স্ক্রীন পরিমাপ করুন। ন্যূনতম উজ্জ্বলতা সেট করতে:

  • Android UI ব্যবহার করুন (প্রস্তাবিত নয়)। সেটিংস > ডিসপ্লে ব্রাইটনেস স্লাইডার ন্যূনতম ডিসপ্লে উজ্জ্বলতায় সেট করুন। যাইহোক, অ্যান্ড্রয়েড UI শুধুমাত্র সম্ভাব্য প্যানেল বা ব্যাকলাইট উজ্জ্বলতার ন্যূনতম 10-20% উজ্জ্বলতা সেট করার অনুমতি দেয় এবং উজ্জ্বলতা এত কম সেট করার অনুমতি দেয় না যাতে স্ক্রীনটি দুর্দান্ত প্রচেষ্টা ছাড়া দৃশ্যমান নাও হতে পারে।
  • একটি sysfs ফাইল ব্যবহার করুন (প্রস্তাবিত)। উপলব্ধ থাকলে, হার্ডওয়্যার দ্বারা সমর্থিত সর্বনিম্ন উজ্জ্বলতা পর্যন্ত প্যানেলের উজ্জ্বলতা নিয়ন্ত্রণ করতে একটি sysfs ফাইল ব্যবহার করুন।

অতিরিক্তভাবে, যদি প্ল্যাটফর্ম sysfs ফাইলটি LCD প্যানেল, ব্যাকলাইট এবং টাচস্ক্রিন চালু এবং বন্ধ করতে সক্ষম করে, তাহলে স্ক্রীন চালু এবং বন্ধ করে পরিমাপ করতে ফাইলটি ব্যবহার করুন। অন্যথায়, একটি আংশিক ওয়েকলক সেট করুন যাতে সিস্টেমটি সাসপেন্ড না হয়, তারপর পাওয়ার বোতাম দিয়ে স্ক্রীন চালু এবং বন্ধ করুন।

ওয়াই-ফাই পাওয়ার পরিমাপ করুন

অপেক্ষাকৃত শান্ত নেটওয়ার্কে Wi-Fi পরিমাপ করুন। পরিমাপ করা কার্যকলাপের সাথে সম্পর্কিত নয় এমন সম্প্রচার ট্র্যাফিকের উচ্চ ভলিউম প্রসেসিং অতিরিক্ত কাজের প্রবর্তন এড়িয়ে চলুন।

wifi.on মানটি Wi-Fi সক্ষম থাকা অবস্থায় খরচ করা শক্তি পরিমাপ করে কিন্তু সক্রিয়ভাবে প্রেরণ বা গ্রহণ করে না। এটি প্রায়শই ওয়াই-ফাই সক্ষম বনাম অক্ষম সহ সিস্টেম সাসপেন্ড (স্লিপ) অবস্থায় বর্তমান ড্রয়ের মধ্যে ডেল্টা হিসাবে পরিমাপ করা হয়।

wifi.scan মানটি অ্যাক্সেস পয়েন্টের জন্য Wi-Fi স্ক্যান করার সময় ব্যবহৃত শক্তি পরিমাপ করে। অ্যাপ্লিকেশনগুলি WifiManager ক্লাস startScan() API ব্যবহার করে Wi-Fi স্ক্যান ট্রিগার করতে পারে। আপনি সেটিংস > ওয়াই-ফাইও খুলতে পারেন, যা প্রতি কয়েক সেকেন্ডে পাওয়ার খরচের আপাত লাফ দিয়ে অ্যাক্সেস পয়েন্ট স্ক্যান করে, তবে আপনাকে অবশ্যই এই পরিমাপ থেকে স্ক্রীন পাওয়ার বিয়োগ করতে হবে।

দ্রষ্টব্য : নেটওয়ার্ক গ্রহণ এবং ট্রাফিক ট্রান্সমিট করতে একটি নিয়ন্ত্রিত সেটআপ ব্যবহার করুন (যেমন iperf )।