עבודה עם Onload

בדף הזה מוסבר איך להשתמש ב-Onload במכונות Compute Engine עם זמן אחזור נמוך במיוחד (ULL).

Onload היא חבילת פרוטוקולים לרשת עם ביצועים גבוהים לאפליקציות שרגישות לזמן טעינה ודורשות זמן טעינה נמוך במיוחד, תנודות מינימליות בנתונים וביצועים עקביים. ‫Onload מספקת הטמעה של TCP/IP שעוקפת את ליבת מערכת ההפעלה ופועלת ישירות במרחב המשתמש, תוך מתן אפשרות לאפליקציות להשתמש ב-APIs רגילים של BSD socket.

השימוש ב-Onload עם פתרון ULL כולל תמיכה ב:

  • הפניית זרימה: באמצעות ממשקי רשת של ULL, אפשר לעקוף את הגיבוב (hashing) של Receive Side Scaling ‏(RSS) שמוגדר כברירת מחדל על ידי הפניית זרימות תנועה ספציפיות ישירות אל תור קבלה (RX) ייעודי. לתעבורת נתונים של ULL unicast ו-multicast, נתמך ניהול של זרימת נתונים עם 3 טאפלים (פרוטוקול, כתובת IP של היעד, יציאת היעד).

סוג המכונה ותמונת מערכת ההפעלה הנדרשים

כדי להשתמש ב-Onload, צריך ליצור מכונות וירטואליות של ULL Compute Engine ‏ (U4P או U4C) באמצעות פרויקט התמונה והתמונה שסופקו על ידי Google לצורך בדיקה, כמו שמתואר במאמר יצירת מכונות וירטואליות של ULL Compute Engine.

כשמשתמשים בתמונה הנדרשת, Onload מותקן מראש ונטען בזמן האתחול. לאחר מכן תוכלו להריץ תהליכים באמצעות Onload כמו שמתואר בהליכים שבדף הזה.

התחלה ועצירה של onload

בקטע הזה מוסבר איך להפעיל ולעצור את Onload. כדי להשלים את התהליכים שמפורטים בקטעים הבאים, צריך להפעיל את Onload.

כדי להפעיל את Onload, מריצים את הפקודה הבאה:

sudo /opt/gcp_tp-scripts/load-onload-and-tune

כדי לעצור את Onload, מריצים את הפקודה הבאה:

sudo /opt/gcp_tp-scripts/unload-onload

הפעלת בדיקת סטטוס של משתמשים

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

כדי להפעיל את התכונה 'בדיקת סטטוס':

  1. אם עדיין לא עשיתם זאת, מתחברים למופע באמצעות SSH.

  2. אתם יכולים להפעיל את התכונה 'בדיקת זמינות' לכל התורים או בצורה מפורטת יותר. בוחרים את האפשרות שמתאימה לתרחיש השימוש:

    • כל התורים:

      sudo /opt/gcp_tp-scripts/busypoll-all-queues
      
    • תור RX ספציפי שמשמש מחסנית Onload:

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

        gcp_tp-onload /opt/neper/tcp_rr &
        
      2. כדי לקבל את stack-id של מחסנית שהפעלתם, מריצים את הפקודה הבאה:

        onload_stackdump
        
      3. כדי לקבל את מספרי האינדקס של ממשקי הרשת, מריצים את הפקודה הבאה:

        cat /sys/class/net/NIC_NAME/ifindex
        

        מחליפים את NIC_NAME בשם של ממשק הרשת במערכת ההפעלה של האורח, למשל eth1, eth2.

      4. כדי להפעיל את בדיקת הזמינות, מריצים את הפקודה הבאה:

        sudo /opt/gcp_tp-scripts/busypoll-onload-stack STACK_ID enable NIC_INDEX CPU_ID
        

        מחליפים את מה שכתוב בשדות הבאים:

        • STACK_ID: מזהה ה-Stack שקיבלתם קודם
        • NIC_INDEX: מספר האינדקס של ממשק הרשת שרוצים להפעיל בו סקר פעיל, לדוגמה 1 או 2.
        • CPU_ID: המזהה של ה-CPU שעבורו רוצים להפעיל סקר פעיל.

          • אנחנו ממליצים לא להשתמש במעבד 0 או במעבד שנמצא בשימוש של אפליקציה.
          • חשוב לוודא שאתם משתמשים בליבות CPU מקומיות לצומת NUMA של ממשק הרשת שציינתם. לדוגמה:

            • eth1 משתמש בצומת NUMA‏ 0, שמשתמש בליבות CPU‏ 0-29.
            • eth2 uses NUMA node 2. שמשתמש בליבות המעבד 60-89.

כדי להשבית את בדיקת הזמינות, משתמשים בפקודה הבאה:

sudo /opt/gcp_tp-scripts/busypoll-onload-stack STACK_ID disable NIC_INDEX CPU_ID

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

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