সংগ্রহ করুন এবং ট্রেস দেখুন

এই পৃষ্ঠায় ওয়াটসনের সাথে ব্যবহারের জন্য পারফেটটো ট্রেস সংগ্রহ করার এবং পারফেটটো ইউআই-তে প্রাপ্ত পাওয়ার ডেটা বিশ্লেষণ করার বিস্তারিত নির্দেশাবলী দেওয়া হয়েছে।

যদিও পারফেটটো ট্রেস সংগ্রহ করার অনেক উপায় আছে, এই পৃষ্ঠায় বর্ণিত পদ্ধতিগুলোতে ওয়াটসনের সাথে সামঞ্জস্যপূর্ণ একটি ট্রেস তৈরির জন্য নির্দিষ্ট প্রয়োজনীয়তা এবং কর্মপ্রবাহ অন্তর্ভুক্ত রয়েছে।

ন্যূনতম নির্মাণের প্রয়োজনীয়তা

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

ডিভাইস ন্যূনতম বিল্ড প্রয়োজনীয়তা: সিপিইউ অনুমান ন্যূনতম বিল্ডের প্রয়োজনীয়তা: জিপিইউ অনুমান
পিক্সেল ওয়াচ ২ ন্যূনতম নির্মাণের কোনো আবশ্যকতা নেই সমর্থিত নয়
পিক্সেল ওয়াচ ৩ 25Q2 সমর্থিত নয়
পিক্সেল ৬ ন্যূনতম নির্মাণের কোনো আবশ্যকতা নেই 25Q2
পিক্সেল ৯ 25Q2 সমর্থিত নয়
পিক্সেল ১০ 25Q2 সমর্থিত নয়
গ্যালাক্সি এক্সআর (এসএক্সআর২২৩০পি) ন্যূনতম নির্মাণের কোনো আবশ্যকতা নেই সমর্থিত নয়

কমান্ড লাইন থেকে পারফেট্টো ট্রেস সংগ্রহ করুন

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

  1. ডিভাইসে একটি পারফেটটো কনফিগারেশন ফাইল তৈরি করে ট্রেসটি কনফিগার ও চালু করুন। সোর্স ট্রিতে wattson.cfg ফাইলে একটি উদাহরণ কনফিগারেশন পাওয়া যাবে।

    ন্যূনতম কনফিগারেশনে নিম্নলিখিত ট্রেস ইভেন্টগুলি অবশ্যই অন্তর্ভুক্ত থাকতে হবে:

    # Polls CPU freq/idle state at the start of trace
    data_sources: {
       config {
          name: "linux.sys_stats"
          sys_stats_config {
             # Large period so polling doesn't happen continuously
             # Intent is just to poll once upfront
             cpufreq_period_ms: 100000000
             cpuidle_period_ms: 100000000
          }
       }
    }
    data_sources: {
       config {
          name: "linux.ftrace"
          ftrace_config {
             ftrace_events: "devfreq/devfreq_frequency"
             ftrace_events: "cpuhp/cpuhp_enter"
             ftrace_events: "cpuhp/cpuhp_exit"
             ftrace_events: "cpuhp/cpuhp_multi_enter"
             ftrace_events: "power/cpu_frequency"
             ftrace_events: "power/cpu_idle"
             ftrace_events: "power/suspend_resume"
          }
       }
    }
    
  2. L3 ক্যাশে শক্তি ব্যবহারের আনুমানিক হিসাব চালু করতে, fttrace/print ইভেন্টটি সক্রিয় করুন:

    adb shell perfetto --txt -c /data/misc/perfetto-configs/wattson.cfg --background-wait -o /data/misc/perfetto-traces/trace
    
    # Optional
    adb shell simpleperf stat -a -e arm_dsu_0/l3d_cache/,arm_dsu_0/bus_access/ --interval 10
    
  3. (ঐচ্ছিক) ওয়াটসন উইন্ডোর সূচনা সেট করুন, এটি পারফেটটো ট্রেসে এমবেড করা একটি মার্কার যা রেকর্ডের শুরু নির্দেশ করে। এই মার্কারটি ওয়াটসন পরিমাপের অতিরিক্ত নির্ভুলতা যোগ করে।

    # Optional
    adb shell "echo 'I|0|wattson_start' >/sys/kernel/tracing/trace_marker"
    
  4. প্রয়োজনীয় ওয়ার্কলোডটি চালান।

  5. (ঐচ্ছিক) ওয়াটসন উইন্ডোর সমাপ্তি নির্ধারণ করতে ftrace/print trace ইভেন্টটি সক্রিয় করুন:

    # Optional
    adb shell "echo 'I|0|wattson_stop' >/sys/kernel/tracing/trace_marker"
    
  6. ট্রেস বাফারগুলি ফ্লাশ করুন এবং পারফেটটো ট্রেস ফাইলটি পুল করুন:

    adb shell killall -w perfetto
    adb pull /data/misc/perfetto-traces/trace my_perfetto_trace.pb
    

Perfetto UI ব্যবহার করে Perfetto ট্রেস সংগ্রহ করুন

পারফেটটো UI ব্যবহার করে ট্রেস সংগ্রহ করতে, আপনাকে ওয়াটসনের জন্য নির্দিষ্ট সেটিংস সক্রিয় করতে হবে। পারফেটটো UI-তে একটি নতুন ট্রেস রেকর্ড করার সময়, শিডিউলিং বিবরণ এবং সিপিইউ ফ্রিকোয়েন্সি ও নিষ্ক্রিয় অবস্থা টগলগুলি সক্রিয় করুন:

সময়সূচীর বিবরণ এবং সিপিইউ ফ্রিকোয়েন্সি ও নিষ্ক্রিয় অবস্থার টগল

চিত্র ১. সময়সূচী সংক্রান্ত বিবরণ এবং সিপিইউ ফ্রিকোয়েন্সি ও নিষ্ক্রিয় অবস্থা টগল করার ব্যবস্থা।

পিক্সেল ৯ ডিভাইসগুলোর ক্ষেত্রে, Ftrace সেটিংসের অধীনে, ডিভাইস ফ্রিকোয়েন্সি সংগ্রহ চালু করতে devfreq চেকবক্সটি নির্বাচন করুন:

ডিভাইসের ফ্রিকোয়েন্সি সক্রিয় করুন

চিত্র ২. ডিভাইস ফ্রিকোয়েন্সি সক্রিয় করুন।

প্রতিটি রেলের বিভাজন দেখুন

Perfetto-এর সাহায্যে, প্রতি-রেল পরিসংখ্যান দেখার জন্য একটি সময়সীমা নির্বাচন করে Wattson-এর পাওয়ার অনুমান বিশ্লেষণ করুন, অথবা থ্রেড, প্রসেস বা প্যাকেজ স্তরে বিদ্যুৎ খরচ নির্ধারণ করতে নির্দিষ্ট ট্রেস কনফিগারেশন সক্রিয় করুন।

পারফেটোতে ওয়াটসনের সাথে যোগাযোগ করতে:

  1. পারফেটোতে একটি ট্রেস খুলুন।

    আপনার ডিভাইসটি ওয়াটসন দ্বারা সমর্থিত হলে, ওয়াটসন ট্রেসগুলি স্বয়ংক্রিয়ভাবে তালিকাভুক্ত হয়:

    পারফেটোতে ওয়াটসন ট্রেস দেখুন

    চিত্র ৩. পারফেটোতে ওয়াটসন ট্রেসসমূহ দেখুন।

  2. প্রতিটি ভার্চুয়াল রেলের বিস্তারিত বিবরণ দেখতে ও প্রসারিত করতে ওয়াটসন-এ ক্লিক করুন:

    • রেলগুলোর মধ্যে আনুপাতিকতা দেখানোর জন্য সমস্ত রেল গ্রাফ স্বয়ংক্রিয়ভাবে একই মানে স্কেল করা হয়।

    • ব্যবহারকারী কর্তৃক নির্বাচিত (বা চিহ্নিত) যেকোনো অঞ্চলের জন্য পরিসংখ্যান তৈরি করা হয়।

    • যেকোনো কলামের নামে ক্লিক করে পরিসংখ্যান সারণিটি সাজানো যায়।

    • আনুমানিক মোট পরিমাণ কলামের শিরোনামগুলোর ঠিক নিচে প্রদর্শিত হয়।

    রেল অনুমান

    চিত্র ৪. রেলের প্রাক্কলন।

প্রতিটি থ্রেড, প্রসেস বা প্যাকেজের অ্যাট্রিবিউশন অনুযায়ী ট্রেস দেখুন

যদি আপনার শিডিউলার ট্রেস সক্রিয় করা থাকে এবং পারফেটোতে থ্রেড স্লাইস দেখতে পান, তাহলে আপনি থ্রেড-স্তর বা প্রসেস-স্তরের পাওয়ার বা এনার্জি অ্যাট্রিবিউশনও পেতে পারেন:

  1. পারফেট্টোতে, থ্রেড স্লাইসের একটি অঞ্চল নির্বাচন করুন।
  2. থ্রেড, প্রসেস বা প্যাকেজের বিস্তারিত বিবরণ দেখুন।

প্রতি-রেল ট্র্যাক পরিসংখ্যানের মতোই, আপনি যেকোনো কলামের নামে ক্লিক করে সেই কলাম অনুযায়ী সাজাতে পারেন।

থ্রেড-স্তরের বিভাজন বিশ্লেষণ করুন

মৌলিক শক্তি অনুমানের জন্য ন্যূনতম প্রয়োজনীয়তা ছাড়াও, প্রতি থ্রেড স্তরে শক্তি বণ্টনের জন্য আপনাকে wattson.cfg এর linux.ftrace বিভাগে নিম্নলিখিত কনফিগারেশনটি যোগ করতে হবে:

data_sources: {
    config {
        name: "linux.ftrace"
        ftrace_config {
            ftrace_events: "sched/sched_switch"
        }
    }
}

থ্রেড স্তরের বিভাজন

চিত্র ৫. থ্রেড স্তরের বিভাজন।

প্রক্রিয়া-স্তরের বিভাজন

প্রসেস-লেভেল অ্যাট্রিবিউশনের জন্য পারফেটটো ট্রেসে সংগৃহীত ডেটাতে process_states সক্রিয় করা আবশ্যক। আপনার wattson.cfg কনফিগারেশন ফাইলে নিম্নলিখিত ডেটা সোর্সটি সক্রিয় করুন:

data_sources: {
    config {
        name: "linux.process_stats"
        target_buffer: 1
        process_stats_config {
            scan_all_processes_on_start: true
        }
    }
}

প্রক্রিয়া বিভাজন দ্বারা

চিত্র ৬। প্রক্রিয়াগত বিভাজন অনুসারে।

প্যাকেজ-স্তরের বিভাজন

প্যাকেজ-স্তরের অ্যাট্রিবিউশনের জন্য পারফেটটো ট্রেসে সংগৃহীত ডেটাতে android.packages_list সক্রিয় করা প্রয়োজন। আপনার wattson.cfg কনফিগারেশন ফাইলে নিম্নলিখিত ডেটা সোর্সটি সক্রিয় করুন:

data_sources {
  config {
    name: "android.packages_list"
    target_buffer: 1
  }
}

থ্রেড-স্তর এবং প্রসেস-স্তরের অ্যাট্রিবিউশনের মতোই, যখন আপনি থ্রেড স্লাইসের একটি পরিসর নির্বাচন করেন, তখন প্যাকেজ-স্তরের বিভাজন পর্যালোচনা করুন।

থ্রেড-স্তরের বিভাজন

চিত্র ৭. থ্রেড-স্তরের বিভাজন।

জিপিইউ পাওয়ার অনুমান

পিক্সেল ৬, ৬ প্রো এবং ৬এ-তে জিপিইউ পাওয়ার এস্টিমেশন সমর্থিত। জিপিইউ পাওয়ার এস্টিমেশন চালু করতে, আপনার wattson.cfg কনফিগারেশন ফাইলে নিম্নলিখিত ডেটা সোর্সটি সক্রিয় করুন:

data_sources: {
  config {
    name: "linux.ftrace"
    ftrace_config {
      ftrace_events: "mali/gpu_power_state"
      ftrace_events: "power/gpu_frequency"

      # [Optional] Enable GPU Work Period (not used by Wattson, but useful for debugging)
      ftrace_events: "power/gpu_work_period"
    }
  }
}

কোনো নির্দিষ্ট নির্বাচনের জন্য, ওয়াটসন জিপিইউ পাওয়ারের আনুমানিক হিসাব পারফেটটো ইউআই-এর ওয়াটসন এস্টিমেটস ট্যাবে প্রদর্শিত হয়।

জিপিইউ পাওয়ার অনুমান

চিত্র ৮. জিপিইউ-এর শক্তি অনুমান।

প্রায়শই জিজ্ঞাসিত প্রশ্নাবলী

এখানে ওয়াটসন সম্পর্কে প্রায়শই জিজ্ঞাসিত কিছু প্রশ্ন দেওয়া হলো।

ওয়াটসন কি ল্যাবের বিদ্যুৎ পরিমাপক হার্ডওয়্যারের আউটপুটের সাথে মিলবে বলে আশা করা যায়?

বেশিরভাগ ওয়ার্কলোডের ক্ষেত্রে, ওয়াটসনের অনুমান ল্যাবের পাওয়ার হার্ডওয়্যার পরিমাপের সাথে মিলে যায়। তবে, এটি সবসময় হয় না এবং ওয়াটসনের উদ্দেশ্যও তা নয়।

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

সিপিইউ টাইম বা সিপিইউ সাইকেল দেখার চেয়ে ওয়াটসন কীভাবে বেশি উপযোগী?

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

সিপিইউ ফ্রিকোয়েন্সি দ্বিগুণ হলেই যে সিপিইউ-এর ক্ষমতা বা পারফরম্যান্স দ্বিগুণ হবে, এমনটা সবসময় নয়।

হার্ডওয়্যার সমাধানের সাথে তুলনা করলে ওয়াটসন কি নির্ভুল?

আমরা একাধিক দলের সরবরাহ করা বিভিন্ন ব্যবহারের ক্ষেত্রে ল্যাবের পাওয়ার পরিমাপক হার্ডওয়্যারের সাথে ওয়াটসনের তুলনা করেছি। ওয়াটসনের গড় ত্রুটি হলো ১% পয়েন্ট এবং স্ট্যান্ডার্ড ডেভিয়েশন হলো ১.৫% পয়েন্ট। ১০ সেকেন্ডের পরীক্ষা থেকে শুরু করে ৪ ঘণ্টা ধরে চলা পরীক্ষা পর্যন্ত সব ক্ষেত্রেই এই মানের সামঞ্জস্য বজায় থাকে। সুতরাং, সময়ের সাথে সাথে ত্রুটির বিস্তার বা ত্রুটি আড়াল হওয়ার কোনো ঘটনা ঘটে না।

পিক্সেল ৬ কার্নেল কনফিগারেশন পরীক্ষা

পিক্সেল ৬ ব্যবহার করে সাধারণ ওয়াটসন ব্রেকডাউনের কিছু বেসলাইন পরীক্ষা নিচে দেওয়া হলো:

ওয়াটসন.সিএফজি

এই বিভাগে পারফেটোতে ওয়াটসন সক্রিয় করার সাধারণ কনফিগারেশন দেওয়া হয়েছে:

  write_into_file: true
  flush_period_ms: 30000
  file_write_period_ms: 30000

  buffers: {
      size_kb: 2048
      fill_policy: RING_BUFFER
  }
  buffers: {
      size_kb: 200000
      fill_policy: RING_BUFFER
  }

  # Needed for process level power attribution
  data_sources: {
      config {
          name: "linux.process_stats"
          target_buffer: 0
          process_stats_config {
              scan_all_processes_on_start: true
          }
      }
  }

  # Needed for package level power attribution
  data_sources: {
      config {
          name: "android.packages_list"
          target_buffer: 0
      }
  }

  # Needed for determining CPU freq/idle initial state
  data_sources: {
      config {
          name: "linux.sys_stats"
          sys_stats_config {
              cpufreq_period_ms: 100000000
              cpuidle_period_ms: 100000000
          }
      }
  }

  # Needed for estimating power and thread level power attribution
  data_sources: {
      config {
          name: "linux.ftrace"
          target_buffer: 1
          ftrace_config {
              # Minimum data sources for estimating power
              ftrace_events: "power/cpu_frequency"
              ftrace_events: "power/cpu_idle"
              ftrace_events: "power/suspend_resume"
              ftrace_events: "cpuhp/cpuhp_enter"
              ftrace_events: "cpuhp/cpuhp_exit"
              ftrace_events: "cpuhp/cpuhp_multi_enter"
              ftrace_events: "devfreq/devfreq_frequency"

              # Needed for Wattson start/stop markers
              ftrace_events: "ftrace/print"

              # Needed for thread level power attribution
              ftrace_events: "sched/sched_switch"

              # Needed for process level power attribution
              ftrace_events: "sched/sched_process_free"
              ftrace_events: "task/task_newtask"
              ftrace_events: "task/task_rename"
          }
      }
  }