משיב מוביל
max degree of parallelism

שאלה
-
שלום,
אשמח לקבל הסבר ,אפילו כיוון לבעיה שנתקלתי אצל לקוח.
הלקוח סבל מעומס מאוד גבוע על המעבדים ,היו לו כ 8 מעבדים והם היו קבוע בין 90-95 אחוז CPU USAGE.
הקונפיגורציה של ה - SQL SERVER ,שנתי את ה - MAX DOP ל - 0 אחרי שהם היו על - 4.
ותגובת ה- CPU היתה הפוכה ממה שחשבתי שייקרה ,ה - CPU עלה ב 5 אחוז.
מה יכול להיות הסיבה .?
חשוב לציין שהתחזוקה של ה- DATABASES היתה לא טובה ,היה מחסור מאוד גדול של INDEXES .
תודה רבה
איציק
elfasikave
תשובות
-
שלום
התופעה שתיארת צפויה לחלוטין.
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
-
תוספת לדברים הטובים של נועם:
בלי להכיר את המערכת אלא רק לפי מה שכתבת כאן בקצרה (מאוד) תראה מה ניתן להגיע למסקנה של כיוון: המערכת היתה כבדה מאוד כאשר שרת ה SQL היה מוגבל ל 4 מעבדים. עדיין המערכת היתה על מצב של 95% מעבד. מה המסקנה? אם שרת ה SQL לא נגע ב 4 מעבדים האחרים אז זה לא נותן לך כיוון לחשוב על משהו נוסף?
האם המחשב משמש רק כשרת SQL יעודי?
האם יש שימוש נרחב בפעולות ב CLR (מגבלת המעבדים ב SQL לא תופסת לגבי ה CLR שעובדים איתו תחת ה SQL ולכן זה מבלבל לפעמים)?
האם אתה מדבר על 8 מעבדים וירטואליים או פיסיים? למשל מעבד I7 הוא 4 מעדים פיזיים ו 8 וירטואליים (ההבדל גדול). 2 מעבדים של I5 ייתנו יותר תפוקה ממעבד I7 אחד בעקרון מכיוון שאז היהיו לך 8 ליבות אמיתיות.
בשלב ראשון הייתי ממליץ לאתר בכלל את המקור של מה שמקפיץ את המעבד. מה ה THREAD-ים הכי כבדים+ממושכים מבחינת זמן במערכת. אני מבין ממך שמדובר במצב קבוע ולא משהו שמקפיץ לפעמים. זו נקודה שיש לקחת בחשבון באיתור הבעיה/פתרון. אולי כדאי לנסות להוריד את מספר המעבדים ל 2 ולבדוק האם עדיין יש שימוש בכל המעבדים...- סומן כתשובה על-ידי Itzik Elfasikave יום ראשון 10 פברואר 2013 21:04
כל התגובות
-
שלום
התופעה שתיארת צפויה לחלוטין.
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
-
תוספת לדברים הטובים של נועם:
בלי להכיר את המערכת אלא רק לפי מה שכתבת כאן בקצרה (מאוד) תראה מה ניתן להגיע למסקנה של כיוון: המערכת היתה כבדה מאוד כאשר שרת ה SQL היה מוגבל ל 4 מעבדים. עדיין המערכת היתה על מצב של 95% מעבד. מה המסקנה? אם שרת ה SQL לא נגע ב 4 מעבדים האחרים אז זה לא נותן לך כיוון לחשוב על משהו נוסף?
האם המחשב משמש רק כשרת SQL יעודי?
האם יש שימוש נרחב בפעולות ב CLR (מגבלת המעבדים ב SQL לא תופסת לגבי ה CLR שעובדים איתו תחת ה SQL ולכן זה מבלבל לפעמים)?
האם אתה מדבר על 8 מעבדים וירטואליים או פיסיים? למשל מעבד I7 הוא 4 מעדים פיזיים ו 8 וירטואליים (ההבדל גדול). 2 מעבדים של I5 ייתנו יותר תפוקה ממעבד I7 אחד בעקרון מכיוון שאז היהיו לך 8 ליבות אמיתיות.
בשלב ראשון הייתי ממליץ לאתר בכלל את המקור של מה שמקפיץ את המעבד. מה ה THREAD-ים הכי כבדים+ממושכים מבחינת זמן במערכת. אני מבין ממך שמדובר במצב קבוע ולא משהו שמקפיץ לפעמים. זו נקודה שיש לקחת בחשבון באיתור הבעיה/פתרון. אולי כדאי לנסות להוריד את מספר המעבדים ל 2 ולבדוק האם עדיין יש שימוש בכל המעבדים...- סומן כתשובה על-ידי Itzik Elfasikave יום ראשון 10 פברואר 2013 21:04