《1.基于eBPF構建可編程調度框架.pptx》由會員分享,可在線閱讀,更多相關《1.基于eBPF構建可編程調度框架.pptx(22頁珍藏版)》請在三個皮匠報告上搜索。
1、首屆中國首屆中國eBPFeBPF研討會研討會可編程調度框架交流研討主講人:陳輝2022-11-12首屆中國首屆中國eBPFeBPF研討會研討會目錄錄01背景介紹02業界調研03技術方案04未來展望首屆中國首屆中國eBPFeBPF研討會研討會背景介紹01首屆中國首屆中國eBPFeBPF研討會研討會背景終端場景云場景在線業務調度器游戲場景調度器視頻場景閱讀場景業務訴求:性能最優,功耗達標 調度策略:場景感知,按需選核,快速調頻等業務訴求:提升CPU利用率,干擾隔離調度策略:分層調度,干擾感知&隔離離線業務業界調度策略(不同性能需求,不同調度策略):功耗感知:EAS;降低響應時延:Muqss;資源隔
2、離與共享:Caladan;提升吞吐:shinjuku;首屆中國首屆中國eBPFeBPF研討會研討會技術問題“千人千面”,定制策略多,架構臃腫腫腐化,維護維護成本高XX場景 低時延XX場景 流暢體驗XX場景 高資源利用率XX場景極致小型化xx策略xx策略xx策略xx策略UserKernelIO調度內存文件系統l抽象化,模塊化導致信息丟失、協同困難,性能不佳XX場景 低時延XX場景 流暢體驗XX場景 高資源利用率XX場景極致小型化IOUserKernel調度內存文件系統syscall模塊化、協同困難首屆中國首屆中國eBPFeBPF研討會研討會問題與目標維護困難驗證&部署困難產品人員策略共享困難定制
3、化需求多,分支多,無法upstreaming,維護成本高;搭建環境成本高,驗證&部署周期長,TTM長;缺乏策略共享機制開發人員重復開發架構用戶態與內核態調度語義丟失調度采用通用機制,無法精準匹配業務模型首屆中國首屆中國eBPFeBPF研討會研討會業界調研02首屆中國首屆中國eBPFeBPF研討會研討會2024-5-9發展歷程2004年Con Kolivas 提交“Pluggable cpu scheduler framework”patch2009年IEEE Student Conference on Research and Development 發表 Runtime CPU Schedu
4、ler Customization Framework for a flexible mobile operating system 論文 2019年Aleix Roca Nonell 發表 A Linux Kernel Scheduler Extension For Multi-Core Systems 論文 2021年SOSP 論文ghOst:Fast&Flexible User-Space Delegation of Linux Scheduling2021年Peter Oskolkov提交User-managed concurrency groupspatch2021年Roman Gu
5、shchin提交Controlling the CPU scheduler with BPFpatch首屆中國首屆中國eBPFeBPF研討會研討會2024-5-9Google ghOst scheduler Framework1)進程級可編程調度策略,不同進程間的調度策略之間互不影響;2)內核態ghost調度類感知任務狀態變化,并通知給用戶態線程Agent,由用戶態線程Agent負責策略執行;3)內核態感知任務狀態變化后,將任務狀態信息封裝成自定義消息,通過自定義通信機制,通知給用戶態線程Agent,并將CPU釋放給Agent線程,Agent線程獲取自定義消息,并執行對應的調度策略;APPli
6、bagent.so/libbase.so/libghost.so(StatusWord)(Channel)ghost Agent(friend Enclave)ghost Scheduler(CpuState)LocalEnclave(CpuRep(RunRequest/agent)(ghost_cpu_data*data_region)ghost(gbl_ctl_fd_)(StatusWordTable*gbl_sw_table_)struct ghost_enclavestruct ghost_status_wordstruct ghost_queuestruct ghost_txnsys
7、callCreate mmapmmapGHOST-CREATE_QUEUE_RING首屆中國首屆中國eBPFeBPF研討會研討會2024-5-9Google UMCG scheduler toolkitApplicationUser Scheduler FrameworkKernel Scheduler FrameworkCPUCPUCPUCPUW1W2W3W4W5W6S1S2S3S4S1S2S3S4W1W2W3W4Groupsyscall狀態同步UserSpaceKernelSpace同步線程切換同步線程切換Bypass 調度調度scheduler1、主要解決協程upcall的問題,可以實現
8、進程級可編程能力;2、Server線程負責Worker線程的調度,具體的調度方法在用戶態編程實現;大體思路:1、Server線程負責Worker線程的調度;2、Server線程可感知到Worker線程的阻塞行為,當Worker線程發生阻塞,則由Server線程拉起其他Worker線程進行運行,提升最大吞吐;3、主要應用在解決協程upcall問題,也可以用在安全沙箱上(利用進程級隔離能力);首屆中國首屆中國eBPFeBPF研討會研討會Facebook ebpf scheduler FrameworkLLVM/bcc tools(BPF bytecode)Linux CFS scheduling
9、classFacebook schedulerMixed request workloads1%X throughttick_preemptwakeup preemptBPFselect task rqebpf maptgid&idcgroup id1)基于ebpf的可編程調度的基本框架;2)基于ebpf 提供簡單的搶占策略;首屆中國首屆中國eBPFeBPF研討會研討會2024-5-9Syrup scheduler Framework業務需求:不同場景不同調度策略:“任務排布穩定”場景適合FCFS調度策略;“任務排布高度變化”場景適合搶占和資源分割的調度策略(如CFS);“內存敏感性”。低底噪
10、負載:1us or less!調度策略安全隔離:Syrup設計如何滿足業務需求:不同場景不同調度策略:基于eBPF和ghOSt,將調度裝換成策略匹配問題 低底噪負載:1us or less!調度策略安全隔離:引入全局仲裁器,為不同應用使能不同調度策略。首屆中國首屆中國eBPFeBPF研討會研討會技術方案03首屆中國首屆中國eBPFeBPF研討會研討會可編程調度框架Kernel programmable scheduler frameworkUser programmable scheduler policy調度選核選任務負載均衡topo_helperload_helpertag_helper基
11、礎調度策略庫(.lib)XX調度策略XX調度策略XX調度策略syscall/mapevent/map可編程基礎庫(tools)標簽管理(任務/進程/組/用戶)內存網絡文件系統 hook export1、可編程調度底座,提供基礎系統調用,事件通知,數據共享機制與一致性保護,打通用戶態與內核態,內核態組件之間信息通信。2、提供標簽化管理機制,支持任務/進程/組/用戶等對象的自定義標簽擴展,支持用戶態+內核態,內核態組件之間協同調度;3、剝離調度中的策略與機制,將策略層做為可擴展點暴露給用戶態編程,提供豐富的輔助方法和數據支持,支持現有調度策略擴展,新增調度類,調度器移植等多種調度擴展能力;4、提供
12、基礎的庫函數,支持用戶快速編排&擴展,用戶編程友好。UserKernel首屆中國首屆中國eBPFeBPF研討會研討會技術點技術點:形式化驗證驗證+安全加載載保障prog安全性 通過形式化驗證,字節碼簽名校驗,運行時上下文一致性保護,原子加載等機制保障可編程策略的安全性,做到安全動態加載。管理組組件+可編編程lib庫庫方便用戶戶開發驗證發驗證 提供可編程lib庫,支持多種高級語言和庫函數,方便用戶快速二次開發;提供管理組件,支持代碼掃描,自動化測試,策略推廣等。標簽標簽化管理 基于標簽機制提供身份管理功能。各系統統提供機制/策略 各內核模塊提供編程擴展接口和數據接口,提供可編程能力;整理版本兼容
13、KABI和差異化接口,保障移植性和擴展性。CO-RE+版本兼容KABI 提供版本兼容KABI,屏蔽結構體等變更差異,實現各內核版本二進制兼容。首屆中國首屆中國eBPFeBPF研討會研討會標簽機制Add field s64 tag in struct task and struct task_groupUser interfaces$your cpu subsystem cgroup directory/$customized cgroup/tag/proc/$pid/task/$pid/tagHelpersread and write tagbpf_sched_tg_tag_of()/bpf_
14、sched_task_tag_of()/bpf_sched_set_tg_tag()/bpf_sched_set_task_tag()convert sched entity to task or task_groupbpf_sched_entity_to_task()/bpf_sched_entity_to_tg()Benefits/Use casesuseful to classify the task or task_group such as foreground and background tasks,online and offline tasks,etcrealize coor
15、dinated scheduling between user-mode and kernel-mode,kernel subsystemsSamplesamples:bpf:Add bpf sched preempt sample program首屆中國首屆中國eBPFeBPF研討會研討會選核機制Hookssched:programmable:Add hook for select_task_rq_faircfs_wake_affinecfs_select_rqcfs_select_rq_exithelpersbpf:programmable:Add four helper function
16、s to get cpu statsched:programmable:Add helper function for cpu topologybpf:programmable:Add helper func to set cpus_ptr in taskBenefits/Use cases Useful to implement the most preferred core-selecting policy based on the actual scenario Implement dynamic CPU affinity,such as adjust CPU affinity base
17、 on load or utilSamplesamples:bpf:Add samples for cfs select core首屆中國首屆中國eBPFeBPF研討會研討會選任務機制Hookssched:programmable:Add hook for pick next taskcfs_tag_pick_next_entitybypass the logic of entity_before()Benefits/Use casesused to controls higher-priority tasks to be placed on the left side of the red-
18、black tree to ensure that they are executed first.Samplesamples:bpf:Add bpf sched pick task sample首屆中國首屆中國eBPFeBPF研討會研討會未來展望04首屆中國首屆中國eBPFeBPF研討會研討會后續計劃Kernel programmable scheduler framework基礎調度策略庫XX場景 高吞吐&低負載可編程調度框架NUMAAMPSMPSMTXX場景 性能&功耗XX場景 資源隔離其他場景try_to_wake_upselect_taskenqueue_taskupdate_loa
19、d_avgcpufreq_updat_utilschedulecheck_preemptpick_next_taskidle_balanceload_balanceschedule_tickexit_to_usercgroup_tagprocess_tagtask_tagsched_forkinit_util_avg第三方中間件cpu_tagsched_initSyscallisolationhotplugsignalpowerthemal計劃:1)支持新增調度類;2)與內核其他模塊聯動,如網絡,內存,鎖,中斷,信號,能基于一個場景編寫完整的解決方案;3)與用戶態調度框架協同,基于外界信息動態調整策略,實現動態策略;4)豐富用戶態的策略庫,支持編程友好;futex首屆中國首屆中國eBPFeBPF研討會研討會生態建設開發簡單高效開發l支持高級語言l豐富的基礎庫快速部署,縮短驗證周期l支持熱升級部署 prog發布部署安全可靠l數字簽名lprog商店pulll支持安全驗證l在線無縫部署發布prog推廣驗證交流&反饋社區首屆中國首屆中國eBPFeBPF研討會研討會Thanks!2024-5-