Dòng Intel® Ethernet 700
Hướng dẫn điều chỉnh hiệu suất Linux
Nhóm mạng lưới đám mây NEX (NCNG)
Sửa đổi 1.2
Tháng 2024 năm XNUMX
Lịch sử sửa đổi
Ôn tập | Ngày | Bình luận |
1.2 | Tháng 2024 năm XNUMX | · Đã thêm Hướng dẫn quản lý nguồn điện bổ sung. · Đã thêm Intel* Turbo Boost. · Đã thêm danh sách tồn đọng thiết bị mạng. · Đã thêm cấu hình và điều chỉnh dành riêng cho nền tảng. · Đã thêm Bộ xử lý có thể mở rộng Intel* %eon* thế hệ thứ 4. · Đã thêm AMD EPYC. · Cập nhật khả năng phần cứng của hệ thống kiểm tra. · Cập nhật iPerf2. · Cập nhật iPerf3. · Cập nhật hàng đợi Tx/Rx. · Cập nhật chức năng Kiểm duyệt ngắt. · Cập nhật kích thước nhẫn. · Cập nhật điều chỉnh nền tảng (i40e không cụ thể). · Cập nhật cài đặt BIOS. · Cập nhật Kiểm soát trạng thái C. · Cập nhật khả năng điều chỉnh tần số CPU. · Cập nhật cài đặt ứng dụng. · Cập nhật cài đặt hệ điều hành/nhân. · Cập nhật Chuyển tiếp IP. · Cập nhật độ trễ thấp. |
Tháng 2023 năm XNUMX | Những thay đổi trong tài liệu này bao gồm: · Đã thêm tài liệu tham khảo liên quan. · Đã thêm tính năng Đảm bảo gói DDP đang tải đúng cách. · Đã thêm iPerf2. · Đã thêm iPerf3. · Đã thêm netperf. · Cập nhật IRQ Affinity. · Đã thêm hàng đợi Tx/Rx. · Cập nhật kích thước nhẫn. · Đã thêm Khung Jumbo. · Đã thêm liên kết bộ chuyển đổi. · Đã thêm Công cụ Intel svr-info. |
|
1.0 | Tháng 2016 năm XNUMX | Bản phát hành đầu tiên (Intel Public). |
Giới thiệu
Hướng dẫn này nhằm mục đích cung cấp hướng dẫn để điều chỉnh môi trường nhằm đạt hiệu suất mạng tối ưu bằng cách sử dụng Intel® Ethernet 700 Series NIC trong môi trường Linux. Hướng dẫn này tập trung vào các điều kiện và cài đặt phần cứng, trình điều khiển và hệ điều hành có thể cải thiện hiệu suất mạng. Cần lưu ý rằng hiệu suất mạng có thể bị ảnh hưởng bởi bất kỳ số lượng tác động bên ngoài nào, chỉ những tác động phổ biến và nghiêm trọng nhất trong số này mới được đề cập trong hướng dẫn này.
1.1 Tài liệu tham khảo liên quan
- Hướng dẫn sử dụng cho tất cả các thiết bị và bộ điều hợp Ethernet Intel ® hỗ trợ Windows và Linux:
Hướng dẫn sử dụng Bộ điều hợp và Thiết bị Ethernet Intel ® - Bảng dữ liệu kỹ thuật:
Bảng dữ liệu Bộ điều khiển Ethernet Intel ® X710/XXV710/XL710 - Gói phần mềm hoàn chỉnh cho tất cả các sản phẩm Intel ® Ethernet (tải xuống tất cả trình điều khiển, NVM, công cụ, v.v.):
Bộ điều khiển hoàn chỉnh Intel® Ethernet Adapter - Gói cập nhật NVM (Bộ nhớ không biến động):
Tiện ích cập nhật bộ nhớ không mất dữ liệu (NVM) cho Bộ điều hợp mạng Ethernet Intel® Series 700 - Công cụ svr-info dành cho Linux giúp thu thập thông tin chi tiết về phần cứng và phần mềm có liên quan từ máy chủ: https://github.com/intel/svr-info
- Hướng dẫn công nghệ DDP:
Hướng dẫn về công nghệ cá nhân hóa thiết bị động (DDP) Intel® Ethernet 700 Series
Danh sách kiểm tra ban đầu
2.1 Cập nhật phiên bản Driver/Firmware
Kiểm tra phiên bản trình điều khiển/phần mềm bằng lệnh ethtool -i ethx.
Cập nhật những thông tin sau nếu cần:
- Cập nhật trình điều khiển 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 - Cập nhật phần mềm
https: //downloadcenter.intel.com/download/24769/NVM-Update-Utility-for-Intel-Ethernet-ConvergedNetwork-Adapter-XL710-X710-Series
2.2 Đọc README
Kiểm tra các sự cố đã biết và nhận hướng dẫn cấu hình mới nhất từ README file được bao gồm trong gói nguồn i40e.
2.3 Kiểm tra xem khe cắm PCI Express (PCIe) của bạn có phải là x8 không
Một số khe cắm PCIe x8 thực sự được cấu hình là khe cắm x4. Các khe cắm này không đủ băng thông cho tốc độ đường truyền đầy đủ với các thiết bị cổng kép và cổng bốn. Ngoài ra, nếu bạn đặt bộ điều hợp hỗ trợ PCIe v3.0 vào khe cắm PCIe v2.x, bạn không thể có được băng thông đầy đủ. Trình điều khiển thiết bị phần mềm phát hiện tình huống này và ghi thông báo sau vào nhật ký hệ thống:
Băng thông PCI-Express có sẵn cho card này không đủ để có hiệu suất tối ưu. Để có hiệu suất tối ưu, cần có khe cắm PCI-Express x8.
Nếu lỗi này xảy ra, hãy di chuyển bộ điều hợp của bạn đến khe cắm PCIe v3.0 x8 thực sự để giải quyết vấn đề.
2.4 Kiểm tra khả năng phần cứng của hệ thống
Ở Ethernet 10 Gbps, 25 Gbps và 40 Gbps, có một số yêu cầu tối thiểu về CPU và hệ thống. Nhìn chung, bộ xử lý lớp máy chủ hiện đại và cấu hình bộ nhớ tối ưu cho nền tảng của bạn là đủ, nhưng nhu cầu khác nhau tùy thuộc vào khối lượng công việc của bạn. Tất cả các kênh bộ nhớ phải được điền và chế độ hiệu suất bộ nhớ phải được bật trong BIOS. Xác minh rằng CPU và cấu hình bộ nhớ của bạn có khả năng hỗ trợ mức hiệu suất mạng mà bạn yêu cầu cho khối lượng công việc của mình.
GHI CHÚ
XL710 là bộ điều khiển 40 GbE. Bộ điều hợp 2 x 40 GbE sử dụng bộ điều khiển này không phải là 2 x 40 GbE mà là 1 x 40 GbE có cổng dự phòng đang hoạt động. Khi cố gắng sử dụng lưu lượng tốc độ đường truyền liên quan đến cả hai cổng, bộ chuyển mạch bên trong sẽ bị bão hòa và băng thông kết hợp giữa hai cổng bị giới hạn ở tổng SO Gbps.
2.4.1 Tham số khởi động hạt nhân
Nếu Intel® Virtualization Technology for Directed I/O (Intel® VT-d) được bật trong BIOS, Intel khuyến nghị IOMMU ở chế độ pass-through để có hiệu suất mạng máy chủ tối ưu. Điều này loại bỏ chi phí DMA trên lưu lượng máy chủ trong khi vẫn cho phép Máy ảo (VM) có được những lợi ích của Intel® VT-d. Điều này được thực hiện bằng cách thêm dòng sau vào tham số khởi động hạt nhân: fommu-pt.
2.5 Đảm bảo gói DDP đang tải đúng cách
Trình điều khiển cơ sở 140ea và 140eb không hỗ trợ trực tiếp cho Dynamic Device Personalization (DDP). Để sử dụng DDP với các thiết bị Dòng 700, một DDP profile có thể áp dụng với ứng dụng testpmd.
Để biết chi tiết về DDP profiles, và cách áp dụng DDP profile với testpmd trên các thiết bị Dòng 700, hãy tham khảo Hướng dẫn công nghệ Cá nhân hóa thiết bị động (DDP) Intel® Ethernet Dòng 700.
Để xác minh xem một DDP profile đã được tải thành công:
testpmd> ddp lấy danh sách 0 Profile số là: 1
GHI CHÚ
Nếu chuyên nghiệpfile số là 0, không có gói DDP nào được tải. Trong trường hợp lỗi tải gói DDP, thiết bị sẽ mặc định ở chế độ an toàn và nhiều tính năng hiệu suất không khả dụng. Nếu có lỗi liên quan đến việc tải gói DDP, điều này sẽ gây ra sự cố hiệu suất. Để biết các bước khắc phục sự cố, hãy tham khảo Hướng dẫn công nghệ Cá nhân hóa thiết bị động (DDP) Inte/* Ethernet 700 Series.
Đo lường hiệu suất cơ bản và phương pháp điều chỉnh
3.1 Điểm chuẩn hiệu suất mạng
Trước khi bắt đầu bài tập điều chỉnh, điều quan trọng là phải có phép đo cơ sở tốt về hiệu suất mạng của bạn. Thông thường, ngoài việc có phép đo ban đầu về hiệu suất của ứng dụng/khối lượng công việc cụ thể của bạn, bạn cũng nên sử dụng chuẩn hiệu suất mạng để xác minh rằng thiết bị mạng của bạn đang ở trạng thái tốt.
Đối với việc tối ưu hóa hệ thống đơn lẻ, netperf hoặc iperf và NetPIPE đều là những công cụ mã nguồn mở miễn phí cho phép bạn kiểm tra kết nối và chẩn đoán các vấn đề về hiệu suất.
Netperf mạnh mẽ cho cả thử nghiệm thông lượng và độ trễ. NetPIPE là một công cụ dành riêng cho độ trễ nhưng có thể được biên dịch cho bất kỳ loại môi trường nào.
GHI CHÚ
Kiểm tra TCP_RR trong netperf trả về độ trễ theo giá trị giao dịch/giây. Đây là số khứ hồi. Độ trễ một chiều có thể được tính bằng phương trình sau:
Độ trễ (usec) = (1⁄2) / [Giao dịch/giây] * 1,000,000
3.1.1 iPerf2
Intel khuyến nghị iperf2 hơn iperf3 cho hầu hết các tình huống đánh giá chuẩn do dễ sử dụng và hỗ trợ nhiều luồng trong một phiên bản ứng dụng duy nhất. Intel khuyến nghị chạy với tùy chọn -P với 2-4 luồng cho kết nối 25G và khoảng 4-6 luồng cho kết nối 40G.
- Để chạy lưu lượng một chiều từ máy khách đến máy chủ: Lệnh máy chủ examplệnh: iperf2 -s
Lệnh khách hàng examplệnh: iperf2 -c -P - Để chạy lưu lượng hai chiều từ máy khách đến máy chủ (và ngược lại): Lệnh máy chủ examplệnh: iperf2 –s –p
Lệnh khách hàng examplê:
iperf2 -c -P -P -–toàn bộ song công HOẶC
iperf2 -c -P -P –d
GHI CHÚ
Cả hai tùy chọn –full-duplex và -d trong iperf2 đều cho phép người dùng thực hiện thử nghiệm song hướng. Tuy nhiên, tùy chọn –full-duplex tập trung cụ thể vào thử nghiệm song công.
GHI CHÚ
Khi kiểm tra iperf2 trên nhiều cổng máy chủ, cờ -d có thể được thêm vào lệnh máy chủ để chạy tất cả các phiên máy chủ ở chế độ nền từ cùng một cửa sổ thiết bị đầu cuối. Cờ -d cũng có thể được sử dụng khi lệnh máy chủ được nhúng bên trong vòng lặp for trong một tập lệnh.
GHI CHÚ
Khi chạy thử nghiệm thông lượng mạng với một luồng/luồng đơn (ví dụample: P1), bộ xử lý AMD có thể không cung cấp thông lượng mong đợi, đặc biệt là các NIC băng thông cao hơn (nếu tốc độ >= băng thông 25G). Do đó, cần phải ghim ứng dụng vào các lõi cụ thể để đạt được thông lượng cao hơn. Xem Cài đặt ứng dụng trên trang 22.
3.1.2 iPerf3
Nếu iperf3 được sử dụng, nhiều phiên bản của ứng dụng được yêu cầu để có lợi thếtage của các luồng đa luồng, RSS và hàng đợi phần cứng. Intel khuyến nghị chạy với 2-4 phiên ứng dụng cho kết nối 25G và khoảng 4-6 phiên cho kết nối 40G. Mỗi phiên phải chỉ định một giá trị cổng TCP duy nhất bằng tùy chọn -p.
- Để chạy lưu lượng một chiều từ máy khách đến máy chủ:
Lệnh máy chủ examplê:
iperf3 -s -p
Lệnh khách hàng examplê:
iperf3 -c -P - Để chạy lưu lượng hai chiều từ máy khách tới máy chủ (và ngược lại):
Lệnh máy chủ examplê:
iperf3 –s –p
Lệnh khách hàng examplệnh: iperf3 -c -P -P –-bắn - Để khởi động nhiều phiên bản (luồng) của iperf3, khuyến nghị là sử dụng vòng lặp for để ánh xạ luồng tới các cổng TCP và chạy iperf3 ở chế độ nền bằng cách sử dụng & để tạo nhiều quy trình song song.
Lệnh máy chủ example, bắt đầu 4 luồng: port=””; for i in {0..3}; do port=520$i; bash -c “iperf3 -s -p $port &”; xong; Lệnh máy khách example, bắt đầu 4 luồng – Kiểm tra truyền port=””; for i in {0..3}; do port=520$i; bash -c “iperf3 -c $serverIP -p $port &”; xong; Lệnh máy khách example, bắt đầu 4 luồng – Nhận thử nghiệm port=””; for i in {0..3}; do port=520$i; bash -c “iperf3 -R -c $serverIP -p $port &”; xong; Đối với kết nối 40G, hãy tăng vòng lặp for để tạo tối đa 6 phiên bản/luồng.
GHI CHÚ
Khi chạy thử nghiệm thông lượng mạng với một luồng/luồng đơn (ví dụample: P1), bộ xử lý AMD có thể không cung cấp thông lượng mong đợi, đặc biệt là băng thông cao hơn
NIC (nếu tốc độ >= băng thông 25G). Do đó, cần phải ghim ứng dụng vào các lõi cụ thể để đạt được thông lượng cao hơn. Xem Cài đặt ứng dụng ở trang 22 và AMD EPYC ở trang 26.
3.1.3 mạng lưới
Công cụ netperf là lựa chọn tốt cho cả thử nghiệm thông lượng và độ trễ.
- Kiểm tra TCP_STREAM trong netperf đo khả năng thông lượng của thiết bị. Lệnh máy chủ example: netserver Lệnh máy khách cũamptập tin: netperf -t TCP_STREAM -l 30 -H
- Kiểm tra TCP_RR trong netperf trả về độ trễ theo giá trị giao dịch/giây. Đây là số khứ hồi. Nên sử dụng tùy chọn -T x,x, trong đó x là CPU cục bộ của thiết bị. Độ trễ một chiều có thể được tính bằng cách sử dụng: Latency(usec)=(1⁄2)/ [Giao dịch/giây]*1,000,\ Lệnh máy chủ example: netserver
Lệnh khách hàng examplệnh: netperf -t TCP_RR -l 30 -H -T x, x - Để khởi động nhiều phiên bản (luồng) của netperf, khuyến nghị là sử dụng vòng lặp for để ánh xạ luồng tới các cổng TCP và chạy netperf ở chế độ nền bằng cách sử dụng & để tạo nhiều quy trình song song.
Lệnh máy chủ example, bắt đầu 8 chủ đề:
port=””; đối với i trong {0..7}; thực hiện port=520$i; bash -c “netserver -L $serverIP -p $port &”; xong;
Lệnh khách hàng example, bắt đầu 8 luồng: port=””; for i in {0..7}; do port=520$i; bash -c “netperf -H $serverIP -p $port -t TCP_STREAM -l 30 &”; xong;
3.2 Phương pháp điều chỉnh
Tập trung vào một thay đổi điều chỉnh tại một thời điểm để bạn biết tác động của từng thay đổi đối với bài kiểm tra của mình. Bạn càng có phương pháp trong quá trình điều chỉnh, bạn càng dễ xác định và giải quyết nguyên nhân gây ra tình trạng tắc nghẽn hiệu suất.
Điều chỉnh cài đặt trình điều khiển i40e
4.1 Độ tương thích IRQ
Cấu hình mối quan hệ IRQ sao cho các ngắt cho hàng đợi mạng khác nhau được liên kết với các lõi CPU khác nhau có thể có tác động rất lớn đến hiệu suất, đặc biệt là các bài kiểm tra thông lượng đa luồng.
Để cấu hình IRQ affinity, hãy dừng irqbalance và sau đó sử dụng tập lệnh set_irq_affinity từ gói nguồn i40e hoặc ghim hàng đợi theo cách thủ công. Vô hiệu hóa bộ cân bằng IRQ không gian người dùng để bật ghim hàng đợi:
- systemctl vô hiệu hóa irqbalance
- systemctl dừng mất cân bằng
Sử dụng tập lệnh set_irq_affinity từ gói nguồn i40e (khuyến nghị): - Để sử dụng tất cả các lõi:
[đường dẫn đến i40epackage]/scripts/set_irq_affinity -X tất cả ethX - Để chỉ sử dụng lõi trên ổ cắm NUMA cục bộ: [path-to-i40epackage]/scripts/set_irq_affinity -X local ethX
- Bạn cũng có thể chọn một phạm vi lõi. Tránh sử dụng cpu0 vì nó chạy các tác vụ hẹn giờ. [path-to-i40epackage]/scripts/set_irq_affinity 1-2 ethX
GHI CHÚ
Tập lệnh affinity cho phép Transmit Packet Steering (XPS) như một phần của quy trình ghim khi tùy chọn -x được chỉ định. Khi XPS được bật, Intel khuyến nghị bạn tắt irqbalance, vì bộ cân bằng hạt nhân với XPS có thể gây ra hiệu suất không thể đoán trước. Tập lệnh affinity sẽ tắt XPS khi tùy chọn -X được chỉ định. Việc tắt XPS và bật hàng đợi đối xứng có lợi cho các khối lượng công việc mà hiệu suất tốt nhất đạt được khi lưu lượng Tx và Rx được phục vụ trên cùng một cặp hàng đợi.
Cấu hình hàng đợi đối xứng trong Linux bao gồm việc điều chỉnh các tham số trình điều khiển giao diện mạng để kích hoạt hàng đợi nhận đối xứng (Rx) và hàng đợi truyền đối xứng (Tx) cho các bộ điều hợp mạng được hỗ trợ.
GHI CHÚ
- Hàng đợi đối xứng là một tính năng mạng nâng cao và không phải tất cả bộ điều hợp mạng hoặc trình điều khiển dòng 700 đều hỗ trợ tính năng này.
- Đảm bảo bạn có trình điều khiển và phần cứng hỗ trợ cần thiết trước khi thử cấu hình hàng đợi đối xứng.
Để cấu hình hàng đợi đối xứng, hãy làm theo các bước chung sau:
- Chỉnh sửa cấu hình giao diện mạng File: Sử dụng trình soạn thảo văn bản (ví dụ:ample, vi, nano hoặc gedit) để chỉnh sửa cấu hình giao diện mạng file. Các file thường nằm trong thư mục /etc/sysconfig/network-scripts/ và có tên như ifcfg-ethX, trong đó ethX là tên giao diện mạng của bạn.
- Thêm tham số hàng đợi đối xứng. Thêm các dòng sau vào cấu hình giao diện mạng file: ETHTOOL_OPTS=”hàng đợi rx 8 hàng đợi tx 8″
- Khởi động lại dịch vụ mạng.
Sau khi thực hiện thay đổi, hãy khởi động lại dịch vụ mạng để áp dụng cấu hình mới. sudo systemctl restart network
Thủ công:
-
Tìm bộ xử lý được gắn vào mỗi nút bằng cách sử dụng: numactl –hardware lscpu
-
Tìm mặt nạ bit cho mỗi bộ xử lý:
- Giả sử lõi 0-11 cho nút 0: [1,2,4,8,10,20,40,80,100,200,400,800]
- Tìm IRQ được gán cho cổng đang được gán: grep ethX /proc/interrupts và lưu ý các giá trị IRQ Ví dụ:ample, 181-192 cho 12 vectơ được tải.
- Hiển thị giá trị ái lực SMP vào mục IRQ tương ứng. Lưu ý rằng điều này cần được thực hiện cho mỗi mục IRQ: echo 1 > /proc/irq/181/smp_affinity echo 2 > /proc/irq/182/smp_affinity echo 4 > /proc/irq/183/smp_affinity Hiển thị ái lực IRQ:
- Để hiển thị mức độ tương thích IRQ cho tất cả các lõi: /scripts/set_irq_affinity -s ethX
- Để chỉ hiển thị lõi trên ổ cắm NUMA cục bộ: /scripts/set_irq_affinity -s ethX cục bộ
- Bạn cũng có thể chọn một loạt lõi: /scripts/set_irq_affinity -s 40-0-8,16 ethX
GHI CHÚ
Tập lệnh set_irq_affinity hỗ trợ cờ -s trong trình điều khiển i40e phiên bản 2.16.11 trở lên.
4.2 Hàng đợi Tx/Rx
Số lượng hàng đợi mặc định được trình điều khiển bật cho mỗi cổng Ethernet khi khởi tạo bằng tổng số CPU có sẵn trong nền tảng. Điều này hoạt động tốt với nhiều nền tảng và cấu hình khối lượng công việc. Tuy nhiên, trong các nền tảng có số lượng lõi cao và/hoặc mật độ cổng Ethernet cao, cấu hình này có thể gây ra tranh chấp tài nguyên. Do đó, trong một số trường hợp, có thể cần phải sửa đổi mặc định cho mỗi cổng trong hệ thống.
Số lượng hàng đợi Tx/Rx mặc định có thể thay đổi tùy thuộc vào model và phiên bản trình điều khiển cụ thể. Số lượng hàng đợi có thể được điều chỉnh bằng lệnh ethtool -L được liệt kê bên dưới.
GHI CHÚ
Trong những trường hợp này, Intel khuyến nghị bạn nên giảm số lượng hàng đợi mặc định cho mỗi cổng xuống không quá số lượng CPU có sẵn trong nút NUMA cục bộ với cổng bộ điều hợp. Trong một số trường hợp, khi cố gắng cân bằng tài nguyên trên các triển khai số lượng cổng cao, có thể cần phải giảm số lượng này xuống hơn nữa.
Để sửa đổi cấu hình hàng đợi:
Các ví dụ sau đâyample thiết lập cổng thành 32 hàng đợi Tx/Rx: ethtool -L ethX kết hợp 32
Example đầu ra:
ethtool -l ethX
Các tham số kênh cho ethX: Mức tối đa được thiết lập trước:
RX: 96
TX: 96
Khác: 1
Kết hợp: 96
Cài đặt phần cứng hiện tại:
RX: 0
TX: 0
Khác: 1
Kết hợp: 32
4.3 Ngắt điều độ
Adaptive interrupt Moderation được bật theo mặc định và được thiết kế để cung cấp phương pháp cân bằng giữa mức sử dụng CPU thấp và hiệu suất cao. Tuy nhiên, bạn có thể thử điều chỉnh cài đặt ngắt theo cách thủ công để phù hợp với trường hợp sử dụng của mình.
Phạm vi 0-235 micro giây cung cấp phạm vi hiệu quả từ 4,310 đến 250,000 ngắt mỗi giây. Giá trị của rx-μsecs-high có thể được thiết lập độc lập với rx-μsecs và tx-μsecs trong cùng một lệnh ethtool và cũng độc lập với thuật toán điều tiết ngắt thích ứng. Phần cứng cơ bản hỗ trợ độ chi tiết trong khoảng thời gian 2micro giây, do đó các giá trị liền kề có thể dẫn đến cùng một tốc độ ngắt.
- Để tắt chế độ điều tiết ngắt thích ứng: ethtool -C ethX adaptive-rx off adaptive-tx off
- Để bật chế độ điều tiết ngắt thích ứng: ethtool -C ethX adaptive-rx on adaptive-tx on
Một nơi tốt để bắt đầu điều chỉnh chung là 84 μs hoặc ~12000 ngắt/giây. Nếu bạn thấy bộ đếm rx_dropped đang chạy trong khi lưu lượng truy cập (sử dụng ethtool -S ethX) thì có thể CPU của bạn quá chậm, không đủ bộ đệm từ kích thước vòng của bộ điều hợp (ethtool -G) để giữ các gói trong 84 μs hoặc tốc độ ngắt quá thấp.
- Để thiết lập chế độ điều tiết ngắt ở mức cố định là 84 μs giữa các ngắt (12000 ngắt/giây): ethtool -C ethX adaptive-rx off adaptive-tx off rx-usecs 84 tx-usecs 84 Giá trị tiếp theo để thử, nếu bạn không sử dụng hết CPU, là 62 μs. Giá trị này sử dụng nhiều CPU hơn, nhưng nó phục vụ bộ đệm nhanh hơn và yêu cầu ít bộ mô tả hơn (kích thước vòng, ethtool -G).
- Để thiết lập chế độ điều tiết ngắt thành tốc độ ngắt cố định là 62 usec giữa các ngắt (16000 ngắt/giây). ethtool -C ethX adaptive-rx off adaptive-tx off rx-usecs 62 tx-usecs 62
Nếu bộ đếm rx_dropped tăng trong quá trình lưu lượng truy cập (sử dụng ethtool -S ethX), có thể CPU của bạn quá chậm, không đủ bộ đệm từ kích thước vòng của bộ điều hợp (ethtool -G) hoặc tốc độ ngắt quá thấp. Nếu bạn không sử dụng hết CPU, bạn có thể tăng tốc độ ngắt bằng cách giảm giá trị ITR. Điều này sử dụng nhiều CPU hơn, nhưng bộ đệm dịch vụ nhanh hơn và yêu cầu ít bộ mô tả hơn (kích thước vòng, ethtool -G).
Nếu CPU của bạn ở mức 100%, thì không nên tăng tỷ lệ ngắt. Trong một số trường hợp nhất định như khối lượng công việc bị ràng buộc bởi CPU, bạn có thể muốn tăng giá trị μs để cho phép nhiều thời gian CPU hơn cho các ứng dụng khác.
Nếu bạn cần hiệu suất độ trễ thấp và/hoặc có nhiều CPU để dành cho xử lý mạng, bạn có thể tắt hoàn toàn chức năng điều tiết ngắt, cho phép ngắt được kích hoạt nhanh nhất có thể. - Để vô hiệu hóa điều tiết ngắt ethtool -C ethX adaptive-rx off adaptive-tx off rx-usecs 0 tx-usecs 0
GHI CHÚ
Khi chạy với chế độ điều tiết ngắt bị vô hiệu hóa, tốc độ ngắt trên mỗi hàng đợi có thể rất cao. Hãy cân nhắc bao gồm tham số rx-usec-high để đặt giới hạn trên cho tốc độ ngắt. Lệnh sau vô hiệu hóa chế độ điều tiết ngắt thích ứng và cho phép tối đa 5 micro giây trước khi chỉ ra rằng quá trình nhận hoặc truyền đã hoàn tất. Thay vì tạo ra tới 200,000 ngắt mỗi giây, lệnh này giới hạn tổng số ngắt mỗi giây ở mức 50,000 thông qua tham số rx-usec-high. # ethtool -C ethX adaptive-rx off adaptive-tx off rx-usecs-high 20 rx-usecs 5 txusecs 5 Hãy thử điều chỉnh bộ hẹn giờ truyền/nhận/hợp nhất ưu tiên cao hơn (80/100/150/200) hoặc thấp hơn (25/20/10/5) để tìm giá trị tối ưu cho khối lượng công việc.
4.4 Kích thước nhẫn
Nếu bạn thấy rx_dropped counters trong ethtool -S ethX (rx_dropped, rx_dropped.nic) hoặc nghi ngờ áp lực bộ nhớ đệm với nhiều hàng đợi đang hoạt động, bạn có thể thử điều chỉnh kích thước vòng từ giá trị mặc định. Giá trị mặc định là 512, giá trị tối đa là 4096.
- Để kiểm tra các giá trị hiện tại: ethtool -g ethX
Nếu nghi ngờ việc thiếu bộ đệm đang gây ra sự sụt giảm ở tốc độ ngắt hiện tại, trước tiên bạn có thể thử mức tối đa, sau đó là mức tối thiểu, rồi tiếp tục tìm kiếm nhị phân cho đến khi thấy hiệu suất tối ưu.
Nếu nghi ngờ áp lực bộ nhớ đệm (nhiều hàng đợi đang hoạt động), việc giảm bộ đệm từ mặc định có thể giúp Intel ® Data Direct I/O (Intel ® DDIO) hoạt động hiệu quả hơn. Intel khuyến nghị thử 128 hoặc 256 cho mỗi hàng đợi, lưu ý rằng có thể cần tăng tốc độ ngắt thông qua ethtool -C để tránh tăng rx_dropped. - Để đặt kích thước vòng thành giá trị cố định: ethtool -G eth12 rx 256 tx 256
GHI CHÚ
Để sửa lỗi gói tin Rx bị loại bỏ được tìm thấy bằng lệnh ethtool -S ethX|grep drop, hãy cân nhắc tăng kích thước vòng lên 4096. Hãy thử nghiệm để tìm ra thiết lập tốt nhất cho khối lượng công việc nhưng hãy cẩn thận với tình trạng sử dụng bộ nhớ quá mức với các giá trị cao hơn.
4.5 Kiểm soát dòng chảy
Kiểm soát luồng lớp 2 có thể ảnh hưởng đáng kể đến hiệu suất TCP và được khuyến nghị tắt đối với hầu hết các khối lượng công việc. Một ngoại lệ tiềm ẩn là lưu lượng bursty khi các burst không kéo dài.
Kiểm soát luồng bị tắt theo mặc định.
- Để bật kiểm soát luồng: ethtool -A ethX rx on tx on
- Để vô hiệu hóa kiểm soát luồng: ethtool -A ethX rx off tx off
GHI CHÚ
Bạn phải có đối tác liên kết có khả năng kiểm soát luồng để kích hoạt kiểm soát luồng thành công.
4.6 Khung Jumbo
Khi môi trường lưu lượng dự kiến bao gồm các khối dữ liệu lớn đang được truyền, có thể hữu ích khi bật tính năng khung jumbo. Hỗ trợ Khung Jumbo được bật bằng cách thay đổi Đơn vị truyền tối đa (MTU) thành giá trị lớn hơn giá trị mặc định là 1500. Điều này cho phép thiết bị truyền dữ liệu trong các gói lớn hơn trong môi trường mạng. Thiết lập này có thể cải thiện thông lượng và giảm mức sử dụng CPU cho khối lượng công việc I/O lớn. Tuy nhiên, nó có thể ảnh hưởng đến các khối lượng công việc nhạy cảm với độ trễ hoặc gói nhỏ.
GHI CHÚ
Khung Jumbo hoặc cài đặt MTU lớn hơn phải được cấu hình đúng trên môi trường mạng của bạn.
Sử dụng lệnh ifconfig để tăng kích thước MTU. Ví dụample, nhập nội dung sau, trong đó là số giao diện: ifconfig mtu 9000 lên
Ngoài ra, bạn có thể sử dụng lệnh ip như sau: ip link set mtu 9000 dev liên kết ip thiết lập dev
Điều chỉnh nền tảng (i40e không cụ thể)
5.1 Cài đặt BIOS
- Bật Intel® VT-d cho khối lượng công việc ảo hóa.
- Siêu phân luồng (bộ xử lý logic) có thể ảnh hưởng đến hiệu suất. Hãy thử bật hoặc tắt tùy theo khối lượng công việc của bạn.
- Intel® Turbo Boost cho phép lõi CPU hoạt động ở tần số cao hơn tần số cơ bản của CPU. Bật Intel® Turbo Boost có thể cải thiện hiệu suất cho nhiều khối lượng công việc nhưng tiêu thụ nhiều điện năng hơn để giữ lõi ở tần số cao hơn. Thử nghiệm với Turbo Boost tắt/bật cho khối lượng công việc của bạn.
GHI CHÚ
Tần số Turbo không được đảm bảo nếu nền tảng đang trải qua tình trạng sử dụng CPU tổng thể cao. Tần số Turbo lõi cao hơn sẽ giảm khi mức sử dụng CPU tổng thể tăng.
5.2 Quản lý nguồn điện
Quản lý nguồn có thể tác động đến hiệu suất, đặc biệt là trong khối lượng công việc có độ trễ thấp. Nếu hiệu suất là ưu tiên cao hơn so với việc giảm mức tiêu thụ điện năng, Intel khuyên bạn nên thử nghiệm bằng cách hạn chế tác động của quản lý nguồn. Có nhiều cách khác nhau để hạn chế quản lý nguồn, thông qua các công cụ hệ điều hành, cài đặt BIOS và tham số khởi động hạt nhân. Chọn phương pháp và mức độ tốt nhất phù hợp với môi trường của bạn.
5.2.1 Kiểm soát trạng thái C
Việc hạn chế sự xâm nhập của trạng thái C vào CO hoặc C1 sẽ cải thiện hiệu suất và tăng mức sử dụng điện năng.
Việc vô hiệu hóa mục nhập trạng thái CPU Package C6 có thể cải thiện hiệu suất mạng. Tuy nhiên, điều này làm tăng mức sử dụng điện năng.
Có các tùy chọn sau:
- Kiểm soát động mục nhập trạng thái C:
Mở
/dev/cpu_dma_latency và ghi độ trễ tối đa cho phép vào đó.
GHI CHÚ
Có một chương trình nhỏ có tên là cpudmalatency.c có thể tải xuống từ cộng đồng mã nguồn mở, biên dịch và chạy từ dòng lệnh để thực hiện chính xác điều này.
Các ví dụ sau đâyample cho phép năm μs thời gian thức và do đó cho phép nhập C1: cpudmalatency 5 &
- Giới hạn trạng thái C tối đa trong cài đặt khởi động hạt nhân:
Đối với CPU Intel: intel_idle.max_cstates=1
Đối với CPU không phải của Intel: processor.max_cstates=1 - Sử dụng lệnh cpupower để kiểm tra và vô hiệu hóa trạng thái CPU C6: Kiểm tra: cpupower monitor hoặc cpupower idle-info
Vô hiệu hóa C6: cpupower idle-set -d3 hoặc
Vô hiệu hóa C-States: cpupower idle-set -D0
Ghi chú:
- Tắt trạng thái C trên CPU nếu máy chủ có Bộ xử lý Intel® Xeon® Scalable thế hệ thứ 4. Khi bật hoặc tắt Hyper Threading, việc tắt trạng thái nhàn rỗi (-D0) sẽ ngăn lõi chuyển sang trạng thái năng lượng thấp trong thời gian nhàn rỗi và giảm độ trễ để CPU chuyển đổi giữa trạng thái nhàn rỗi và trạng thái hoạt động.
- Quản lý năng lượng của Bộ xử lý Intel® Xeon® Scalable thế hệ thứ 4 của Intel® cực kỳ mạnh mẽ. Để tránh lõi chuyển sang trạng thái năng lượng thấp, hãy thử giảm số lượng lõi đang sử dụng để giữ chúng ở trạng thái thức lâu hơn (ethtool -L kết hợp ). Ngoài ra, hãy liên kết ngắt với các lõi cụ thể bằng cách sử dụng set irq affinity (thường là với -x local hoặc danh sách các lõi CPU) và đảm bảo khối lượng công việc chạy trên các lõi đó bằng tasket hoặc numactl. Điều này cải thiện hiệu suất bằng cách giữ cho các lõi hoạt động và tối ưu hóa việc xử lý ngắt.
Bật C6:
cpupower nhàn rỗi-set -d3
Kích hoạt C-States:
cpupower nhàn rỗi-set -E
- Một phương pháp khác là sử dụng công cụ điều chỉnh (có trong nhiều bản phân phối Linux) để thiết lập hiệu suất chuyên nghiệpfile. Những chuyên gia nàyfiles sửa đổi một số thiết lập hệ điều hành có thể ảnh hưởng đến hiệu suất trên nhiều ứng dụng. Người ta đã phát hiện ra rằng thông lượng mạng profile cải thiện hầu hết khối lượng công việc.
Kiểm tra:
điều chỉnh-quản lý hoạt động
Bộ:
tune-adm profile thông lượng mạng
GHI CHÚ
Dịch vụ đã điều chỉnh phải đang chạy cho các lệnh trên. Để kiểm tra/khởi động lại, điều chỉnh: systemctl status tuning systemctl restart tuning
Bạn cũng có thể không cho phép bất kỳ mục nhập trạng thái C nào bằng cách thêm dòng sau vào dòng khởi động hạt nhân:
nhàn rỗi=bầu chọn - Giới hạn trạng thái C thông qua cài đặt quản lý nguồn BIOS của hệ thống, có thể có tác dụng tăng hiệu suấtfile có sẵn.
Có thể sử dụng các công cụ như turbostat hoặc x86_energy_perf_policy để kiểm tra hoặc thiết lập cài đặt quản lý năng lượng.
5.2.2 Quản lý nguồn PCIe
Active-State Power Management (ASPM) cho phép trạng thái năng lượng thấp hơn cho các liên kết PCIe khi chúng không được sử dụng. Điều này có thể gây ra độ trễ cao hơn trên các thiết bị mạng PCIe, do đó Intel khuyên bạn nên tắt ASPM cho các khối lượng công việc nhạy cảm với độ trễ. Tắt ASPM bằng cách thêm lệnh sau vào dòng khởi động kernel: pcie_aspm=off
5.2.3 Điều chỉnh tần số CPU
CPU frequency scaling (hoặc CPU speed scaling) là một kỹ thuật quản lý năng lượng Linux trong đó tốc độ xung nhịp hệ thống được điều chỉnh ngay lập tức để tiết kiệm điện năng và nhiệt. Giống như trạng thái C, điều này có thể gây ra độ trễ không mong muốn trên các kết nối mạng.
Công cụ cpupower cũng có thể được sử dụng để kiểm tra và sửa đổi các giá trị mặc định và giới hạn hiệu suất của CPU:
- Kiểm tra: màn hình cpupower hoặc
- Đặt CPU ở chế độ hiệu suất: cpupower frequency-set -g performance
GHI CHÚ
Việc thay đổi giới hạn tần số CPU có thể ảnh hưởng đến nhiều khối lượng công việc và có thể vô hiệu hóa các tính năng khác, chẳng hạn như chế độ CPU turbo.
Để vô hiệu hóa chức năng điều chỉnh tần số CPU, hãy vô hiệu hóa dịch vụ nguồn CPU bằng các lệnh sau:
systemctl dừng cpupower.service
systemctl vô hiệu hóa cpupower.service
5.2.4 Hướng dẫn quản lý nguồn điện bổ sung
Các chi tiết bổ sung được cung cấp ở cấp độ cao nàyview của nhiều tính năng quản lý năng lượng trong bộ xử lý Intel® Xeon® Scalable thế hệ thứ 3, cũng như hướng dẫn về cách tích hợp các tính năng này ở cấp độ nền tảng: https://networkbuilders.intel.com/solutionslibrary/power-management-technologyoverview-technology-guide
5.3 Tăng tốc Intel® Turbo
Intel® Turbo Boost giúp bộ xử lý nhanh hơn khi cần nhưng có thể tiêu thụ thêm điện năng. Tắt Turbo Boost giúp bộ xử lý ở tốc độ ổn định, mang lại cho bạn mức hiệu suất nhất quán cho các khối lượng công việc cụ thể.
5.4 Tường lửa
Tường lửa có thể ảnh hưởng đến hiệu suất, đặc biệt là hiệu suất độ trễ.
Tắt iptables/firewalld nếu không cần thiết.
5.5 Cài đặt ứng dụng
Thông thường, một luồng đơn (tương ứng với một hàng đợi mạng đơn) không đủ để đạt được băng thông tối đa. Một số kiến trúc nền tảng, chẳng hạn như AMD, có xu hướng loại bỏ nhiều gói Rx hơn với một luồng đơn so với các nền tảng có bộ xử lý dựa trên Intel.
Hãy cân nhắc sử dụng các công cụ như tasket hoặc numactl để ghim các ứng dụng vào nút NUMA hoặc lõi CPU cục bộ với thiết bị mạng. Đối với một số khối lượng công việc như lưu trữ I/O, việc di chuyển ứng dụng đến một nút không cục bộ sẽ mang lại lợi ích.
Nếu có thể, hãy thử tăng số luồng mà ứng dụng của bạn sử dụng.
Phiên bản hạt nhân 5.6
Hầu hết các hạt nhân trong hộp hiện đại đều được tối ưu hóa khá tốt cho hiệu suất nhưng tùy thuộc vào trường hợp sử dụng của bạn, việc cập nhật hạt nhân có thể cải thiện hiệu suất. Tải xuống nguồn cũng cho phép bạn bật/tắt một số tính năng nhất định trước khi xây dựng hạt nhân.
5.7 Cài đặt hệ điều hành/nhân
Tham khảo hướng dẫn điều chỉnh hệ điều hành, chẳng hạn như Hướng dẫn điều chỉnh hiệu suất mạng Red Hat Enterprise Linux, để biết thêm thông tin chi tiết về điều chỉnh hệ điều hành nói chung.
Một số tham số chung để điều chỉnh được liệt kê trong bảng sau. Lưu ý rằng đây chỉ là những điểm khởi đầu được đề xuất và việc thay đổi chúng so với mặc định có thể làm tăng tài nguyên được sử dụng trên hệ thống. Mặc dù việc tăng giá trị có thể giúp cải thiện hiệu suất, nhưng cần phải thử nghiệm với các giá trị khác nhau để xác định giá trị nào phù hợp nhất với hệ thống, khối lượng công việc và loại lưu lượng nhất định.
Các tham số hạt nhân có thể được cấu hình bằng tiện ích sysctl trong Linux như được chỉ ra bên dưới.
ĐẾN view giá trị mặc định cho rmem và wmem trên hệ thống:
sysctl net.core.rmem_default
sysctl net.core.wmem_default
Đặt giá trị ở mức tối đa (16 MB):
sysctl -w net.core.rmem_max=16777216
sysctl -w net.core.wmem_max=16777216
Kích thước bộ đệm ổ cắm, còn được gọi là bộ đệm nhận (rmem) và bộ đệm truyền (wmem), là các tham số hệ thống chỉ định lượng bộ nhớ dành riêng cho lưu lượng mạng đến và đi.
Chạy sysctl mà không có đối số -w sẽ liệt kê tham số với cài đặt hiện tại của nó.
Cài đặt ngăn xếp | Sự miêu tả |
net.core.rmem_default | Kích thước cửa sổ nhận mặc định |
net.core.wmem_default | Kích thước cửa sổ truyền mặc định |
net.core.rmem_max | Kích thước cửa sổ nhận tối đa |
net.core.wmem_max | Kích thước cửa sổ truyền tối đa |
net.core.optmem_max | Bộ đệm bộ nhớ tùy chọn tối đa |
net.core.netdev_max_backlog | Các gói tin tồn đọng chưa được xử lý trước khi hạt nhân bắt đầu loại bỏ |
net.ipv4.tcp_rmem | Bộ nhớ dự trữ cho bộ đệm đọc TCP |
net.ipv4.tcp_wmem | Bộ nhớ dự trữ cho bộ đệm gửi TCP |
Kernel, ngăn xếp mạng, trình xử lý bộ nhớ, tốc độ CPU và các thông số quản lý năng lượng có thể có tác động lớn đến hiệu suất mạng. Một khuyến nghị phổ biến là áp dụng cho thông lượng mạng profile sử dụng lệnh điều chỉnh. Lệnh này sẽ sửa đổi một số cài đặt hệ điều hành để ưu tiên các ứng dụng mạng.
Kiểm tra:
điều chỉnh-quản lý hoạt động
Bộ:
tune-adm profile thông lượng mạng
5.8 Thiết bị mạng tồn đọng
Tính năng này giúp cải thiện hiệu suất mạng bằng cách quản lý lưu lượng truy cập đến hiệu quả, giảm mất gói tin, giảm độ trễ và tăng thông lượng. Điều này dẫn đến trải nghiệm người dùng tốt hơn và phản hồi hệ thống nhanh hơn.
Theo mặc định, nó được bật trong hầu hết các hệ điều hành Linux. Để kiểm tra giá trị mặc định:
Hệ thống net.core.netdev_max_backlog
Giá trị tối đa cho netdev_max_backlog có thể thay đổi tùy thuộc vào các yếu tố như phiên bản kernel, phần cứng, bộ nhớ và khối lượng công việc. Trong nhiều trường hợp, 8192 được coi là giá trị tốt. sysctl -w net.core.netdev_max_backlog=8192
5.9 Cấu hình và điều chỉnh dành riêng cho nền tảng
5.9.1 Bộ xử lý Intel® Xeon® có thể mở rộng thế hệ thứ 4
Quản lý năng lượng của bộ xử lý Intel® Xeon® Scalable thế hệ thứ 4 của Intel® cực kỳ mạnh mẽ so với bộ xử lý Intel® Xeon® Scalable thế hệ thứ 3. Để tránh lõi chuyển sang trạng thái năng lượng thấp, hãy thử giảm số lượng lõi đang sử dụng để giữ chúng ở trạng thái thức lâu hơn.
Thiết lập BIOS được khuyến nghị để có hiệu suất cao nhất
- Bật/tắt siêu phân luồng (dựa trên yêu cầu khối lượng công việc và mục tiêu hiệu suất) trên CPU.
- Thiết lập hệ thống chuyên nghiệpfile để đạt hiệu suất tối đa.
GHI CHÚ
Điều này dẫn đến mức tiêu thụ điện năng cao hơn - Đặt quản lý nguồn CPU thành Hiệu suất tối đa để ưu tiên hiệu suất CPU tối đa hơn hiệu quả sử dụng điện năng.
- Bật Turbo Boost. Tắt Turbo Boost trong cài đặt BIOS của hệ thống thường ngăn CPU tăng tốc độ xung nhịp vượt quá tần số cơ bản.
- GHI CHÚ
Việc tắt Turbo Boost có thể phù hợp với một số trường hợp sử dụng nhất định khi hiệu suất ổn định, hiệu quả sử dụng điện năng hoặc quản lý nhiệt được ưu tiên hơn hiệu suất tối đa. - Tắt tính năng Ảo hóa I/O gốc đơn (SR-IOV) nếu hệ thống không sử dụng công nghệ ảo hóa.
- Vô hiệu hóa trạng thái C để chỉ thị cho CPU duy trì hoạt động và ngăn chặn việc chuyển sang trạng thái nhàn rỗi sâu hơn.
- Vô hiệu hóa C1E để đảm bảo CPU vẫn hoạt động và không chuyển sang trạng thái nhàn rỗi của C1E.
- Đặt tần số uncore ở mức tối đa để hướng dẫn hệ thống hoạt động ở tần số cao nhất có thể.
- Trên nền tảng Dell, hãy đặt Mô phỏng lõi Bảng mô tả APIC nhiều (MADT) thành Tuyến tính (hoặc Vòng tròn tùy thuộc vào BIOS) để cung cấp ánh xạ rõ ràng và có thể dự đoán được các lõi CPU.
Điều chỉnh mức hệ điều hành được đề xuất để tối ưu hóa hiệu suất
- Đặt bộ điều chỉnh tần số CPU thành hiệu suất. cpupower frequency-set -g performance cpupower frequency-info
- Vô hiệu hóa C-States. cpupower idle-set -D0
- Đặt bộ đệm Rx (rmem) và Tx (wmem) lõi thành giá trị tối đa. sysctl -w net.core.rmem_max=16777216 sysctl -w net.core.wmem_max=16777216
- Thiết lập backlog thiết bị mạng. sysctl -w net.core.netdev_max_backlog=8192
- Thiết lập điều chỉnh chuyên nghiệpfile (phụ thuộc vào khối lượng công việc để có thông lượng/độ trễ).
tune-adm profile thông lượng mạng
Điều chỉnh mức bộ điều hợp được khuyến nghị để tối ưu hóa hiệu suất
- Giới hạn số lượng hàng đợi để sử dụng cho lưu lượng ứng dụng. Sử dụng số lượng hàng đợi tối thiểu cần thiết để giữ cho các lõi CPU liên quan hoạt động để ngăn chúng vào trạng thái nhàn rỗi sâu hơn (điều chỉnh theo khối lượng công việc): ethtool -L kết hợp 32
- Đặt tỷ lệ điều tiết ngắt. ethtool -C adaptive-rx tắt adaptive-tx tắt rx-usecs-high 50 rx-usecs 50 tx-usecs 50
Hãy thử điều chỉnh bộ hẹn giờ truyền/nhận/hợp nhất ưu tiên cao hơn (80/100/150/200) hoặc thấp hơn (25/20/10/5) để tìm giá trị tối ưu cho khối lượng công việc. - Thiết lập kích thước vòng Rx/Tx. ethtool -G rx 4096 tx 4096
GHI CHÚ
Nếu bạn thấy gói Rx bị loại bỏ bằng ethtool -S| grep drop, hãy thử giảm kích thước vòng xuống <4096. Cố gắng tìm giá trị tối ưu cho khối lượng công việc mà các gói không bị loại bỏ. - Đặt IRQ Affinity. Sử dụng cores local cho NIC hoặc ánh xạ core cụ thể (trong đó # cores bằng với số hàng đợi được đặt trong 1 trên trang 26. systemctl stop irqbalance set_irq_affinity -X local HOẶC set_irq_affinity -X
5.9.2 AMD EPYC
Bộ xử lý AMD EPYC là CPU mạnh mẽ dành cho máy chủ và trung tâm dữ liệu, được xây dựng trên kiến trúc Zen của AMD. Các thiết lập bên dưới là từ dòng EPYC thế hệ thứ 4 của AMD.
Thiết lập BIOS được khuyến nghị để có hiệu suất cao nhất
- Bật chế độ tùy chỉnh để cho phép người dùng điều chỉnh hiệu suất CPU, mức tiêu thụ điện năng và các cài đặt khác. Điều này giúp tinh chỉnh hệ thống để cân bằng tốt nhất giữa hiệu suất và hiệu quả năng lượng.
- Cho phép tăng cường hiệu suất lõi để CPU tự động tăng tốc độ xử lý các tác vụ chuyên sâu hơn, cải thiện hiệu suất tổng thể.
- Vô hiệu hóa điều khiển trạng thái C toàn cục để ngăn CPU chuyển sang trạng thái tiết kiệm năng lượng sâu hơn được gọi là trạng thái C, có thể duy trì khả năng phản hồi.
GHI CHÚ
Việc vô hiệu hóa trạng thái C có thể gây ra mức tiêu thụ điện năng bổ sung và tăng nhiệt độ. Theo dõi cả hai để biết khối lượng công việc. - Bật/tắt Đa luồng đồng thời (SMT) trên CPU, dựa trên yêu cầu khối lượng công việc và mục tiêu hiệu suất. SMT tương đương với Siêu phân luồng trên CPU Intel.
GHI CHÚ
Để có hiệu suất tối ưu, hãy tham khảo mục Điều chỉnh cài đặt trình điều khiển i40e ở trang 13 và Điều chỉnh nền tảng (i40e không cụ thể) ở trang 19 để biết mức điều chỉnh hệ điều hành và bộ điều hợp được đề xuất.
Liên kết bộ chuyển đổi
Liên kết Linux là một tính năng mạnh mẽ có thể cải thiện đáng kể hiệu suất mạng, khả năng dự phòng và khả năng chịu lỗi trong môi trường máy chủ. Tuy nhiên, điều quan trọng cần lưu ý là nó yêu cầu phần cứng mạng tương thích và cấu hình phù hợp trên cả máy chủ và bộ chuyển mạch để hoạt động bình thường.
Trình điều khiển liên kết trong Linux cho phép bạn tổng hợp nhiều giao diện mạng vật lý thành một giao diện liên kết. Giao diện liên kết này xuất hiện như một giao diện mạng ảo duy nhất cho hệ điều hành và các ứng dụng.
GHI CHÚ
Bond là một giao diện logic, do đó không thể thiết lập mức độ tương thích CPU trực tiếp trên giao diện bond (ví dụample, bond0). Nghĩa là nó không có quyền kiểm soát trực tiếp đối với việc xử lý ngắt hoặc mối quan hệ CPU. Mối quan hệ CPU phải được cấu hình cho các giao diện cơ bản là một phần của liên kết.
Liên kết cung cấp nhiều chế độ hoạt động, mỗi chế độ có những đặc điểm riêng.
Cách thức | Kiểu |
0 | Vòng tròn |
1 | Sao lưu hoạt động |
2 | XOR |
3 | Phát tin |
4 | LACP |
5 | Truyền tải cân bằng |
6 | Cân bằng tải thích ứng |
Có nhiều phương pháp khác nhau để tạo liên kết trong Linux. Một trong những phương pháp phổ biến nhất là sử dụng cấu hình mạng files (ví dụample, /etc/network/ interfaces hoặc /etc/sysconfig/network-scripts/ifcfg-bondX).
Cấu hình sử dụng cấu hình mạng Files
Các bước sau đây tạo liên kết thông qua cấu hình mạng files.
- Chọn hai hoặc nhiều cổng NIC để liên kết (ví dụ:ample, ethX và ethY)
- Cấu hình NIC mở Files trong /etc/sysconfig/network-scripts/ cho Giao diện NIC cần thiết (ví dụample, vi ifcfg-ethX và vi ifcfg-ethY) và thêm đoạn văn bản sau:
MASTER=bondN [Lưu ý: N là số nguyên để chỉ số trái phiếu.] SLAVE=yes - Tạo một tập lệnh mạng lưới liên kết file sử dụng vi /etc/sysconfig/networkscripts/ifcfg-bondN và nhập văn bản sau:
DEVICE=bondN [Lưu ý: N là số nguyên để đề cập đến số liên kết] ONBOOT=có USERCTL=không BOOTPROTO=dhcp (hoặc) không có
IPADDR=200.20.2.4 [bắt buộc nếu BOOTPROTO=none] NETMASK=255.255.255.0 [bắt buộc nếu BOOTPROTO=none] NETWORK=200.20.2.0 [bắt buộc nếu BOOTPROTO=none] BROADCAST=200.20.2.255 [bắt buộc nếu BOOTPROTO=none] BONDING_OPTS=”mode=1 miimon=100″
GHI CHÚ
Mode có thể là bất kỳ số nguyên nào từ 0 đến 6 tùy theo yêu cầu. - Khởi động lại các dịch vụ mạng bằng lệnh service network restart hoặc systemctl restart NetworkManager.service
Khắc phục sự cố hiệu suất
7.1 Sử dụng CPU
Kiểm tra mức sử dụng CPU trên mỗi lõi khi khối lượng công việc đang chạy.
Lưu ý rằng việc sử dụng trên mỗi lõi có liên quan nhiều hơn đến hiệu suất so với việc sử dụng CPU tổng thể vì nó cung cấp ý tưởng về việc sử dụng CPU trên mỗi hàng đợi mạng. Nếu bạn chỉ có một vài luồng chạy lưu lượng mạng, thì bạn có thể chỉ sử dụng một vài lõi. Tuy nhiên, nếu các lõi đó ở mức 100%, thì thông lượng mạng của bạn có thể bị giới hạn bởi việc sử dụng CPU và đã đến lúc thực hiện các thao tác sau:
- Điều chỉnh mức điều tiết IRQ/kích thước vòng như được nêu chi tiết trong phần Ngắt điều tiết.
- Tăng số luồng ứng dụng để phân bổ tải CPU trên nhiều lõi hơn. Nếu tất cả các lõi đang chạy ở mức 100% thì ứng dụng của bạn có thể bị ràng buộc bởi CPU thay vì mạng.
Các công cụ phổ biến hiện có:
- đứng đầu
— Nhấn 1 để mở rộng danh sách CPU và kiểm tra xem CPU nào đang được sử dụng.
— Lưu ý mức độ sử dụng.
— Lưu ý những quy trình nào được liệt kê là hoạt động nhiều nhất (đầu danh sách). - mpstat
Các ví dụ sau đâyampDòng lệnh đã được thử nghiệm trên Red Hat Enterprise Linux 7.x.
Nó hiển thị mức sử dụng CPU trên mỗi lõi (bằng cách tìm tổng phần trăm nhàn rỗi và trừ đi 100) và làm nổi bật các giá trị trên 80% bằng màu đỏ. 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 - perf top Tìm kiếm nơi các chu kỳ được sử dụng.
7.2 Bộ đếm i40e
Trình điều khiển i40e cung cấp danh sách dài các bộ đếm để gỡ lỗi giao diện và giám sát thông qua lệnh ethtool -S ethX. Có thể hữu ích khi theo dõi đầu ra trong khi khối lượng công việc đang chạy và/hoặc so sánh các giá trị bộ đếm trước và sau khi khối lượng công việc chạy.
- Để có được bản dump đầy đủ của bộ đếm i40e: ethtool -S ethX
- Để chỉ theo dõi các bộ đếm không phải số không: watch -d (ethtool -S ethX) | egrep -v :\ 0 | column
Một số điều cần lưu ý: - rx_dropped có nghĩa là CPU không xử lý bộ đệm đủ nhanh.
- port.rx_dropped có nghĩa là có điều gì đó không đủ nhanh trong khe cắm/bộ nhớ/hệ thống.
7.3 Bộ đếm mạng
Kiểm tra netstat -s trước/sau khi chạy khối lượng công việc.
Netstat thu thập thông tin mạng từ tất cả các thiết bị mạng trong hệ thống. Do đó, kết quả có thể bị ảnh hưởng từ các mạng khác ngoài mạng đang thử nghiệm. Đầu ra từ netstat -s có thể là chỉ báo tốt về các vấn đề hiệu suất trong hệ điều hành Linux hoặc hạt nhân. Tham khảo hướng dẫn điều chỉnh hệ điều hành, chẳng hạn như Hướng dẫn điều chỉnh hiệu suất mạng Red Hat Enterprise Linux, để biết thêm thông tin chi tiết về điều chỉnh hệ điều hành nói chung.
7.4 Nhật ký hệ thống
Kiểm tra nhật ký hệ thống để tìm lỗi và cảnh báo (/var/log/messages, dmesg).
7.5 Công cụ Intel svr-info
Intel cung cấp một công cụ svr-info (xem https://github.com/intel/svr-info) cho Linux, ghi lại các chi tiết phần cứng và phần mềm có liên quan từ máy chủ. Đầu ra svr-info có thể cực kỳ hữu ích để xác định các nút thắt cổ chai của hệ thống hoặc các thiết lập/điều chỉnh không được tối ưu hóa cho khối lượng công việc. Khi mở trường hợp hỗ trợ với Intel về các vấn đề hiệu suất liên quan đến Ethernet, hãy đảm bảo bao gồm đầu ra svr-info (văn bản file) cho mỗi máy chủ Linux trong cấu hình thử nghiệm.
- Tải xuống và cài đặt svr-info:
wget -qO- https://github.com/intel/svr-info/releases/latest/download/svrinfo.tgz| tar xvz cd svr-info
./svr-thông tin
> tên máy chủ.txt - Thu thập kết quả:
./svr-info > tên máy chủ.txt - Đính kèm một văn bản (.txt) file cho mỗi máy chủ để hỗ trợ Intel phân tích.
Khuyến nghị cho các kịch bản hiệu suất chung
8.1 Chuyển tiếp IP
- Cập nhật hạt nhân.
Một số kernel trong bản phân phối gần đây đã làm giảm hiệu suất định tuyến do những thay đổi trong kernel trong mã định tuyến bắt đầu bằng việc xóa bộ đệm định tuyến do bảo mật. Các kernel ngoài bản phân phối gần đây sẽ có các bản vá giúp giảm tác động đến hiệu suất của những thay đổi này và có thể cải thiện hiệu suất. - Vô hiệu hóa siêu phân luồng (lõi logic).
- Chỉnh sửa các tham số khởi động hạt nhân.
— Buộc tắt iommu (intel_iommu=off hoặc iommu=off) khỏi dòng khởi động hạt nhân trừ khi cần thiết cho ảo hóa
— Tắt quản lý nguồn điện: processor.max_cstates=1 idle=poll pcie_aspm=off - Giới hạn số lượng hàng đợi bằng với số lõi trên ổ cắm cục bộ (12 trong ví dụ này)ample). ethtool -L ethX kết hợp 12
- Pin ngắt chỉ tới ổ cắm cục bộ. set_irq_affinity -X cục bộ ethX HOẶC set_irq_affinity -X cục bộ ethX
GHI CHÚ
Có thể sử dụng -X hoặc -x tùy thuộc vào khối lượng công việc. - Thay đổi kích thước vòng Tx và Rx khi cần. Giá trị lớn hơn sẽ tốn nhiều tài nguyên hơn nhưng có thể cung cấp tốc độ chuyển tiếp tốt hơn. ethtool -G ethX rx 4096 tx 4096
- Vô hiệu hóa GRO khi định tuyến.
Do sự cố liên quan đến hạt nhân đã biết, GRO phải được tắt khi định tuyến/chuyển tiếp. ethtool -K ethX gro off trong đó ethX là giao diện Ethernet cần sửa đổi. - Vô hiệu hóa điều tiết ngắt thích ứng và đặt giá trị tĩnh. ethtool -C ethX adaptive-rx off adaptive-tx off ethtool -C ethX rx-usecs 64 tx-usecs 64
GHI CHÚ
Tùy thuộc vào loại bộ xử lý và khối lượng công việc, các thông số hợp nhất cho RX và TX có thể được điều chỉnh để cải thiện hiệu suất (hoặc giảm mất khung hình).
- Tắt tường lửa. sudo systemctl disable firewalld sudo systemctl stop firewalld
- Bật chuyển tiếp IP. sysctl -w net.ipv4.ip_forward=1
- Cấu hình các giá trị tối đa cho kích thước bộ đệm ổ cắm nhận và gửi. sysctl -w net.core.rmem_max=16777216 sysctl -w net.core.wmem_max=16777216
GHI CHÚ
Tùy thuộc vào khối lượng công việc hoặc yêu cầu, những giá trị này có thể thay đổi so với giá trị mặc định.
8.2 Độ trễ thấp
- Tắt siêu phân luồng (lõi logic).
- Đảm bảo thiết bị mạng nằm cục bộ ở numa core 0.
- Ghim điểm chuẩn vào lõi 0 bằng cách sử dụng tasket -c 0.
- Tắt irqbalance bằng lệnh systemctl stop irqbalance hoặc systemctl disable irqbalance
- Chạy tập lệnh affinity để phân bổ trên các lõi. Hãy thử cục bộ hoặc tất cả.
- Tắt chế độ điều tiết ngắt. ethtool -C ethX rx-usecs 0 tx-usecs 0 adaptive-rx off adaptive-tx off rxusecs- high 0
- Giới hạn số lượng hàng đợi bằng với số lõi trên ổ cắm cục bộ (32 trong ví dụ này)ample). ethtool -L ethX kết hợp 32
- Chỉ ngắt chân cắm vào ổ cắm cục bộ (tập lệnh được đóng gói với nguồn trình điều khiển i40e). set_irq_affinity -X ethX cục bộ
- Sử dụng điểm chuẩn đã thiết lập như netperf -t TCP_RR, netperf -t UDP_RR hoặc NetPipe. netperf -t TCP_RR hoặc netperf -t UDP_RR
- Ghim chuẩn vào một lõi duy nhất trong nút NUMA cục bộ. tasket -c
Dòng Intel® Ethernet 700
Hướng dẫn điều chỉnh hiệu suất Linux
Tháng 2024 năm XNUMX
Tài liệu số: 334019, Sửa đổi: 1.2
Tài liệu / Tài nguyên
![]() |
Điều chỉnh hiệu suất Linux Intel Ethernet 700 Series [tập tin pdf] Hướng dẫn sử dụng 334019, Điều chỉnh hiệu suất Linux dòng Ethernet 700, Dòng Ethernet 700, Điều chỉnh hiệu suất Linux, Điều chỉnh hiệu suất, Điều chỉnh |