במאמר הזה מוסבר על שמירת קבצים במטמון ב-Cloud Storage FUSE, ומופיעות בו הוראות להגדרה ולשימוש בשמירת קבצים במטמון.
שמירת קבצים במטמון ב-Cloud Storage FUSE היא מטמון קריאה בצד הלקוח שמשפר את הביצועים של פעולות קריאה. המטמון מאפשר קריאה חוזרת של קבצים מאחסון מטמון מהיר יותר לפי בחירתכם. כשמטמון הקבצים מופעל, Cloud Storage FUSE מאחסן עותקים של קבצים שמתבצעת אליהם גישה לעיתים קרובות באופן מקומי. כך, קריאות עוקבות יכולות להתבצע ישירות מהמטמון, מה שמקטין את זמן האחזור ומשפר את קצב העברת הנתונים.
היתרונות של שמירת קבצים במטמון
יתרונות של שמירת קבצים במטמון:
שיפור הביצועים של קלט/פלט קטן ואקראי: שמירת קבצים במטמון משפרת את זמן האחזור ואת קצב העברת הנתונים על ידי הצגת קריאות ישירות ממדיה המטמון. פעולות קטנות ואקראיות של קלט/פלט יכולות להיות מהירות משמעותית כשהן מוגשות מהמטמון.
הורדות מקבילות מופעלות באופן אוטומטי: הורדות מקבילות מופעלות באופן אוטומטי ב-Cloud Storage FUSE בגרסה 2.12 ואילך, כשהמטמון של הקבצים מופעל. הורדות מקבילות משתמשות בכמה תהליכי עבודה כדי להוריד קובץ במקביל, באמצעות ספריית מטמון הקבצים כמאגר אחזור מראש. כך אפשר לקצר את זמן טעינת המודל עד פי תשעה. מומלץ להשתמש בהורדות מקבילות לתרחישי קריאה עם שרשור יחיד שבהם נטען קובץ גדול, כמו שחזור של נקודת ביקורת (checkpoint) והצגת מודל.
שימוש בקיבולת קיימת: שמירת קבצים במטמון יכולה להשתמש בקיבולת קיימת שהוקצתה למכונה עבור ספריית המטמון, בלי שתחויבו על אחסון נוסף.
חיובים מופחתים: בקשות שמוגשות מהמטמון מוגשות באופן מקומי ולא גוררות חיובים על פעולות ב-Cloud Storage או על תעבורת נתונים ברשת.
שיפור עלות הבעלות הכוללת (TCO) של אימון AI ו-ML: שמירת קבצים במטמון מגדילה את ניצול מעבדים גרפיים ל-Cloud על ידי טעינת נתונים מהירה יותר, מה שמקצר את זמן האימון ומספק יחס טוב יותר בין מחיר לביצועים עבור עומסי עבודה של אימון AI ו-ML.
הורדות מקבילות
הורדות מקבילות יכולות לשפר את ביצועי הקריאה באמצעות שימוש בכמה תהליכים להורדה של כמה חלקים של קובץ במקביל, תוך שימוש בספריית מטמון הקבצים כמאגר אחזור מראש. מומלץ להשתמש בהורדות מקבילות לתרחישי קריאה שבהם נטענים קבצים גדולים, כמו מודלים של שרתים, שחזורים של נקודות ביקורת ואימון על אובייקטים גדולים.
תרחישי שימוש להפעלת שמירת קבצים במטמון עם הורדות מקבילות כוללים את הדוגמאות הבאות:
| סוג תרחיש לדוגמה | תיאור |
|---|---|
| הדרכה | כדאי להפעיל שמירת קבצים במטמון אם הנתונים שרוצים לגשת אליהם נקראים כמה פעמים, בין אם מדובר באותו קובץ כמה פעמים או בהיסטים שונים של אותו קובץ. אם מערך הנתונים גדול יותר מהמטמון של הקובץ, צריך להשאיר את המטמון של הקובץ מושבת, ובמקום זאת להשתמש באחת מהשיטות הבאות: |
| הצגת משקלים של מודלים וקריאות של נקודות ביקורת | מפעילים שמירה במטמון של קבצים עם הורדות מקבילות כדי להשתמש בהורדות מקבילות, שמאפשרות לטעון קבצים גדולים הרבה יותר מהר מאשר אם לא משתמשים בשמירה במטמון של קבצים ובהורדות מקבילות. |
לתשומת ליבכם
אורך החיים (TTL) של קובץ במטמון: אם התוקף של רשומה במטמון קבצים עדיין לא פג על סמך ה-TTL שלה, והקובץ נמצא במטמון, פעולות קריאה של הקובץ הזה מוגשות מהמטמון המקומי של הלקוח בלי שמוגשת בקשה ל-Cloud Storage.
תפוגה של רשומת מטמון של קובץ: אם תוקף רשומת מטמון של קובץ פג, מתבצעת קודם קריאה של
GETמאפייני הקובץ ל-Cloud Storage. אם הקובץ חסר או שהמאפיינים או התוכן שלו השתנו, התוכן החדש מאוחזר. אם המאפיינים נפסלו אבל התוכן עדיין תקף, כלומר לא חל שינוי ביצירת האובייקט, התוכן מוצג מהמטמון רק אחרי שמתקבל אישור שהמאפיינים תקפים. שתי הפעולות האלה גורמות לזמני אחזור ברשת.ביטול תוקף של קובץ במטמון: כשלקוח Cloud Storage FUSE משנה קובץ במטמון או את המאפיינים שלו, הרשומה במטמון של הלקוח הזה מתבטלת באופן מיידי כדי לשמור על עקביות. עם זאת, לקוחות אחרים שניגשים לאותו קובץ ימשיכו לקרוא את הגרסאות שנשמרו במטמון עד שערכי ה-TTL שלהם יגרמו לביטול התוקף.
גודל הקובץ והקיבולת הזמינה: הקובץ שנקרא צריך להתאים לקיבולת הזמינה בספריית מטמון הקבצים. אפשר לשלוט בקיבולת הזו באמצעות האפשרות
--file-cache-max-size-mbאו השדהfile-cache:max-size-mb. שימו לב שאי אפשר להגדיר גודל מקסימלי לכל קובץ.הוצאה מהמטמון: הוצאה של מטא-נתונים ונתונים מהמטמון מבוססת על אלגוריתם של least recently used (LRU), שמתחיל לפעול כשמגיעים לסף המקום שהוגדר לכל מגבלת
--file-cache-max-size-mb. אם התוקף של הרשומה פג בהתאם ל-TTL שלה, מתבצעת קודם קריאה של מטא-נתוניםGETל-Cloud Storage, והיא כפופה לזמני השהיה ברשת. מכיוון שהנתונים והמטא-נתונים מנוהלים בנפרד, יכול להיות שישות אחת תוסר או תבוטל ולא השנייה.שמירה של המטמון: המטמון של Cloud Storage FUSE לא נשמר כשמבטלים את הטעינה ומפעילים מחדש. במקרה של שמירת קבצים במטמון, רשומות המטא-נתונים שנדרשות להצגת קבצים מהמטמון מפונות בזמן ביטול הטעינה והפעלה מחדש, אבל יכול להיות שנתונים במטמון הקבצים עדיין יהיו בספריית הקבצים. מומלץ למחוק נתונים בספריית מטמון הקבצים אחרי ביטול ההרכבה או הפעלה מחדש.
ניהול קריאה אקראית וקריאה חלקית: כשפעולת הקריאה הראשונה של קובץ מתחילה מתחילת הקובץ, בהיסט
0, מטמון הקבצים של Cloud Storage FUSE קולט וטוען את הקובץ כולו למטמון, גם אם אתם קוראים רק קבוצת משנה קטנה של טווח. כך קריאות אקראיות או חלקיות של אותו אובייקט יוגשו ישירות מהמטמון.כברירת מחדל, קריאה מכל היסט אחר לא מפעילה אחזור אסינכרוני של הקובץ המלא. כדי לשנות את ההתנהגות הזו כך ש-Cloud Storage FUSE יטען קובץ למטמון אחרי קריאה אקראית ראשונית, צריך להגדיר את האפשרות
--file-cache-cache-file-for-range-readאו את השדהfile-cache:cache-file-for-range-readלערךtrue.מומלץ להפעיל את המאפיין הזה אם מתבצעות הרבה פעולות קריאה אקראיות או חלקיות שונות על אותו אובייקט.
אבטחת מידע: כשמפעילים שמירה במטמון, Cloud Storage FUSE משתמש בספריית המטמון שצוינה באמצעות האפשרות
--cache-dirאו השדהcache-dirכספרייה הבסיסית של המטמון, כדי לשמור קבצים מקטגוריה של Cloud Storage בפורמט מוצפן. כל משתמש או תהליך שיש להם גישה לספריית המטמון הזו יכולים לגשת לקבצים האלה. מומלץ להגביל את הגישה לספרייה הזו.גישה ישירה או מרובה למטמון הקבצים: שימוש בתהליך שאינו Cloud Storage FUSE כדי לגשת לקובץ בספריית המטמון או לשנות אותו עלול לגרום להשחתת נתונים. מטמון של Cloud Storage FUSE הוא ספציפי לכל תהליך פעיל של Cloud Storage FUSE, ואין מודעות בין תהליכים שונים של Cloud Storage FUSE שפועלים באותן מכונות או במכונות שונות. לכן, לא מומלץ להשתמש באותה ספריית מטמון לתהליכים שונים של Cloud Storage FUSE.
הפעלת כמה תהליכי Cloud Storage FUSE באותה מכונה: אם צריך להפעיל כמה תהליכי Cloud Storage FUSE באותה מכונה, כל תהליך Cloud Storage FUSE צריך לקבל ספריית מטמון ספציפית משלו, או להשתמש באחת מהשיטות הבאות כדי לוודא שהנתונים לא ייפגמו:
טעינה של כל הקטגוריות עם מטמון משותף: שימוש בטעינה דינמית כדי לטעון את כל הקטגוריות שיש לכם גישה אליהן בתהליך יחיד עם מטמון משותף. מידע נוסף זמין במאמר בנושא טעינה דינמית של Cloud Storage FUSE.
הפעלת שמירת נתונים במטמון בקטגוריה ספציפית: הפעלת שמירת נתונים במטמון רק בקטגוריה ספציפית באמצעות טעינה סטטית. מידע נוסף זמין במאמר בנושא טעינה סטטית של Cloud Storage FUSE.
שמירת מטמון רק של תיקייה או ספרייה ספציפיות: טוענים ושומרים במטמון רק תיקייה ספציפית ברמת קטגוריית האחסון, במקום לטעון את כל קטגוריית האחסון. מידע נוסף זמין במאמר בנושא טעינת ספרייה בתוך קטגוריה.
לפני שמתחילים
כדי לשמור קבצים במטמון, צריך להגדיר נתיב לספרייה. אתם יכולים ליצור ספרייה חדשה במערכת קבצים קיימת או ליצור מערכת קבצים חדשה באחסון שהוקצה. אם אתם מקצים אחסון חדש לשימוש, אתם יכולים להשתמש בהוראות הבאות כדי ליצור מערכת קבצים חדשה:
למידע על Google Cloud Hyperdisk, קראו את המאמר יצירת נפח חדש של Google Cloud Hyperdisk.
למידע על דיסקים של RAM בזיכרון, אפשר לעיין במאמר יצירת דיסקים של RAM בזיכרון.
הפעלה והגדרה של התנהגות שמירת קבצים במטמון
בוחרים את השיטה שבאמצעותה רוצים להפעיל ולהגדיר שמירת קבצים במטמון באחת מהדרכים הבאות:
מזינים אותו כערך של
gcsfuseאפשרותמציינים אותו בקובץ תצורה של Cloud Storage FUSE
מציינים את ספריית המטמון שרוצים להשתמש בה באחת מהשיטות הבאות. כך תוכלו להפעיל את מטמון הקבצים לפריסות שאינן Google Kubernetes Engine:
gcsfuseאפשרות:--cache-dir- שדה בקובץ תצורה:
cache-dir
אם אתם משתמשים בפריסה של Google Kubernetes Engine באמצעות מנהל ההתקן של Cloud Storage FUSE CSI ל-Google Kubernetes Engine, אתם צריכים לציין אחת מהשיטות הבאות:
gcsfuseאפשרות:--file-cache-max-size-mb- שדה בקובץ תצורה:
file-cache:max-size-mb
אופציונלי: אם ההורדות המקבילות לא הופעלו אוטומטית, אפשר להפעיל אותן על ידי הגדרת אחת מהשיטות הבאות לערך
true:gcsfuseאפשרות:--file-cache-enable-parallel-downloads- שדה בקובץ תצורה:
file-cache:enable-parallel-downloads
כדי להגביל את הקיבולת הכוללת שבה יכול להשתמש מטמון Cloud Storage FUSE בספרייה שהועלתה, אפשר לשנות את אחת מהאפשרויות הבאות, שמוגדרת אוטומטית לערך
-1כשמציינים ספריית מטמון:gcsfuseאפשרות:--file-cache-max-size-mb- שדה בקובץ תצורה:
file-cache:max-size-mb
אפשר גם לציין ערך ב-MiB או ב-GiB כדי להגביל את גודל המטמון.
אופציונלי: אפשר לעקוף את תפוגת ה-TTL של רשומות במטמון ולהציג מטא-נתונים של קובץ מהמטמון אם הם זמינים. כדי לעשות זאת, משתמשים באחת מהשיטות הבאות ומגדירים ערך של
-1:gcsfuseאפשרות:--metadata-cache-ttl-secs- שדה בקובץ תצורה:
metadata-cache:ttl-secs
ברירת המחדל היא 60 שניות, והערך
-1מגדיר את הזמן ללא הגבלה. אפשר גם לציין ערך גבוה בהתאם לדרישות. מומלץ להגדיר את הערך שלttl-secsכמה שיותר גבוה, בהתאם לעומס העבודה. מידע נוסף על ה-TTL של רשומות שנשמרו במטמון זמין במאמר בנושא שיקולים.אופציונלי: מפעילים את היכולת של מטמון הקבצים לטעון באופן אסינכרוני את כל הקובץ למטמון אם פעולת הקריאה הראשונה של הקובץ מתחילה ממיקום אחר מלבד
offset 0, כך שגם קריאות עוקבות של היסטים שונים מאותו קובץ יוכלו להתבצע מהמטמון. משתמשים באחת מהשיטות הבאות ומגדירים את האפשרות ל-true:gcsfuseאפשרות:--file-cache-cache-file-for-range-read- שדה בקובץ תצורה:
file-cache:cache-file-for-range-read
אופציונלי: הגדרת שמירה במטמון של נתוני stat. מידע נוסף על שמירה במטמון של נתוני stat זמין במאמר סקירה כללית של שמירה במטמון של נתוני stat.
לפני שמריצים את עומס העבודה, מריצים באופן ידני את הפקודה
ls -Rבדלי המחובר כדי לאכלס מראש את המטא-נתונים. כך אפשר לוודא שמטמון הנתונים הסטטיסטיים יתמלא לפני הקריאה הראשונה בשיטה מהירה יותר של אצווה. מידע נוסף על שיפור הביצועים של קריאה ראשונה זמין במאמר שיפור הקריאות הראשונות.
אחרי שמפעילים את שמירת הקבצים במטמון, ההורדות המקבילות מופעלות באופן אוטומטי ב-Cloud Storage FUSE בגרסה 2.12 ואילך. אם אתם משתמשים בגרסה ישנה יותר של Cloud Storage FUSE, צריך להגדיר את האפשרות enable-parallel-downloads ל-true כדי להפעיל הורדות מקבילות.
הגדרת מאפיינים תומכים להורדות מקבילות
אפשר להגדיר את מאפייני התמיכה הבאים להורדות מקבילות באמצעות ה-CLI של Cloud Storage FUSE או קובץ ההגדרות של Cloud Storage FUSE:
| תיאור הנכס | אפשרות gcsfuse |
שדה בקובץ התצורה |
|---|---|---|
| המספר המקסימלי של תהליכי worker שאפשר ליצור לכל קובץ כדי להוריד את האובייקט מ-Cloud Storage למטמון הקבצים. | --file-cache-parallel-downloads-per-file |
file-cache:parallel-downloads-per-file |
| המספר המקסימלי של תהליכי Worker שאפשר ליצור בכל זמן נתון בכל משימות ההורדה של הקבצים. ערך ברירת המחדל הוא כפול ממספר ליבות המעבד במחשב. כדי לציין שאין מגבלה, מזינים את הערך `-1`. | --file-cache-max-parallel-downloads |
file-cache:max-parallel-downloads |
| הגודל של כל בקשת קריאה ב-MiB שכל עובד שולח ל-Cloud Storage כשמורידים את האובייקט למטמון הקבצים. חשוב לזכור שהורדה מקבילה מופעלת רק אם הקובץ שנקרא הוא בגודל שצוין. | --file-cache-download-chunk-size-mb |
file-cache:download-chunk-size-mb |
השבתת הורדות מקבילות
כדי להשבית הורדות מקבילות, מגדירים את אחד מהערכים הבאים ל-false:
gcsfuseאפשרות:--file-cache-enable-parallel-downloads- שדה בקובץ תצורה:
file-cache:enable-parallel-downloads
שליטה באפשרות השמירה במטמון ברמת הקובץ באמצעות ביטויים רגולריים
כברירת מחדל, כל הקבצים שנקראים נשמרים במטמון. כדי לשלוט בקבצים שייכללו במטמון ברמת הקובץ, אפשר להשתמש בשדות האופציונליים include-regex ו-exclude-regex בהגדרות של file-cache. בשדות האלה אפשר לציין ביטויים רגולריים כדי להתאים לנתיבי קבצים בפורמט bucket_name/object_key.
הוספת קבצים ספציפיים לזיכרון המטמון
כדי לשמור במטמון רק קבצים שתואמים לתבנית ספציפית, משתמשים באפשרות include-regex
option. כל קובץ שלא תואם לביטוי הרגולרי הזה לא יישמר במטמון.
לדוגמה, כדי לשמור במטמון רק קבצים מסוג .tfrecord ממערך נתוני האימון, מציינים את הפרטים הבאים בקובץ ההגדרות:
file-cache:
include-regex: ".*\\.tfrecord$"
אפשר גם להשתמש בדגל --file-cache-include-regex:
gcsfuse --file-cache-include-regex ".*\\.(tfrecord)$" ..
החרגה של קבצים ספציפיים מהשמירה במטמון
כדי למנוע שמירה של קבצים מסוימים במטמון, משתמשים באפשרות exclude-regex.
כל קובץ שתואם לביטוי הרגולרי הזה לא יישמר במטמון. לדוגמה, כדי לא לכלול את כל הקבצים בתיקייה בשם logs/, מציינים את ההגדרה הבאה בקובץ התצורה:
file-cache:
exclude-regex: ".*/logs/.*"
אפשר גם להשתמש בדגל --file-cache-exclude-regex:
gcsfuse --file-cache-exclude-regex ".*/logs/.*" ..
שימוש בכללי הכללה והחרגה ביחד
אפשר להשתמש גם ב-include-regex וגם ב-exclude-regex בו-זמנית. הכלל
exclude-regex תמיד נבדק ראשון. אם קובץ תואם ל-exclude-regex, הוא לא יישמר במטמון, גם אם הוא תואם גם ל-include-regex.
לדוגמה, כדי לשמור במטמון את כל הקבצים מסוג .tfrecord חוץ מאלה שבספרייה output/, מציינים את ההגדרות הבאות בקובץ התצורה:
file-cache:
include-regex: ".*\\.tfrecord$"
exclude-regex: ".*/output/.*"
אפשר גם להשתמש בשני הדגלים:
gcsfuse --file-cache-include-regex ".*\\.tfrecord$" --file-cache-exclude-regex ".*/output/.*" ..