থ্রেড সময়সূচী বিশ্লেষণ করুন, থ্রেড সময়সূচী বিশ্লেষণ করুন, থ্রেড সময়সূচী বিশ্লেষণ করুন, থ্রেড সময়সূচী বিশ্লেষণ করুন

আপনার গেম প্রসেস থ্রেডগুলো সর্বোত্তম পারফরম্যান্সের জন্য যথাযথভাবে ব্যবহৃত ও নির্ধারিত হচ্ছে কিনা, তা নির্ধারণ করতে কয়েকটি বিষয় বিবেচনা করতে হবে।

  • ফ্রেম পেসিং
  • মাল্টিথ্রেডিং এবং থ্রেড প্যারালেলাইজেশন
  • সিপিইউ কোর অ্যাফিনিটি

মাল্টিথ্রেডিং

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

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

একটি ভালোভাবে সমান্তরালীকৃত প্রধান ও রেন্ডার থ্রেড, সেইসাথে একটি ওয়ার্কার থ্রেড এবং অডিও থ্রেড সহ গেম।
চিত্র ১. একটি ভালোভাবে সমান্তরালীকৃত প্রধান ও রেন্ডার থ্রেড, সেইসাথে একটি ওয়ার্কার থ্রেড এবং অডিও থ্রেডসহ একটি গেম।

সিপিইউ কোর অ্যাফিনিটি

আপনার সিপিইউ ওয়ার্কলোডের পারফরম্যান্সকে উল্লেখযোগ্যভাবে প্রভাবিত করে এমন একটি বিষয় হলো, কোরগুলোতে সেগুলোর সময়সূচী কীভাবে নির্ধারণ করা হয়। এটিকে দুটি উপাদানে বিভক্ত করা যেতে পারে:

  • আপনার গেম থ্রেডগুলো তাদের কাজের চাপের জন্য সবচেয়ে উপযুক্ত কোরে চলছে কিনা।
  • আপনার গেম থ্রেডগুলো ঘন ঘন কোর পরিবর্তন করে কিনা।

আধুনিক ডিভাইসগুলোতে প্রায়শই হেটেরোজেনাস কম্পিউটিং নামক একটি আর্কিটেকচার ব্যবহার করা হয়, যেখানে কোরগুলোর পারফরম্যান্সের মাত্রা ভিন্ন ভিন্ন হয়ে থাকে:

  • একটি বা কয়েকটি কোর সর্বোচ্চ কর্মক্ষমতা প্রদান করে, কিন্তু বেশি শক্তি খরচ করে। এগুলোকে কখনও কখনও 'বিগ' কোর বলা হয়।
  • অন্যান্য কোরগুলোর সর্বোচ্চ কর্মক্ষমতা কম, কিন্তু সেগুলো বেশি শক্তি-সাশ্রয়ী। এগুলোকে কখনও কখনও "ছোট" কোর বলা হয়।
  • ঐচ্ছিকভাবে: এক বা একাধিক কোর পারফরম্যান্স ও শক্তির মধ্যে ভারসাম্য প্রদান করে। এগুলোকে কখনও কখনও 'মিড' কোর বলা হয়।

ট্রেস নেওয়ার সময় প্রোফাইল কনফিগে সিপিইউ সক্রিয় করে আপনি সিপিইউ ইউসেজ (CPU Usage) -এর অধীনে সিপিইউ থ্রেডের আচরণ পর্যবেক্ষণ করতে পারেন। আপনার ট্রেসের <২০০ মিলিসেকেন্ডের কোনো অংশে জুম করে, আপনি আপনার ডিভাইসের সিপিইউ কোরগুলিতে চলমান স্বতন্ত্র প্রসেসগুলি দেখতে পারেন। সাধারণত, ছোট কোরগুলি ছোট ইনডেক্সের সাথে সম্পর্কিত (উদাহরণস্বরূপ, সিপিইউ '০'-'৩'), যেখানে বড় কোরগুলি উচ্চতর ইনডেক্সের সাথে সম্পর্কিত (উদাহরণস্বরূপ, সিপিইউ '৬'-'৭') এবং মাঝের কোরগুলি (যদি থাকে) মধ্যবর্তী ইনডেক্সগুলি দখল করবে (উদাহরণস্বরূপ, সিপিইউ '৫'-'৬')। এটি একটি প্রচলিত নিয়ম, কিন্তু এটি কোনো নিশ্চয়তা নয়।

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

গেমটির প্রধান এবং রেন্ডার থ্রেড মূলত বড় কোরগুলোতে (সিপিইউ ৬-৭) চলে, যা হালকা নীল রঙে দেখানো হয়েছে।
চিত্র ২। গেমটিতে প্রধান এবং রেন্ডার থ্রেড মূলত বড় কোরগুলোতে (সিপিইউ ৬-৭) চলছে, যা হালকা নীল রঙে দেখানো হয়েছে।

আপনার থ্রেডগুলো কোর পরিবর্তন করছে কিনা, তাও আপনি লক্ষ্য করতে পারেন। এই ধরনের কোর পরিবর্তনের ফলে কনটেক্সট সুইচ এবং কোরের ক্যাশে/রেজিস্টারে স্টেট হারানোর কারণে কিছু ওভারহেড তৈরি হয়।

গেমটিতে প্রধান (থ্রেড-৭) এবং রেন্ডার থ্রেড (থ্রেড-৮) রয়েছে, যা কোরগুলোর মধ্যে স্থান পরিবর্তন করে এবং বেগুনি রঙে দেখানো হয়েছে।
চিত্র ৩। গেমটিতে প্রধান (থ্রেড-৭) এবং রেন্ডার থ্রেড (থ্রেড-৮) রয়েছে, যা কোরগুলোর মধ্যে স্থান পরিবর্তন করে এবং বেগুনি রঙে দেখানো হয়েছে।

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

  • প্ল্যাটফর্ম সফটওয়্যারটি লোড এবং থার্মাল থ্রটলিং-এর মতো রানটাইম ফ্যাক্টরগুলির জন্য টাস্ক প্লেসমেন্ট গতিশীলভাবে সামঞ্জস্য করতে পারে না।
  • বিভিন্ন ডিভাইসে পারফরম্যান্স পরীক্ষা করলে কর্মক্ষমতার বৈশিষ্ট্যে ব্যাপক ভিন্নতা দেখা যেতে পারে, বিশেষ করে যদি ডিভাইসগুলোর দাম বা প্রকাশের তারিখে উল্লেখযোগ্য পার্থক্য থাকে।

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

  • বড় কোরের প্রতি আকর্ষণ জোর করে চাপিয়ে দিলে, তা অকারণে ব্যাটারির চার্জ দ্রুত শেষ হওয়া এবং তাপীয় চাপ বাড়িয়ে দিতে পারে।

এইসব কারণে, সাধারণত ম্যানুয়ালি সিপিইউ অ্যাফিনিটি সেট করা এড়িয়ে চলাই ভালো।