השוואת ביצועים של דיסק אחסון מתמיד במכונת VM עם Windows

במאמר הזה מוסבר איך להשוות את הביצועים של Persistent Disk במכונות וירטואליות (VM) של Windows. במכונות וירטואליות של Linux, אפשר לעיין במאמר בנושא השוואת ביצועים של דיסק אחסון מתמיד במכונת VM של Linux.

כדי למדוד את ה-IOPS ואת קצב הנתונים של דיסק שנמצא בשימוש במכונה פועלת, צריך להשוות את מערכת הקבצים עם ההגדרות הרצויות. אפשר להשתמש באפשרות הזו כדי לבדוק עומס עבודה ריאלי בלי לאבד את התוכן של הדיסק הקיים. הערה: כשמבצעים השוואה בין מערכות קבצים בדיסק קיים, יש הרבה גורמים ספציפיים לסביבת הפיתוח שיכולים להשפיע על תוצאות ההשוואה, ויכול להיות שלא תגיעו למגבלות הביצועים של הדיסק.

כדי למדוד את הביצועים הגולמיים של Persistent Disk, צריך להשוות את הביצועים של התקן הבלוקים ישירות. אפשר להשתמש באפשרות הזו כדי להשוות בין הביצועים הגולמיים של הדיסק לבין מגבלות הביצועים של הדיסק.

במכונות וירטואליות מסוג C4, מערכת Windows תומכת בעומק מקסימלי של 1,024 לכל תור להגשת מכשירים. כשתור מתמלא, Windows מפסיקה לשלוח קלט/פלט עד שהתור מתרוקן חלקית, מה שמפחית משמעותית את הביצועים. כדי למנוע את התנאי הזה, מומלץ להגביל את עומסי העבודה של ההשוואה ל-1,024 לכל היותר של עומק תור מצטבר לכל נפח אחסון שמצורף.

הגדרת תוכנת השוואה לשוק

כדי לבצע השוואה בין ביצועים של דיסק אחסון מתמיד במכונות וירטואליות של Windows, משתמשים ב-DISKSPD.

  1. מתחברים למכונה הווירטואלית.

  2. פותחים את 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) עם הרשאות אדמין:

  1. מתחברים למכונה הווירטואלית.

  2. מאמתים את DISKSPD הגדרת התוכנה ומשנים את הספרייה לקובץ הבינארי של 64 ביט:

    cd C:\DISKSPD\amd64
    
  3. יוצרים קובץ חדש בנפח 10GB בשם DISKTEST.DAT בדיסק:

    set TESTFILE=D:\DISKTEST.DAT
    diskspd -d0 -c10G %TESTFILE%
    
  4. כדי לבדוק את קצב העברת הנתונים לכתיבה, מבצעים כתיבות רציפות עם כמה זרמים מקבילים (16 או יותר), באמצעות גודל בלוק של קלט/פלט של 1 MB ועומק קלט/פלט של 64 לפחות:

    diskspd -d300 -b1M -o64 -Sh -w100 -t16 -si %TESTFILE%
    
  5. בודקים את קצב הקלט/פלט (IOPS) של כתיבה על ידי ביצוע כתיבות אקראיות, באמצעות גודל בלוק קלט/פלט של 4 KB ועומק קלט/פלט של לפחות 256:

    diskspd -d300 -b4K -o256 -Sh -w100 -r %TESTFILE%
    
  6. כדי לבדוק את קצב הקריאה, מבצעים קריאות רציפות עם כמה זרמים מקבילים (16 או יותר), באמצעות גודל בלוק קלט/פלט של 1MB ועומק קלט/פלט של 64 לפחות:

    diskspd -d300 -b1M -o64 -Sh -t16 -si %TESTFILE%
    
  7. כדי לבדוק את קצב ה-IOPS של פעולות קריאה, מבצעים קריאות אקראיות באמצעות גודל בלוק של קלט/פלט של 4 KB ועומק קלט/פלט של לפחות 256:

    diskspd -d300 -b4K -o256 -Sh -r %TESTFILE%
    
  8. מחיקה:

    del %TESTFILE%
    

השוואה לשוק של ביצועים גולמיים של Persistent Disk

כדי למדוד את הביצועים של נפחי אחסון מתמיד (Persistent Disk) בלבד מחוץ לסביבת הפיתוח, צריך לבדוק את ביצועי הקריאה והכתיבה של מכשיר בלוקים (block device) בדיסק אחסון מתמיד ובמכונה וירטואלית זמניים.

  1. יצירת מכונה וירטואלית והפעלה שלה.

  2. מוסיפים דיסק אחסון מתמיד (persistent disk) למכונת ה-VM שרוצים לבדוק.

  3. מתחברים למופע של מכונה וירטואלית.

  4. מאמתים את הגדרת התוכנה של DISKSPD ומשנים את הספרייה לקובץ הבינארי של 64 ביט:

    cd C:\DISKSPD\amd64
    
  5. מוודאים שאין בדיסק מחיצות שלא שמורות. מזינים את הפקודה diskpart בחלון Command Prompt עם הרשאות אדמין.

    diskpart
    
  6. מציגים ברשימה את הדיסקים שמצורפים ל-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        *
    
  7. בוחרים את הדיסק שרוצים לבצע בו בדיקת ביצועים.

    DISKPART> select disk 1
    
  8. מציגים את המחיצות בדיסק שנבחר.

    DISKPART> list partition
    
       Partition ###  Type              Size       Offset
       -------------  ----------------  --------   -------
       Partition 1    Reserved              15 MB    17 KB
       Partition 2    Primary             1024 GB    16 MB
    
  9. בוחרים את המחיצה הראשית 2:

    DISKPART> select partition 2
    
  10. מחיקת המחיצה שנבחרה:

    DISKPART> delete partition
    
  11. יציאה מ-diskpart

    DISKPART> exit
    

אם בדיסק שרוצים לבצע בו השוואה יש מחיצות אחרות מלבד המחיצה השמורה, צריך לחזור על השלבים הקודמים. אם נשארה רק המחיצה השמורה, ממשיכים לשלבים הבאים:

  1. אחרי שמזהים את הדיסק ומוודאים שאין בו מחיצות, מגדירים את משתנה הסביבה TESTDRIVE לערך '#' ואחריו מספר הדיסק שרוצים לבדוק.

    C:/> set TESTDRIVE=#1
    
  2. כדי לבדוק את קצב העברת הנתונים לכתיבה, מבצעים כתיבות רציפות עם כמה זרמים מקבילים (16 או יותר), באמצעות גודל בלוק של קלט/פלט של 1 MB ועומק קלט/פלט של 64 לפחות:

    diskspd -d300 -b1M -o64 -Sh -t16 -si -w0 %TESTDRIVE%
    
  3. בודקים את קצב הקלט/פלט (IOPS) של כתיבה על ידי ביצוע כתיבות אקראיות, באמצעות גודל בלוק של קלט/פלט של 4 KB ועומק קלט/פלט של לפחות 256:

    diskspd -d300 -b4K -o256 -Sh -r -w0 %TESTDRIVE%
    
  4. בדיקת זמן האחזור של פעולת הכתיבה. במהלך בדיקת זמן האחזור של קלט/פלט, המכונה הווירטואלית לא יכולה להגיע לרוחב הפס המקסימלי או למספר המקסימלי של פעולות קלט/פלט בשנייה (IOPS). אחרת, זמן האחזור שנמדד לא ישקף את זמן האחזור בפועל של קלט/פלט בדיסק אחסון מתמיד (persistent disk).

    diskspd -d300 -b4K -o4 -Sh -r -w0 -L %TESTDRIVE%
    
  5. כדי לבדוק את קצב העברת הנתונים לקריאה, מבצעים קריאות רציפות עם כמה זרמים מקבילים (16 או יותר), באמצעות גודל בלוק של קלט/פלט של 1 MB ועומק קלט/פלט של 64 לפחות:

    diskspd -d300 -b1M -o64 -Sh -t16 -si %TESTDRIVE%
    
  6. כדי לבדוק את קצב ה-IOPS של פעולות קריאה, מבצעים קריאות אקראיות באמצעות גודל בלוק של קלט/פלט של 4 KB ועומק קלט/פלט של לפחות 256:

    diskspd -d300 -b4K -o256 -Sh -r %TESTDRIVE%
    
  7. כדי לבדוק את זמן האחזור של הקריאה, חשוב למלא את הדיסק בנתונים כדי לקבל מדידה ריאלית של זמן האחזור. ה-VM לא יכול להגיע למגבלות של IOPS או של תפוקה במהלך הבדיקה הזו, כי אחרי שה-Persistent Disk מגיע למגבלת הניצול המלא שלו, הוא דוחה פעולות קלט/פלט נכנסות, והדבר משתקף כעלייה מלאכותית בחביון של הקלט/פלט.

    diskspd -d300 -b4K -o4 -Sh -r -L %TESTDRIVE%
    
  8. בדיקת רוחב הפס של קריאה רציפה.

    diskspd -d300 -b1M -o64 -Sh -t4 -si %TESTDRIVE%
    
  9. בדיקת רוחב הפס של כתיבה רציפה.

    diskspd -d300 -b1M -o64 -Sh -t4 -si -w100 %TESTDRIVE%
    
  10. מנקים את הדיסק של אחסון מתמיד (persistent disk) ואת מכונת ה-VM הזמניים:

    1. מוחקים את הדיסק ששימש להערכת הביצועים.
    2. מחיקת המכונה הווירטואלית שנוצרה להשוואת הביצועים.

המאמרים הבאים