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

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

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

ন্যূনতম বিল্ড প্রয়োজনীয়তা

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

ডিভাইস ন্যূনতম বিল্ড প্রয়োজনীয়তা: CPU অনুমান ন্যূনতম বিল্ড প্রয়োজনীয়তা: GPU অনুমান
পিক্সেল ওয়াচ 2 কোন ন্যূনতম নির্মাণ প্রয়োজন সমর্থিত নয়
পিক্সেল ওয়াচ 3 25Q2 সমর্থিত নয়
পিক্সেল 6 কোন ন্যূনতম নির্মাণ প্রয়োজন 25Q2
পিক্সেল 9 25Q2 সমর্থিত নয়

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

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

  1. কনফিগার করুন এবং ডিভাইসে একটি Perfetto কনফিগারেশন ফাইল তৈরি করে ট্রেস শুরু করুন। উৎস ট্রিতে 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 ট্রেস ইভেন্ট সক্রিয় করুন:

    # 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 ট্রেস সংগ্রহ করুন

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

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

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

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

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

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

ওয়াটসন UI ব্যবহার করুন

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

প্রতি রেল ব্রেক ডাউন দেখুন

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

  1. Perfetto একটি ট্রেস খুলুন.

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

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

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

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

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

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

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

    • অনুমান মোট সরাসরি কলাম শিরোনাম নীচে প্রদর্শিত হয়.

    রেলের অনুমান

    চিত্র 4. রেলের অনুমান।

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

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

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

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

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

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

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

থ্রেড স্তর ভাঙ্গন

চিত্র 5. থ্রেড স্তর ভাঙ্গন.

প্রক্রিয়া-স্তরের ভাঙ্গন

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

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

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

চিত্র 6. প্রক্রিয়া ভাঙ্গন দ্বারা.

প্যাকেজ-স্তরের ভাঙ্গন

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

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

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

থ্রেড-স্তরের ভাঙ্গন

চিত্র 7. থ্রেড-স্তরের ভাঙ্গন।

FAQs

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

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

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

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

সিপিইউ সময় বা সিপিইউ চক্র দেখার চেয়ে ওয়াটসন কীভাবে আরও কার্যকর?

CPU সময় এবং চক্র CPU ফ্রিকোয়েন্সি এবং CPU প্রকারের মধ্যে শক্তি বা শক্তি খরচের পার্থক্যের জন্য দায়ী নয় (সামান্য বনাম মধ্য বনাম বড়)।

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

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

আমরা একাধিক দল দ্বারা প্রদত্ত একাধিক ব্যবহারের ক্ষেত্রে ল্যাব পাওয়ার পরিমাপ হার্ডওয়্যারের সাথে ওয়াটসনকে তুলনা করেছি। ওয়াটসনের গড় ত্রুটি হল 1% পয়েন্ট এবং স্ট্যান্ডার্ড বিচ্যুতি হল 1.5% পয়েন্ট৷ পারস্পরিক সম্পর্কের এই স্তরটি পরীক্ষাগুলি জুড়ে বজায় রাখা হয় যা 10 সেকেন্ডের পরীক্ষা যা 4 ঘন্টা ধরে চলে। তাই কোন ত্রুটি হামাগুড়ি বা ত্রুটি মাস্কিং আছে যে সময় একটি ফ্যাক্টর.

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

এখানে Pixel 6 ব্যবহার করে সাধারণ ওয়াটসন ব্রেকডাউনের কিছু বেসলাইন পরীক্ষা রয়েছে:

Wattson.cfg

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

  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"
          }
      }
  }