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

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

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

כדי למדוד את הביצועים הגולמיים של דיסק אחסון מתמיד (persistent disk), צריך להשתמש בבדיקת ביצועים (benchmark) של מכשיר הבלוקים ישירות. אפשר להשתמש באפשרות הזו כדי להשוות בין הביצועים הגולמיים של הדיסק לבין מגבלות הביצועים של הדיסק.

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

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

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

  1. מתחברים למופע של ה-VM.

  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 וקצב העברת נתונים של דיסק במכונת VM פעילה

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

בשלבים הבאים נניח שהדיסק לבדיקה מותקן כ-D: והפקודות מופעלות בחלון Command Prompt ‏ (cmd.exe) עם הרשאות אדמין:

  1. מתחברים ל-VM.

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

    cd C:\DISKSPD\amd64
    
  3. יוצרים קובץ חדש בגודל 10 GB בשם 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 או יותר), באמצעות גודל בלוק של קלט/פלט של 1 MB ועומק קלט/פלט של 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. מתחברים למופע של ה-VM.

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

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

    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. בדיקת זמן האחזור של פעולת הכתיבה. במהלך בדיקת זמן האחזור של קלט/פלט, ה-VM לא יכולה להגיע לרוחב הפס המקסימלי או ל-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. מחיקת המכונה הווירטואלית שנוצרה לצורך השוואת ביצועים.

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