الحجم المناسب لملف ترحيل صفحات Windows O/S لـ SQL Server

StackOverflow https://stackoverflow.com/questions/2588

  •  08-06-2019
  •  | 
  •  

سؤال

هل يعرف أي شخص قاعدة أساسية جيدة لحجم ملف ترحيل الصفحات المناسب لخادم Windows 2003 الذي يقوم بتشغيل SQL Server؟

هل كانت مفيدة؟

المحلول

بغض النظر عن حجم ذاكرة الوصول العشوائي (RAM)، فإنك لا تزال بحاجة إلى ملف ترحيل الصفحات (pagefile) يبلغ على الأقل 1.5 ضعف حجم ذاكرة الوصول العشوائي الفعلية (RAM).وينطبق هذا حتى إذا كان لديك جهاز بسعة 1 تيرابايت من ذاكرة الوصول العشوائي، فستحتاج إلى ملف ترحيل صفحات بسعة 1.5 تيرابايت على القرص (يبدو هذا جنونًا، ولكنه حقيقي).

عندما تطلب إحدى العمليات ذاكرة MEM_COMMIT عبر VirtualAlloc/VirtualAllocEx، يجب حجز الحجم المطلوب في ملف ترحيل الصفحات.كان هذا صحيحًا في نظام Win NT الأول، ولا يزال صحيحًا حتى اليوم إدارة الذاكرة الافتراضية في Win32:

عندما ترتكب الذاكرة ، يتم تخصيص صفحات فعلية للذاكرة والمساحة مخصصة في Pagefile.

في بعض الحالات الغريبة للغاية، سيطلب SQL Server دائمًا صفحات MEM_COMMIT.وبالنظر إلى حقيقة أن SQL يستخدم ملف إدارة الذاكرة الديناميكية السياسة التي تحتفظ مقدمًا بأكبر قدر ممكن من المخزون الاحتياطي (الاحتياطيات و يرتكب فيما يتعلق بـ VAS)، سيطلب SQL Server عند بدء التشغيل حجزًا كبيرًا للمساحة في ملف ترحيل الصفحات.إذا لم يكن حجم ملف ترحيل الصفحات صحيحًا، فستبدأ الأخطاء 801/802 في الظهور في ملف وعمليات ERRORLOG الخاصة بـ SQL.

يؤدي هذا دائمًا إلى حدوث بعض الالتباس، حيث يفترض المسؤولون خطأً أن ذاكرة الوصول العشوائي الكبيرة تلغي الحاجة إلى ملف ترحيل الصفحات.في الحقيقة يحدث العكس، حيث تزيد ذاكرة الوصول العشوائي الكبيرة من الحاجة إلى ملف ترحيل الصفحات، فقط بسبب الأعمال الداخلية لمدير ذاكرة Windows NT.ونأمل ألا يتم استخدام ملف ترحيل الصفحات المحجوز أبدًا.

نصائح أخرى

مع كل احترامي لريموس (الذي أحترمه كثيرًا)، فأنا لا أتفق معه بشدة.إذا كان ملف صفحتك كبيرًا بما يكفي لدعم التفريغ الكامل، فسيتم تنفيذ التفريغ الكامل في كل مرة.إذا كان لديك كمية كبيرة جدًا من ذاكرة الوصول العشوائي (RAM)، فقد يتسبب ذلك في حدوث وميض صغير يتحول إلى انقطاع كبير.

لا تريد أن يقوم الخادم الخاص بك بكتابة 1 تيرابايت من ذاكرة الوصول العشوائي (RAM) على القرص إذا كانت هناك مشكلة عابرة لمرة واحدة.إذا كانت هناك مشكلة متكررة، يمكنك زيادة ملف الصفحة لالتقاط تفريغ كامل.سأنتظر للقيام بذلك حتى يتم توجيهك بواسطة PSS (أو أي شخص آخر مؤهل لتحليل تفريغ كامل) يطلب منك التقاط تفريغ كامل.تعرف نسبة صغيرة جدًا من مسؤولي قواعد البيانات كيفية تحليل التفريغ الكامل.يعد التفريغ المصغر كافيًا لاستكشاف معظم المشكلات التي تظهر على أي حال وإصلاحها.

بالإضافة إلى ذلك، إذا تم تكوين الخادم الخاص بك للسماح بتفريغ كامل بسعة 1 تيرابايت وحدثت مشكلة متكررة، فما مقدار مساحة القرص الحرة التي توصي بتوفيرها؟يمكنك ملء شبكة SAN بالكامل في عطلة نهاية أسبوع واحدة.

كان ملف الصفحة 1.5*ذاكرة الوصول العشوائي (RAM) هو المعيار السائد في الأيام التي كنت فيها محظوظًا بامتلاك خادم SQL مزود بذاكرة وصول عشوائي (RAM) تبلغ 3 أو 4 جيجابايت.ليست هذه هي الحال الآن.أترك ملف الصفحة بالحجم والإعدادات الافتراضية لنظام التشغيل Windows على جميع خوادم الإنتاج (باستثناء خادم SSAS الذي يواجه ضغطًا على الذاكرة).

وللتوضيح فقط، لقد عملت مع خوادم تتراوح من 2 جيجابايت من ذاكرة الوصول العشوائي إلى 2 تيرابايت من ذاكرة الوصول العشوائي.بعد أكثر من 11 عامًا، لم يكن علي سوى زيادة ملف ترحيل الصفحات لالتقاط ملف تفريغ كامل مرة واحدة.

وفقًا لـ Microsoft ، "مع زيادة كمية ذاكرة الوصول العشوائي في الكمبيوتر ، تنخفض الحاجة إلى ملف الصفحة." ثم تستمر المقالة لوصف كيفية استخدام سجلات الأداء لتحديد مقدار ملف الصفحة في الحقيقة تم استخدامها.حاول ضبط ملف الصفحة الخاص بك على ذاكرة النظام 1.5X كبداية، ثم قم بإجراء المراقبة الموصى بها وقم بإجراء التعديلات من هناك.

كيفية تحديد حجم ملف الصفحة المناسب لإصدارات 64 بت من Windows

كلما كان حجم مجموعة العمل الخاصة بالتطبيق أكبر كلما كان ذلك أفضل حيث ستبدأ في تحقيق عوائد متناقصة.يمكنك محاولة العثور على ذلك عن طريق زيادة الحجم أو تقليله ببطء حتى ترى تغييرًا كبيرًا في معدلات دخول ذاكرة التخزين المؤقت.ومع ذلك، إذا كان معدل الوصول إلى ذاكرة التخزين المؤقت يزيد عن 90% أو نحو ذلك، فمن المحتمل أن تكون موافقًا.بشكل عام، يجب عليك مراقبة نظام الإنتاج للتأكد من أنه لم يتجاوز تخصيص ذاكرة الوصول العشوائي (RAM) المخصصة له.

لقد واجهنا مؤخرًا بعض مشكلات الأداء مع أحد SQL Server لدينا والتي لم نتمكن من تضييق نطاقها بالكامل، واستخدمنا بالفعل إحدى تذاكر دعم Microsoft الخاصة بنا لمساعدتهم في استكشاف الأخطاء وإصلاحها.تم تحديد الحجم الأمثل لملف ترحيل الصفحات لاستخدامه مع SQL Server، وتوصي Microsoft بذلك 1 1/2 أضعاف حجم ذاكرة الوصول العشوائي.

إذا كنت تبحث عن أداء عالٍ، فستحتاج إلى تجنب الترحيل تمامًا، وبالتالي يصبح حجم ملف الصفحة أقل أهمية.استثمر في أكبر قدر ممكن من ذاكرة الوصول العشوائي (RAM) لخادم قاعدة البيانات.

بعد الكثير من البحث، لا تحتوي خوادم SQL المخصصة لدينا التي تعمل بنظام Enterprise x64 على نظام التشغيل Windows 2003 Enterprise x64 على ملف صفحة.

ببساطة، ملف الصفحة عبارة عن ذاكرة تخزين مؤقت للملفات التي تتم إدارتها بواسطة نظام التشغيل، ولدى SQL نظام إدارة الذاكرة الداخلية الخاص بها.

مقالة MS المشار إليها لا تؤهل لأن تكون النصيحة لنظام التشغيل الذي يقوم بتشغيل خدمات جاهزة مثل مشاركة الملفات.

إن وجود ملف صفحة يثقل كاهل الإدخال / الإخراج للقرص لأن Windows يحاول المساعدة، في حين أن نظام التشغيل SQL فقط يمكنه القيام بهذه المهمة.

في هذه الحالة، التوصية العادية بـ 1.5 مرة من إجمالي ذاكرة الوصول العشوائي الفعلية ليست هي الأفضل.يتم تقديم هذه التوصية العامة جدًا على افتراض أن الذاكرة بأكملها يتم استخدامها من خلال العمليات "العادية"، والتي يمكن عمومًا نقل صفحاتها الأقل استخدامًا إلى القرص دون توليد مشكلات كبيرة في الأداء لعملية التطبيق التي تنتمي إليها الذاكرة.

بالنسبة للخوادم التي تستخدم SQL Server (بشكل عام مع كميات كبيرة جدًا من ذاكرة الوصول العشوائي)، تلتزم غالبية ذاكرة الوصول العشوائي الفعلية بعملية SQL Server ويجب (إذا تم تكوينها بشكل صحيح) تأمينها في الذاكرة الفعلية، مما يمنع ترحيلها إلى ملف ترحيل الصفحات .يدير SQL Server ذاكرته الخاصة بعناية شديدة مع وضع الأداء في الاعتبار، وذلك باستخدام جزء كبير من ذاكرة الوصول العشوائي المخصصة لعمليته كمخزن مؤقت للبيانات لتقليل الإدخال/الإخراج على القرص.ليس من المنطقي ترحيل صفحات ذاكرة التخزين المؤقت للبيانات هذه إلى ملف ترحيل الصفحات، حيث أن الغرض الوحيد من وجود هذه البيانات في ذاكرة الوصول العشوائي (RAM) في المقام الأول هو تقليل الإدخال/الإخراج للقرص.(لاحظ أن نظام التشغيل Windows يستخدم أيضًا ذاكرة الوصول العشوائي المتوفرة بشكل مشابه لذاكرة التخزين المؤقت على القرص لتسريع تشغيل النظام.) نظرًا لأن SQL Server يدير بالفعل مساحة الذاكرة الخاصة به، فلا ينبغي اعتبار مساحة الذاكرة هذه "قابلة للترحيل"، ولا يتم تضمينها في حساب ملف ترحيل الصفحات. مقاس.

فيما يتعلق بـ MEM_COMMIT الذي ذكره ريموس، فإن المصطلحات مربكة لأنه في لغة الذاكرة الظاهرية، لا تشير كلمة "محجوز" أبدًا إلى التخصيص الفعلي، ولكن إلى منع استخدام مساحة العنوان (وليس المساحة الفعلية) من خلال عملية أخرى.الذاكرة المتاحة "للالتزام بها" تساوي بشكل أساسي مجموع ذاكرة الوصول العشوائي الفعلية وحجم ملف ترحيل الصفحات، والقيام بـ MEM_COMMIT يؤدي فقط إلى تقليل المقدار المتاح في التجمع الالتزام.نعم هو كذلك لا تخصيص صفحة مطابقة في ملف ترحيل الصفحات في ذلك الوقت.عندما تتم بالفعل كتابة صفحة ذاكرة مخصصة، فهذا هو الوقت الذي يقوم فيه نظام الذاكرة الظاهرية بتخصيص صفحة ذاكرة فعلية وربما رفع صفحة ذاكرة أخرى من ذاكرة الوصول العشوائي الفعلية إلى ملف ترحيل الصفحات.انظر MSDN وظيفة فيرتوالالوك مرجع.

يقوم نظام التشغيل Windows بتتبع ضغوط الذاكرة بين عمليات التطبيق وآلية ذاكرة التخزين المؤقت على القرص الخاصة به ويقرر متى يجب نقل صفحات الذاكرة غير المقفلة من صفحات الذاكرة الفعلية إلى ملف ترحيل الصفحات.ما أفهمه هو أن وجود ملف ترحيل صفحات كبير جدًا مقارنة بمساحة الذاكرة الفعلية غير المقفلة يمكن أن يؤدي إلى قيام Windows بترحيل ذاكرة التطبيق بشكل مفرط إلى ملف ترحيل الصفحات، مما يؤدي إلى معاناة تلك التطبيقات من عواقب فقدان الصفحة (أداء بطيء).

طالما أن الخادم لا يقوم بتشغيل عمليات أخرى تستهلك الذاكرة، فيجب أن يكون حجم ملف ترحيل الصفحات الذي يبلغ 4 جيجابايت كافيًا.إذا قمت بتعيين SQL Server للسماح بتأمين الصفحات في الذاكرة، فيجب عليك أيضًا التفكير في تعيين إعداد الحد الأقصى للذاكرة في SQL Server بحيث يترك بعض ذاكرة الوصول العشوائي الفعلية متاحة لنظام التشغيل لنفسه وللعمليات الأخرى.

تشير أخطاء 802 في SQL Server إلى أن النظام لا يمكنه تنفيذ أي صفحات أخرى لذاكرة التخزين المؤقت للبيانات.ستساعد زيادة حجم ملف ترحيل الصفحات في هذا الموقف فقط بقدر ما يكون Windows قادرًا على ترحيل الذاكرة من عمليات غير تابعة لـ SQL Server.إن السماح لذاكرة SQL Server بالنمو في ملف ترحيل الصفحات في هذه الحالة قد يؤدي إلى التخلص من رسائل الخطأ، ولكنه يؤدي إلى نتائج عكسية، نظرًا للنقطة السابقة حول سبب ذاكرة التخزين المؤقت للبيانات في المقام الأول.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top