סדרת Intel® Ethernet 700
מדריך כוונון ביצועים של לינוקס
קבוצת רשתות ענן NEX (NCNG)
ר' 1.2
דצמבר 2024
היסטוריית גרסאות
עדכון | תַאֲרִיך | הערות |
1.2 | דצמבר 2024 | · נוספו הנחיות נוספות לניהול צריכת חשמל. · נוסף אינטל* טורבו בוסט. · נוסף צבר של התקני רשת. · נוספו תצורות וכוונונים ספציפיים לפלטפורמה. · נוספו מעבדי Intel* %eon* הניתנים להרחבה מדור רביעי. · נוספה AMD EPYC. · עדכון בדיקת יכולות חומרת המערכת. · iPerf2 עודכן. · iPerf3 עודכן. · תורי שידור/קליטה מעודכנים. · עדכון שינוי רמת ההפרעות. · גודל טבעת מעודכן. · כוונון פלטפורמה מעודכן (i40e לא ספציפי). · הגדרות BIOS מעודכנות. · בקרת מצב C מעודכנת. · עדכון קנה מידה של תדר המעבד. · הגדרות אפליקציה מעודכנות. · הגדרות מערכת הפעלה/ליבה מעודכנות. · עדכון העברת IP. · עדכון השהייה נמוכה. |
אוגוסט 2023 | שינויים במסמך זה כוללים: · נוספו מקורות קשורים. · נוסף "ודא שחבילת DDP נטענת כראוי". · נוסף iPerf2. · נוסף iPerf3. · נוסף netperf. · זיקה ל-IRQ עודכנה. · נוספו תורי שידור/קבלה. · גודל טבעת מעודכן. · נוספו מסגרות ג'מבו. · תוספת חיבור מתאם. · נוסף כלי svr-info של אינטל. |
|
1.0 | מרץ 2016 | שחרור ראשוני (Intel Public). |
מָבוֹא
מדריך זה נועד לספק הדרכה לכוונון סביבות עבודה לקבלת ביצועי רשת אופטימליים באמצעות כרטיסי רשת מסדרת Intel® Ethernet 700 בסביבות לינוקס. הוא מתמקד בתנאי חומרה, מנהלי התקנים ומערכת הפעלה והגדרות שעשויים לשפר את ביצועי הרשת. יש לציין כי ביצועי הרשת יכולים להיות מושפעים ממגוון רחב של השפעות חיצוניות, ורק הנפוצות והדרמטיות ביותר מכוסות במדריך זה.
1.1 מקורות קשורים
- מדריך למשתמש עבור כל מתאמי ומכשירי ה-Ethernet של Intel®, התומכים ב-Windows וב-Linux:
מדריך למשתמש של מתאמי ומכשירי Ethernet של Intel® - גיליון נתונים טכני:
גיליון נתונים של בקר ה-Ethernet של Intel® X710/XXV710/XL710 - חבילת תוכנה מלאה לכל מוצרי Intel® Ethernet (הורד את כל הדרייברים, מכשירי NVM, כלים וכו'):
חבילת דרייברים מלאה של מתאם Ethernet של Intel® - חבילת עדכון NVM (זיכרון לא נדיף):
תוכנית שירות לעדכון זיכרון לא נדיף (NVM) עבור כרטיס רשת Ethernet של Intel® מסדרה 700 - כלי svr-info עבור לינוקס אשר לוכד פרטי חומרה ותוכנה רלוונטיים משרת: https://github.com/intel/svr-info
- מדריך טכנולוגיית DDP:
מדריך טכנולוגי להתאמה אישית דינמית של התקנים (DDP) של Intel® Ethernet 700 Series
רשימת בדיקה ראשונית
2.1 עדכון גרסאות מנהל התקן/קושחה
בדוק את גרסאות הדרייבר/קושחה באמצעות הפקודה ethtool -i ethx.
עדכן את הפרטים הבאים לפי הצורך:
- עדכון מנהל התקן i40e
http://sourceforge.net/projects/e1000/files/i40e%20stable/ or https:// downloadcenter.intel.com/ download/24411/Network-Adapter-Driver-for-PCI-E-40- Gigabit-Network-Connections-under-Linux - עדכן קושחה
https://downloadcenter.intel.com/download/24769/NVM-Update-Utility-for-Intel-Ethernet-ConvergedNetwork-Adapter-XL710-X710-Series
2.2 קרא את קובץ ה-README
בדוק אם יש בעיות ידועות וקבל את הוראות התצורה העדכניות ביותר מה-README file כלול בחבילת המקור i40e.
2.3 בדוק שחריץ ה-PCI Express (PCIe) שלך הוא x8
כמה חריצי PCIe x8 מוגדרים למעשה כחריצי x4. לחריצים אלה אין רוחב פס מספיק לקצב קו מלא עם התקני יציאות כפולות וארבע יציאות. בנוסף, אם תכניס מתאם בעל יכולת PCIe v3.0 לתוך חריץ PCIe v2.x, לא תוכל לקבל רוחב פס מלא. מנהל ההתקן של התוכנה מזהה מצב זה וכותב את ההודעה הבאה ביומן המערכת:
רוחב הפס של PCI-Express הזמין עבור כרטיס זה אינו מספיק לביצועים מיטביים. לביצועים מיטביים נדרש חריץ PCI-Express x8.
אם שגיאה זו מתרחשת, העבר את המתאם שלך לחריץ PCIe v3.0 x8 אמיתי כדי לפתור את הבעיה.
2.4 בדיקת יכולות חומרת המערכת
ב-10 Gbps, 25 Gbps ו-40 Gbps Ethernet, יש כמה דרישות מינימום למעבד ומערכת. באופן כללי, מעבד שרת מודרני ותצורת זיכרון אופטימלית עבור הפלטפורמה שלך אמורים להספיק, אך הצרכים משתנים בהתאם לעומס העבודה שלך. יש לאכלס את כל ערוצי הזיכרון ויש להפעיל את מצב ביצועי הזיכרון ב-BIOS. ודא שתצורת המעבד והזיכרון שלך מסוגלים לתמוך ברמת ביצועי הרשת הדרושים לך לעומס העבודה שלך.
פֶּתֶק
ה-XL710 הוא בקר 40 GbE. מתאם 2 x 40 GbE המשתמש בבקר זה אינו מיועד להיות 2 x 40 GbE אלא 1 x 40 GbE עם יציאת גיבוי פעילה. בעת ניסיון להשתמש בתעבורת קצב קו הכוללת את שני היציאות, המתג הפנימי רווי ורוחב הפס המשולב בין שני היציאות מוגבל לסך כולל של XNUMX Gbps.
2.4.1 פרמטרי אתחול ליבה
אם טכנולוגיית הווירטואליזציה של Intel® עבור קלט/פלט מכוון (Intel® VT-d) מופעלת ב-BIOS, Intel ממליצה ש-IOMMU יהיה במצב מעבר (pass-through) לקבלת ביצועים אופטימליים של רשת המארח. פעולה זו מבטלת את תקורת ה-DMA על תעבורת המארח, תוך מתן אפשרות למכונות וירטואליות (VM) עדיין ליהנות מיתרונות Intel® VT-d. ניתן להשיג זאת על ידי הוספת השורה הבאה לפרמטרי אתחול הליבה: fommu-pt.
2.5 ודא שחבילת DDP נטענת כראוי
למנהלי התקנים בסיסיים של 140ea ו-140eb אין תמיכה ישירה בהתאמה אישית דינמית של התקנים (DDP). כדי להשתמש ב-DDP עם התקני סדרה 700, נדרש DDP profile ניתן ליישם עם יישום testpmd.
לפרטים על DDP profiles, וכיצד ליישם מקצוען DDPfile עם testpmd בהתקני סדרה 700, עיין במדריך הטכנולוגי של Intel® Ethernet 700 Series Dynamic Device Personalization (DDP).
כדי לוודא אם מקצוען DDPfile נטען בהצלחה:
testpmd> ddp get list 0 Profile המספר הוא: 1
פֶּתֶק
אם המקצועןfile אם המספר הוא 0, לא נטענה חבילת DDP. במקרה של שגיאת טעינת חבילת DDP, ההתקן עובר כברירת מחדל למצב בטוח ותכונות ביצועים רבות אינן זמינות. אם ישנן שגיאות הקשורות לטעינת חבילת DDP, הדבר יגרום לבעיות ביצועים. לשלבי פתרון בעיות, עיין במדריך הטכנולוגיה של Inte/* Ethernet 700 Series Dynamic Device Personalization (DDP).
מדידות ביצועים בסיסיות ומתודולוגיית כוונון
3.1 מדדי ביצועי רשת
לפני תחילת תרגיל כוונון, חשוב שתבצע מדידת בסיס טובה של ביצועי הרשת שלך. בדרך כלל בנוסף לקבלת מדידה ראשונית של ביצועי האפליקציה/עומס העבודה הספציפיים שלך, מומלץ להשתמש גם במבחן ביצועי רשת סטנדרטי כדי לוודא שמכשיר הרשת שלך במצב תקין.
לאופטימיזציה של מערכת בודדת, netperf או iperf ו-NetPIPE הם כולם כלים חינמיים בקוד פתוח המאפשרים לך להפעיל לחץ על חיבור ולאבחן בעיות ביצועים.
Netperf חזק הן לבדיקות תפוקה והן לבדיקות השהייה. NetPIPE הוא כלי ספציפי להשהייה אך ניתן לקמפל אותו עבור כל סוג של סביבה.
פֶּתֶק
בדיקת TCP_RR ב-netperf מחזירה את ההשהיה כערך של עסקאות/שנייה. זהו מספר הלוך ושוב. ניתן לחשב את ההשהיה החד-כיוונית באמצעות המשוואה הבאה:
Latency(usec) = (1⁄2) / [עסקאות/שנייה] * 1,000,000
3.1.1 iPerf2
אינטל ממליצה על iperf2 על פני iperf3 עבור רוב מצבי השוואת ביצועים עקב קלות השימוש והתמיכה במספר הליכים באותו יישום. אינטל ממליצה להפעיל עם האפשרות -P עם 2-4 הליכים עבור חיבורי 25G וכ-4-6 הליכים עבור חיבורי 40G.
- כדי להריץ תעבורה חד כיוונית מהלקוח לשרת: פקודת שרת example: iperf2 -s
פקודת לקוח למשלample: iperf2 -c -פ - כדי להריץ תעבורה דו-כיוונית מהלקוח לשרת (ולהיפך): פקודת שרת example: iperf2 –s –p
פקודת לקוח למשלampעל:
iperf2 -c -p -פ --דופלקס מלא או
iperf2 -c -p -פ –ד
פֶּתֶק
שתי האפשרויות -full-duplex ו- -d ב-iperf2 מאפשרות למשתמש לבצע בדיקות דו-כיווניות. עם זאת, האפשרות -full-duplex מתמקדת ספציפית בבדיקות דו-כיווניות מלאות.
פֶּתֶק
בעת בדיקת iperf2 על פני מספר פורטים של שרת, ניתן להוסיף את הדגל -d לפקודת השרת כדי להריץ את כל הפעלות השרת ברקע מאותו חלון טרמינל. ניתן להשתמש בדגל -d גם כאשר פקודת השרת מוטמעת בתוך לולאת for בסקריפט.
פֶּתֶק
בעת הפעלת בדיקת תפוקת הרשת עם זרם/הליך יחיד (לדוגמהample: P1), ייתכן שמעבדי AMD לא יספקו תפוקה צפויה, במיוחד NICs ברוחב פס גבוה יותר (אם המהירות היא >= רוחב פס של 25G). כתוצאה מכך, נדרשת הצמדת יישומים לליבות ספציפיות כדי להשיג תפוקה גבוהה יותר. ראה הגדרות אפליקציה בעמוד 22.
3.1.2 iPerf3
אם נעשה שימוש ב-iperf3, נדרשים מופעים מרובים של היישום כדי לקחת את Advantagשל ריבוי הליכים, RSS ותורי חומרה. אינטל ממליצה להפעיל 2-4 הפעלות יישומים עבור חיבורי 25G וכ-4-6 הפעלות עבור חיבורי 40G. כל הפעלות צריכה לציין ערך יציאת TCP ייחודי באמצעות האפשרות -p.
- כדי להריץ תעבורה חד כיוונית מהלקוח לשרת:
פקודת שרת למשלampעל:
iperf3 -s -p
פקודת לקוח למשלampעל:
iperf3 -c -עמ' - כדי להריץ תעבורה דו-כיוונית מהלקוח לשרת (ולהיפך):
פקודת שרת למשלampעל:
iperf3 –s –p
פקודת לקוח למשלample: iperf3 -c -p -פ –-בידיר - כדי להפעיל מספר מופעים (הליכים) של iperf3, ההמלצה היא להשתמש בלולאת for כדי למפות הליכים לפורטים של TCP ולהריץ את iperf3 ברקע באמצעות & כדי ליצור מספר תהליכים במקביל.
פקודת שרת למשלample, התחל 4 שרשורים: port=""; for i in {0..3}; do port=520$i; bash -c “iperf3 -s -p $port &”; done; פקודת לקוח example, התחל 4 שרשורים – שידור test port=""; for i in {0..3}; do port=520$i; bash -c “iperf3 -c $serverIP -p $port &”; done; פקודת לקוח example, התחל 4 שרשורים – קבל test port=""; for i in {0..3}; do port=520$i; bash -c “iperf3 -R -c $serverIP -p $port &”; done; עבור חיבורי 40G, הגדל את לולאת for כדי ליצור עד 6 מופעים/שרשורים.
פֶּתֶק
בעת הפעלת בדיקת תפוקת הרשת עם זרם/הליך יחיד (לדוגמהampלדוגמה: P1), ייתכן שמעבדי AMD לא יספקו את קצב התפוקה הצפויה, במיוחד רוחב פס גבוה יותר
כרטיסי רשת (אם המהירות היא רוחב פס של 25G ומעלה). כתוצאה מכך, נדרשת הצמדת יישומים לליבות ספציפיות כדי להשיג תפוקה גבוהה יותר. ראה הגדרות יישומים בעמוד 22 ו-AMD EPYC בעמוד 26.
3.1.3 נטפרף
כלי netperf הוא בחירה חזקה הן לבדיקות תפוקה והן לבדיקות השהייה.
- בדיקת TCP_STREAM ב-netperf מודדת את יכולות התפוקה של המכשיר. פקודת שרת לדוגמהample: netserver פקודת לקוח למשלample: netperf -t TCP_STREAM -l 30 -H
- בדיקת TCP_RR ב-netperf מחזירה את זמן ההשהיה כערך של עסקאות/שנייה. זהו מספר הלוך ושוב. מומלץ להשתמש באפשרות -T x,x, כאשר x הוא מעבד מקומי למכשיר. ניתן לחשב את זמן ההשהיה החד-כיוונית באמצעות: Latency(usec)=(1⁄2)/ [עסקאות/שנייה]*1,000,\ פקודת שרת example: netserver
פקודת לקוח למשלample: netperf -t TCP_RR -l 30 -H -T x,x - כדי להפעיל מספר מופעים (הליכים) של netperf, ההמלצה היא להשתמש בלולאת for כדי למפות הליכים לפורטים של TCP ולהריץ את netperf ברקע באמצעות & כדי ליצור מספר תהליכים במקביל.
פקודת שרת למשלampהתחל 8 אשכולות:
port=""; עבור i ב-{0..7}; do port=520$i; bash -c "netserver -L $serverIP -p $port &"; נַעֲשָׂה;
פקודת לקוח למשלample, התחל 8 שרשורים: port=""; for i in {0..7}; do port=520$i; bash -c “netperf -H $serverIP -p $port -t TCP_STREAM -l 30 &”; done;
3.2 מתודולוגיית כוונון
התמקד בשינוי כוונון אחד בכל פעם כדי שתדע מה ההשפעה של כל שינוי על המבחן שלך. ככל שתהיו יותר מתודיים בתהליך הכוונון, כך יהיה קל יותר לזהות ולטפל בגורמים לצווארי בקבוק בביצועים.
כוונון הגדרות מנהל התקן i40e
4.1 זיקה ל-IRQ
הגדרת זיקה של IRQ כך שפסיקות עבור תורי רשת שונים יותאמו לליבות מעבד שונות יכולה להיות בעלת השפעה עצומה על הביצועים, במיוחד בדיקות תפוקה מרובות הליכי משנה.
כדי להגדיר זיקה של IRQ, יש לעצור את irqbalance ולאחר מכן להשתמש בסקריפט set_irq_affinity מחבילת המקור של i40e או להצמיד תורים באופן ידני. השבת את מאזן ה-IRQ של מרחב המשתמש כדי לאפשר הצמדת תורים:
- systemctl להשבית את irqbalance
- systemctl לעצור את irqbalance
שימוש בסקריפט set_irq_affinity מחבילת המקור של i40e (מומלץ): - כדי להשתמש בכל הליבות:
[path-to-i40epackage]/scripts/set_irq_affinity -X הכל ethX - כדי להשתמש רק בליבות בשקע NUMA המקומי: [path-to-i40epackage]/scripts/set_irq_affinity -X local ethX
- ניתן גם לבחור טווח של ליבות. הימנעו משימוש ב-cpu0 מכיוון שהוא מפעיל משימות טיימר. [path-to-i40epackage]/scripts/set_irq_affinity 1-2 ethX
פֶּתֶק
סקריפט האפיניציה מאפשר את היגוי חבילות השידור (XPS) כחלק מתהליך ההצמדה כאשר האפשרות -x מצוינת. כאשר XPS מופעל, אינטל ממליצה להשבית את irqbalance, מכיוון שמאזן הליבה עם XPS עלול לגרום לביצועים בלתי צפויים. סקריפט האפיניציה משבית את XPS כאשר האפשרות -X מצוינת. השבתת XPS והפעלת תורים סימטריים מועילים לעומסי עבודה שבהם הביצועים הטובים ביותר מושגים כאשר תעבורת Tx ו-Rx מקבלת שירות על אותם זוגות תורים.
הגדרת תורים סימטריים בלינוקס כוללת כוונון פרמטרי מנהל ההתקן של ממשק הרשת כדי לאפשר תורי קליטה סימטריים (Rx) ותורי שידור סימטריים (Tx) עבור מתאמי רשת נתמכים.
פֶּתֶק
- תורים סימטריים הם תכונת רשת מתקדמת, ולא כל מתאמי הרשת או מנהלי ההתקנים מסדרה 700 תומכים בהם.
- ודא שיש לך את תמיכת הדרושה במנהלי התקנים ובחומרה לפני שתנסה להגדיר תורים סימטריים.
כדי להגדיר תורים סימטריים, בצע את השלבים הכלליים הבאים:
- עריכת תצורת ממשק הרשת File: השתמש בעורך טקסט (לדוגמהample, vi, nano או gedit) כדי לערוך את תצורת ממשק הרשת file. ה file ממוקם בדרך כלל תחת הספרייה /etc/sysconfig/network-scripts/ ויש לו שם כמו ifcfg-ethX, כאשר ethX הוא שם ממשק הרשת שלך.
- הוסף פרמטרים סימטריים של תור. הוסף את השורות הבאות לתצורת ממשק הרשת. fileETHTOOL_OPTS="תורי מקלט 8 תורי שידור 8"
- הפעל מחדש את שירות הרשת.
לאחר ביצוע השינויים, הפעל מחדש את שירות הרשת כדי להחיל את התצורה החדשה. sudo systemctl restart network
באופן ידני:
-
מצא את המעבדים המחוברים לכל צומת באמצעות: numactl –hardware lscpu
-
מצא את מסכות הביטים עבור כל אחד מהמעבדים:
- בהנחה שליבות 0-11 עבור צומת 0: [1,2,4,8,10,20,40,80,100,200,400,800]
- מצא את ערכי ה-IRQ שהוקצו לפורט המוקצה: grep ethX /proc/interrupts ורשום את ערכי ה-IRQ. לדוגמהample, 181-192 עבור 12 הוקטורים הטעונים.
- הזן את ערך זיקת ה-SMP לערך ה-IRQ המתאים. שים לב שיש לעשות זאת עבור כל ערך IRQ: echo 1 > /proc/irq/181/smp_affinity echo 2 > /proc/irq/182/smp_affinity echo 4 > /proc/irq/183/smp_affinity הצג זיקת IRQ:
- כדי להציג את זיקת ה-IRQ עבור כל הליבות: /scripts/set_irq_affinity -s ethX
- כדי להציג רק ליבות בשקע NUMA המקומי: /scripts/set_irq_affinity -s ethX מקומי
- ניתן גם לבחור מגוון ליבות: /scripts/set_irq_affinity -s 40-0-8,16 ethX
פֶּתֶק
הסקריפט set_irq_affinity תומך בדגל -s במנהל ההתקן i40e גרסה 2.16.11 ואילך.
4.2 תורי שידור/קבלה
מספר התורים המופעל כברירת מחדל עבור כל יציאת Ethernet על ידי מנהל ההתקן בעת האתחול שווה למספר הכולל של מעבדים זמינים בפלטפורמה. זה עובד היטב עבור פלטפורמות רבות ותצורות עומס עבודה. עם זאת, בפלטפורמות עם ספירת ליבות גבוהה ו/או צפיפות יציאות Ethernet גבוהה, תצורה זו עלולה לגרום למחלוקת משאבים. לכן, ייתכן שיהיה צורך במקרים מסוימים לשנות את ברירת המחדל עבור כל יציאה במערכת.
מספר ברירת המחדל של תורי Tx/Rx יכול להשתנות בהתאם לדגם הספציפי ולגרסת מנהל ההתקן. ניתן להתאים את מספר התורים באמצעות הפקודה ethtool -L הרשומה למטה.
פֶּתֶק
במקרים אלה, אינטל ממליצה להפחית את ספירת התורים המוגדרת כברירת מחדל עבור כל פורט ללא יותר ממספר המעבדים הזמינים בצומת NUMA המקומי לפורט המתאם. במקרים מסוימים, בעת ניסיון לאזן משאבים במימושים בעלי ספירת פורטים גבוהה, ייתכן שיהיה צורך להפחית מספר זה עוד יותר.
כדי לשנות את תצורת התור:
האקס הבאample מגדיר את הפורט ל-32 תורי שידור/קבלה: ethtool -L ethX משולב 32
Exampפלט le:
ethtool -l ethX
פרמטרי ערוץ עבור ethX: ערכים מקסימליים מוגדרים מראש:
RX: 96
TX: 96
אחר: 1
משולב: 96
הגדרות חומרה נוכחיות:
RX: 0
TX: 0
אחר: 1
משולב: 32
4.3 פסיקת פיקוח
מתן פסיקה אדפטיבית מופעלת כברירת מחדל, ונועד לספק גישה מאוזנת בין ניצול נמוך של מעבד וביצועים גבוהים. עם זאת, ייתכן שתנסה לכוונן את הגדרות ההפסקה באופן ידני כך שיתאימו למקרה השימוש שלך.
הטווח של 0-235 מיקרו-שניות מספק טווח אפקטיבי של 4,310 עד 250,000 פסיקות לשנייה. ניתן להגדיר את הערך של rx-μsecs-high ללא תלות ב-rx-μsecs ו-tx-μsecs באותה פקודת ethtool, והוא גם בלתי תלוי באלגוריתם אדפטיבי של מיתרון פסיקות. החומרה הבסיסית תומכת בגרגיריות במרווחים של 2 מיקרו-שניות, כך שערכים סמוכים עשויים לגרום לאותו קצב פסיקות.
- כדי לכבות את ניהול הפסיקה האדפטיבית: ethtool -C ethX adaptive-rx off adaptive-tx off
- כדי להפעיל שליטה על פסיקות אדפטיבית: ethtool -C ethX adaptive-rx on adaptive-tx on
נקודת התחלה טובה לכוונון כללי היא 84 מיקרושניות, או ~12000 פסיקות/שנייה. אם אתם רואים שמונה מונים של rx_dropped פועלים במהלך תעבורה (באמצעות ethtool -S ethX), כנראה שיש לכם מעבד איטי מדי, לא מספיק מאגרים מגודל הטבעת של המתאם (ethtool -G) כדי להחזיק חבילות למשך 84 מיקרושניות או קצב פסיקות נמוך מדי.
- כדי להגדיר קצב פסיקות קבוע של 84 מיקרו-שניות בין פסיקות (12000 פסיקות/שנייה): ethtool -C ethX adaptive-rx off adaptive-tx off rx-usecs 84 tx-usecs 84 הערך הבא שכדאי לנסות, אם אינך ניצול מקסימלי של המעבד, הוא 62 מיקרו-שניות. ערך זה משתמש ביותר מעבד, אך משרת את מאגרים מהר יותר ודורש פחות תיאורים (גודל טבעת, ethtool -G).
- כדי להגדיר את רמת הפסיקות לקצב פסיקות קבוע של 62 usecs בין פסיקות (16000 פסיקות/שנייה). ethtool -C ethX adaptive-rx off adaptive-tx off rx-usecs 62 tx-usecs 62
אם מונים rx_dropped גדלים במהלך התעבורה (באמצעות ethtool -S ethX), כנראה שיש לך מעבד איטי מדי, אין מספיק חוצצים מגודל הטבעת של המתאם (ethtool -G), או קצב פסיקה נמוך מדי. אם אינך מרוצה משימוש במעבד, תוכל להגדיל את קצב ההפסקות על ידי הורדת ערך ה-ITR. זה משתמש יותר במעבד, אבל השירותים מאחסנים מהר יותר ודורשים פחות מתארים (גודל טבעת, ethtool -G).
אם המעבד שלך עומד על 100%, לא מומלץ להגדיל את קצב הפסיקות. בנסיבות מסוימות, כגון עומס עבודה מוגבל למעבד, ייתכן שתרצה להגדיל את ערך ה-μs כדי לאפשר זמן מעבד נוסף עבור יישומים אחרים.
אם אתה זקוק לביצועי חביון נמוכים ו/או שיש לך הרבה מעבד להקדיש לעיבוד רשת, אתה יכול להשבית לחלוטין את התמתנות ההפרעות, מה שמאפשר להפרעות לפעול מהר ככל האפשר. - כדי להשבית את ניהול הפסקות ethtool -C ethX adaptive-rx off adaptive-tx off rx-usecs 0 tx-usecs 0
פֶּתֶק
בעת הפעלה כאשר ניהול הפסקות מושבת, קצב הפסיקות בכל תור יכול להיות גבוה מאוד. שקול לכלול את הפרמטר rx-usec-high כדי להגדיר גבול עליון לקצב הפסיקות. הפקודה הבאה מבטלת ניהול הפסקות אדפטיבי ומאפשרת מקסימום של 5 מיקרו-שניות לפני ציון השלמת קבלה או שידור. במקום לגרום לעד 200,000 הפסקות לשנייה, היא מגבילה את סך הפסיקות לשנייה ל-50,000 באמצעות הפרמטר rx-usec-high. # ethtool -C ethX adaptive-rx off adaptive-tx off rx-usecs-high 20 rx-usecs 5 txusecs 5 נסה להתאים את טיימר השידור/קבלה/הקיבוע בעדיפות גבוהה לגובה (80/100/150/200) או נמוך יותר (25/20/10/5) כדי למצוא ערך אופטימלי עבור עומס העבודה.
4.4 גודל טבעת
אם אתם רואים מונים מסוג rx_dropped בפונקציה ethtool -S ethX (rx_dropped, rx_dropped.nic), או חושדים בלחץ במטמון עם מספר תורים פעילים, ייתכן שתנסו להתאים את גודל הטבעת מערך ברירת המחדל. ערך ברירת המחדל הוא 512, המקסימום הוא 4096.
- כדי לבדוק את הערכים הנוכחיים: ethtool -g ethX
אם יש חשד שחוסר חציצה גורם לירידות בקצב ההפסקה הנוכחי, אתה יכול לנסות תחילה את המקסימום, לאחר מכן את המינימום, ואז להמשיך בחיפוש בינארי עד שתראה ביצועים מיטביים.
אם יש חשד ללחץ במטמון (תורים רבים פעילים), הפחתת מאגרים מברירת המחדל יכולה לעזור ל-Intel® Data Direct I/O (Intel® DDIO) לפעול בצורה יעילה יותר. אינטל ממליצה לנסות 128 או 256 לכל תור, תוך מודעות לכך שעשויה להיות הכרחית להגדיל את קצב הפסיקות באמצעות ethtool -C כדי למנוע עלייה ב-rx_dropped. - כדי להגדיר גודל טבעת לערך קבוע: ethtool -G eth12 rx 256 tx 256
פֶּתֶק
כדי לתקן נפילות של חבילות מרשם שנמצאו באמצעות ethtool -S ethX|grep drop, שקול להגדיל את גודל הטבעת ל-4096. נסה למצוא את ההגדרה הטובה ביותר עבור עומס העבודה אך היזהרו משימוש מוגזם בזיכרון עם ערכים גבוהים יותר.
4.5 בקרת זרימה
בקרת זרימה בשכבה 2 יכולה להשפיע באופן משמעותי על ביצועי TCP ומומלץ להשבית אותה עבור רוב עומסי העבודה. יוצא מן הכלל פוטנציאלי הוא תעבורה פרצית שבה הפריצות אינן ארוכות טווח.
בקרת זרימה מושבתת כברירת מחדל.
- כדי לאפשר בקרת זרימה: ethtool -A ethX rx on tx on
- כדי להשבית את בקרת הזרימה: ethtool -A ethX rx off tx off
פֶּתֶק
עליך להיות בעל שותף קישור התומך בבקרת זרימה כדי להפעיל בהצלחה את בקרת הזרימה.
4.6 מסגרות ג'מבו
כאשר סביבת התעבורה הצפויה מורכבת מגושים גדולים של נתונים המועברים, ייתכן שיהיה מועיל להפעיל את תכונת המסגרת הג'מבו. תמיכת Jumbo Frames מופעלת על ידי שינוי יחידת השידור המקסימלית (MTU) לערך הגדול מערך ברירת המחדל של 1500. זה מאפשר למכשיר להעביר נתונים בחבילות גדולות יותר בתוך סביבת הרשת. הגדרה זו עשויה לשפר את התפוקה ולהפחית את ניצול ה-CPU עבור עומסי עבודה גדולים של קלט/פלט. עם זאת, זה עלול להשפיע על עומסי עבודה רגישים לחבילות קטנות או לאחביות.
פֶּתֶק
יש להגדיר כראוי מסגרות ג'מבו או הגדרת MTU גדולה יותר בסביבת הרשת שלך.
השתמש בפקודה ifconfig כדי להגדיל את גודל ה-MTU. למשלample, הזן את הדברים הבאים, כאשר הוא מספר הממשק: ifconfig mtu 9000 ומעלה
לחלופין, ניתן להשתמש בפקודת ip באופן הבא: ip link set mtu 9000 dev מפתח הגדרת קישור IP
כוונון פלטפורמה (i40e לא ספציפי)
5.1 הגדרות BIOS
- הפעל את Intel® VT-d עבור עומסי עבודה של וירטואליזציה.
- היפר-הליך משנה (מעבדים לוגיים) יכול להשפיע על הביצועים. נסה להפעיל או לכבות אותו בהתאם לעומס העבודה שלך.
- Intel® Turbo Boost מאפשר לליבות המעבד לפעול בתדר גבוה יותר מתדר הבסיס של המעבד. הפעלת Intel® Turbo Boost יכולה לשפר את הביצועים עבור עומסי עבודה רבים, אך צורכת יותר חשמל כדי לשמור על הליבות בתדר גבוה יותר. נסה את האפשרות לכבות/להפעיל את Turbo Boost עבור עומס העבודה שלך.
פֶּתֶק
תדרי טורבו אינם מובטחים אם הפלטפורמה חווה ניצול כולל גבוה של המעבד. תדרי טורבו גבוהים יותר של ליבות מופחתים ככל שניצול המעבד הכולל עולה.
5.2 ניהול חשמל
ניהול צריכת חשמל יכול להשפיע על הביצועים, במיוחד בעומסי עבודה עם זמן אחזור נמוך. אם הביצועים הם בעדיפות גבוהה יותר מהפחתת צריכת החשמל, אינטל ממליצה להתנסות בהגבלת ההשפעות של ניהול צריכת החשמל. ישנן דרכים רבות ושונות להגביל את ניהול צריכת החשמל, באמצעות כלי מערכת הפעלה, הגדרות BIOS ופרמטרי אתחול ליבה. בחר את השיטה והרמה הטובים ביותר שיתאימו לסביבה שלך.
5.2.1 בקרת מצב C
הגבלת כניסת מצב C ל-CO או C1 משפרת את הביצועים ומגבירה את ניצול החשמל.
השבתת כניסת מצב CPU Package C6 יכולה לשפר את ביצועי הרשת. עם זאת, זה מגביר את צריכת החשמל.
האפשרויות הבאות זמינות:
- שלוט באופן דינמי בכניסה למצב C:
לִפְתוֹחַ
/dev/cpu_dma_latency וכתוב לו את זמן האחזור המקסימלי המותר.
פֶּתֶק
ישנה תוכנה קטנה בשם cpudmalatency.c שניתן להוריד מקהילת הקוד הפתוח, לקמפל אותה ולהפעיל אותה משורת הפקודה כדי לעשות בדיוק את זה.
האקס הבאample מאפשר חמש מיקרו-שניות של זמן ערות, וכך מאפשר כניסה ל-C1: cpudmalatency 5 &
- הגבל את מצב ה-C המרבי בהגדרות אתחול הליבה:
עבור מעבדי אינטל: intel_idle.max_cstates=1
עבור מעבדים שאינם של אינטל: processor.max_cstates=1 - השתמש בפקודת cpupower כדי לבדוק ולהשבית את מצב ה-C6 של המעבד: בדוק: צג cpupower או מידע סרק cpupower
השבתת C6: cpupower idle-set -d3 או
השבתת מצבי C: cpupower idle-set -D0
הערות:
- השבת מצבי C במעבד אם בשרת יש מעבד/י Intel® Xeon® Scalable מדור רביעי. כאשר Hyper Threading מופעל או מושבת, השבתת מצבי סרק (-D4) מונעת מהליבות להיכנס למצבי צריכת אנרגיה נמוכה במהלך תקופות סרק ומפחיתה את זמן ההשהיה של המעבד במעבר בין מצב סרק למצב פעיל.
- ניהול צריכת החשמל של מעבד Intel® דור רביעי Intel® Xeon® Scalable הוא אגרסיבי ביותר. כדי למנוע מליבות להיכנס למצב של צריכת חשמל נמוכה, נסה להפחית את מספר הליבות בשימוש כדי לשמור אותן ערות למשך זמן רב יותר (ethtool -L מְשׁוּלָב כמו כן, יש לאגד פסיקות לליבות ספציפיות באמצעות set irq affinity (לרוב עם -x local או רשימה של ליבות CPU), ולוודא שעומס העבודה פועל על אותן ליבות באמצעות taskset או numactl. זה משפר את הביצועים על ידי שמירה על ליבות פעילות ואופטימיזציה של טיפול בפסיקות.
הפעל את C6:
cpupower idle-set -d3
אפשר C-States:
cpupower idle-set -E
- שיטה נוספת היא להשתמש בכלי tuned (הכלול בהפצות לינוקס רבות) כדי להגדיר רמת ביצועים מומלצת.file. המקצוענים האלהfiles לשנות מספר הגדרות מערכת ההפעלה שיכולות להשפיע על הביצועים באפליקציות רבות. נמצא כי המקצוען בתפוקה ברשתfile מספק שיפור לרוב עומסי העבודה.
לִבדוֹק:
tuned-adm פעיל
מַעֲרֶכֶת:
tuned-adm profile תפוקת רשת
פֶּתֶק
השירות Tuned חייב לפעול עבור הפקודות הנ"ל. כדי לבדוק/להפעיל מחדש, כוון: systemctl status tuned systemctl restart tuned
אתה יכול גם לא לאפשר כל כניסת C-state על ידי הוספת הדברים הבאים לשורת האתחול של הליבה:
בטלה=סקר - הגבל את מצב C דרך הגדרות ניהול צריכת החשמל של ה-BIOS של המערכת, דבר שעשוי להשפיע על הביצועים.file זָמִין.
ניתן להשתמש בכלים כגון turbostat או x86_energy_perf_policy כדי לבדוק או להגדיר הגדרות ניהול צריכת חשמל.
5.2.2 ניהול צריכת חשמל של PCIe
ניהול צריכת חשמל במצב פעיל (ASPM) מאפשר צריכת חשמל נמוכה יותר עבור קישורי PCIe כאשר הם אינם בשימוש פעיל. מצב זה עלול לגרום להשהייה גבוהה יותר בהתקני רשת PCIe, לכן אינטל ממליצה להשבית את ASPM עבור עומסי עבודה הרגישה להשהייה. השבת את ASPM על ידי הוספת הפרטים הבאים לשורת האתחול של הליבה: pcie_aspm=off
5.2.3 שינוי קנה מידה של תדר המעבד
קנה המידה של תדר ה-CPU (או קנה המידה של מהירות ה-CPU) היא טכניקת ניהול צריכת חשמל של לינוקס שבה מהירות השעון של המערכת מותאמת תוך כדי כדי לחסוך בחשמל ובחום. בדיוק כמו מצבי C, זה יכול לגרום לאחזור לא רצוי בחיבורי רשת.
ניתן להשתמש בכלי cpupower גם כדי לבדוק ולשנות ערכי ברירת מחדל ומגבלות ביצועי המעבד:
- בדיקה: צג מעבד או
- הגדר את המעבדים למצב ביצועים: cpupower frequency-set -g performance
פֶּתֶק
שינויים במגבלות תדר המעבד יכולים להשפיע על עומסי עבודה רבים ועשויים להשבית תכונות אחרות, כגון מצב טורבו של המעבד.
כדי להשבית את קנה המידה של תדר המעבד, השבת את שירות כוח המעבד על ידי הפקודות הבאות:
מערכת עצירה של cpupower.service
systemctl להשבית cpupower.service
5.2.4 הנחיות נוספות לניהול צריכת חשמל
פרטים נוספים מסופקים ב-over רמה גבוהה זהview של רבות מתכונות ניהול צריכת החשמל במעבדי Intel® Xeon® Scalable מדור שלישי, וכן הדרכה כיצד ניתן לשלב תכונות אלו ברמת הפלטפורמה: https://networkbuilders.intel.com/solutionslibrary/power-management-technologyoverview-technology-guide
5.3 אינטל® טורבו בוסט
Intel® Turbo Boost הופך את המעבד למהיר יותר בעת הצורך, אך יכול לצרוך כוח נוסף. כיבוי של Turbo Boost שומר על המעבד במהירות קבועה, ומעניק לך רמת ביצועים עקבית לעומסי עבודה ספציפיים.
5.4 חומות אש
חומות אש יכולות להשפיע על הביצועים, במיוחד על ביצועי השהייה.
השבת את iptables/firewalld אם אין צורך בכך.
5.5 הגדרות אפליקציה
לעתים קרובות חוט בודד (המתאים לתור רשת בודד) אינו מספיק כדי להשיג רוחב פס מרבי. חלק מארכיטקטורות הפלטפורמה, כמו AMD, נוטות להפיל יותר מנות Rx עם חוט בודד בהשוואה לפלטפורמות עם מעבדים מבוססי אינטל.
שקול להשתמש בכלים כמו taskset או numactl כדי להצמיד יישומים לצומת NUMA או ליבות CPU מקומיות להתקן הרשת. עבור עומסי עבודה מסוימים כגון קלט/פלט אחסון, העברת האפליקציה לצומת לא מקומי מספקת תועלת.
נסה להגדיל את מספר השרשורים המשמשים את היישום שלך במידת האפשר.
גרסת ליבה 5.6
רוב הגרעינים המודרניים הנכללים בתיבה מותאמים למדי לביצועים, אך בהתאם למקרה השימוש שלך, עדכון הליבה עשוי לספק ביצועים משופרים. הורדת המקור גם מאפשרת לך להפעיל/לבטל תכונות מסוימות לפני בניית הליבה.
5.7 הגדרות מערכת הפעלה/ליבה
עיין במדריכים לכוונון מערכות ההפעלה, כגון Red Hat Enterprise Linux Network Performance Tuning Guide, לקבלת תובנות נוספות על כוונון כללי של מערכת ההפעלה.
כמה פרמטרים נפוצים לכיוון מפורטים בטבלה הבאה. שים לב שאלו הן רק נקודות התחלה מוצעות, ושינוי שלהן מברירות המחדל עשוי להגדיל את המשאבים בשימוש במערכת. למרות שהגדלת הערכים יכולה לעזור לשפר את הביצועים, יש צורך להתנסות בערכים שונים כדי לקבוע מה עובד הכי טוב עבור מערכת, עומס עבודה וסוג תנועה נתון.
פרמטרי הליבה ניתנים להגדרה באמצעות כלי השירות sysctl בלינוקס כמצוין להלן.
אֶל view ערכי ברירת המחדל עבור rmem ו-wmem במערכת:
sysctl net.core.rmem_default
sysctl net.core.wmem_default
הגדר את הערכים למקסימום (16 MB):
sysctl -w net.core.rmem_max=16777216
sysctl -w net.core.wmem_max=16777216
גדלי מאגר שקעים, המכונים גם מאגר קבלה (rmem) ומאגר שידור (wmem), הם פרמטרי מערכת המציינים את כמות הזיכרון השמורה לתעבורת רשת נכנסת ויוצאת.
הפעלת sysctl ללא הארגומנט -w מפרטת את הפרמטר עם ההגדרה הנוכחית שלו.
הגדרת מחסנית | תֵאוּר |
net.core.rmem_default | גודל ברירת מחדל של חלון קבלה |
net.core.wmem_default | גודל חלון השידור המוגדר כברירת מחדל |
net.core.rmem_max | גודל חלון קבלה מקסימלי |
net.core.wmem_max | גודל חלון שידור מקסימלי |
net.core.optmem_max | מאגר זיכרון אופציונלי מקסימלי |
net.core.netdev_max_backlog | צבר של חבילות שלא מעובדות לפני שהליבה מתחילה ליפול |
net.ipv4.tcp_rmem | שומר זיכרון עבור מאגר קריאת TCP |
net.ipv4.tcp_wmem | שומר זיכרון עבור מאגרים של שליחה של TCP |
פרמטרים של ליבה, מחסנית רשת, מטפל בזיכרון, מהירות מעבד ופרמטרים של ניהול צריכת חשמל יכולים להשפיע רבות על ביצועי הרשת. המלצה נפוצה היא לפנות ל-Network Throwput Profile באמצעות הפקודה המכווננת. זה משנה כמה הגדרות מערכת ההפעלה כדי לספק העדפה ליישומי רשת.
לִבדוֹק:
tuned-adm פעיל
מַעֲרֶכֶת:
tuned-adm profile תפוקת רשת
5.8 צבר התקני רשת
תכונה זו עוזרת לשפר את ביצועי הרשת על ידי ניהול תעבורה נכנסת ביעילות, הפחתת אובדן מנות, הפחתת זמן האחזור והגברת התפוקה. זה מוביל לחוויית משתמש טובה יותר ותגובת מערכת מהירה יותר.
כברירת מחדל, הוא מופעל ברוב מערכות ההפעלה לינוקס. כדי לבדוק את ערך ברירת המחדל:
sysctl net.core.netdev_max_backlog
הערך המקסימלי עבור netdev_max_backlog יכול להשתנות בהתאם לגורמים כמו גרסת הליבה, חומרה, זיכרון ועומס עבודה. במקרים רבים, 8192 נתפס כערך טוב. sysctl -w net.core.netdev_max_backlog=8192
5.9 תצורות וכוונונים ספציפיים לפלטפורמה
5.9.1 מעבדי Intel® Xeon® מדור רביעי ניתנים להרחבה
ניהול הכוח של מעבד Intel® Xeon® Scalable דור 4 של Intel® הוא אגרסיבי ביותר בהשוואה למעבדי הדור השלישי של Intel® Xeon® Scalable. כדי למנוע מלייבות להיכנס למצבי הספק נמוך, נסה להפחית את מספר הליבות בשימוש כדי לשמור אותן ערות למשך זמן רב יותר.
הגדרות BIOS מומלצות לביצועים הגבוהים ביותר
- הפעלה/ביטול של Hyper-threading (בהתבסס על דרישת עומס העבודה ויעדי הביצועים) על המעבד.
- הגדר את מערכת המקצועניםfile לביצועים לביצועים מקסימליים.
פֶּתֶק
זה גורם לצריכת חשמל גבוהה יותר - הגדר את ניהול צריכת החשמל של המעבד לביצועים מרביים כדי לתעדף ביצועי מעבד מרביים על פני יעילות צריכת חשמל.
- הפעלת Turbo Boost. השבתת Turbo Boost בהגדרות ה-BIOS של המערכת בדרך כלל מונעת מהמעבד להגדיל באופן דינמי את מהירות השעון שלו מעבר לתדר הבסיס שלו.
- פֶּתֶק
השבתת Turbo Boost עשויה להתאים למקרי שימוש מסוימים שבהם ביצועים עקביים, יעילות צריכת חשמל או ניהול תרמי מקבלים עדיפות על פני ביצועים מקסימליים. - כבה את התכונה של וירטואליזציה של קלט/פלט מסוג יחיד (SR-IOV), אם המערכת אינה משתמשת בטכנולוגיות וירטואליזציה.
- השבת מצבי C כדי להורות למעבד להישאר פעיל ולמנוע כניסה למצבי סרק עמוקים יותר.
- השבת את C1E, כדי להבטיח שהמעבד יישאר פעיל ולא ייכנס למצב סרק של C1E.
- הגדר את תדר ה-uncore למקסימום כדי להורות למערכת לפעול בתדר הגבוה ביותר הזמין.
- בפלטפורמות של Dell, הגדר את אמולציית הליבות של טבלת תיאור APIC מרובת (MADT) לליניארי (או Round-Robin בהתאם ל-BIOS) כדי לספק מיפוי ברור וצפוי של ליבות המעבד.
כוונון ברמת מערכת ההפעלה המומלץ לביצועים אופטימליים
- הגדר את מווסת קנה המידה של תדר המעבד לביצועים. cpupower frequency-set -g performance cpupower frequency-info
- השבת מצבי C. cpupower idle-set -D0
- הגדר את מאגר ה-Rx (rmem) וה-Tx (wmem) של הליבה לערך מקסימלי. sysctl -w net.core.rmem_max=16777216 sysctl -w net.core.wmem_max=16777216
- הגדר צבר של התקני רשת. sysctl -w net.core.netdev_max_backlog=8192
- הגדר מכוון מקצועיfile (תלוי עומס עבודה בתפוקה/השהיה).
tuned-adm profile תפוקת רשת
כוונון רמת מתאם מומלץ לביצועים אופטימליים
- הגבל את מספר התורים לשימוש עבור תעבורת יישומים. השתמש במספר התורים המינימלי הנדרש כדי לשמור על ליבות המעבד המשויכות פעילות ולמנוע מהן להיכנס למצבי סרק עמוקים יותר (התאם לעומס העבודה): ethtool -L משולב 32
- הגדר שיעורי מיתון פסיקות. ethtool -C מרשם אדפטיבי כבוי, שידור אדפטיבי כבוי, מרשם-משתמש-על-גבוה 50, מרשם-משתמש-על-50, שידור-משתמש-על-50
נסה להתאים את טיימר השידור/קליטה/הקיבוע בעדיפות גבוהה לגובה (80/100/150/200) או נמוך יותר (25/20/10/5) כדי למצוא ערך אופטימלי עבור עומס העבודה. - הגדר את גודל טבעות Rx/Tx. ethtool -G מרשם 4096 משדר 4096
פֶּתֶק
אם אתה רואה חבילות Rx נופלות עם grep drop של ethtool -S|, נסה להקטין את גודל הטבעת ל-<4096. נסה למצוא את הערך האופטימלי עבור עומס העבודה שבו חבילות לא נופלות. - הגדר זיקה ל-IRQ. השתמש בליבות מקומיות לכרטיס הרשת, או מיפוי ליבות ספציפי (כאשר # ליבות שווה למספר התורים שנקבע ב-1 בעמוד 26). systemctl stop irqbalance set_irq_affinity -X local או set_irq_affinity -X
5.9.2 AMD EPYC
מעבדי AMD EPYC הם מעבדים רבי עוצמה המיועדים לשרתים ומרכזי נתונים, הבנויים על ארכיטקטורת Zen של AMD. ההגדרות שלהלן הן מסדרת EPYC מהדור הרביעי של AMD.
הגדרות BIOS מומלצות לביצועים הגבוהים ביותר
- הפעל מצב מותאם אישית כדי לאפשר למשתמשים להתאים את ביצועי המעבד, צריכת החשמל והגדרות אחרות. זה עוזר לכוונן את המערכת לאיזון הטוב ביותר בין ביצועים ליעילות אנרגטית.
- הפעל הגברת ביצועי הליבה כדי לאפשר למעבד להגביר את מהירותו באופן אוטומטי כדי להתמודד עם משימות אינטנסיביות יותר, ובכך לשפר את הביצועים הכוללים.
- השבת בקרת מצב C גלובלית, כדי למנוע מהמעבד להיכנס למצבי חיסכון באנרגיה עמוקים יותר המכונים מצבי C, אשר יכולים לשמור על תגובתיות.
פֶּתֶק
השבתת מצבי C עלולה לגרום לצריכת חשמל נוספת ולהעלות את הטמפרטורות התרמיות. יש לנטר את שניהם עבור עומס העבודה. - הפעלה/השבתה של ריבוי הליכים סימולטניים (SMT) במעבד, בהתבסס על דרישת עומס העבודה ויעדי הביצועים. SMT שווה ערך ל-Hyper Threading במעבדי אינטל.
פֶּתֶק
לקבלת ביצועים מיטביים, עיינו בסעיפים כוונון הגדרות מנהל ההתקן של i40e בעמוד 13 ובכוונון פלטפורמה (i40e לא ספציפי) בעמוד 19 לקבלת מידע מומלץ על כוונון ברמת מערכת ההפעלה והמתאם.
הדבקת מתאם
חיבור לינוקס הוא תכונה רבת עוצמה שיכולה לשפר משמעותית את ביצועי הרשת, יתירות וסובלנות תקלות בסביבות שרתים. עם זאת, חשוב לציין שזה דורש חומרת רשת תואמת ותצורה נכונה הן בשרת והן במתג כדי לתפקד כראוי.
מנהל ההתקשרות בלינוקס מאפשר לך לצבור ממשקי רשת פיזיים מרובים לתוך ממשק מלוכד. ממשק מלוכד זה מופיע כממשק רשת וירטואלי יחיד למערכת ההפעלה ולאפליקציות.
פֶּתֶק
הקשר הוא ממשק לוגי, כך שלא ניתן להגדיר זיקה של המעבד ישירות על ממשק הקשר (לדוגמהample, bond0). כלומר, אין לו שליטה ישירה על טיפול בפסיקות או זיקה למעבד. יש להגדיר זיקה למעבד עבור הממשקים הבסיסיים שהם חלק מהקשר.
הדבקה מספקת מספר אופני פעולה, לכל אחד מאפיינים משלו.
מצב | סוּג |
0 | רובין עגול |
1 | גיבוי פעיל |
2 | XOR |
3 | מִשׁדָר |
4 | LACP |
5 | שידור איזון עומס |
6 | איזון עומסים אדפטיבי |
ישנן שיטות שונות ליצור חיבור בלינוקס. אחת השיטות הנפוצות ביותר היא באמצעות תצורת רשת files (לדוגמהample, /etc/network/ interfaces או /etc/sysconfig/network-scripts/ifcfg-bondX).
תצורה באמצעות תצורת רשת Files
השלבים הבאים יוצרים חיבור דרך תצורת הרשת files.
- בחר שני יציאות NIC או יותר לצורך חיבור (לדוגמהample, ethX ו-ethY)
- פתיחת תצורת כרטיס רשת Fileתחת /etc/sysconfig/network-scripts/ עבור ממשק ה-NIC הנדרש (לדוגמהample, vi ifcfg-ethX ו-vi ifcfg-ethY) וצרף את הטקסט הבא:
MASTER=bondN [הערה: N הוא מספר שלם כדי להזכיר את מספר הקשר.] SLAVE=כן - צור סקריפט רשת קשרים file באמצעות vi /etc/sysconfig/networkscripts/ifcfg-bondN והזן את הטקסט הבא:
DEVICE=bondN [הערה: N הוא מספר שלם לציון מספר הקשר] ONBOOT=כן USERCTL=לא BOOTPROTO=dhcp (או) ללא
IPADDR=200.20.2.4 [נדרש אם BOOTPROTO=none] NETMASK=255.255.255.0 [נדרש אם BOOTPROTO=none] NETWORK=200.20.2.0 [נדרש אם BOOTPROTO=none] BROADCAST=200.20.2.255 [נדרש אם BOOTPROTO=none] BONDING_OPTS=”mode=1 miimon=100″
פֶּתֶק
מצב יכול להיות כל מספר שלם בין 0 ל-6 בהתבסס על הדרישה. - הפעל מחדש את שירותי הרשת באמצעות שירות network restart או systemctl restart NetworkManager.service
פתרון בעיות ביצועים
7.1 ניצול המעבד
בדוק את ניצול המעבד לכל ליבה בזמן שעומס העבודה פועל.
שימו לב שניצול הליבה רלוונטי יותר לביצועים מאשר ניצול המעבד הכולל, מכיוון שהוא מספק מושג על ניצול המעבד לתור רשת. אם יש לכם רק כמה הלידים שמריצים תעבורת רשת, ייתכן שרק כמה ליבות נמצאות בשימוש. עם זאת, אם ליבות אלו נמצאות ב-100%, סביר להניח שתפוקת הרשת שלכם מוגבלת על ידי ניצול המעבד והגיע הזמן לבצע את הפעולות הבאות:
- כוונן את גודל הצלצול/ניטור ה-IRQ כמפורט ב'ניטור פסיקות'.
- הגדל את מספר הליכי התהליכים של האפליקציה כדי לפזר את עומס המעבד על פני יותר ליבות. אם כל הליבות פועלות ב-100%, ייתכן שהאפליקציה שלך קשורה למעבד ולא לרשת.
כלים נפוצים:
- רֹאשׁ
— לחץ 1 כדי להרחיב את רשימת המעבדים ולבדוק אילו מהם נמצאים בשימוש.
- שימו לב לרמת הניצול.
— שימו לב אילו תהליכים רשומים כפעילים ביותר (בראש הרשימה). - mpstat
האקס הבאampשורת הפקודה נבדקה על Red Hat Enterprise Linux 7.x.
הוא מציג את ניצול המעבד לכל ליבה (על ידי מציאת אחוז הסרק הכולל וחיסור מ-100) ומדגיש את הערכים מעל 80% באדום. mpstat -P ALL 1 1 | grep -v Average | tail -n +5 | head -n -1 | awk '{ print (100-$13)}' | egrep -color=always '[^\.][8-9][0-9][\.]?.*|^[8-9][0-9][\.]?.*| 100|' | column - חפש היכן מבוזבזים מחזורים.
7.2 מוני i40e
מנהל ההתקן של i40e מספק רשימה ארוכה של מונים לאיתור שגיאות וניטור בממשק באמצעות הפקודה ethtool -S ethX. זה יכול להיות מועיל לצפות בפלט בזמן שעומס עבודה פועל ו/או להשוות את ערכי המונה לפני ואחרי הרצת עומס עבודה.
- כדי לקבל רשימה מלאה של מוני i40e: ethtool -S ethX
- כדי לצפות רק במונים שאינם מאפס: watch -d (ethtool -S ethX) | egrep -v :\ 0 | column
כמה דברים שכדאי לחפש: - rx_dropped פירושו שהמעבד אינו משרת את המאגרים מספיק מהר.
- port.rx_dropped פירושו שמשהו לא מהיר מספיק בחריץ/זיכרון/מערכת.
7.3 מוני רשת
בדוק netstat -s לפני/אחרי הפעלת עומס עבודה.
Netstat אוספת מידע רשת מכל התקני הרשת במערכת. לכן, תוצאות עשויות להיות מושפעות מרשתות אחרות מלבד הרשת הנבדקת. הפלט מ-netstat -s יכול להוות אינדיקטור טוב לבעיות ביצועים במערכת ההפעלה או הליבה של לינוקס. עיין במדריכים לכוונון מערכות ההפעלה, כגון Red Hat Enterprise Linux Network Performance Tuning Guide, לקבלת תובנות נוספות על כוונון כללי של מערכת ההפעלה.
7.4 יומני מערכת
בדוק ביומני המערכת עבור שגיאות ואזהרות (/var/log/messages, dmesg).
7.5 כלי svr-info של אינטל
אינטל מספקת כלי svr-info (ראה https://github.com/intel/svr-info) עבור לינוקס אשר לוכד פרטי חומרה ותוכנה רלוונטיים משרת. פלט svr-info יכול להיות מועיל ביותר לזיהוי צווארי בקבוק במערכת או הגדרות/כוונונים שאינם מותאמים לעומס העבודה. בעת פתיחת בקשת תמיכה עם אינטל עבור בעיות ביצועים הקשורות ל-Ethernet, הקפידו לכלול את פלט svr-info (טקסט file) עבור כל שרת לינוקס בתצורת הבדיקה.
- הורד והתקן את svr-info:
wget -qO- https://github.com/intel/svr-info/releases/latest/download/svrinfo.tgz| tar xvz cd svr-info
./svr-info
שם מארח.txt - אסוף את הפלט:
./svr-info > hostname.txt - צרף טקסט אחד (.txt) file עבור כל שרת למקרה התמיכה של אינטל לניתוח.
המלצות לתרחישי ביצועים נפוצים
8.1 העברת IP
- עדכן את הליבה.
חלק מהליבות האחרונות בתוך ההפצה פגעו בביצועי הניתוב עקב שינויים בקוד הניתוב, החל מהסרת מטמון הניתוב עקב אבטחה. ליבות חדשות מחוץ להפצה אמורות לכלול תיקונים שמקלים על ההשפעה של שינויים אלה על הביצועים ועשויים לספק ביצועים משופרים. - השבתת היפר-טְרִידִיג (ליבות לוגיות).
- ערוך את פרמטרי האתחול של הליבה.
- כפה את iommu (intel_iommu=off או iommu=off) מקו האתחול של הליבה אלא אם כן נדרש לוירטואליזציה
— כבה את ניהול צריכת החשמל: processor.max_cstates=1 idle=poll pcie_aspm=off - הגבל את מספר התורים כך שיהיה שווה למספר הליבות בשקע המקומי (12 בדוגמה זו)ample). ethtool -L ethX בשילוב 12
- חיבור פסיקות לשקע מקומי בלבד. set_irq_affinity -X local ethX או set_irq_affinity -X local ethX
פֶּתֶק
ניתן להשתמש ב- -X או ב- -x בהתאם לעומס העבודה. - שנה את גודל צלצולי השידור והקבלה לפי הצורך. ערך גדול יותר דורש יותר משאבים אך יכול לספק קצב העברה טוב יותר. ethtool -G ethX rx 4096 tx 4096
- השבת GRO בעת ניתוב.
עקב בעיית ליבה ידועה, יש לכבות את GRO בעת ניתוב/העברה. ethtool -K ethX gro off כאשר ethX הוא ממשק ה-Ethernet שיש לשנות. - השבת את ניהול הפסיקה האדפטיבית והגדר ערך סטטי. ethtool -C ethX adaptive-rx off adaptive-tx off ethtool -C ethX rx-usecs 64 tx-usecs 64
פֶּתֶק
בהתאם לסוג המעבד ועומס העבודה, ניתן להתאים את פרמטרי הקאלסצציה עבור RX ו-TX לשיפור הביצועים (או פחות אובדן פריימים).
- השבת את חומת האש. sudo systemctl השבת חומת האש sudo systemctl עצור חומת האש
- הפעל העברת IP. sysctl -w net.ipv4.ip_forward=1
- הגדר ערכים מקסימליים עבור גדלי מאגר socket הקבלה והשליחה. sysctl -w net.core.rmem_max=16777216 sysctl -w net.core.wmem_max=16777216
פֶּתֶק
בהתאם לעומס העבודה או לדרישה, ניתן לשנות ערכים אלה מברירת המחדל.
8.2 השהייה נמוכה
- כבה את ההיפר-טְרִידִינְג (ליבות לוגיות).
- ודא שהתקן הרשת מקומי ל-numa core 0.
- הצמד את מבחן הייחוס לליבה 0 באמצעות taskset -c 0.
- כבה את irqbalance באמצעות systemctl, עצור irqbalance או systemctl, השבת את irqbalance.
- הפעל את סקריפט הזיקה כדי לפזר על פני ליבות. נסה מקומי או הכל.
- כבה את ניהול הפסיקה. ethtool -C ethX rx-usecs 0 tx-usecs 0 adaptive-rx off adaptive-tx off rxusecs- high 0
- הגבל את מספר התורים כך שיהיה שווה למספר הליבות בשקע המקומי (32 בדוגמה זו)ample). ethtool -L ethX בשילוב 32
- הצמדת פסיקות לשקע מקומי בלבד (סקריפט ארוז עם מקור מנהל ההתקן של i40e). set_irq_affinity -X local ethX
- השתמשו בערך ייחוס מבוסס כמו netperf -t TCP_RR, netperf -t UDP_RR, או NetPipe. netperf -t TCP_RR או netperf -t UDP_RR
- הצמדת מדד ביצועים לליבה יחידה בצומת NUMA המקומי. taskset -c
סדרת Intel® Ethernet 700
מדריך כוונון ביצועים של לינוקס
דצמבר 2024
דוק. מס': 334019, Rev.: 1.2
מסמכים / משאבים
![]() |
כוונון ביצועי לינוקס מסדרת אינטל Ethernet 700 [pdfמדריך למשתמש 334019, Ethernet 700 סדרה Linux Performance Tuning, Ethernet 700 Series, Linux Performance Tuning, Tuning Performance, Tuning |