課程目錄:低延遲系統設計與深度優化培訓
        4401 人關注
        (78637/99817)
        課程大綱:

          低延遲系統設計與深度優化培訓

         

         

         

        第一部分:低延遲系統基礎

        要點:時間測量,感受納秒,CPU的旅行,常見操作的時間,低延遲系統的典型場景,高頻交易系統的特點、核心模塊和架構,網絡數據包,傳統網絡棧,影響延遲的因素,中斷,缺頁異常,系統調用,搶先式調度,NUMA,TLB,cache,精確測量時間的方法,RDTSC


        第二部分:案例研究之DPDK概覽

        要點:源于INTEL,INTEL軟件團隊簡介,DPDK簡要歷史,版本,協議,DPDK的架構,設計思想,核心組件,驅動層,KNI模塊,用戶空間的庫,包處理過程,安裝,試驗環境簡介,研究和學習方法


        第三部分:低延遲設計之內核穿透

        要點:兩大空間,深挖系統調用,寄存器切換,棧切換,緩存溫度,內核頁表隔離,Meltdown漏洞,案例分析之DPDK,解讀KNI驅動,案例分析之Solarflare,與傳統網絡訪問的比較


        第四部分:低延遲設計之回避中斷

        要點:中斷處理過程,中斷處理例程,硬件中斷,時鐘中斷,中斷親緣性,在Linux系統中設置中斷親緣性,任務調度,Tickless kernel,軟件中斷,Linux系統的軟件中斷,多CPU系統的中斷處理,矛盾重重的TLB-Shutdown中斷,Linux下的中斷處理,RES中斷,函數調用中斷,使用Kernelshark觀察線程的執行軌跡和被中斷打斷的場景,案例解析




        第五部分:內存訪問

        要點:內存層次體系,cache,cache結構,cache hit和cache miss,提高cache hit的關鍵思想,局部性,空間局部性和時間局部性,如何編寫cache友好的代碼,常用技巧,循環交換,C++的虛方法,頁表結構,頁表項,頁錯誤,Major Fault和Minor Fault,頁錯誤導致的延遲,大內存頁原理,Linux系統的大內存頁支持,分配大內存頁,評估大頁的性能,案例分析之DPDK,配置大內存頁


        第六部分:低延遲設計之NUMA基礎

        要點: UMA和NUMA,硬件結構,Linux系統的NUMA支持,內存布局,NUMA的軟件庫和API,numastat,跨節點訪問,節點距離,經驗數據,實例分析

        第七部分:低延遲設計之內存池

        要點:內核池和用戶態堆,堆簡介,分配和釋放內存的過程和開銷,內存池設計的方法,可利用的資源


        第八部分:低延遲設計之共享內存和相互通信

        要點:進程間通信,線程間通信,共享內存原理,使用共享內存通信,polling機制,同步,自旋鎖,隊列,無鎖設計,使用CPU的互鎖指令,案例分析


        第九部分:低延遲設計之綁定CPU(Pinning)

        要點: 對稱多處理(SMP),設置親緣性,taskset API和工具,在C/C++程序中設置線程親緣性,如何選擇CPU,定義綁定策略,在VTune中觀察實際執行線程的CPU,案例分析

        第十部分:案例研究之DPDK包處理框架(1.5小時)

        要點:兩種模式,Run-to-completion,流水線, 配置流水線,流水線實例解析,包轉發,負載均衡,流水線結構的可視化,DPDK的測試程序,解析DPDK的包處理過程,異?;A,處理異常的佳實踐