ওয়ার্কস্পেস মেমরির বরাদ্দকালে স্পিনলক বিষয়বস্তু
এখান থেকেই এটি মজা পেতে শুরু করে। আমি ইতিমধ্যে বর্ণনা করেছি যে ওয়ার্কস্পেস মেমরির মধ্যে সাজানো এবং হ্যাশ কাজ সিপিইউ গ্রহণ করে তবে বিপুল লুকিং সংখ্যায় প্রতিফলিত হয় না।
স্পিনলক কনটেন্টেশন এই বিশেষ মজার আরেকটি স্তর। বাফার পুল থেকে যখন মেমরি চুরি হয়ে যায় এবং কোনও ক্যোয়ারী মেমরি অনুদানের বিরুদ্ধে ব্যবহারের জন্য বরাদ্দ দেওয়া হয় তখন মেমরি অ্যাক্সেসকে একটি স্পিনলক দিয়ে ক্রমিক করা হয়। ডিফল্টরূপে, এটি NUMA নোড স্তরে পার্টিশন করা কোনও সংস্থান নিয়ে হয়। সুতরাং কর্মক্ষেত্রের মেমরি ব্যবহার করে একই NUMA নোডের প্রতিটি ক্যোয়ারী অনুদানের বিরুদ্ধে মেমরি চুরি করার সময় স্পিনলক বিতর্ককে সম্ভাব্যভাবে গ্রহণ করতে পারে। অত্যন্ত গুরুত্বপূর্ণ লক্ষণীয়: এটি "ক্যোয়ারি প্রতি এক সময়" বিতর্ক ঝুঁকি নয়, কারণ যদি আসল অনুদানের সময় বিতর্ক বিন্দুটি হত। পরিবর্তে, যখন মেমরিটি অনুদানের বিরুদ্ধে চুরি হয়ে যায় - সুতরাং খুব বড় মেমরির অনুদানের সাথে অনুসন্ধানের ক্ষেত্রে স্পিনলক কনটেন্ট করার অনেক সুযোগ থাকবে যদি এটি তার অনুদানের বেশিরভাগ অংশ ব্যবহার করে।
মূল স্তরে রিসোর্সটিকে আরও বিভাজন করে ট্রেস ফ্ল্যাগ 8048 এই বিতর্ককে মুক্তি দেওয়ার দুর্দান্ত কাজ করে।
মাইক্রোসফ্ট বলেছে "সকেট প্রতি 8 বা ততোধিক কোর হলে ট্রেস ফ্ল্যাগ 8048 বিবেচনা করুন"। তবে ... এটি সকেট প্রতি কতগুলি কোর (যতক্ষণ না একাধিক রয়েছে), তা নয়, বরং একক NUMA নোডে কাজ করার বিষয়ে বিতর্ক করার জন্য কতটা সুযোগ রয়েছে।
আঠালো এএমডি প্রসেসরগুলিতে (সকেট প্রতি 12 টি কর্কট, সকেট প্রতি 2 টি NUMA নোড) সেখানে NUMA নোডের জন্য 6 টি কোর ছিল। আমি system টি সিপিইউ সহ একটি সিস্টেম দেখেছি (সুতরাং আটটি NUMA নোড, c টি কোর প্রত্যেকে) যা স্প্রেলক কনভয়টিতে জ্যাম আপ ছিল যতক্ষণ না ট্রেস ফ্ল্যাগ ৮০৮০ সক্ষম হয়।
আমি এই স্পিনলক কনটেন্টেশনটি ভিএমগুলিতে 4 টি ভিসিপিইউ-এর মতো ছোট কার্য সম্পাদন করতে দেখেছি। ট্রেস পতাকা 8048 এই সিস্টেমে সক্ষম করার সময় যা করা উচিত ছিল তা করেছিল।
সঠিক কাজের চাপের সাথে এখনও সেখানে 4 টি মূল ফ্রিকোয়েন্সি অপ্টিমাইজড সিপিইউ রয়েছে তা বিবেচনা করে তারা ট্রেস পতাকা 8048 থেকেও উপকার পাবেন।
সিএমএমথ্রেইড স্পিনলক কনটেন্টের ধরণের সাথে অপেক্ষা করে যা পতাকাটি ৮৮৪৮ সরিয়ে ফেলে। তবে সাবধানতার একটি শব্দ: সিএমএমথ্রেড ওয়েটস একটি সংশ্লেষ লক্ষণ, এই বিশেষ সমস্যার মূল কারণ নয়। আমি উচ্চ সিএমএমথ্রিআডের "ওয়েট স্টার্টস" সিস্টেমগুলি দেখেছি যেখানে ট্রেস পতাকা 8048 এবং / অথবা 9024 বিস্তারে বিলম্বিত হয়েছিল কারণ জড়িত সিএমএমথ্রেড অপেক্ষা অপেক্ষা সময়টি বেশ কম ছিল। স্পিনলক সহ, জমে থাকা অপেক্ষা সময়টি সাধারণত দেখতে ভুল বিষয়। পরিবর্তে, আপনি নষ্ট সিপিইউ সময়টি দেখতে চান - প্রধানত স্পিনগুলি দ্বারা প্রতিনিধিত্ব করা হয়, দ্বিতীয়ত এটি সম্পর্কিত ওয়েটগুলি দ্বারা সংঘটিত হয় যা সম্ভাব্য অপ্রয়োজনীয় প্রসঙ্গের সুইচগুলি উপস্থাপন করে।