لوگوی اینتلاینتل اترنت سری 700
راهنمای تنظیم عملکرد لینوکس
NEX Cloud Networking Group (NCNG)
Rev. 1.2
دسامبر 2024

تاریخچه تجدید نظر

تجدید نظر تاریخ نظرات
1.2 دسامبر 2024 · اضافه شده راهنمای مدیریت انرژی اضافی.
· اضافه شدن اینتل* توربو بوست.
· اضافه شدن بک لاگ دستگاه شبکه.
· اضافه شدن تنظیمات پلت فرم خاص و تنظیم.
· اضافه شدن پردازنده های مقیاس پذیر نسل چهارم اینتل* %eon*.
· AMD EPYC اضافه شده است.
· به روز شده بررسی قابلیت های سخت افزاری سیستم.
· به روز شده iPerf2.
· به روز شده iPerf3.
· به روز شده Tx / Rx صف.
· به روز رسانی وقفه تعدیل.
· به روز رسانی اندازه حلقه.
· تنظیم پلت فرم به روز شده (i40e غیر اختصاصی).
· تنظیمات BIOS به روز شده است.
· به روز شده کنترل C-State.
· به روز شده مقیاس بندی فرکانس CPU.
· به روز شده تنظیمات برنامه.
· به روز رسانی سیستم عامل / تنظیمات هسته.
· به روز رسانی IP Forwarding.
· به روز شده تاخیر کم.
آگوست 2023 تغییرات این سند عبارتند از:
· اضافه شدن مراجع مرتبط.
· اضافه شده اطمینان حاصل کنید که بسته DDP به درستی بارگیری می شود.
· اضافه شده iPerf2.
· اضافه شده iPerf3.
· اضافه شده netperf.
· به روز شده IRQ Affinity.
· اضافه شدن صف Tx/Rx.
· به روز رسانی اندازه حلقه.
· فریم های جامبو اضافه شده است.
· اضافه شدن پیوند آداپتور.
· اضافه شده اینتل svr-info ابزار.
1.0 مارس 2016 انتشار اولیه (اینتل عمومی).

مقدمه

این راهنما برای ارائه راهنمایی برای تنظیم محیط‌ها برای عملکرد بهینه شبکه با استفاده از کارت‌های شبکه Intel Ethernet 700 Series در محیط‌های لینوکس در نظر گرفته شده است. روی سخت افزار، درایور و شرایط و تنظیمات سیستم عامل که ممکن است عملکرد شبکه را بهبود بخشد، تمرکز دارد. لازم به ذکر است که عملکرد شبکه می تواند تحت تأثیر هر تعداد تأثیر خارجی قرار گیرد، تنها رایج ترین و چشمگیرترین آنها در این راهنما پوشش داده شده است.
1.1 مراجع مرتبط

چک لیست اولیه

2.1 نسخه های درایور/سرم افزار را به روز کنید
نسخه های درایور/سیستم افزار را با استفاده از ethtool -i ethx بررسی کنید.
در صورت نیاز موارد زیر را به روز کنید:

2.2 README را بخوانید
مشکلات شناخته شده را بررسی کنید و آخرین دستورالعمل های پیکربندی را از README دریافت کنید file در بسته منبع i40e گنجانده شده است.
2.3 بررسی کنید که اسلات PCI Express (PCIe) x8 باشد
برخی از اسلات های PCIe x8 در واقع به عنوان اسلات های x4 پیکربندی شده اند. این اسلات ها پهنای باند کافی برای نرخ خط کامل با دستگاه های دو پورت و چهار پورت ندارند. علاوه بر این، اگر یک آداپتور با قابلیت PCIe v3.0 را در اسلات PCIe v2.x قرار دهید، نمی توانید پهنای باند کامل را دریافت کنید. درایور دستگاه نرم افزار این وضعیت را تشخیص می دهد و پیام زیر را در گزارش سیستم می نویسد:
پهنای باند PCI-Express موجود برای این کارت برای عملکرد مطلوب کافی نیست. برای عملکرد بهینه یک اسلات x8 PCI-Express مورد نیاز است.
اگر این خطا رخ داد، آداپتور خود را به یک اسلات واقعی PCIe v3.0 x8 منتقل کنید تا مشکل برطرف شود.
2.4 قابلیت های سخت افزاری سیستم را بررسی کنید
در اترنت 10 گیگابیت بر ثانیه، 25 گیگابیت بر ثانیه و 40 گیگابیت در ثانیه، حداقل نیازهای CPU و سیستم وجود دارد. به طور کلی، یک پردازنده کلاس سرور مدرن و پیکربندی حافظه بهینه برای پلتفرم شما باید کافی باشد، اما نیازها بسته به حجم کاری شما متفاوت است. تمام کانال های حافظه باید پر شوند و حالت عملکرد حافظه باید در BIOS فعال باشد. بررسی کنید که پیکربندی CPU و حافظه شما قادر به پشتیبانی از سطح عملکرد شبکه مورد نیاز برای حجم کاری شما هستند.
توجه
XL710 یک کنترلر 40 گیگابایتی است. آداپتور 2 x 40 GbE که از این کنترلر استفاده می کند، به عنوان یک 2 x 40 GbE در نظر گرفته نشده است، بلکه یک 1 x 40 GbE با یک پورت پشتیبان فعال است. هنگام تلاش برای استفاده از ترافیک با نرخ خطی که هر دو پورت را شامل می شود، سوئیچ داخلی اشباع شده و پهنای باند ترکیبی بین دو پورت به مجموع SO Gbps محدود می شود.
2.4.1 پارامترهای بوت هسته
اگر فناوری مجازی‌سازی Intel® برای ورودی/خروجی مستقیم (Intel® VT-d) در BIOS فعال باشد، اینتل توصیه می‌کند که IOMMU در حالت عبور برای عملکرد بهینه شبکه میزبان باشد. این امر سربار DMA را بر روی ترافیک میزبان حذف می‌کند در حالی که ماشین‌های مجازی (VMs) را قادر می‌سازد همچنان از مزایای Intel® VT-d برخوردار باشند. این با افزودن خط زیر به پارامترهای بوت هسته انجام می شود: fommu-pt.
2.5 اطمینان حاصل کنید که بسته DDP به درستی بارگیری می شود
درایورهای پایه 140ea و 140eb پشتیبانی مستقیمی از شخصی سازی دستگاه پویا (DDP) ندارند. برای استفاده از DDP با دستگاه های سری 700، یک DDP profile را می توان با برنامه testpmd اعمال کرد.
برای جزئیات بیشتر در مورد DDP profiles، و نحوه اعمال DDP profile با testpmd در دستگاه‌های سری 700، به راهنمای فناوری شخصی‌سازی دستگاه دینامیک (DDP) Intel® Ethernet 700 مراجعه کنید.
برای بررسی اینکه آیا یک حرفه ای DDP استfile با موفقیت بارگیری شد:
testpmd> ddp get list 0 Profile عدد: 1
توجه
اگر حرفه ایfile عدد 0 است، هیچ بسته DDP بارگیری نشده است. در صورت بروز خطا در بارگیری بسته DDP، دستگاه به طور پیش فرض روی حالت ایمن قرار می گیرد و بسیاری از ویژگی های عملکرد در دسترس نیستند. اگر خطاهای مربوط به بارگیری بسته DDP وجود داشته باشد، باعث مشکلات عملکرد می شود. برای مراحل عیب یابی، به راهنمای فناوری شخصی سازی دستگاه پویا (DDP) Inte/* Ethernet 700 Series مراجعه کنید.

اندازه گیری عملکرد پایه و روش تنظیم

3.1 معیارهای عملکرد شبکه
قبل از شروع تمرین تنظیم، مهم است که یک اندازه گیری پایه خوب از عملکرد شبکه خود داشته باشید. معمولاً علاوه بر اندازه‌گیری اولیه عملکرد برنامه/بار کاری خاص خود، ایده خوبی است که از یک معیار عملکرد شبکه استاندارد نیز برای تأیید اینکه دستگاه شبکه شما در وضعیت خوبی است استفاده کنید.
برای بهینه‌سازی سیستم واحد، netperf یا iperf و NetPIPE همگی ابزارهای متن‌باز و رایگانی هستند که شما را قادر می‌سازند بر یک اتصال تأکید کنید و مشکلات عملکرد را تشخیص دهید.
Netperf هم برای آزمایش توان عملیاتی و هم برای آزمایش تأخیر قوی است. NetPIPE یک ابزار خاص تاخیر است اما می تواند برای هر نوع محیطی کامپایل شود.
توجه
آزمون TCP_RR در netperf تأخیر را در مقدار تراکنش در ثانیه برمی‌گرداند. این یک شماره رفت و برگشت است. تاخیر یک طرفه را می توان با استفاده از معادله زیر محاسبه کرد:
تأخیر (usec) = (1⁄2) / [Transactions/sec] * 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 -ص -پ - فول دوبلکس OR
    iperf2 -c -ص -پ -د

توجه
هر دو گزینه –full-duplex و -d در iperf2 به کاربر اجازه انجام تست دوطرفه را می دهند. با این حال، گزینه full-duplex به طور خاص بر روی تست کامل دوبلکس تمرکز دارد.
توجه
هنگام آزمایش iperf2 در چندین پورت سرور، پرچم -d را می توان به فرمان سرور اضافه کرد تا تمام جلسات سرور در پس زمینه از همان پنجره ترمینال اجرا شود. هنگامی که فرمان سرور در داخل یک حلقه for در یک اسکریپت تعبیه شده است، می توان از پرچم -d نیز استفاده کرد.
توجه
هنگام اجرای آزمایش توان شبکه با یک جریان/رشته واحد (مثلاًample: P1)، پردازنده‌های AMD ممکن است توان عملیاتی مورد انتظار را ارائه نکنند، به‌ویژه NIC‌های با پهنای باند بالاتر (اگر سرعت بیش از 25G باشد). در نتیجه، پین کردن برنامه به هسته های خاص برای دستیابی به توان عملیاتی بالاتر مورد نیاز است. به تنظیمات برنامه در صفحه 22 مراجعه کنید.
3.1.2 iPerf3
اگر از iperf3 استفاده می شود، چندین نمونه از برنامه برای گرفتن advan مورد نیاز استtage از صف های چند رشته ای، RSS و سخت افزار. اینتل اجرای با 2-4 جلسه برنامه را برای اتصالات 25G و حدود 4-6 جلسه برای اتصالات 40G را توصیه می کند. هر جلسه باید یک مقدار پورت TCP منحصر به فرد را با استفاده از گزینه -p مشخص کند.

  • برای اجرای ترافیک یک طرفه از مشتری به سرور:
    فرمان سرور سابقampدر:
    iperf3 -s -p
    دستور مشتری سابقampدر:
    iperf3 -c -ص
  • برای اجرای ترافیک دو جهته از مشتری به سرور (و بالعکس):
    فرمان سرور سابقampدر:
    iperf3 –s –p
    دستور مشتری سابقample: iperf3 -c -ص -پ –-بیدیر
  • برای شروع چندین نمونه (رشته) iperf3، توصیه می‌شود از یک حلقه for برای نگاشت رشته‌ها به پورت‌های TCP و اجرای iperf3 در پس‌زمینه با استفاده از & برای ایجاد چندین فرآیند به صورت موازی استفاده کنید.
    فرمان سرور سابقample، شروع 4 موضوع: port=””; برای من در {0..3}؛ do port=520$i; bash -c "iperf3 -s -p $port &"; انجام شد دستور مشتری سابقample, start 4 Thread – Transmit test port=””; برای من در {0..3}؛ do port=520$i; bash -c "iperf3 -c $serverIP -p $port &"; انجام شد دستور مشتری سابقample، شروع 4 رشته – دریافت پورت تست=””; برای من در {0..3}؛ do port=520$i; bash -c "iperf3 -R -c $serverIP -p $port &"; انجام شد برای اتصالات 40G، حلقه for را افزایش دهید تا حداکثر 6 نمونه/رشته ایجاد کنید.

توجه
هنگام اجرای آزمایش توان شبکه با یک جریان/رشته واحد (مثلاًample: P1)، پردازنده های AMD ممکن است توان عملیاتی مورد انتظار، به ویژه پهنای باند بالاتر را ارائه نکنند
کارت های شبکه (اگر سرعت >= پهنای باند 25G باشد). در نتیجه، پین کردن برنامه به هسته های خاص برای دستیابی به توان عملیاتی بالاتر مورد نیاز است. به تنظیمات برنامه در صفحه 22 و AMD EPYC در صفحه 26 مراجعه کنید.
3.1.3 netperf
ابزار netperf یک انتخاب قوی برای آزمایش توان عملیاتی و تأخیر است.

  • تست TCP_STREAM در netperf قابلیت های توان عملیاتی دستگاه را اندازه گیری می کند. فرمان سرور سابقample: دستور netserver Client example: netperf -t TCP_STREAM -l 30 -H
  • آزمون TCP_RR در netperf تأخیر را در مقدار تراکنش در ثانیه برمی‌گرداند. این یک شماره رفت و برگشت است. توصیه می شود از گزینه -T x,x استفاده کنید، در صورتی که x CPU محلی دستگاه است. تأخیر یک طرفه را می توان با استفاده از: Latency(usec)=(1⁄2)/ [Transactions/sec]*1,000,\ Server command example: نت سرور
    دستور مشتری سابقample: netperf -t TCP_RR -l 30 -H -T x،x
  • برای شروع چندین نمونه (رشته) netperf، توصیه می شود از یک حلقه for برای نگاشت رشته ها به پورت های TCP و اجرای netperf در پس زمینه با استفاده از & برای ایجاد چندین پردازش به صورت موازی استفاده کنید.
    فرمان سرور سابقample، 8 موضوع را شروع کنید:
    پورت=””; برای من در {0..7}؛ do port=520$i; bash -c “netserver -L $serverIP -p $port &”; انجام شد
    دستور مشتری سابقample، شروع 8 موضوع: port=””; برای من در {0..7}؛ do port=520$i; bash -c “netperf -H $serverIP -p $port -t TCP_STREAM -l 30 &”; انجام شد

3.2 روش تنظیم
هر بار روی یک تغییر تنظیم تمرکز کنید تا بدانید هر تغییر چه تاثیری بر تست شما می گذارد. هرچه در فرآیند تنظیم روشمندتر باشید، شناسایی و رسیدگی به علل گلوگاه های عملکرد آسان تر خواهد بود.

تنظیم تنظیمات درایور i40e

4.1 IRQ Affinity
پیکربندی وابستگی IRQ به گونه‌ای که وقفه‌ها برای صف‌های شبکه مختلف به هسته‌های CPU مختلف متصل شوند، می‌تواند تأثیر زیادی بر عملکرد، به‌ویژه آزمایش‌های توان چند رشته‌ای داشته باشد.
برای پیکربندی IRQ affinity، irqbalance را متوقف کنید و سپس از اسکریپت set_irq_affinity از بسته منبع i40e استفاده کنید یا صف‌ها را به صورت دستی پین کنید. برای فعال کردن پین کردن صف، متعادل کننده فضای کاربر IRQ را غیرفعال کنید:

  • systemctl irqbalance را غیر فعال کنید
  • systemctl توقف irqbalance
    با استفاده از اسکریپت set_irq_affinity از بسته منبع i40e (توصیه می شود):
  • برای استفاده از تمام هسته ها:
    [path-to-i40epackage]/scripts/set_irq_affinity -X all ethX
  • برای استفاده از هسته‌ها در سوکت محلی NUMA: [path-to-i40epackage]/scripts/set_irq_affinity -X محلی ethX
  • همچنین می توانید طیف وسیعی از هسته ها را انتخاب کنید. از استفاده از cpu0 خودداری کنید زیرا وظایف تایمر را اجرا می کند. [path-to-i40epackage]/scripts/set_irq_affinity 1-2 ethX

توجه
هنگامی که گزینه -x مشخص شده است، اسکریپت affinity، فرمان انتقال بسته (XPS) را به عنوان بخشی از فرآیند پین کردن فعال می کند. هنگامی که XPS فعال است، اینتل توصیه می کند که irqbalance را غیرفعال کنید، زیرا متعادل کننده هسته با XPS می تواند عملکرد غیر قابل پیش بینی ایجاد کند. وقتی گزینه -X مشخص شده باشد، اسکریپت affinity XPS را غیرفعال می کند. غیرفعال کردن XPS و فعال کردن صف‌های متقارن برای بارهای کاری مفید است که در آن بهترین عملکرد زمانی حاصل می‌شود که ترافیک Tx و Rx در یک جفت صف (های) یکسان سرویس می‌شوند.
پیکربندی صف‌های متقارن در لینوکس شامل تنظیم پارامترهای درایور رابط شبکه برای فعال کردن صف‌های دریافت متقارن (Rx) و صف‌های ارسال متقارن (Tx) برای آداپتورهای شبکه پشتیبانی‌شده است.
توجه

  • صف های متقارن یک ویژگی شبکه پیشرفته هستند و همه آداپتورهای شبکه یا درایورهای سری 700 از آنها پشتیبانی نمی کنند.
  • قبل از تلاش برای پیکربندی صف های متقارن، اطمینان حاصل کنید که از درایور و پشتیبانی سخت افزاری لازم برخوردار هستید.

برای پیکربندی صف های متقارن، این مراحل کلی را دنبال کنید:

  1. ویرایش پیکربندی رابط شبکه File: از یک ویرایشگر متن استفاده کنید (مثلاًample، vi، nano یا gedit) برای ویرایش پیکربندی رابط شبکه file. را file معمولاً در زیر پوشه /etc/sysconfig/network-scripts/ قرار دارد و نامی مانند ifcfg-ethX دارد که ethX نام رابط شبکه شما است.
  2. پارامترهای صف متقارن را اضافه کنید. خطوط زیر را به پیکربندی رابط شبکه اضافه کنید file: ETHTOOL_OPTS=”rx-queues 8 tx-queues 8”
  3. سرویس شبکه را مجددا راه اندازی کنید.
    پس از انجام تغییرات، سرویس شبکه را مجددا راه اندازی کنید تا پیکربندی جدید اعمال شود. شبکه sudo systemctl راه اندازی مجدد

به صورت دستی:

  • پردازنده های متصل به هر گره را با استفاده از: 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 صف Tx/Rx
تعداد پیش‌فرض صف‌هایی که برای هر پورت اترنت توسط درایور در زمان اولیه‌سازی فعال می‌شود، برابر با تعداد کل پردازنده‌های موجود در پلتفرم است. این برای بسیاری از پلتفرم‌ها و پیکربندی‌های حجم کاری به خوبی کار می‌کند. با این حال، در پلتفرم هایی با تعداد هسته بالا و/یا چگالی پورت اترنت بالا، این پیکربندی می تواند باعث اختلاف منابع شود. بنابراین، ممکن است در برخی موارد لازم باشد که پیش‌فرض هر پورت در سیستم را تغییر دهید.
تعداد پیش‌فرض صف‌های Tx/Rx می‌تواند بسته به مدل خاص و نسخه درایور متفاوت باشد. تعداد صف ها را می توان با استفاده از دستور ethtool -L که در زیر فهرست شده است تنظیم کرد.
توجه
در این موارد، اینتل توصیه می‌کند که تعداد صف‌های پیش‌فرض برای هر پورت را به بیش از تعداد CPUهای موجود در گره NUMA محلی در پورت آداپتور کاهش دهید. در برخی موارد، هنگام تلاش برای متعادل کردن منابع در اجرای تعداد پورت بالا، ممکن است لازم باشد این تعداد حتی بیشتر کاهش یابد.
برای تغییر پیکربندی صف:
سابق زیرample پورت را روی 32 صف Tx/Rx تنظیم می کند: ethtool -L ethX ترکیبی 32
Exampخروجی:
ethtool -l ethX
پارامترهای کانال برای ethX: حداکثرهای از پیش تعیین شده:
RX: 96
TX: 96
دیگر: 1
ترکیبی: 96
تنظیمات سخت افزاری فعلی:
RX: 0
TX: 0
دیگر: 1
ترکیبی: 32
4.3 تعدیل وقفه
تعدیل وقفه تطبیقی ​​به طور پیش‌فرض روشن است و برای ارائه یک رویکرد متعادل بین استفاده کم CPU و عملکرد بالا طراحی شده است. با این حال، ممکن است سعی کنید تنظیمات وقفه را به صورت دستی تنظیم کنید تا مناسب مورد استفاده شما باشد.
محدوده 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 در adaptive-tx روشن

یک مکان خوب برای شروع برای تنظیم کلی 84 میکرو ثانیه یا ~12000 وقفه در ثانیه است. اگر می‌بینید شمارنده‌های rx_dropped در حین ترافیک (با استفاده از ethtool -S ethX) در حال اجرا هستند، احتمالاً CPU بسیار کند دارید، بافرهای کافی از اندازه حلقه آداپتور (ethtool -G) برای نگهداری بسته‌ها به مدت 84 میکرو ثانیه یا نرخ وقفه پایینی ندارید.

  • برای تنظیم تعدیل وقفه روی نرخ وقفه ثابت 84 میکروثانیه بین وقفه ها (12000 وقفه در ثانیه): ethtool -C ethX adaptive-rx off adaptive-tx off rx-usecs 84 tx-usecs 84 مقدار بعدی که باید امتحان کنید، اگر در استفاده از CPU به حداکثر رسیده نیستید. این از CPU بیشتری استفاده می‌کند، اما بافرهای سریع‌تری را ارائه می‌کند و به توصیفگرهای کمتری نیاز دارد (اندازه حلقه، ethtool -G).
  • برای تنظیم تعدیل وقفه روی نرخ وقفه ثابت 62 usc بین وقفه ها (16000 وقفه در ثانیه). ethtool -C ethX adaptive-rx off adaptive-tx off rx-usecs 62 tx-usecs 62
    اگر شمارنده‌های rx_dropped در طول ترافیک (با استفاده از ethtool -S ethX) افزایش می‌یابند، احتمالاً CPU بسیار کند، بافر کافی از اندازه حلقه آداپتور (ethtool -G) یا نرخ وقفه بسیار پایین دارید. اگر در استفاده از CPU بیشینه نیستید، می توانید نرخ وقفه را با کاهش مقدار ITR افزایش دهید. این از CPU بیشتری استفاده می کند، اما سرویس ها سریعتر بافر می شوند و به توصیفگرهای کمتری نیاز دارند (اندازه حلقه، ethtool -G).
    اگر CPU شما 100% است، افزایش نرخ وقفه توصیه نمی شود. در شرایط خاصی مانند بار کاری محدود به CPU، ممکن است بخواهید مقدار μs را افزایش دهید تا زمان بیشتری برای CPU برای سایر برنامه‌ها فعال شود.
    اگر به عملکرد تاخیر کم نیاز دارید و/یا CPU زیادی برای اختصاص دادن به پردازش شبکه دارید، می توانید تعدیل وقفه را به طور کامل غیرفعال کنید، که باعث می شود وقفه ها با بیشترین سرعت ممکن فعال شوند.
  • برای غیرفعال کردن تعدیل وقفه ethtool -C ethX adaptive-rx off adaptive-tx off rx-usecs 0 tx-usecs 0

توجه
هنگام اجرا با تعدیل وقفه غیرفعال، نرخ وقفه در هر صف می تواند بسیار بالا باشد. برای تعیین حد بالایی در نرخ وقفه، پارامتر rx-usec-high را در نظر بگیرید. دستور زیر تعدیل وقفه تطبیقی ​​را غیرفعال می کند و حداکثر 5 میکروثانیه را قبل از اینکه نشان دهد دریافت یا ارسال کامل شده است اجازه می دهد. به جای اینکه منجر به 200,000 وقفه در ثانیه شود، کل وقفه ها در ثانیه را از طریق پارامتر rx-usec-high به 50,000 محدود می کند. # 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) یا کمتر (XNUMX/XNUMX/XNUMX) یا کمتر (XNUMX/XNUMX) را تنظیم کنید تا مقدار بهینه کار را پیدا کنید (XNUMX/XNUMX).
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

توجه
برای رفع افت بسته‌های Rx که با ethtool -S ethX|grep drop یافت می‌شوند، اندازه حلقه را تا 4096 افزایش دهید. برای یافتن بهترین تنظیم برای حجم کاری آزمایش کنید، اما مراقب استفاده بیش از حد از حافظه با مقادیر بالاتر باشید.
4.5 کنترل جریان
کنترل جریان لایه 2 می تواند عملکرد TCP را به طور قابل توجهی تحت تأثیر قرار دهد و توصیه می شود برای اکثر بارهای کاری غیرفعال شود. یک استثنای بالقوه ترافیک انفجاری است که در آن انفجارها طولانی نیستند.
کنترل جریان به طور پیش فرض غیرفعال است.

  • برای فعال کردن کنترل جریان: ethtool -A ethX rx در tx on
  • برای غیرفعال کردن کنترل جریان: ethtool -A ethX rx off tx off

توجه
برای فعال کردن موفقیت آمیز کنترل جریان، باید یک شریک پیوندی با قابلیت کنترل جریان داشته باشید.
4.6 فریم جامبو
هنگامی که محیط ترافیک مورد انتظار شامل بلوک های بزرگی از داده های در حال انتقال است، ممکن است فعال کردن ویژگی قاب جامبو مفید باشد. پشتیبانی Jumbo Frames با تغییر حداکثر واحد انتقال (MTU) به مقداری بزرگتر از مقدار پیش‌فرض 1500 فعال می‌شود. این به دستگاه اجازه می‌دهد تا داده‌ها را در بسته‌های بزرگ‌تر در محیط شبکه منتقل کند. این تنظیم ممکن است توان عملیاتی را بهبود بخشد و استفاده از CPU را برای بارهای کاری بزرگ I/O کاهش دهد. با این حال، ممکن است بر بسته های کوچک یا بارهای کاری حساس به تأخیر تأثیر بگذارد.
توجه
فریم های جامبو یا تنظیمات MTU بزرگتر باید در محیط شبکه شما به درستی پیکربندی شوند.
برای افزایش اندازه MTU از دستور ifconfig استفاده کنید. برای مثالample، عبارت زیر را وارد کنید، جایی که شماره رابط است: ifconfig mtu 9000 به بالا
همچنین می توانید از دستور ip به صورت زیر استفاده کنید: ip link set mtu 9000 dev لینک آی پی راه اندازی توسعه دهنده

تنظیم پلت فرم (i40e غیر اختصاصی)

5.1 تنظیمات بایوس

  • Intel® VT-d را برای بارهای کاری مجازی سازی فعال کنید.
  • Hyper-threading (پردازنده های منطقی) می تواند بر عملکرد تأثیر بگذارد. برای حجم کاری خود، آن را روشن یا خاموش کنید.
  • Intel® Turbo Boost به هسته های CPU اجازه می دهد تا با فرکانس بالاتری نسبت به فرکانس پایه CPU کار کنند. فعال کردن Intel® Turbo Boost می‌تواند عملکرد را برای بسیاری از بارهای کاری بهبود بخشد، اما برای نگه داشتن هسته‌ها در فرکانس بالاتر، انرژی بیشتری مصرف می‌کند. برای حجم کاری خود، Turbo Boost off/on را آزمایش کنید.

توجه
اگر پلتفرم استفاده کلی از CPU را تجربه کند، فرکانس‌های توربو تضمین نمی‌شوند. با افزایش استفاده کلی از CPU، فرکانس های توربو هسته بالاتر کاهش می یابد.
5.2 مدیریت انرژی
مدیریت توان می تواند بر عملکرد تأثیر بگذارد، به ویژه در بارهای کاری با تأخیر کم. اگر عملکرد اولویت بالاتری نسبت به کاهش مصرف انرژی است، اینتل توصیه می کند که اثرات مدیریت انرژی را محدود کنید. راه های مختلفی برای محدود کردن مدیریت انرژی از طریق ابزارهای سیستم عامل، تنظیمات BIOS و پارامترهای بوت هسته وجود دارد. بهترین روش و سطح را متناسب با محیط خود انتخاب کنید.
5.2.1 کنترل C-State
محدود کردن ورود حالت C به CO یا C1 باعث بهبود عملکرد و افزایش مصرف برق می شود.
غیرفعال کردن ورود وضعیت بسته CPU C6 می تواند عملکرد شبکه را بهبود بخشد. با این حال، این باعث افزایش مصرف برق می شود.
گزینه های زیر در دسترس هستند:

  • کنترل دینامیک ورودی C-state:
    باز کنید
    /dev/cpu_dma_latency و حداکثر تاخیر مجاز را روی آن بنویسید.

توجه
یک برنامه کوچک به نام cpudmalatency.c وجود دارد که می توان آن را از جامعه منبع باز دانلود کرد، کامپایل کرد و از خط فرمان اجرا کرد تا دقیقاً این کار را انجام دهد.
سابق زیرample اجازه می دهد تا پنج میکرو ثانیه زمان بیداری، و بنابراین اجازه ورود C1: cpudmalatency 5 و

  • حداکثر حالت C را در تنظیمات بوت هسته محدود کنید:
    برای CPUهای اینتل: intel_idle.max_cstates=1
    برای CPUهای غیر اینتل: processor.max_cstates=1
  • از دستور cpupower برای بررسی و غیرفعال کردن وضعیت CPU C6 استفاده کنید: بررسی: مانیتور cpupower یا cpupower idle-info
    C6 را غیرفعال کنید: cpupower idle-set -d3 or
    C-States: cpupower idle-set -D0 را غیرفعال کنید

یادداشت ها:

  1. اگر سرور دارای پردازنده(های) مقیاس پذیر Intel® Xeon® نسل چهارم Intel® است، وضعیت های C را در CPU غیرفعال کنید. هنگامی که Hyper Threading فعال یا غیرفعال می شود، غیرفعال کردن حالت های بیکار (-D4) از ورود هسته ها به حالت های کم مصرف در طول دوره های بیکار جلوگیری می کند و تأخیر CPU برای انتقال بین حالت بیکار و فعال را کاهش می دهد.
  2. مدیریت انرژی پردازنده مقیاس‌پذیر نسل چهارم Intel® Xeon® بسیار تهاجمی است. برای جلوگیری از ورود هسته‌ها به حالت‌های کم مصرف، سعی کنید تعداد هسته‌های مورد استفاده را کاهش دهید تا آنها را برای مدت طولانی‌تری بیدار نگه دارید (ethtool -L ترکیب شده است ). همچنین، وقفه‌ها را با استفاده از تنظیم irq affinity (اغلب با -x محلی یا لیستی از هسته‌های CPU) به هسته‌های خاص متصل کنید و مطمئن شوید که حجم کار روی همان هسته‌ها با مجموعه وظایف یا numactl اجرا می‌شود. این کار را با فعال نگه داشتن هسته ها و بهینه سازی مدیریت وقفه بهبود می بخشد.

C6 را فعال کنید:
cpupower idle-set -d3
C-States را فعال کنید:
cpupower idle-set -E

  • روش دیگر استفاده از ابزار تنظیم شده (شامل بسیاری از توزیع های لینوکس) برای تنظیم عملکرد حرفه ای استfile. این حرفه ایfileچندین تنظیمات سیستم عامل را تغییر دهید که می تواند بر عملکرد در بسیاری از برنامه ها تأثیر بگذارد. مشخص شده است که طرفدار پردازش شبکهfile برای اکثر بارهای کاری بهبود می یابد.
    بررسی کنید:
    tuned-adm فعال
    مجموعه:
    tuned-adm profile توان عملیاتی شبکه
    توجه
    سرویس تنظیم شده باید برای دستورات بالا اجرا شود. برای بررسی/راه اندازی مجدد، تنظیم: وضعیت systemctl تنظیم شده systemctl راه اندازی مجدد تنظیم شده است
    همچنین می‌توانید با افزودن موارد زیر به خط بوت هسته، هرگونه ورودی C-state را ممنوع کنید:
    بیکار = نظرسنجی
  • حالت C را از طریق تنظیمات مدیریت انرژی بایوس سیستم، که ممکن است عملکرد حرفه ای داشته باشد، محدود کنیدfile موجود است.
    ابزارهایی مانند turbostat یا x86_energy_perf_policy می توانند برای بررسی یا تنظیم تنظیمات مدیریت انرژی استفاده شوند.

5.2.2 مدیریت توان PCIe
Active-State Power Management (ASPM) زمانی که پیوندهای PCIe در حال استفاده فعال نیستند، وضعیت توان کمتری را فعال می کند. این می تواند باعث تاخیر بیشتر در دستگاه های شبکه PCIe شود، بنابراین اینتل توصیه می کند که ASPM را برای بارهای کاری حساس به تاخیر غیرفعال کنید. ASPM را با افزودن موارد زیر به خط بوت هسته غیرفعال کنید: pcie_aspm=off
5.2.3 مقیاس بندی فرکانس CPU
مقیاس‌گذاری فرکانس پردازنده (یا مقیاس‌گذاری سرعت پردازنده) یک تکنیک مدیریت انرژی لینوکس است که در آن سرعت کلاک سیستم در لحظه تنظیم می‌شود تا انرژی و گرما ذخیره شود. درست مانند حالت های C، این می تواند باعث تأخیر ناخواسته در اتصالات شبکه شود.
ابزار cpupower همچنین می تواند برای بررسی و اصلاح پیش فرض ها و محدودیت های عملکرد CPU استفاده شود:

  • بررسی کنید: مانیتور cpupower یا
  • CPU ها را روی حالت عملکرد تنظیم کنید: عملکرد cpupower فرکانس تنظیم -g

توجه
تغییرات در محدودیت‌های فرکانس CPU می‌تواند بر بسیاری از بارهای کاری تأثیر بگذارد و ممکن است سایر ویژگی‌ها، مانند حالت توربو CPU را غیرفعال کند.
برای غیرفعال کردن مقیاس فرکانس CPU، سرویس برق CPU را با دستورات زیر غیرفعال کنید:
systemctl توقف cpupower.service
systemctl cpupower.service را غیر فعال کنید
5.2.4 راهنمای مدیریت انرژی اضافی
جزئیات بیشتر در این سطح بالا ارائه شده استview از بسیاری از ویژگی های مدیریت انرژی در پردازنده های نسل سوم Intel® Xeon® Scalable و همچنین راهنمایی در مورد نحوه ادغام این ویژگی ها در سطح پلت فرم: https://networkbuilders.intel.com/solutionslibrary/power-management-technologyoverview-technology-guide
5.3 Intel® Turbo Boost
Intel® Turbo Boost پردازنده را در صورت نیاز سریعتر می کند اما می تواند انرژی بیشتری مصرف کند. خاموش کردن Turbo Boost سرعت پردازنده را ثابت نگه می‌دارد و سطح عملکرد ثابتی را برای بارهای کاری خاص به شما می‌دهد.
5.4 فایروال ها
فایروال ها می توانند بر عملکرد، به ویژه عملکرد تأخیر تأثیر بگذارند.
در صورت عدم نیاز، iptables/firewalld را غیرفعال کنید.
5.5 تنظیمات برنامه
اغلب یک رشته (که مربوط به یک صف شبکه واحد است) برای دستیابی به حداکثر پهنای باند کافی نیست. برخی از معماری‌های پلتفرم، مانند AMD، در مقایسه با پلتفرم‌های دارای پردازنده‌های مبتنی بر اینتل، تمایل دارند بسته‌های Rx بیشتری را با یک رشته واحد رها کنند.
استفاده از ابزارهایی مانند مجموعه وظایف یا numactl را برای پین کردن برنامه‌ها به گره NUMA یا هسته‌های CPU محلی به دستگاه شبکه در نظر بگیرید. برای برخی از بارهای کاری مانند ورودی/خروجی ذخیره سازی، انتقال برنامه به یک گره غیرمحلی فایده دارد.
در صورت امکان، تعداد رشته های استفاده شده توسط برنامه خود را افزایش دهید.
نسخه 5.6 هسته
اکثر هسته‌های درون‌باکس مدرن نسبتاً به خوبی برای عملکرد بهینه‌سازی شده‌اند، اما بسته به مورد استفاده شما، به‌روزرسانی هسته ممکن است عملکرد بهتری را ارائه دهد. دانلود منبع همچنین شما را قادر می سازد تا قبل از ساختن هسته، ویژگی های خاصی را فعال/غیرفعال کنید.
5.7 تنظیمات سیستم عامل/کرنل
برای اطلاعات بیشتر در مورد تنظیم کلی سیستم عامل، به راهنمای تنظیم سیستم عامل، مانند راهنمای تنظیم عملکرد شبکه لینوکس Red Hat Enterprise مراجعه کنید.
برخی از پارامترهای رایج برای تنظیم در جدول زیر فهرست شده است. توجه داشته باشید که اینها فقط نقاط شروع پیشنهادی هستند و تغییر آنها از پیش‌فرض‌ها ممکن است منابع مورد استفاده در سیستم را افزایش دهد. اگرچه افزایش مقادیر می تواند به بهبود عملکرد کمک کند، لازم است مقادیر مختلف را آزمایش کنید تا مشخص شود چه چیزی برای یک سیستم معین، حجم کار و نوع ترافیک بهتر کار می کند.
پارامترهای هسته با استفاده از ابزار sysctl در لینوکس همانطور که در زیر نشان داده شده است قابل تنظیم هستند.
به view مقادیر پیش فرض rmem و wmem در سیستم:
sysctl net.core.rmem_default
sysctl net.core.wmem_default
مقادیر را روی حداکثر (16 مگابایت) تنظیم کنید:
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

پارامترهای هسته، پشته شبکه، کنترل کننده حافظه، سرعت پردازنده و پارامترهای مدیریت انرژی می توانند تأثیر زیادی بر عملکرد شبکه داشته باشند. یک توصیه متداول این است که برای توان عملیاتی شبکه اعمال شودfile با استفاده از دستور تنظیم شده این تنظیمات چند سیستم عامل را تغییر می دهد تا اولویت را برای برنامه های شبکه ارائه دهد.
بررسی کنید:
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® 4th Generation Intel® Xeon® Scalable در مقایسه با پردازنده های نسل سوم Intel® Xeon® Scalable بسیار تهاجمی است. برای جلوگیری از ورود هسته‌ها به حالت‌های کم مصرف، سعی کنید تعداد هسته‌های مورد استفاده را کاهش دهید تا آنها را برای مدت طولانی‌تری بیدار نگه دارید.
تنظیمات Bios توصیه شده برای بالاترین عملکرد

  1. فعال/غیرفعال کردن Hyper-threading (بر اساس نیاز حجم کاری و اهداف عملکرد) در CPU.
  2. سیستم حرفه ای را تنظیم کنیدfile به عملکرد برای حداکثر عملکرد.
    توجه
    این باعث مصرف انرژی بیشتر می شود
  3. مدیریت توان CPU را روی Maximum Performance تنظیم کنید تا حداکثر عملکرد CPU را بر بازده انرژی اولویت دهید.
  4. Turbo Boost را فعال کنید. غیرفعال کردن Turbo Boost در تنظیمات بایوس سیستم معمولاً از افزایش پویا سرعت کلاک CPU فراتر از فرکانس پایه خود جلوگیری می کند.
  5. توجه
    غیرفعال کردن Turbo Boost ممکن است برای موارد استفاده خاصی مناسب باشد که عملکرد ثابت، راندمان انرژی، یا مدیریت حرارتی بر حداکثر عملکرد اولویت دارند.
  6. اگر سیستم از فناوری های مجازی سازی استفاده نمی کند، ویژگی Single Root I/O Virtualization (SR-IOV) را خاموش کنید.
  7. C-states را غیرفعال کنید تا به CPU دستور دهید فعال بماند و از وارد شدن به حالت های بیکار عمیق تر جلوگیری کنید.
  8. C1E را غیرفعال کنید تا مطمئن شوید که CPU فعال باقی می ماند و وارد حالت بیکار C1E نمی شود.
  9. فرکانس uncore را روی حداکثر تنظیم کنید تا به سیستم دستور دهید در بالاترین فرکانس موجود کار کند.
  10. در پلتفرم‌های Dell، شبیه‌سازی هسته چندگانه APIC Description Table (MADT) را روی Linear (یا Round-Robin بسته به بایوس) تنظیم کنید تا نقشه‌ای واضح و قابل پیش‌بینی از هسته‌های CPU ارائه دهید.

تنظیمات سطح سیستم عامل برای عملکرد بهینه شده توصیه می شود

  1. تنظیم کننده مقیاس فرکانس CPU را روی عملکرد تنظیم کنید. cpupower فرکانس مجموعه -g عملکرد cpupower فرکانس اطلاعات
  2. C-States را غیرفعال کنید. cpupower idle-set -D0
  3. بافرهای هسته Rx (rmem) و Tx (wmem) را روی حداکثر مقدار تنظیم کنید. sysctl -w net.core.rmem_max=16777216 sysctl -w net.core.wmem_max=16777216
  4. بک لاگ دستگاه شبکه را تنظیم کنید. sysctl -w net.core.netdev_max_backlog=8192
  5. تنظیم حرفه ای تنظیم شده استfile (بار کاری وابسته به توان عملیاتی/تأخیر است).
    tuned-adm profile توان عملیاتی شبکه

تنظیم سطح آداپتور توصیه شده برای عملکرد بهینه

  1. تعداد صف ها را برای استفاده برای ترافیک برنامه محدود کنید. از حداقل تعداد صف های مورد نیاز برای فعال نگه داشتن هسته های CPU مرتبط استفاده کنید تا از ورود آنها به حالت های عمیق تر بیکار جلوگیری کنید (برای حجم کار تنظیم کنید): ethtool -L ترکیبی 32
  2. نرخ تعدیل وقفه را تنظیم کنید. ethtool -C adaptive-rx off adaptive-tx off rx-usecs-high 50 rx-usecs 50 tx-usecs 50
    سعی کنید تایمر ادغام ارسال/دریافت/با اولویت بالا را بالاتر (80/100/150/200) یا پایین تر (25/20/10/5) تنظیم کنید تا مقدار بهینه حجم کار را بیابید.
  3. اندازه حلقه Rx/Tx را تنظیم کنید. ethtool -G rx 4096 tx 4096
    توجه
    اگر بسته Rx را با ethtool -S| می بینید grep drop، سعی کنید اندازه حلقه را به <4096 کاهش دهید. سعی کنید مقدار بهینه حجم کاری را که در آن بسته ها رها نمی شوند، پیدا کنید.
  4. IRQ Affinity را تنظیم کنید. از هسته های محلی برای NIC یا نقشه برداری هسته خاص استفاده کنید (که در آن # هسته برابر است با تعداد صف هایی که در 1 در صفحه 26 تنظیم شده است. systemctl stop irqbalance set_irq_affinity -X local یا set_irq_affinity -X

5.9.2 AMD EPYC
پردازنده های AMD EPYC CPU های قدرتمندی هستند که برای سرورها و مراکز داده ساخته شده اند و بر اساس معماری Zen AMD ساخته شده اند. تنظیمات زیر مربوط به نسل چهارم سری EPYC AMD است.
تنظیمات BIOS توصیه شده برای بالاترین عملکرد

  1. حالت سفارشی را فعال کنید تا کاربران بتوانند عملکرد CPU، مصرف انرژی و سایر تنظیمات را تنظیم کنند. این به تنظیم دقیق سیستم برای بهترین تعادل بین عملکرد و بهره وری انرژی کمک می کند.
  2. تقویت عملکرد هسته را فعال کنید تا به CPU اجازه دهید به طور خودکار سرعت خود را برای انجام کارهای فشرده تر افزایش دهد و عملکرد کلی را بهبود بخشد.
  3. کنترل جهانی C-state را غیرفعال کنید تا از ورود CPU به حالت های ذخیره انرژی عمیق تری که به عنوان C-states شناخته می شوند، جلوگیری کنید که می تواند پاسخگویی را حفظ کند.
    توجه
    غیرفعال کردن حالت های C می تواند باعث مصرف انرژی اضافی و افزایش دمای حرارتی شود. هر دو را از نظر حجم کار نظارت کنید.
  4. فعال/غیرفعال کردن همزمان چند رشته ای (SMT) در CPU، بر اساس نیاز حجم کاری و اهداف عملکرد. SMT معادل Hyper Threading در پردازنده های اینتل است.
    توجه
    برای عملکرد بهینه، به تنظیم تنظیمات درایور i40e در صفحه 13 و تنظیم پلت فرم (غیر اختصاصی i40e) در صفحه 19 برای تنظیم سطح سیستم عامل و آداپتور توصیه شده مراجعه کنید.

اتصال آداپتور

پیوند لینوکس یک ویژگی قدرتمند است که می تواند عملکرد شبکه، افزونگی و تحمل خطا را در محیط های سرور به طور قابل توجهی بهبود بخشد. با این حال، توجه به این نکته مهم است که برای عملکرد صحیح به سخت افزار شبکه سازگار و پیکربندی مناسب روی سرور و سوئیچ نیاز دارد.
درایور bonding در لینوکس به شما امکان می دهد چندین رابط فیزیکی شبکه را در یک رابط پیوندی جمع آوری کنید. این رابط متصل به عنوان یک رابط شبکه مجازی واحد برای سیستم عامل و برنامه ها ظاهر می شود.
توجه
باند یک رابط منطقی است، بنابراین نمی توان میل CPU را مستقیماً روی رابط باند تنظیم کرد (به عنوان مثالample, bond0). یعنی کنترل مستقیمی بر مدیریت وقفه یا وابستگی CPU ندارد. میل CPU باید برای رابط های زیرین که بخشی از پیوند هستند پیکربندی شود.
باندینگ چندین حالت عملیاتی را ارائه می دهد که هر کدام ویژگی های خاص خود را دارند.

حالت  تایپ کنید
0 راند رابین
1 پشتیبان گیری فعال
2 XOR
3 پخش می شود
4 LACP
5 تعادل بار انتقال
6 تعادل بار تطبیقی

روش های مختلفی برای ایجاد پیوند در لینوکس وجود دارد. یکی از رایج ترین روش ها استفاده از پیکربندی شبکه است files (برای مثالample، /etc/network/ یا /etc/sysconfig/network-scripts/ifcfg-bondX).
پیکربندی با استفاده از پیکربندی شبکه Files
مراحل زیر باعث ایجاد پیوند بین پیکربندی شبکه می شود files.

  1. دو یا چند پورت NIC را برای اتصال انتخاب کنید (مثلاًample، ethX و ethY)
  2. پیکربندی NIC را باز کنید Fileزیر /etc/sysconfig/network-scripts/ برای رابط NIC مورد نیاز (برای مثالample، vi ifcfg-ethX و vi ifcfg-ethY) و متن زیر را اضافه کنید:
    MASTER=bondN [توجه: N یک عدد صحیح برای ذکر شماره پیوند است.] SLAVE=yes
  3. یک اسکریپت شبکه باند ایجاد کنید file با استفاده از vi /etc/sysconfig/networkscripts/ifcfg-bondN و متن زیر را وارد کنید:
    DEVICE=bondN [توجه: N یک عدد صحیح برای ذکر شماره پیوند است] ONBOOT=yes USERCTL=no BOOTPROTO=dhcp (یا) هیچ
    IPADDR=200.20.2.4 [لازم است اگر BOOTPROTO=هیچکدام] NETMASK=255.255.255.0 [لازم است اگر BOOTPROTO=هیچ] NETWORK=200.20.2.0 [الزامی اگر BOOTPROTO=هیچ] BROADCAST200.20.2.255 اگر نیاز است. BOOTPROTO=هیچ کدام] BONDING_OPTS=”mode=1 miimon=100"
    توجه
    حالت می تواند هر عدد صحیحی از 0 تا 6 بر اساس نیاز باشد.
  4. سرویس های شبکه را با استفاده از راه اندازی مجدد شبکه سرویس یا systemctl Restart NetworkManager.service مجدداً راه اندازی کنید

عیب یابی عملکرد

7.1 استفاده از CPU
در حالی که حجم کار در حال اجرا است، میزان استفاده از CPU را در هر هسته بررسی کنید.
توجه داشته باشید که استفاده از هر هسته نسبت به استفاده کلی از CPU با عملکرد مرتبط تر است زیرا ایده ای از استفاده از CPU در صف شبکه ارائه می دهد. اگر فقط چند رشته دارید که ترافیک شبکه را اجرا می کنند، ممکن است فقط چند هسته در حال استفاده داشته باشید. با این حال، اگر این هسته‌ها 100% باشند، احتمالاً توان عملیاتی شبکه شما با استفاده از CPU محدود شده است و زمان انجام موارد زیر فرا رسیده است:

  1. تنظیم اندازه IRQ/اندازه حلقه را همانطور که در تعدیل وقفه توضیح داده شده است.
  2. تعداد رشته های برنامه را افزایش دهید تا بار CPU روی هسته های بیشتری پخش شود. اگر همه هسته‌ها 100% اجرا می‌شوند، ممکن است برنامه شما به جای اتصال به شبکه، به CPU محدود باشد.

ابزارهای رایج در دسترس:

  • بالا
    - برای گسترش فهرست CPU ها و بررسی اینکه کدام یک از آنها استفاده می شود، 1 را فشار دهید.
    - به سطح استفاده توجه کنید.
    - توجه داشته باشید که کدام فرآیندها به عنوان فعال ترین (بالای لیست) فهرست شده اند.
  • mpstat
    سابق زیرampخط فرمان le بر روی Red Hat Enterprise Linux 7.x آزمایش شد.
    استفاده از CPU را در هر هسته نمایش می دهد (با یافتن درصد کل بیکار و کم کردن از 100) و مقادیر بالای 80٪ را با رنگ قرمز برجسته می کند. mpstat -P ALL 1 1 | grep -v میانگین | tail -n +5 | head -n -1 | awk '{ print (100-$13)}' | egrep -color=always '[^\.][8-9][0-9][\.]?.*|^[8-9][0-9][\.]?.*| 100|' | ستون
  • perf top به دنبال محل سپری شدن چرخه ها باشید.

7.2 شمارنده i40e
درایور i40e فهرستی طولانی از شمارنده‌ها را برای اشکال‌زدایی رابط و نظارت از طریق دستور ethtool -S ethX ارائه می‌کند. تماشای خروجی در حین اجرای بار کاری و/یا مقایسه مقادیر شمارنده قبل و بعد از اجرای بار کاری می تواند مفید باشد.

  • برای دریافت کامل شمارنده های i40e: ethtool -S ethX
  • برای تماشای فقط شمارنده های غیر صفر: watch -d (ethtool -S ethX) | egrep -v :\ 0 | ستون
    برخی از مواردی که باید به دنبال آنها باشید:
  • rx_dropped به این معنی است که CPU به اندازه کافی سریع به بافرها سرویس نمی دهد.
  • port.rx_dropped به این معنی است که چیزی در اسلات/حافظه/ سیستم به اندازه کافی سریع نیست.

7.3 شمارنده شبکه
netstat -s را قبل/بعد از اجرای بار کاری بررسی کنید.
Netstat اطلاعات شبکه را از تمام دستگاه های شبکه در سیستم جمع آوری می کند. بنابراین، نتایج ممکن است از شبکه‌هایی غیر از شبکه تحت آزمایش تأثیر بگذارد. خروجی netstat -s می تواند نشانگر خوبی از مشکلات عملکرد در سیستم عامل لینوکس یا هسته باشد. برای اطلاعات بیشتر در مورد تنظیم کلی سیستم عامل، به راهنمای تنظیم سیستم عامل، مانند راهنمای تنظیم عملکرد شبکه لینوکس Red Hat Enterprise مراجعه کنید.
7.4 گزارش های سیستم
گزارش های سیستم را برای خطاها و هشدارها بررسی کنید (/var/log/messages، dmesg).
7.5 ابزار svr-info اینتل
اینتل یک ابزار svr-info ارائه می دهد (نگاه کنید به https://github.com/intel/svr-info) برای لینوکس که جزئیات سخت افزار و نرم افزار مربوطه را از یک سرور می گیرد. خروجی svr-info می تواند برای شناسایی تنگناهای سیستم یا تنظیمات/تنظیم هایی که برای حجم کاری بهینه نشده اند بسیار مفید باشد. هنگام باز کردن یک کیس پشتیبانی با اینتل برای مشکلات عملکرد مرتبط با اترنت، حتماً خروجی svr-info (متن file) برای هر سرور لینوکس در پیکربندی آزمایشی.

  1. svr-info را دانلود و نصب کنید:
    wget -qO- https://github.com/intel/svr-info/releases/latest/download/svrinfo.tgz| tar xvz cd svr-info
    ./svr-info
    > hostname.txt
  2. جمع آوری خروجی:
    ./svr-info > hostname.txt
  3. پیوست یک متن (txt.) file برای هر سرور به کیس پشتیبانی اینتل برای تجزیه و تحلیل.

توصیه هایی برای سناریوهای عملکرد مشترک

8.1 انتقال IP

  • هسته را به روز کنید.
    برخی از هسته های اخیر در توزیع به دلیل تغییرات هسته در کد مسیریابی که با حذف حافظه پنهان مسیریابی به دلیل امنیت شروع می شود، عملکرد مسیریابی را کاهش داده اند. هسته‌های خارج از توزیع اخیر باید دارای وصله‌هایی باشند که تأثیر عملکرد این تغییرات را کاهش داده و ممکن است عملکرد بهتری را ارائه دهند.
  • Hyper-threading (هسته های منطقی) را غیرفعال کنید.
  • پارامترهای بوت هسته را ویرایش کنید.
    - اجباری کردن 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 محلی ethX یا set_irq_affinity -X محلی ethX
    توجه
    -X یا -x بسته به حجم کار قابل استفاده است.
  • اندازه حلقه های Tx و Rx را در صورت نیاز تغییر دهید. یک مقدار بزرگتر منابع بیشتری را می طلبد اما می تواند نرخ ارسال بهتری را ارائه دهد. ethtool -G ethX rx 4096 tx 4096
  • هنگام مسیریابی GRO را غیرفعال کنید.
    به دلیل یک مشکل شناخته شده هسته، GRO باید هنگام مسیریابی/باز ارسال خاموش شود. ethtool -K ethX gro که در آن ethX رابط اترنت است که باید اصلاح شود.
  • تعدیل وقفه تطبیقی ​​را غیرفعال کنید و یک مقدار ثابت تنظیم کنید. 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
  • حداکثر مقادیر را برای اندازه بافر سوکت دریافت و ارسال پیکربندی کنید. sysctl -w net.core.rmem_max=16777216 sysctl -w net.core.wmem_max=16777216

توجه
بسته به حجم کار یا نیاز، این مقادیر را می توان از پیش فرض تغییر داد.
8.2 تاخیر کم

  • Hyper-threading (هسته های منطقی) را خاموش کنید.
  • اطمینان حاصل کنید که دستگاه شبکه برای numa core 0 محلی است.
  • با استفاده از مجموعه وظایف -c 0، معیار را به هسته 0 پین کنید.
  • خاموش کردن irqbalance با استفاده از systemctl stop irqbalance یا systemctl غیر فعال کردن irqbalance
  • اسکریپت affinity را اجرا کنید تا در هسته ها پخش شود. محلی یا همه را امتحان کنید.
  • تعدیل وقفه را خاموش کنید. 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 محلی ethX
  • از یک معیار ثابت مانند netperf -t TCP_RR، netperf -t UDP_RR یا NetPipe استفاده کنید. netperf -t TCP_RR یا netperf -t UDP_RR
  • سنجاق معیار به یک هسته واحد در گره NUMA محلی. مجموعه وظایف -c

اینتل اترنت سری 700
راهنمای تنظیم عملکرد لینوکس
دسامبر 2024
Doc. شماره: 334019، Rev.: 1.2

اسناد / منابع

تنظیم عملکرد لینوکس سری 700 اترنت اینتل [pdfراهنمای کاربر
334019، Ethernet 700 Series Linux Performance Tuning، Ethernet 700 Series, Linux Performance Tuning, Performance Tuning, Tuning

مراجع

نظر بدهید

آدرس ایمیل شما منتشر نخواهد شد. فیلدهای الزامی مشخص شده اند *