CPU Ready time הינו אחד ה-counters החשובים בניטור של הסביבה הוירטואלית.
בהגדרה זאת כמות הזמן שמכונה וירטואלית מוכנה ורוצה לרוץ אבל מסיבה כזאת או אחרת לא מקבלת מ-ESX את משאבי המעבד שהיא ביקשה.
ממסמכים ומאמרים שונים אפשר ללמוד מהם הערכים שנחשבים לתקינים והלא תקינים של CPU Ready:
עד 5% – תקין (תלוי גם ברגישות של אפליקציה ספציפית)
5-10% – סביר להניח שיש פגיעה בביצועים של המכונה ושל האפליקציות
מעל 10% – אפשר להגיד כמעט בוודאות שהמכונה סובלת
איפה ניתן לראות את הערך של הפרמטר?
1. ניתן לפתוח esxtop ולראות את הערך של CPU Ready – %RDY:
הערה: שימו לב שב-esxtop הערך של %RDY זהו סכום של Ready Time של כל המעבדים של המכונה, לכן צריך לחלק את הערך של ה-counter במספר המעבדים שמוקצים לאותה מכונה וירטואלית כדי לדעת האם היא סובלת באמת. אגב, כדי לדעת כמה מעבדים יש ל-VM מתוך esxtop, צריך להסתכל על עמודת NWLD – מהערך בעמודה מחסירים 3 ומקבלים את מספר ה-vCPUs.
הכלי טוב לבדיקות real-time בעיקר (קיימת גם אפשרות להריץ אותו גם ב-batch mode לאורך זמן) ובעזרתו ניתן לתפוס peaks רגעיים, מה שלא אפשרי בכלים אחרים.
2. עכשיו , אבל אם נפתח Performance Charts ב-vSphere Client ונסתכל על Ready Time, נראה את התמונה הבאה:
רואים 342ms. מה זה אומר? טוב \ לא טוב? כמה אחוז זה? ואחוז ממה בכלל?
אז ככה:
vSphere Client מציג את ה-Ready Time ב-ms מתוך X ms כשה-X הוא מרווח הזמן בין דגימה לדגימה.
למשל, בדוגמא שלנו מדובר בגרף של Real-Time, לכן כל נקודה בגרף מייצגת דגימה של 20 שניות או 20000 מילישניות. כלומר בחלון הזמן של 20000 מילישניות השרת חיכה למעבד בסה"כ (לא ברצף!) 342 מילישניות. לכן כדי להגיע לאחוזים נחלק את 342 ב-20000 ונכפיל ב-100. יוצא 1.71% – מה שאומר שהערך הינו תקין.
עכשיו, בגרפים האחרים (Past Day, Week וכו') חלון הזמן משתנה:
- Real-time: 20 seconds –> 20,000 ms
- Past Day: 5 minutes (300 seconds –> 300, 000 ms)
- Past Week: 30 minutes (1800 seconds – 1,800,000 ms)
- Past Month: 2 hours (7200 seconds –> 7,200,000 ms)
- Past Year: 1 day (86400 seconds –> 86,400,000 ms)
מסיבה הזאת הערך עצמו לא מספיק כדי להבין האם יש בעיה, חייבים לדעת גם מה מרווח הזמן. לדוגמא, אם אומרים לכם: "יש לי CPU Ready מטורף, 30000!", צריך לשאול באיזה גרף ראו את זה. בסוף יתברר, שזה היה הגרף השבועי ובתכלס ה-ready time הוא 1.66% שזה תקין לחלוטין.
להלן הנוסחאות המקוצרות להמרת ה-ms ל-%:
- Real-time: CPU ready value / 200
- Past Day: CPU ready value / 3000
- Past Week: CPU ready value / 18000
- Past Month: CPU ready value / 72000
- Past Year: CPU ready value / 864000
אם אין לכם כח לחשב, הכנתי טבלה שתעזור להבין אם הערך תקין \ לא תקין:
Interval 5% 10%
Real-time 1000 ms 2000 ms
Past Day 15,000 ms 30,000 ms
Past Week 90,000 ms 180,000 ms
Past Month 360,000 ms 720,000 ms
Past Year 4,320,000 ms 8,640,000 ms
Performance Charts מאפשרים לראות את הנתונים בצורה ויזואלית וגם את הנתונים בעבר. שימו לב שה-vCenter מבצע roll up של סטטיסטיקות על ידי חישוב ממוצעים ולכן הגרפים "מתיישרים" ככל שמסתכלים על גרף ישן יותר וה-peaks נעלמים.
3. אופציה נוספת הינה vCOps. בו ניתן לראות את ה-ready time גם באחוזים וגם במילישניות. אין יותר צורך לחשב.
בנוסף, vCOps לא מבצע roll up ולכן ניתן לראות את הערכים ברזולוציה של 5 דקות כמה זמן אחורה שאתם רוצים!
הרעיון המקורי היה לכתוב פוסט קצר שמסביר איך להמיר cpu ready מ-ms ל-%, אבל איכשהו זה התחיל לזרום ויצא פוסט ארוך במיוחד.
מקור: Converting between CPU summation and CPU % ready values
מיכאל.
סוף סוף הסבר ראוי בעברית!
תודה מיכאל
שיחקת אותה 😉
הסבר מקצועי ממש מעולה.
ממש נושא פופולרי…
http://vmtoday.com/2013/01/cpu-ready-revisted-quick-reference-charts/
🙂
Pingback: vIrtuaLization IL » Blog Archive » כמה לינקים חדשים בעמוד Performance
סוף סוף הסבר טוב בעברית!
אין עליך מיכאל 🙂
בכיף. תודה.
יפה מאוד,
מתי היה לך זמן לחקור את זה? 🙂