这篇文章讨论了超低延迟(ULL)通信的重要性以及低延迟智能网卡的设计思路。作者首先提到了高频交易机构最早采用智能网卡来降低延迟,并且这一技术后来也被应用于其他领域,如人工智能训练。文章分析了几种常见的低延迟解决方案,包括Kernel Bypass、UDP Market Data Parser和TCP Offload Engine(TOE)。
作者进一步介绍了高频交易的常见业务模式,包括分离接口、行情过滤和重新编码。然后,文章讨论了传统CPU报文处理的缺陷,特别是报文解析的延迟,以及如何通过P4和硬件加速来降低这些延迟。
文章提到了两家公司,Pensando和Fungible,它们采用了不同的架构来处理报文,并提供了对这些架构的详细解释。Pensando的架构包括P4流水线引擎和本地缓存,以提高报文处理效率。而Fungible采用了Data Cluster结构,支持RTC编程,兼容C代码程序,同时采用了DAG处理方式,以实现低延迟和高并行。
最后,作者总结了文章的主要观点,即可以借鉴Pensando和Fungible等公司的思路和技术,通过优化FPGA网卡的设计和工具链来降低延迟,同时需要在高并行性和灵活性之间做出权衡。文章为那些对低延迟智能网卡设计感兴趣的读者提供了有用的思考和参考。
In this articles we investigate on how branches influence the performance of the code and what can we do to improve the speed of our branchfull code.文章主要探討了程式碼中分支結構對性能的影響,以及開發人員如何優化這些分支以提高效能。摘要如下:
-
摘要:
- 程式碼中的分支結構可能會導致預測失敗,進而影響程序的性能。分支預測失敗的成本可能會很高,特別是在迴圈和函數呼叫中。
- 分析工具能幫助開發人員識別和優化分支,從而提高程式碼的性能。
-
結論:
- 通過瞭解和優化分支結構,開發人員能夠縮短執行時間,提高程式的效率。有效的分支預測和優化是達成高性能程式碼的關鍵。
-
適合閱讀的對象:
- 此文章適合具有一定程式設計經驗,並且希望了解如何優化程式碼性能的開發人員閱讀。透過瞭解分支結構的工作原理以及如何優化它們,開發人員能夠撰寫出更高效的程式碼。
這篇文章提供了實用的資訊和策略,對於希望提高程式碼效能的開發人員來說,值得一讀。
这篇文章讨论了系统和网络调优,特别关注Linux服务器的低延迟技术。作者提到了知乎上关于这一主题的讨论不够充分,并分享了自己的见解。文章分为两部分,本文主要涵盖系统调优,另一篇将探讨网络调优,特别是使用solarflare网卡来降低网络IO延迟。
文章的重点在于强调延迟的稳定性对于实时任务的重要性。作者提到了"kernel bypass",即绕过内核处理,以降低延迟。在实时任务中,避免进入内核,避免中断的关键,因为即使中断发生时线程是空闲的,CPU缓存也会被污染,从而影响下一次请求的延迟。
作者分享了一些修改系统设置的方法,如绑定关键线程到特定核心,避免中断源向核心发送中断等。此外,他提到了通过修改内核以延长中断发送周期来进一步提高延迟稳定性的可能性。
文章最后提到了两个原则:一是如果可以推迟一件事情,就应该推迟,二是不要为不使用的东西付费,这在性能优化方面尤为重要。
适合阅读这篇文章的对象包括对Linux服务器性能调优和低延迟技术感兴趣的系统工程师和网络工程师,特别是那些需要处理实时任务和对延迟稳定性有高要求的人员。文章提供了一些有用的见解和方法,可用于优化系统以降低延迟。
这篇文章主要探讨了关于Linux网络IO低延迟方案,特别是针对solarflare高性能网卡的使用经验。文章提到了三种与solarflare相关的kernel bypass软件解决方案:Onload、ef_vi和Tcpdirect,并分享了对它们性能的测试结果和个人使用感受。
作者提到了对这些解决方案进行了实际测试,特别是通过实现一个贴合实际的echo测试来测量延迟。在测试中,作者发现最佳的延迟约为960ns +/- 90ns,使用了最新的X2系列网卡、ef_vi接收UDP、Tcpdirect发送TCP,并采用了屏蔽中断的内核优化。
此外,文章还简要谈到了对三个不同的stack的使用感受:
- Onload:易用性强,适合新手入门,性能相对较好。
- ef_vi:提供最佳性能,但API较复杂,适合专业用户。
- Tcpdirect:基于ef_vi,提供上层协议支持,适合UDP发送端和整个TCP使用。
最后,文章提到了如何测量网卡到网卡的延迟,包括使用交换机镜像、tap设备、本地抓包工具等不同方法,并详细讨论了各种本地记录网络包时间戳的方法,包括tcpdump、onload_tcpdump、solar_capture、通过ef_vi/tcpdirect API获取网卡时间戳、sfptpd等。
总的来说,这篇文章提供了关于Linux网络IO低延迟方案以及solarflare网卡的使用经验和测试结果,对于需要优化网络性能的开发者和工程师可能会有一定参考价值。
該博客文章探討了電子交易中低延遲的重要性及其技術演變,尤其是Solarflare通過其硬件和軟件解決方案如何實現低延遲。以下是文章的主要內容及其他相關信息的總結:
-
電子交易與低延遲:
- 電子交易行業中,時間和金錢之間有直接的聯繫。十年前,作者開始向華爾街交易員銷售10GbE網絡接口卡(NIC),當時交易員通常會分享微秒(百萬分之一秒)改善交易所帶來的價值。現在,這些交易員已經在測量奈秒(十億分之一秒)上的增益【130†(source)】。
-
Solarflare的技術演變:
- Solarflare通過其Onload軟件加速堆棧領先市場,專注於加速伺服器端的UDP/TCP網絡用於電子交易。每一代新的10GbE網絡適配器都進一步減少了網絡延遲,同時也減少了抖動。這些進步主要源於硬件的改進,但Onload堆棧的許多重要增強也對整個系統性能的提升作出了重大貢獻【130†(source)】。
-
TCPDirect技術:
- 五年前,Solarflare重新考慮了Onload中的TCP/UDP網絡堆棧,並確定如果開發人員願意使用新的C語言應用程序編程接口(API),則有可能實現額外的35-50%的性能增益。這個新API從一開始就專注於性能,並且只實現了完整BSD Sockets API的一個子集。每個API調用都經過高度優化以提供最佳性能【130†(source)】。
-
低延遲技術的一般應用:
- 低延遲網絡通常指在執行交易與確認交易之間有最小延遲的網絡。通過使用專用的硬件和軟件,例如場可編程閘陣列(FPGAs)和應用特定集成電路(ASICs),以及高速光纖電纜來實現這一目標【134†(source)】。
- 另外,通過共住、連接到直接交換源、減少網絡交換機和實施基於FPGA的硬件,依賴延遲的公司可以減少刻度至交易延遲【135†(source)】。
-
低延遲交易的競爭優勢:
- 低延遲交易是一個高度競爭的賽跑,交易公司通過擁有最快的基礎設施,並且更重要的是,將其操作定位得越接近交易源,以比其他交易員更快地獲取信息【136†(source)】。
- 低延遲網絡技術被電子交易應用程序用於提供更好的執行率並允許更多的在線處理,例如使用FIX協議實施電子交易【137†(source)】。
這篇博客以及其他相關資訊展示了低延遲技術在電子交易中的重要性,以及如何通過硬件和軟件創新來實現低延遲,以保持在高競爭的交易市場中保持競爭力。
这篇文章详细介绍了低延迟交易系统的不同方面,包括交易所交易系统、证券期货公司交易系统以及做市商系统。以下是对每个部分的简要总结:
-
交易所交易系统:
- 介绍了交易所系统架构,强调了低延迟对于处理大量订单的重要性。
- 讨论了交易所系统的优化,包括分布式撮合系统、独立的消息总线和低延迟通信网络。
- 提到了时钟同步和时戳标记在交易系统中的关键作用,以确保公平的交易。
-
证券期货公司交易系统:
- 描述了证券期货公司交易系统的架构,强调了时钟校准和时延监控的重要性。
- 讨论了行情加速、报盘加速和主机加速等技术,以降低交易延迟。
- 强调了行情过滤和重编码的方法,以减小传输带宽和串行时延。
-
做市商系统:
- 解释了做市商的任务和重要性,他们为市场提供流动性。
- 讨论了期权交易系统的复杂性,尤其是股票期权交易。
- 提到了行情传输系统、行情过滤和重编码、行情分发等关键方面,以支持期权套利策略。
整体而言,这篇文章提供了深入的洞察力,关于低延迟交易系统的各个方面,从架构到优化措施再到实际策略的应用。对于从事金融科技领域的专业人士或对低延迟交易系统感兴趣的读者来说,这是一篇非常有价值的资料。
該網誌文章描述了如何通過優化一個基於UDP的應用來實現低延遲,尤其是在10Gbps以太網環境中。以下是文章的重點:
-
實驗設置:
- 使用兩台物理Linux主機,一台作為客戶端,另一台作為服務器,通過簡單的UDP回聲協議進行通信。
- 客戶端發送一個小的UDP幀(32字節的有效負載),並等待回復,測量往返時間(RTT)。服務器在收到封包後立即回送。
- 確保
iptables
和conntrack
不干擾流量,並手動分配多隊列網絡卡的中斷以保證它們在CPU之間均勻分配【98†(Cloudflare Blog)】。
-
低延遲設置:
- 設置如低
rx-usecs
或禁用LRO可能會減少吞吐量並增加中斷的次數,這意味著為低延遲優化系統可能會使其更容易受到服務拒絕攻擊的影響【102†(Cloudflare Blog)】。
- 設置如低
-
低延遲的其他考慮因素:
- 在無線網絡中,低延遲可以通過不同的無線應用在私人5G,Wi-Fi和Cisco超可靠無線回程(URWB)部署中實現。影響端到端延遲的因素包括雲或數據中心的接近程度以及降低延遲的優化【103†(Cisco)】。
- 測量網絡通信從起點到完成需要多長時間是改善網絡延遲的第一步。網絡經理可以選擇多種工具來完成這項任務,包括Ping,Traceroute和My traceroute(MTR)【104†(TechTarget)】。
- 適當的網絡設計是延遲的一個功能。無線延遲必須與端到端的IP延遲和往返延遲一起考慮。應用程序位於哪裡,數據在數據中心,雲或網絡邊緣被處理的地方越接近,可能的延遲就越低【105†(Cisco Blogs)】。
通過這些步驟和考慮因素,開發人員和網絡工程師可以優化他們的系統以實現低延遲,從而提高應用程序的性能和用戶體驗。