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

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

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

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

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

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

כדי לבדוק את הביצועים של Persistent Disk במכונות וירטואליות של 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 או יותר), באמצעות גודל בלוק קלט/פלט של 1MB ועומק קלט/פלט של 64 לפחות:

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

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

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

    diskspd -d300 -b4K -o256 -Sh -r %TESTFILE%
    
  8. פינוי מקום:

    del %TESTFILE%
    

בדיקת ביצועים של Persistent Disk גולמי

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

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

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

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

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

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

    diskpart
    
  6. מציגים את רשימת הדיסקים שמחוברים ל-VM:

    DISKPART> list disk
    

    בפלט מוצג הדיסק החדש בנפח 1TB שנוצר, שהוא 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
    

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

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

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

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

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

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

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

    diskspd -d300 -b4K -o256 -Sh -r %TESTDRIVE%
    
  7. כדי לבדוק את זמן האחזור של הקריאה, חשוב למלא את הדיסק בנתונים כדי לקבל מדידה מציאותית של זמן האחזור. במהלך הבדיקה, המכונה הווירטואלית לא יכולה להגיע למגבלות של 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. מנקים את הדיסק לאחסון מתמיד ואת ה-VM החד-פעמיים:

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

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