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

এখানে তিনটি পরিমাপ আছে, এবং তারা একই সীমা ভাগ করে না।

তিনটি সংখ্যা, তিনটি সীমা

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

উপকারী শৃঙ্খলা হলো মান পড়ার আগে সীমার নাম বলা। একক ও সীমা পাশাপাশি লিখুন। কোনো টুল মিলিসেকেন্ড জানালে জিজ্ঞাসা করুন, কিসের মিলিসেকেন্ড: রুটিনের ভেতরের সময়, চালানোর জন্য অপেক্ষার সময়, নাকি উত্তর আসা পর্যন্ত সময়।

একটি শ্রেণিতে উচ্চ সংখ্যা একটি সূত্র, কখনোই রোগনির্ণয় নয়।

শিরোনামের পেছনের সংজ্ঞা পড়ুন

ইউটিলিটিগুলো যাকে লেটেন্সি বলে তাতে ভিন্ন। কেউ ড্রাইভার রুটিনের সময়কাল জানায়, কেউ শিডিউলিং বিলম্ব জানায়, আর একই মেশিনে দুটি রাশি বিপরীত দিকে যেতে পারে। যে ড্যাশবোর্ড তাদের একটিকে শুধু DPC লেটেন্সি বলে, সে দেখতে যতটা লাগে তার চেয়ে কম বলেছে। তাই যে মেশিনে কিছুই বদলায়নি, তা নিয়ে দুটি ড্যাশবোর্ড দ্বিমত করতে পারে।

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

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

প্রতিটি পর্যবেক্ষণ একটি উইন্ডোতে রাখুন

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

wpr -start CPU -filemode
wpr -stop vpn-trace.etl
xperf -i vpn-trace.etl -a dpcisr -o dpc.txt

তারপর বিশ্লেষণ টুলে ট্রেস খুলে পুরো ক্যাপচারের বদলে ওই উইন্ডোর ভেতরের সময়কাল অনুযায়ী সাজান। CPU বিশ্লেষণের নির্দেশিকা DPC/ISR সময়কালের দৃশ্য বর্ণনা করে, যা মডিউল ও ফাংশনের নামে সময় আরোপ করে।

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

প্রমাণ যে কম্পোনেন্টের দিকে ইশারা করে সেটিই বদলান

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

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

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

সম্পর্কিত নিবন্ধ