Tôi gặp sự cố khi đảm bảo thông lượng mạng cần thiết trên máy chủ được kết nối với máy phân tích phổ Signal Hound qua giao diện mạng 10GbE.Về cơ bản, tôi có thể nhận được thông lượng tốt khi chỉ chạy quy trình chụp radio, nhưng khi tôi chạy các quy trình khác, thông lượng bắt đầu giảm. Tôi đang sử dụng bộ điều hợp ethernet Aquantia PCIe với bộ điều hợp QNAP SFP+ 10GbE Thunderbolt 3.
Khi tôi đang chạy một chương trình python đơn giản để thăm dò ý kiến từ API máy phân tích phổ ở chế độ phát trực tuyến, tất cả đều hoạt động tốt ở băng thông tối đa (~ 800MB/s). Khi tôi làm
$ căng thẳng --cpu 8 --io 8 --vm 8 --hdd 8
cạnh nhau, nó giảm xuống còn khoảng 600 MB/giây và tôi bắt đầu giảm rất nhiều dữ liệu.
Những điều tôi đã thử:
- Đang cập nhật trình điều khiển
- Lộn xộn với các tham số hợp nhất và nhiều tùy chọn ethtool (MTU, v.v.)
- Tắt siêu phân luồng và cách ly quy trình thành một lõi (8 trên 8) thông qua ghim mối quan hệ cpu
- Điều này cũng liên quan đến việc cách ly các ngắt kết nối mạng với lõi của chính chúng (7 trên 8)
- Tôi cũng thay đổi bộ điều chỉnh lõi thành "hiệu suất" để nó luôn ở tần số tối đa
- Tôi cũng đã thử tắt hầu hết các ngắt khác cho lõi 7 và 8 để ngăn chúng chạy chậm lại, được xác minh bởi bảng điều khiển netdata
- Về cơ bản tôi đã thử mọi thứ trong đây
Về cơ bản, tôi biết rằng nó có thể chạy trong thời gian thực vì nó hoạt động tốt khi chỉ giới hạn ở 2 lõi. Nhưng vì một số lý do, mặc dù các lõi khác không can thiệp vào chu kỳ CPU hoặc IRQ mạng, nhưng khi lõi 1-6 ở mức tải nặng, chúng sẽ làm chậm quá trình chính rất nhiều.
Nếu nó giúp, tôi thấy rằng --vm 4
tùy chọn cho thư giãn
gây ra sự chậm chạp nhất, vì vậy tôi nghi ngờ rằng nó có liên quan đến việc cấp phát bộ nhớ và có lẽ là giao diện DRAM với card mạng.
Về cơ bản, tôi đang cố gắng lấy mọi gói tin từ đài phát thanh trên một máy Ubuntu 20.04 (rất mạnh mẽ). Có ai có bất kỳ kinh nghiệm với các ứng dụng như thế này?
CHỈNH SỬA: Tôi đã sao chép một số đường cong hiệu suất ở đây:
Đây là hiệu ứng tôi thấy
Vì vậy, đây là việc sử dụng.Lõi 6 ở mức 100% với softirqs cả trong giai đoạn căng thẳng cao và giai đoạn "chỉ nắm bắt". Tôi đã thử chia dữ liệu mạng thành hai lõi (5 và 6), nhưng một trong số chúng luôn được tải trong khi lõi kia có vẻ rõ ràng, ngay cả khi chúng có số lượng ngắt tương tự nhau.
Số lượng softirqs thực tế không may giảm xuống trên CPU 6 trong khoảng thời gian chạy thử nghiệm căng thẳng.
Đây là hiệu ứng tôi thấy trên softnet CPU6.
Ngoài ra, các khoảng thời gian gián đoạn dường như vẫn tương đối giống nhau, mặc dù chúng kém nhất quán hơn một chút trong giai đoạn căng thẳng cao độ.
Đây là tốc độ mạng thẳng và có vẻ hơi không nhất quán trong cả hai giai đoạn.
Tôi đã tìm kiếm khá kỹ các điểm bất thường (mặc dù có rất nhiều sơ đồ trong netstat) và có vẻ như không có bộ nhớ liên tiến trình trong giai đoạn căng thẳng cao độ. Điều này có thể dẫn đến các vấn đề?
Ai cần thêm lô thì báo mình nhé. Tôi không thể suy ra vấn đề từ những điều này, nhưng tôi hy vọng đó là đủ thông tin để đưa ra các giải pháp tiềm năng.
Cảm ơn một lần nữa!