במאמר הזה מוסבר איך להשוות את הביצועים של Persistent Disk במכונות וירטואליות (VM) של Windows. במכונות וירטואליות של Linux, אפשר לעיין במאמר בנושא השוואת ביצועים של דיסק אחסון מתמיד במכונת VM של Linux.
כדי למדוד את ה-IOPS ואת קצב הנתונים של דיסק שנמצא בשימוש במכונה פועלת, צריך להשוות את מערכת הקבצים עם ההגדרות הרצויות. אפשר להשתמש באפשרות הזו כדי לבדוק עומס עבודה ריאלי בלי לאבד את התוכן של הדיסק הקיים. הערה: כשמבצעים השוואה בין מערכות קבצים בדיסק קיים, יש הרבה גורמים ספציפיים לסביבת הפיתוח שיכולים להשפיע על תוצאות ההשוואה, ויכול להיות שלא תגיעו למגבלות הביצועים של הדיסק.
כדי למדוד את הביצועים הגולמיים של Persistent Disk, צריך להשוות את הביצועים של התקן הבלוקים ישירות. אפשר להשתמש באפשרות הזו כדי להשוות בין הביצועים הגולמיים של הדיסק לבין מגבלות הביצועים של הדיסק.
במכונות וירטואליות מסוג C4, מערכת Windows תומכת בעומק מקסימלי של 1,024 לכל תור להגשת מכשירים. כשתור מתמלא, Windows מפסיקה לשלוח קלט/פלט עד שהתור מתרוקן חלקית, מה שמפחית משמעותית את הביצועים. כדי למנוע את התנאי הזה, מומלץ להגביל את עומסי העבודה של ההשוואה ל-1,024 לכל היותר של עומק תור מצטבר לכל נפח אחסון שמצורף.
הגדרת תוכנת השוואה לשוק
כדי לבצע השוואה בין ביצועים של דיסק אחסון מתמיד במכונות וירטואליות של Windows, משתמשים ב-DISKSPD.
פותחים את Powershell ומורידים את הכלי
DISKSPDבאמצעות הפקודה הבאה:$client = New-Object System.Net.WebClient $client.DownloadFile("https://github.com/Microsoft/diskspd/releases/latest/download/DiskSpd.zip","$env:temp\DiskSpd-download.zip") Expand-Archive -LiteralPath "$env:temp\DiskSpd-download.zip" C:\DISKSPD Get-ChildItem C:\DISKSPD
בדיקת ביצועים של IOPS וקצב העברת נתונים של דיסק במכונה וירטואלית פועלת
כדי למדוד את ה-IOPS ואת קצב העברת הנתונים עבור עומס עבודה ריאלי בדיסק פעיל במופע של מכונה וירטואלית שפועלת, בלי לאבד את התוכן של הדיסק, צריך להשוות לתיקייה חדשה במערכת הקבצים הקיימת.
בשלבים הבאים, נניח שהדיסק לבדיקה נטען בתור D: והפקודות מבוצעות בחלון שורת הפקודה (cmd.exe) עם הרשאות אדמין:
מאמתים את
DISKSPDהגדרת התוכנה ומשנים את הספרייה לקובץ הבינארי של 64 ביט:cd C:\DISKSPD\amd64
יוצרים קובץ חדש בנפח 10GB בשם
DISKTEST.DATבדיסק:set TESTFILE=D:\DISKTEST.DAT diskspd -d0 -c10G %TESTFILE%
כדי לבדוק את קצב העברת הנתונים לכתיבה, מבצעים כתיבות רציפות עם כמה זרמים מקבילים (16 או יותר), באמצעות גודל בלוק של קלט/פלט של 1 MB ועומק קלט/פלט של 64 לפחות:
diskspd -d300 -b1M -o64 -Sh -w100 -t16 -si %TESTFILE%
בודקים את קצב הקלט/פלט (IOPS) של כתיבה על ידי ביצוע כתיבות אקראיות, באמצעות גודל בלוק קלט/פלט של 4 KB ועומק קלט/פלט של לפחות 256:
diskspd -d300 -b4K -o256 -Sh -w100 -r %TESTFILE%
כדי לבדוק את קצב הקריאה, מבצעים קריאות רציפות עם כמה זרמים מקבילים (16 או יותר), באמצעות גודל בלוק קלט/פלט של 1MB ועומק קלט/פלט של 64 לפחות:
diskspd -d300 -b1M -o64 -Sh -t16 -si %TESTFILE%
כדי לבדוק את קצב ה-IOPS של פעולות קריאה, מבצעים קריאות אקראיות באמצעות גודל בלוק של קלט/פלט של 4 KB ועומק קלט/פלט של לפחות 256:
diskspd -d300 -b4K -o256 -Sh -r %TESTFILE%
מחיקה:
del %TESTFILE%
השוואה לשוק של ביצועים גולמיים של Persistent Disk
כדי למדוד את הביצועים של נפחי אחסון מתמיד (Persistent Disk) בלבד מחוץ לסביבת הפיתוח, צריך לבדוק את ביצועי הקריאה והכתיבה של מכשיר בלוקים (block device) בדיסק אחסון מתמיד ובמכונה וירטואלית זמניים.
מוסיפים דיסק אחסון מתמיד (persistent disk) למכונת ה-VM שרוצים לבדוק.
מאמתים את הגדרת התוכנה של
DISKSPDומשנים את הספרייה לקובץ הבינארי של 64 ביט:cd C:\DISKSPD\amd64
מוודאים שאין בדיסק מחיצות שלא שמורות. מזינים את הפקודה
diskpartבחלון Command Prompt עם הרשאות אדמין.diskpart
מציגים ברשימה את הדיסקים שמצורפים ל-VM:
DISKPART> list diskהפלט מראה את הדיסק החדש בנפח 1 TB, שהוא Disk 1 בפלט לדוגמה הבא:
Disk ### Status Size Free Dyn Gpt -------- ------------- ------- ------- --- --- Disk 0 Online 120 GB 1024 KB * Disk 1 Online 1024 GB 1023 GB *
בוחרים את הדיסק שרוצים לבצע בו בדיקת ביצועים.
DISKPART> select disk 1מציגים את המחיצות בדיסק שנבחר.
DISKPART> list partitionPartition ### Type Size Offset ------------- ---------------- -------- ------- Partition 1 Reserved 15 MB 17 KB Partition 2 Primary 1024 GB 16 MBבוחרים את המחיצה הראשית 2:
DISKPART> select partition 2מחיקת המחיצה שנבחרה:
DISKPART> delete partitionיציאה מ-diskpart
DISKPART> exit
אם בדיסק שרוצים לבצע בו השוואה יש מחיצות אחרות מלבד המחיצה השמורה, צריך לחזור על השלבים הקודמים. אם נשארה רק המחיצה השמורה, ממשיכים לשלבים הבאים:
אחרי שמזהים את הדיסק ומוודאים שאין בו מחיצות, מגדירים את משתנה הסביבה
TESTDRIVEלערך '#' ואחריו מספר הדיסק שרוצים לבדוק.C:/> set TESTDRIVE=#1כדי לבדוק את קצב העברת הנתונים לכתיבה, מבצעים כתיבות רציפות עם כמה זרמים מקבילים (16 או יותר), באמצעות גודל בלוק של קלט/פלט של 1 MB ועומק קלט/פלט של 64 לפחות:
diskspd -d300 -b1M -o64 -Sh -t16 -si -w0 %TESTDRIVE%
בודקים את קצב הקלט/פלט (IOPS) של כתיבה על ידי ביצוע כתיבות אקראיות, באמצעות גודל בלוק של קלט/פלט של 4 KB ועומק קלט/פלט של לפחות 256:
diskspd -d300 -b4K -o256 -Sh -r -w0 %TESTDRIVE%
בדיקת זמן האחזור של פעולת הכתיבה. במהלך בדיקת זמן האחזור של קלט/פלט, המכונה הווירטואלית לא יכולה להגיע לרוחב הפס המקסימלי או למספר המקסימלי של פעולות קלט/פלט בשנייה (IOPS). אחרת, זמן האחזור שנמדד לא ישקף את זמן האחזור בפועל של קלט/פלט בדיסק אחסון מתמיד (persistent disk).
diskspd -d300 -b4K -o4 -Sh -r -w0 -L %TESTDRIVE%
כדי לבדוק את קצב העברת הנתונים לקריאה, מבצעים קריאות רציפות עם כמה זרמים מקבילים (16 או יותר), באמצעות גודל בלוק של קלט/פלט של 1 MB ועומק קלט/פלט של 64 לפחות:
diskspd -d300 -b1M -o64 -Sh -t16 -si %TESTDRIVE%
כדי לבדוק את קצב ה-IOPS של פעולות קריאה, מבצעים קריאות אקראיות באמצעות גודל בלוק של קלט/פלט של 4 KB ועומק קלט/פלט של לפחות 256:
diskspd -d300 -b4K -o256 -Sh -r %TESTDRIVE%
כדי לבדוק את זמן האחזור של הקריאה, חשוב למלא את הדיסק בנתונים כדי לקבל מדידה ריאלית של זמן האחזור. ה-VM לא יכול להגיע למגבלות של IOPS או של תפוקה במהלך הבדיקה הזו, כי אחרי שה-Persistent Disk מגיע למגבלת הניצול המלא שלו, הוא דוחה פעולות קלט/פלט נכנסות, והדבר משתקף כעלייה מלאכותית בחביון של הקלט/פלט.
diskspd -d300 -b4K -o4 -Sh -r -L %TESTDRIVE%
בדיקת רוחב הפס של קריאה רציפה.
diskspd -d300 -b1M -o64 -Sh -t4 -si %TESTDRIVE%
בדיקת רוחב הפס של כתיבה רציפה.
diskspd -d300 -b1M -o64 -Sh -t4 -si -w100 %TESTDRIVE%
מנקים את הדיסק של אחסון מתמיד (persistent disk) ואת מכונת ה-VM הזמניים:
- מוחקים את הדיסק ששימש להערכת הביצועים.
- מחיקת המכונה הווירטואלית שנוצרה להשוואת הביצועים.