none
max degree of parallelism RRS feed

  • שאלה

  • שלום,

    אשמח לקבל הסבר ,אפילו כיוון לבעיה שנתקלתי אצל לקוח.

    הלקוח סבל מעומס מאוד גבוע על המעבדים ,היו לו כ 8 מעבדים והם היו קבוע בין 90-95 אחוז CPU USAGE.

    הקונפיגורציה של ה - SQL SERVER ,שנתי את ה - MAX DOP ל - 0 אחרי שהם היו על - 4.

    ותגובת ה- CPU היתה הפוכה ממה שחשבתי שייקרה ,ה - CPU עלה ב 5 אחוז.

    מה יכול להיות הסיבה .?

    חשוב לציין שהתחזוקה של ה- DATABASES היתה לא טובה ,היה מחסור מאוד גדול של INDEXES .

    תודה רבה 

    איציק


    elfasikave

    יום שישי 08 פברואר 2013 08:30

תשובות

  • שלום

    התופעה שתיארת צפויה לחלוטין.


    Maxdop=0  גורם לכך שאין הגבלה על כמות המעבדים / ליבות ש SQL Server  ישתמש בהם

    במצב 0    ה SQL Server מחליט לבד מה האפשרות המיטבית לשימוש במעבדים ליבות, ובמקרה שלך בין 1 ל 8 ליבות.

    במצב maxdop=4  היתה הגבלה על כמות מעבדים/ ליבות כך שלכל שאילתה הוקצה בין 1 ל 4 ליבות בלבד.


    כלומר לאחר ששינית ל maxdop=0 ה SQL Server "הרגיש חופשי" לנצל יותר ליבות ומכך יותר CPU usage


    שים לב שניתן להגדיר Maxdop בשני אופנים

    1. ברמת כל השרת ==> כל השרת יושפע

    2. ברמת שאילתא כ query hint  ==> רק השאילתא תושפע.

    להלן הסבר מקיף על התופעה והשימוש ב maxdop

    http://blogs.msdn.com/b/cindygross/archive/2011/01/28/the-ins-and-outs-of-maxdop.aspx

    מקווה שעזרתי,
    נועם

    • סומן כתשובה על-ידי Itzik Elfasikave יום ראשון 10 פברואר 2013 21:04
    יום שישי 08 פברואר 2013 09:28
  • תוספת לדברים הטובים של נועם:

    בלי להכיר את המערכת אלא רק לפי מה שכתבת כאן בקצרה (מאוד) תראה מה ניתן להגיע למסקנה של כיוון: המערכת היתה כבדה מאוד כאשר שרת ה SQL היה מוגבל ל 4 מעבדים. עדיין המערכת היתה על מצב של 95% מעבד. מה המסקנה? אם שרת ה SQL לא נגע ב 4 מעבדים האחרים אז זה לא נותן לך כיוון לחשוב על משהו נוסף?

    האם המחשב משמש רק כשרת SQL יעודי?

    האם יש שימוש נרחב בפעולות ב CLR (מגבלת המעבדים ב SQL לא תופסת לגבי ה CLR שעובדים איתו תחת ה SQL ולכן זה מבלבל לפעמים)?

    האם אתה מדבר על 8 מעבדים וירטואליים או פיסיים? למשל מעבד I7 הוא 4 מעדים פיזיים ו 8 וירטואליים (ההבדל גדול). 2 מעבדים של I5 ייתנו יותר תפוקה ממעבד I7 אחד בעקרון מכיוון שאז היהיו לך 8 ליבות אמיתיות.

    בשלב ראשון הייתי ממליץ לאתר בכלל את המקור של מה שמקפיץ את המעבד. מה ה THREAD-ים הכי כבדים+ממושכים מבחינת זמן במערכת. אני מבין ממך שמדובר במצב קבוע ולא משהו שמקפיץ לפעמים. זו נקודה שיש לקחת בחשבון באיתור הבעיה/פתרון. אולי כדאי לנסות להוריד את מספר המעבדים ל 2 ולבדוק האם עדיין יש שימוש בכל המעבדים...

    signature

    • סומן כתשובה על-ידי Itzik Elfasikave יום ראשון 10 פברואר 2013 21:04
    יום שישי 08 פברואר 2013 10:07
    מנחה דיון

כל התגובות

  • שלום

    התופעה שתיארת צפויה לחלוטין.


    Maxdop=0  גורם לכך שאין הגבלה על כמות המעבדים / ליבות ש SQL Server  ישתמש בהם

    במצב 0    ה SQL Server מחליט לבד מה האפשרות המיטבית לשימוש במעבדים ליבות, ובמקרה שלך בין 1 ל 8 ליבות.

    במצב maxdop=4  היתה הגבלה על כמות מעבדים/ ליבות כך שלכל שאילתה הוקצה בין 1 ל 4 ליבות בלבד.


    כלומר לאחר ששינית ל maxdop=0 ה SQL Server "הרגיש חופשי" לנצל יותר ליבות ומכך יותר CPU usage


    שים לב שניתן להגדיר Maxdop בשני אופנים

    1. ברמת כל השרת ==> כל השרת יושפע

    2. ברמת שאילתא כ query hint  ==> רק השאילתא תושפע.

    להלן הסבר מקיף על התופעה והשימוש ב maxdop

    http://blogs.msdn.com/b/cindygross/archive/2011/01/28/the-ins-and-outs-of-maxdop.aspx

    מקווה שעזרתי,
    נועם

    • סומן כתשובה על-ידי Itzik Elfasikave יום ראשון 10 פברואר 2013 21:04
    יום שישי 08 פברואר 2013 09:28
  • תוספת לדברים הטובים של נועם:

    בלי להכיר את המערכת אלא רק לפי מה שכתבת כאן בקצרה (מאוד) תראה מה ניתן להגיע למסקנה של כיוון: המערכת היתה כבדה מאוד כאשר שרת ה SQL היה מוגבל ל 4 מעבדים. עדיין המערכת היתה על מצב של 95% מעבד. מה המסקנה? אם שרת ה SQL לא נגע ב 4 מעבדים האחרים אז זה לא נותן לך כיוון לחשוב על משהו נוסף?

    האם המחשב משמש רק כשרת SQL יעודי?

    האם יש שימוש נרחב בפעולות ב CLR (מגבלת המעבדים ב SQL לא תופסת לגבי ה CLR שעובדים איתו תחת ה SQL ולכן זה מבלבל לפעמים)?

    האם אתה מדבר על 8 מעבדים וירטואליים או פיסיים? למשל מעבד I7 הוא 4 מעדים פיזיים ו 8 וירטואליים (ההבדל גדול). 2 מעבדים של I5 ייתנו יותר תפוקה ממעבד I7 אחד בעקרון מכיוון שאז היהיו לך 8 ליבות אמיתיות.

    בשלב ראשון הייתי ממליץ לאתר בכלל את המקור של מה שמקפיץ את המעבד. מה ה THREAD-ים הכי כבדים+ממושכים מבחינת זמן במערכת. אני מבין ממך שמדובר במצב קבוע ולא משהו שמקפיץ לפעמים. זו נקודה שיש לקחת בחשבון באיתור הבעיה/פתרון. אולי כדאי לנסות להוריד את מספר המעבדים ל 2 ולבדוק האם עדיין יש שימוש בכל המעבדים...

    signature

    • סומן כתשובה על-ידי Itzik Elfasikave יום ראשון 10 פברואר 2013 21:04
    יום שישי 08 פברואר 2013 10:07
    מנחה דיון