[{"data":1,"prerenderedAt":7587},["ShallowReactive",2],{"/blog/harmonyos-scheduling-strategy-research":3},{"id":4,"title":5,"body":6,"date":7562,"description":7563,"draft":7564,"extension":7565,"meta":7566,"navigation":209,"path":7577,"seo":7578,"stem":7579,"tags":7580,"toc":209,"__hash__":7586},"blog/blog/harmonyos-scheduling-strategy-research.md","鸿蒙操作系统（HarmonyOS）调度策略研究",{"type":7,"value":8,"toc":7523},"minimark",[9,13,21,24,28,32,35,38,60,63,143,154,157,160,167,358,364,375,378,452,456,459,545,664,667,743,750,754,757,855,858,862,869,874,881,884,1228,1231,1493,1612,1619,1624,1699,1863,1914,1918,1925,1969,1974,1977,1981,1988,1992,1995,2071,2075,2152,2381,2383,2705,2766,2864,2867,2993,3093,3404,3411,3415,3426,3829,3832,3836,3843,3847,3947,3954,3958,4093,4097,4100,4170,4174,4177,4180,4183,4387,4390,4405,4410,4413,4417,4420,4553,4558,4563,4757,4764,4768,4771,4861,4865,4868,4871,4898,4902,4911,4915,5196,5199,5242,5247,5251,5258,5290,5402,5407,5411,5414,5501,5504,5508,5511,5522,5525,5601,5605,5611,5725,5730,5734,5741,6034,6038,6041,6418,6899,6906,6909,6916,6989,6994,6999,7010,7013,7024,7050,7053,7057,7060,7162,7165,7241,7246,7249,7252,7255,7290,7293,7321,7326,7346,7349,7364,7373,7386,7402,7412,7421,7431,7445,7458,7472,7486,7496,7509,7519],[10,11,12],"p",{},"鸿蒙操作系统（HarmonyOS）是华为面向全场景智能终端自主研发的分布式操作系统，其调度体系的设计需要同时应对多核异构硬件、能效约束、用户体验流畅性与跨设备任务协同等多重挑战。",[10,14,15,16,20],{},"与 FreeRTOS 这类“把一件事做到极致”的实时内核不同，鸿蒙的调度是一个",[17,18,19],"strong",{},"从内核态到用户态、从单设备到多设备协同的分层调度生态","。它既要保证 UI 帧率的流畅，又要控制后台功耗，还要支持任务在手机、平板、PC 之间无缝迁移——这些目标之间存在天然矛盾，调度系统正是这些矛盾的“仲裁者”。",[10,22,23],{},"本文从鸿蒙的多内核分层架构出发，逐一拆解其在 IoT 端（LiteOS-A）与手机端（Linux 定制内核）的调度机制，重点分析 CFS 基础调度、能量感知调度（EAS）、QoS 感知调度、帧感知调度（FAS）、FFRT 用户态并发运行时以及分布式任务调度（DSched）六大核心模块。",[25,26,27],"h2",{"id":27},"引言",[29,30,31],"h3",{"id":31},"研究背景",[10,33,34],{},"2019 年 8 月，华为在全球开发者大会（HDC2019）上正式发布 HarmonyOS，将其定位为“面向未来、面向全场景的分布式操作系统”。鸿蒙的出现背景复杂：一方面是华为受到芯片供应限制后的战略自主性需求；另一方面，也是因为现有操作系统（Android/iOS）的单设备架构在万物互联时代已表现出明显局限。",[10,36,37],{},"在调度层面，鸿蒙面临的设计挑战远比传统操作系统复杂：",[39,40,41,48,54],"ul",{},[42,43,44,47],"li",{},[17,45,46],{},"异构多核","：现代旗舰 SoC（如麒麟 9000）集成了超大核、大核、小核、GPU、NPU 等多种计算单元，各单元的性能与功耗差异悬殊；",[42,49,50,53],{},[17,51,52],{},"多维优化目标","：需要同时优化 UI 帧率（用户体验）、应用启动时延（响应性）、后台功耗（续航）三个存在内在矛盾的目标；",[42,55,56,59],{},[17,57,58],{},"分布式协同","：任务可能需要在手机、平板、PC、智慧屏等不同设备间迁移执行，传统单机调度框架无法胜任。",[29,61,62],{"id":62},"鸿蒙发展历程",[64,65,66,84],"table",{},[67,68,69],"thead",{},[70,71,72,77,81],"tr",{},[73,74,76],"th",{"align":75},"left","版本",[73,78,80],{"align":79},"center","发布时间",[73,82,83],{"align":75},"关键调度特性",[85,86,87,99,110,121,132],"tbody",{},[70,88,89,93,96],{},[90,91,92],"td",{"align":75},"HarmonyOS 1.0",[90,94,95],{"align":79},"2019.08",[90,97,98],{"align":75},"LiteOS-A 调度，首发智慧屏",[70,100,101,104,107],{},[90,102,103],{"align":75},"HarmonyOS 2.0",[90,105,106],{"align":79},"2021.06",[90,108,109],{"align":75},"手机版发布，分布式软总线 + DSched",[70,111,112,115,118],{},[90,113,114],{"align":75},"HarmonyOS 3.0",[90,116,117],{"align":79},"2022.07",[90,119,120],{"align":75},"超级终端、EAS 深度优化、FFRT 预研",[70,122,123,126,129],{},[90,124,125],{"align":75},"HarmonyOS 4.0",[90,127,128],{"align":79},"2023.08",[90,130,131],{"align":75},"AI 感知调度、FFRT 正式上线、帧感知 2.0",[70,133,134,137,140],{},[90,135,136],{"align":75},"HarmonyOS NEXT",[90,138,139],{"align":79},"2024.Q1",[90,141,142],{"align":75},"纯鸿蒙内核（去安卓化），调度架构重构",[10,144,145,146,149,150,153],{},"从版本演进可以清晰地看到鸿蒙调度能力的两条主线：",[17,147,148],{},"单设备内的“感知-调度”深度优化","（EAS、FAS），与",[17,151,152],{},"跨设备的调度抽象","（DSched、超级终端）。",[25,155,156],{"id":156},"鸿蒙多内核架构与调度分层",[29,158,159],{"id":159},"分层架构总览",[10,161,162,163,166],{},"鸿蒙采用",[17,164,165],{},"弹性部署","的多内核设计，根据目标设备的硬件能力选择合适的内核，但对外暴露统一的系统服务接口：",[168,169,174],"pre",{"className":170,"code":171,"language":172,"meta":173,"style":173},"language-mermaid shiki shiki-themes houston","flowchart TB\n    subgraph AppLayer [应用层]\n        App[\"ArkUI / ArkTS\"]\n    end\n\n    subgraph ServiceLayer [系统服务框架]\n        Service[\"Ability、分布式软总线等\"]\n    end\n\n    subgraph SchedLayer [调度服务层]\n        direction LR\n        FFRT[\"FFRT 用户态调度\"]\n        QoS[\"QoS 管理\"]\n        FAS[\"帧感知调度（FAS）\"]\n    end\n\n    subgraph KernelLayer [内核层]\n        direction LR\n        K_M[\"LiteOS-M 内核\u003Cbr/>(MCU, \u003C512KB RAM)\u003Cbr/>简单优先级抢占调度\"]\n        K_A[\"LiteOS-A 内核\u003Cbr/>(IoT, 数MB RAM)\u003Cbr/>优先级+时间片调度\"]\n        K_L[\"Linux 定制内核\u003Cbr/>(手机/平板/PC, GB级RAM)\u003Cbr/>CFS+EAS+实时调度类\"]\n    end\n\n    subgraph HardwareLayer [硬件层]\n        HDF[\"硬件驱动框架（HDF）/ HAL\"]\n    end\n\n    AppLayer --> ServiceLayer\n    ServiceLayer --> SchedLayer\n    SchedLayer --> KernelLayer\n    KernelLayer --> HardwareLayer\n","mermaid","",[175,176,177,186,192,198,204,211,217,223,228,233,239,245,251,257,263,268,273,279,284,290,296,302,307,312,318,324,329,334,340,346,352],"code",{"__ignoreMap":173},[178,179,182],"span",{"class":180,"line":181},"line",1,[178,183,185],{"class":184},"sLo_3","flowchart TB\n",[178,187,189],{"class":180,"line":188},2,[178,190,191],{"class":184},"    subgraph AppLayer [应用层]\n",[178,193,195],{"class":180,"line":194},3,[178,196,197],{"class":184},"        App[\"ArkUI / ArkTS\"]\n",[178,199,201],{"class":180,"line":200},4,[178,202,203],{"class":184},"    end\n",[178,205,207],{"class":180,"line":206},5,[178,208,210],{"emptyLinePlaceholder":209},true,"\n",[178,212,214],{"class":180,"line":213},6,[178,215,216],{"class":184},"    subgraph ServiceLayer [系统服务框架]\n",[178,218,220],{"class":180,"line":219},7,[178,221,222],{"class":184},"        Service[\"Ability、分布式软总线等\"]\n",[178,224,226],{"class":180,"line":225},8,[178,227,203],{"class":184},[178,229,231],{"class":180,"line":230},9,[178,232,210],{"emptyLinePlaceholder":209},[178,234,236],{"class":180,"line":235},10,[178,237,238],{"class":184},"    subgraph SchedLayer [调度服务层]\n",[178,240,242],{"class":180,"line":241},11,[178,243,244],{"class":184},"        direction LR\n",[178,246,248],{"class":180,"line":247},12,[178,249,250],{"class":184},"        FFRT[\"FFRT 用户态调度\"]\n",[178,252,254],{"class":180,"line":253},13,[178,255,256],{"class":184},"        QoS[\"QoS 管理\"]\n",[178,258,260],{"class":180,"line":259},14,[178,261,262],{"class":184},"        FAS[\"帧感知调度（FAS）\"]\n",[178,264,266],{"class":180,"line":265},15,[178,267,203],{"class":184},[178,269,271],{"class":180,"line":270},16,[178,272,210],{"emptyLinePlaceholder":209},[178,274,276],{"class":180,"line":275},17,[178,277,278],{"class":184},"    subgraph KernelLayer [内核层]\n",[178,280,282],{"class":180,"line":281},18,[178,283,244],{"class":184},[178,285,287],{"class":180,"line":286},19,[178,288,289],{"class":184},"        K_M[\"LiteOS-M 内核\u003Cbr/>(MCU, \u003C512KB RAM)\u003Cbr/>简单优先级抢占调度\"]\n",[178,291,293],{"class":180,"line":292},20,[178,294,295],{"class":184},"        K_A[\"LiteOS-A 内核\u003Cbr/>(IoT, 数MB RAM)\u003Cbr/>优先级+时间片调度\"]\n",[178,297,299],{"class":180,"line":298},21,[178,300,301],{"class":184},"        K_L[\"Linux 定制内核\u003Cbr/>(手机/平板/PC, GB级RAM)\u003Cbr/>CFS+EAS+实时调度类\"]\n",[178,303,305],{"class":180,"line":304},22,[178,306,203],{"class":184},[178,308,310],{"class":180,"line":309},23,[178,311,210],{"emptyLinePlaceholder":209},[178,313,315],{"class":180,"line":314},24,[178,316,317],{"class":184},"    subgraph HardwareLayer [硬件层]\n",[178,319,321],{"class":180,"line":320},25,[178,322,323],{"class":184},"        HDF[\"硬件驱动框架（HDF）/ HAL\"]\n",[178,325,327],{"class":180,"line":326},26,[178,328,203],{"class":184},[178,330,332],{"class":180,"line":331},27,[178,333,210],{"emptyLinePlaceholder":209},[178,335,337],{"class":180,"line":336},28,[178,338,339],{"class":184},"    AppLayer --> ServiceLayer\n",[178,341,343],{"class":180,"line":342},29,[178,344,345],{"class":184},"    ServiceLayer --> SchedLayer\n",[178,347,349],{"class":180,"line":348},30,[178,350,351],{"class":184},"    SchedLayer --> KernelLayer\n",[178,353,355],{"class":180,"line":354},31,[178,356,357],{"class":184},"    KernelLayer --> HardwareLayer\n",[10,359,360],{},[361,362,363],"em",{},"图 1：鸿蒙分层调度架构总览图",[365,366,368],"alert",{"type":367},"info",[10,369,370,371,374],{},"本文重点研究技术最复杂、最具代表性的",[17,372,373],{},"手机端 Linux 定制内核","调度体系，同时兼顾 LiteOS-A 的主要机制。LiteOS-M 作为 MCU 级内核，其调度模型与 FreeRTOS 高度类似（简单优先级抢占），本文不再展开。",[29,376,377],{"id":377},"三类内核的调度定位",[64,379,380,399],{},[67,381,382],{},[70,383,384,387,390,393,396],{},[73,385,386],{"align":75},"内核",[73,388,389],{"align":75},"适用设备",[73,391,392],{"align":79},"RAM 规格",[73,394,395],{"align":75},"调度类型",[73,397,398],{"align":79},"典型任务数",[85,400,401,418,435],{},[70,402,403,406,409,412,415],{},[90,404,405],{"align":75},"LiteOS-M",[90,407,408],{"align":75},"传感器、手环芯片、智能门锁",[90,410,411],{"align":79},"\u003C512 KB",[90,413,414],{"align":75},"协作式 / 简单抢占",[90,416,417],{"align":79},"5~20",[70,419,420,423,426,429,432],{},[90,421,422],{"align":75},"LiteOS-A",[90,424,425],{"align":75},"智能家居网关、路由器、工业网关",[90,427,428],{"align":79},"数 MB",[90,430,431],{"align":75},"优先级抢占 + 时间片",[90,433,434],{"align":79},"20~200",[70,436,437,440,443,446,449],{},[90,438,439],{"align":75},"Linux 定制内核",[90,441,442],{"align":75},"手机、平板、PC、智慧屏",[90,444,445],{"align":79},">1 GB",[90,447,448],{"align":75},"CFS + EAS + 实时类",[90,450,451],{"align":79},"数百~数千",[25,453,455],{"id":454},"liteos-a-调度机制iot-场景","LiteOS-A 调度机制（IoT 场景）",[29,457,458],{"id":458},"优先级模型",[10,460,461,462,465,466,469,470,473,474,544],{},"LiteOS-A 支持 ",[17,463,464],{},"32 个任务优先级","（0 为最高优先级，31 为最低），采用与 FreeRTOS 类似的",[17,467,468],{},"固定优先级抢占式调度","模型。就绪队列同样基于",[17,471,472],{},"优先级位图 + 链表数组","实现 ",[178,475,478,513],{"className":476},[477],"katex",[178,479,482],{"className":480},[481],"katex-mathml",[483,484,486],"math",{"xmlns":485},"http://www.w3.org/1998/Math/MathML",[487,488,489,508],"semantics",{},[490,491,492,496,501,505],"mrow",{},[493,494,495],"mi",{},"O",[497,498,500],"mo",{"stretchy":499},"false","(",[502,503,504],"mn",{},"1",[497,506,507],{"stretchy":499},")",[509,510,512],"annotation",{"encoding":511},"application/x-tex","O(1)",[178,514,518],{"className":515,"ariaHidden":517},[516],"katex-html","true",[178,519,522,527,533,537,540],{"className":520},[521],"base",[178,523],{"className":524,"style":526},[525],"strut","height:1em;vertical-align:-0.25em;",[178,528,495],{"className":529,"style":532},[530,531],"mord","mathnormal","margin-right:0.0278em;",[178,534,500],{"className":535},[536],"mopen",[178,538,504],{"className":539},[530],[178,541,507],{"className":542},[543],"mclose"," 调度复杂度。",[168,546,550],{"className":547,"code":548,"language":549,"meta":173,"style":173},"language-c shiki shiki-themes houston","/* LiteOS-A 任务创建 API */\nTSK_INIT_PARAM_S stTaskInitParam;\nstTaskInitParam.pfnTaskEntry  = (TSK_ENTRY_FUNC)SensorTask;\nstTaskInitParam.uwStackSize   = 4096;                   /* 栈大小：4KB */\nstTaskInitParam.pcName        = \"SensorTask\";\nstTaskInitParam.usTaskPrio    = LOS_TASK_PRIORITY_HIGH; /* 优先级 4 */\nstTaskInitParam.uwResved      = LOS_TASK_STATUS_DETACHED;\n\nUINT32 uwRet = LOS_TaskCreate(&g_uwTaskID, &stTaskInitParam);\n","c",[175,551,552,558,563,575,592,605,618,628,632],{"__ignoreMap":173},[178,553,554],{"class":180,"line":181},[178,555,557],{"class":556},"sy89t","/* LiteOS-A 任务创建 API */\n",[178,559,560],{"class":180,"line":188},[178,561,562],{"class":184},"TSK_INIT_PARAM_S stTaskInitParam;\n",[178,564,565,568,572],{"class":180,"line":194},[178,566,567],{"class":184},"stTaskInitParam.pfnTaskEntry  ",[178,569,571],{"class":570},"sqF6k","=",[178,573,574],{"class":184}," (TSK_ENTRY_FUNC)SensorTask;\n",[178,576,577,580,582,586,589],{"class":180,"line":200},[178,578,579],{"class":184},"stTaskInitParam.uwStackSize   ",[178,581,571],{"class":570},[178,583,585],{"class":584},"se2J0"," 4096",[178,587,588],{"class":184},";",[178,590,591],{"class":556},"                   /* 栈大小：4KB */\n",[178,593,594,597,599,602],{"class":180,"line":206},[178,595,596],{"class":184},"stTaskInitParam.pcName        ",[178,598,571],{"class":570},[178,600,601],{"class":584}," \"SensorTask\"",[178,603,604],{"class":184},";\n",[178,606,607,610,612,615],{"class":180,"line":213},[178,608,609],{"class":184},"stTaskInitParam.usTaskPrio    ",[178,611,571],{"class":570},[178,613,614],{"class":184}," LOS_TASK_PRIORITY_HIGH;",[178,616,617],{"class":556}," /* 优先级 4 */\n",[178,619,620,623,625],{"class":180,"line":219},[178,621,622],{"class":184},"stTaskInitParam.uwResved      ",[178,624,571],{"class":570},[178,626,627],{"class":184}," LOS_TASK_STATUS_DETACHED;\n",[178,629,630],{"class":180,"line":225},[178,631,210],{"emptyLinePlaceholder":209},[178,633,634,637,639,643,645,648,652,655,658,661],{"class":180,"line":230},[178,635,636],{"class":184},"UINT32 uwRet ",[178,638,571],{"class":570},[178,640,642],{"class":641},"stHQG"," LOS_TaskCreate",[178,644,500],{"class":184},[178,646,647],{"class":570},"&",[178,649,651],{"class":650},"smONe","g_uwTaskID",[178,653,654],{"class":184},",",[178,656,657],{"class":570}," &",[178,659,660],{"class":650},"stTaskInitParam",[178,662,663],{"class":184},");\n",[29,665,666],{"id":666},"系统调度配置参数",[64,668,669,685],{},[67,670,671],{},[70,672,673,676,679,682],{},[73,674,675],{"align":75},"参数",[73,677,678],{"align":75},"LiteOS-A 典型值",[73,680,681],{"align":75},"FreeRTOS 典型值",[73,683,684],{"align":75},"说明",[85,686,687,701,715,729],{},[70,688,689,692,695,698],{},[90,690,691],{"align":75},"系统心跳频率",[90,693,694],{"align":75},"100Hz（10ms/Tick）",[90,696,697],{"align":75},"1000Hz（1ms/Tick）",[90,699,700],{"align":75},"LiteOS-A 面向功耗优化",[70,702,703,706,709,712],{},[90,704,705],{"align":75},"最大任务优先级数",[90,707,708],{"align":75},"32",[90,710,711],{"align":75},"可配置（通常 32）",[90,713,714],{"align":75},"类似",[70,716,717,720,723,726],{},[90,718,719],{"align":75},"时间片长度（同级）",[90,721,722],{"align":75},"1 Tick（10ms）",[90,724,725],{"align":75},"1 Tick（1ms）",[90,727,728],{"align":75},"—",[70,730,731,734,737,740],{},[90,732,733],{"align":75},"任务栈最小值",[90,735,736],{"align":75},"512B",[90,738,739],{"align":75},"128B",[90,741,742],{"align":75},"LiteOS-A 功能更丰富",[10,744,745,746,749],{},"同为“优先级抢占 + 时间片”模型，两个内核的差异主要体现在",[17,747,748],{},"面向场景的取舍","上：LiteOS-A 将心跳从 1ms 放慢到 10ms，直接降低了 IoT 设备的空闲功耗；而 FreeRTOS 保留 1ms 心跳以满足工业场景的细粒度时序需求。",[29,751,753],{"id":752},"ipc-与调度联动","IPC 与调度联动",[10,755,756],{},"LiteOS-A 提供事件（Event）、消息队列（Queue）、信号量（Semaphore）、互斥量（Mutex）等 IPC 机制，均与调度器深度集成：当 IPC 操作导致高优先级任务就绪时，调度器立即发起抢占。",[168,758,760],{"className":547,"code":759,"language":549,"meta":173,"style":173},"/* 消息队列触发调度示例 */\n\n/* 任务 A：发送消息（可能触发高优先级任务 B 的抢占） */\nLOS_QueueWriteCopy(g_queueID, &msg, sizeof(msg), LOS_NO_WAIT);\n\n/* 任务 B（高优先级）：等待消息 */\nLOS_QueueReadCopy(g_queueID, &rxMsg, &bufLen, LOS_WAIT_FOREVER);\n/* ↑ 消息到达后立即被调度运行，抢占低优先级任务 A */\n",[175,761,762,767,771,776,811,815,820,850],{"__ignoreMap":173},[178,763,764],{"class":180,"line":181},[178,765,766],{"class":556},"/* 消息队列触发调度示例 */\n",[178,768,769],{"class":180,"line":188},[178,770,210],{"emptyLinePlaceholder":209},[178,772,773],{"class":180,"line":194},[178,774,775],{"class":556},"/* 任务 A：发送消息（可能触发高优先级任务 B 的抢占） */\n",[178,777,778,781,783,787,789,791,794,796,799,801,803,806,809],{"class":180,"line":200},[178,779,780],{"class":641},"LOS_QueueWriteCopy",[178,782,500],{"class":184},[178,784,786],{"class":785},"sb16X","g_queueID",[178,788,654],{"class":184},[178,790,657],{"class":570},[178,792,793],{"class":650},"msg",[178,795,654],{"class":184},[178,797,798],{"class":570}," sizeof",[178,800,500],{"class":184},[178,802,793],{"class":785},[178,804,805],{"class":184},"),",[178,807,808],{"class":785}," LOS_NO_WAIT",[178,810,663],{"class":184},[178,812,813],{"class":180,"line":206},[178,814,210],{"emptyLinePlaceholder":209},[178,816,817],{"class":180,"line":213},[178,818,819],{"class":556},"/* 任务 B（高优先级）：等待消息 */\n",[178,821,822,825,827,829,831,833,836,838,840,843,845,848],{"class":180,"line":219},[178,823,824],{"class":641},"LOS_QueueReadCopy",[178,826,500],{"class":184},[178,828,786],{"class":785},[178,830,654],{"class":184},[178,832,657],{"class":570},[178,834,835],{"class":650},"rxMsg",[178,837,654],{"class":184},[178,839,657],{"class":570},[178,841,842],{"class":650},"bufLen",[178,844,654],{"class":184},[178,846,847],{"class":785}," LOS_WAIT_FOREVER",[178,849,663],{"class":184},[178,851,852],{"class":180,"line":225},[178,853,854],{"class":556},"/* ↑ 消息到达后立即被调度运行，抢占低优先级任务 A */\n",[25,856,857],{"id":857},"手机端核心调度机制",[29,859,861],{"id":860},"linux-cfs调度基础层","Linux CFS：调度基础层",[10,863,864,865,868],{},"鸿蒙手机端基于 Linux 内核（深度定制），其调度体系以",[17,866,867],{},"完全公平调度器（Completely Fair Scheduler, CFS）"," 为基础。CFS 由 Ingo Molnár 于 2007 年引入 Linux 2.6.23。",[870,871,873],"h4",{"id":872},"cfs-核心原理虚拟运行时间","CFS 核心原理：虚拟运行时间",[10,875,876,877,880],{},"CFS 的核心抽象是",[17,878,879],{},"虚拟运行时间（vruntime）","：每个任务维护一个 vruntime 值，表示该任务已获得的“加权 CPU 使用时间”。调度器始终选择 vruntime 最小的任务运行，从而保证所有任务获得公平的 CPU 份额。",[10,882,883],{},"vruntime 的增长公式为：",[178,885,888],{"className":886},[887],"katex-display",[178,889,891,947],{"className":890},[477],[178,892,894],{"className":893},[481],[483,895,897],{"xmlns":485,"display":896},"block",[487,898,899,944],{},[490,900,901,905,908,910,914,923,926],{},[902,903,904],"mtext",{},"vruntime",[497,906,907],{},"+",[497,909,571],{},[493,911,913],{"mathvariant":912},"normal","Δ",[915,916,917,920],"msub",{},[493,918,919],{},"t",[902,921,922],{},"exec",[497,924,925],{},"×",[927,928,929,937],"mfrac",{},[915,930,931,934],{},[493,932,933],{},"W",[502,935,936],{},"0",[915,938,939,941],{},[493,940,933],{},[493,942,943],{},"i",[509,945,946],{"encoding":511},"\\text{vruntime} \\mathrel{+}= \\Delta t_{\\text{exec}} \\times \\frac{W_0}{W_i}",[178,948,950,976,989,1072],{"className":949,"ariaHidden":517},[516],[178,951,953,957,964,969],{"className":952},[521],[178,954],{"className":955,"style":956},[525],"height:0.7512em;vertical-align:-0.0833em;",[178,958,961],{"className":959},[530,960],"text",[178,962,904],{"className":963},[530],[178,965],{"className":966,"style":968},[967],"mspace","margin-right:0.2778em;",[178,970,973],{"className":971},[972],"mrel",[178,974,907],{"className":975},[530],[178,977,979,983,986],{"className":978},[521],[178,980],{"className":981,"style":982},[525],"height:0.3669em;",[178,984,571],{"className":985},[972],[178,987],{"className":988,"style":968},[967],[178,990,992,996,999,1061,1065,1069],{"className":991},[521],[178,993],{"className":994,"style":995},[525],"height:0.8333em;vertical-align:-0.15em;",[178,997,913],{"className":998},[530],[178,1000,1002,1005],{"className":1001},[530],[178,1003,919],{"className":1004},[530,531],[178,1006,1009],{"className":1007},[1008],"msupsub",[178,1010,1014,1052],{"className":1011},[1012,1013],"vlist-t","vlist-t2",[178,1015,1018,1047],{"className":1016},[1017],"vlist-r",[178,1019,1023],{"className":1020,"style":1022},[1021],"vlist","height:0.1514em;",[178,1024,1026,1031],{"style":1025},"top:-2.55em;margin-left:0em;margin-right:0.05em;",[178,1027],{"className":1028,"style":1030},[1029],"pstrut","height:2.7em;",[178,1032,1038],{"className":1033},[1034,1035,1036,1037],"sizing","reset-size6","size3","mtight",[178,1039,1041],{"className":1040},[530,1037],[178,1042,1044],{"className":1043},[530,960,1037],[178,1045,922],{"className":1046},[530,1037],[178,1048,1051],{"className":1049},[1050],"vlist-s","​",[178,1053,1055],{"className":1054},[1017],[178,1056,1059],{"className":1057,"style":1058},[1021],"height:0.15em;",[178,1060],{},[178,1062],{"className":1063,"style":1064},[967],"margin-right:0.2222em;",[178,1066,925],{"className":1067},[1068],"mbin",[178,1070],{"className":1071,"style":1064},[967],[178,1073,1075,1079],{"className":1074},[521],[178,1076],{"className":1077,"style":1078},[525],"height:2.1963em;vertical-align:-0.836em;",[178,1080,1082,1086,1225],{"className":1081},[530],[178,1083],{"className":1084},[536,1085],"nulldelimiter",[178,1087,1089],{"className":1088},[927],[178,1090,1092,1216],{"className":1091},[1012,1013],[178,1093,1095,1213],{"className":1094},[1017],[178,1096,1099,1152,1163],{"className":1097,"style":1098},[1021],"height:1.3603em;",[178,1100,1102,1106],{"style":1101},"top:-2.314em;",[178,1103],{"className":1104,"style":1105},[1029],"height:3em;",[178,1107,1109],{"className":1108},[530],[178,1110,1112,1116],{"className":1111},[530],[178,1113,933],{"className":1114,"style":1115},[530,531],"margin-right:0.1389em;",[178,1117,1119],{"className":1118},[1008],[178,1120,1122,1144],{"className":1121},[1012,1013],[178,1123,1125,1141],{"className":1124},[1017],[178,1126,1129],{"className":1127,"style":1128},[1021],"height:0.3117em;",[178,1130,1132,1135],{"style":1131},"top:-2.55em;margin-left:-0.1389em;margin-right:0.05em;",[178,1133],{"className":1134,"style":1030},[1029],[178,1136,1138],{"className":1137},[1034,1035,1036,1037],[178,1139,943],{"className":1140},[530,531,1037],[178,1142,1051],{"className":1143},[1050],[178,1145,1147],{"className":1146},[1017],[178,1148,1150],{"className":1149,"style":1058},[1021],[178,1151],{},[178,1153,1155,1158],{"style":1154},"top:-3.23em;",[178,1156],{"className":1157,"style":1105},[1029],[178,1159],{"className":1160,"style":1162},[1161],"frac-line","border-bottom-width:0.04em;",[178,1164,1166,1169],{"style":1165},"top:-3.677em;",[178,1167],{"className":1168,"style":1105},[1029],[178,1170,1172],{"className":1171},[530],[178,1173,1175,1178],{"className":1174},[530],[178,1176,933],{"className":1177,"style":1115},[530,531],[178,1179,1181],{"className":1180},[1008],[178,1182,1184,1205],{"className":1183},[1012,1013],[178,1185,1187,1202],{"className":1186},[1017],[178,1188,1191],{"className":1189,"style":1190},[1021],"height:0.3011em;",[178,1192,1193,1196],{"style":1131},[178,1194],{"className":1195,"style":1030},[1029],[178,1197,1199],{"className":1198},[1034,1035,1036,1037],[178,1200,936],{"className":1201},[530,1037],[178,1203,1051],{"className":1204},[1050],[178,1206,1208],{"className":1207},[1017],[178,1209,1211],{"className":1210,"style":1058},[1021],[178,1212],{},[178,1214,1051],{"className":1215},[1050],[178,1217,1219],{"className":1218},[1017],[178,1220,1223],{"className":1221,"style":1222},[1021],"height:0.836em;",[178,1224],{},[178,1226],{"className":1227},[543,1085],[10,1229,1230],{},"其中：",[39,1232,1233,1317,1390],{},[42,1234,1235,1316],{},[178,1236,1238,1258],{"className":1237},[477],[178,1239,1241],{"className":1240},[481],[483,1242,1243],{"xmlns":485},[487,1244,1245,1255],{},[490,1246,1247,1249],{},[493,1248,913],{"mathvariant":912},[915,1250,1251,1253],{},[493,1252,919],{},[902,1254,922],{},[509,1256,1257],{"encoding":511},"\\Delta t_{\\text{exec}}",[178,1259,1261],{"className":1260,"ariaHidden":517},[516],[178,1262,1264,1267,1270],{"className":1263},[521],[178,1265],{"className":1266,"style":995},[525],[178,1268,913],{"className":1269},[530],[178,1271,1273,1276],{"className":1272},[530],[178,1274,919],{"className":1275},[530,531],[178,1277,1279],{"className":1278},[1008],[178,1280,1282,1308],{"className":1281},[1012,1013],[178,1283,1285,1305],{"className":1284},[1017],[178,1286,1288],{"className":1287,"style":1022},[1021],[178,1289,1290,1293],{"style":1025},[178,1291],{"className":1292,"style":1030},[1029],[178,1294,1296],{"className":1295},[1034,1035,1036,1037],[178,1297,1299],{"className":1298},[530,1037],[178,1300,1302],{"className":1301},[530,960,1037],[178,1303,922],{"className":1304},[530,1037],[178,1306,1051],{"className":1307},[1050],[178,1309,1311],{"className":1310},[1017],[178,1312,1314],{"className":1313,"style":1058},[1021],[178,1315],{},"：任务的实际运行时间增量；",[42,1318,1319,1389],{},[178,1320,1322,1340],{"className":1321},[477],[178,1323,1325],{"className":1324},[481],[483,1326,1327],{"xmlns":485},[487,1328,1329,1337],{},[490,1330,1331],{},[915,1332,1333,1335],{},[493,1334,933],{},[502,1336,936],{},[509,1338,1339],{"encoding":511},"W_0",[178,1341,1343],{"className":1342,"ariaHidden":517},[516],[178,1344,1346,1349],{"className":1345},[521],[178,1347],{"className":1348,"style":995},[525],[178,1350,1352,1355],{"className":1351},[530],[178,1353,933],{"className":1354,"style":1115},[530,531],[178,1356,1358],{"className":1357},[1008],[178,1359,1361,1381],{"className":1360},[1012,1013],[178,1362,1364,1378],{"className":1363},[1017],[178,1365,1367],{"className":1366,"style":1190},[1021],[178,1368,1369,1372],{"style":1131},[178,1370],{"className":1371,"style":1030},[1029],[178,1373,1375],{"className":1374},[1034,1035,1036,1037],[178,1376,936],{"className":1377},[530,1037],[178,1379,1051],{"className":1380},[1050],[178,1382,1384],{"className":1383},[1017],[178,1385,1387],{"className":1386,"style":1058},[1021],[178,1388],{},"：nice 值为 0 的基准权重（= 1024）；",[42,1391,1392,1462,1463,1492],{},[178,1393,1395,1413],{"className":1394},[477],[178,1396,1398],{"className":1397},[481],[483,1399,1400],{"xmlns":485},[487,1401,1402,1410],{},[490,1403,1404],{},[915,1405,1406,1408],{},[493,1407,933],{},[493,1409,943],{},[509,1411,1412],{"encoding":511},"W_i",[178,1414,1416],{"className":1415,"ariaHidden":517},[516],[178,1417,1419,1422],{"className":1418},[521],[178,1420],{"className":1421,"style":995},[525],[178,1423,1425,1428],{"className":1424},[530],[178,1426,933],{"className":1427,"style":1115},[530,531],[178,1429,1431],{"className":1430},[1008],[178,1432,1434,1454],{"className":1433},[1012,1013],[178,1435,1437,1451],{"className":1436},[1017],[178,1438,1440],{"className":1439,"style":1128},[1021],[178,1441,1442,1445],{"style":1131},[178,1443],{"className":1444,"style":1030},[1029],[178,1446,1448],{"className":1447},[1034,1035,1036,1037],[178,1449,943],{"className":1450},[530,531,1037],[178,1452,1051],{"className":1453},[1050],[178,1455,1457],{"className":1456},[1017],[178,1458,1460],{"className":1459,"style":1058},[1021],[178,1461],{},"：任务 ",[178,1464,1466,1479],{"className":1465},[477],[178,1467,1469],{"className":1468},[481],[483,1470,1471],{"xmlns":485},[487,1472,1473,1477],{},[490,1474,1475],{},[493,1476,943],{},[509,1478,943],{"encoding":511},[178,1480,1482],{"className":1481,"ariaHidden":517},[516],[178,1483,1485,1489],{"className":1484},[521],[178,1486],{"className":1487,"style":1488},[525],"height:0.6595em;",[178,1490,943],{"className":1491},[530,531]," 的实际权重，由 nice 值决定。",[64,1494,1495,1540],{},[67,1496,1497],{},[70,1498,1499,1502,1534,1537],{},[73,1500,1501],{"align":79},"nice 值",[73,1503,1504,1505],{"align":79},"权重 ",[178,1506,1508,1521],{"className":1507},[477],[178,1509,1511],{"className":1510},[481],[483,1512,1513],{"xmlns":485},[487,1514,1515,1519],{},[490,1516,1517],{},[493,1518,933],{},[509,1520,933],{"encoding":511},[178,1522,1524],{"className":1523,"ariaHidden":517},[516],[178,1525,1527,1531],{"className":1526},[521],[178,1528],{"className":1529,"style":1530},[525],"height:0.6833em;",[178,1532,933],{"className":1533,"style":1115},[530,531],[73,1535,1536],{"align":79},"vruntime 增长倍率",[73,1538,1539],{"align":79},"相对 CPU 份额",[85,1541,1542,1556,1570,1584,1598],{},[70,1543,1544,1547,1550,1553],{},[90,1545,1546],{"align":79},"-20（最高）",[90,1548,1549],{"align":79},"88,761",[90,1551,1552],{"align":79},"0.0115×",[90,1554,1555],{"align":79},"~86.7× baseline",[70,1557,1558,1561,1564,1567],{},[90,1559,1560],{"align":79},"-10",[90,1562,1563],{"align":79},"9,548",[90,1565,1566],{"align":79},"0.107×",[90,1568,1569],{"align":79},"~9.3× baseline",[70,1571,1572,1575,1578,1581],{},[90,1573,1574],{"align":79},"0（默认）",[90,1576,1577],{"align":79},"1,024",[90,1579,1580],{"align":79},"1.0×（基准）",[90,1582,1583],{"align":79},"baseline",[70,1585,1586,1589,1592,1595],{},[90,1587,1588],{"align":79},"+10",[90,1590,1591],{"align":79},"110",[90,1593,1594],{"align":79},"9.3×",[90,1596,1597],{"align":79},"~0.107× baseline",[70,1599,1600,1603,1606,1609],{},[90,1601,1602],{"align":79},"+19（最低）",[90,1604,1605],{"align":79},"15",[90,1607,1608],{"align":79},"68.2×",[90,1610,1611],{"align":79},"~0.0147× baseline",[10,1613,1614,1615,1618],{},"这张表的本质是“",[17,1616,1617],{},"nice 值每差 1，CPU 份额约变化 1.25 倍","”的指数关系（1024 / 1.25 ≈ 819，逐级递推恰好得到上表的权重序列）。",[10,1620,1621],{},[17,1622,1623],{},"就绪队列数据结构：红黑树",[10,1625,1626,1627,1630,1631,1698],{},"CFS 使用",[17,1628,1629],{},"红黑树（Red-Black Tree）"," 以 vruntime 为键管理就绪任务，树的最左节点（vruntime 最小）即为下一个应运行的任务，查找时间复杂度为 ",[17,1632,1633],{},[178,1634,1636,1666],{"className":1635},[477],[178,1637,1639],{"className":1638},[481],[483,1640,1641],{"xmlns":485},[487,1642,1643,1663],{},[490,1644,1645,1647,1649,1652,1655,1658,1661],{},[493,1646,495],{},[497,1648,500],{"stretchy":499},[493,1650,1651],{},"l",[493,1653,1654],{},"o",[493,1656,1657],{},"g",[493,1659,1660],{},"n",[497,1662,507],{"stretchy":499},[509,1664,1665],{"encoding":511},"O(log n)",[178,1667,1669],{"className":1668,"ariaHidden":517},[516],[178,1670,1672,1675,1678,1681,1685,1688,1692,1695],{"className":1671},[521],[178,1673],{"className":1674,"style":526},[525],[178,1676,495],{"className":1677,"style":532},[530,531],[178,1679,500],{"className":1680},[536],[178,1682,1651],{"className":1683,"style":1684},[530,531],"margin-right:0.0197em;",[178,1686,1654],{"className":1687},[530,531],[178,1689,1657],{"className":1690,"style":1691},[530,531],"margin-right:0.0359em;",[178,1693,1660],{"className":1694},[530,531],[178,1696,507],{"className":1697},[543],"：",[168,1700,1702],{"className":547,"code":1701,"language":549,"meta":173,"style":173},"/* Linux CFS 就绪队列（简化） */\nstruct cfs_rq {\n    struct rb_root_cached   tasks_timeline; /* 红黑树，键为 vruntime */\n    struct sched_entity    *curr;           /* 当前运行实体 */\n    u64                     min_vruntime;   /* 最小 vruntime（新任务的起始值） */\n    unsigned long           nr_running;     /* 就绪任务数 */\n};\n\n/* 选择下一任务：取最左节点，O(log n) */\nstatic struct sched_entity *pick_next_entity(struct cfs_rq *cfs_rq) {\n    struct rb_node *left = rb_first_cached(&cfs_rq->tasks_timeline);\n    return rb_entry(left, struct sched_entity, run_node);\n}\n",[175,1703,1704,1709,1717,1728,1744,1752,1766,1771,1775,1780,1811,1842,1858],{"__ignoreMap":173},[178,1705,1706],{"class":180,"line":181},[178,1707,1708],{"class":556},"/* Linux CFS 就绪队列（简化） */\n",[178,1710,1711,1714],{"class":180,"line":188},[178,1712,1713],{"class":570},"struct",[178,1715,1716],{"class":184}," cfs_rq {\n",[178,1718,1719,1722,1725],{"class":180,"line":194},[178,1720,1721],{"class":570},"    struct",[178,1723,1724],{"class":184}," rb_root_cached   tasks_timeline;",[178,1726,1727],{"class":556}," /* 红黑树，键为 vruntime */\n",[178,1729,1730,1732,1735,1738,1741],{"class":180,"line":200},[178,1731,1721],{"class":570},[178,1733,1734],{"class":184}," sched_entity    ",[178,1736,1737],{"class":570},"*",[178,1739,1740],{"class":184},"curr;",[178,1742,1743],{"class":556},"           /* 当前运行实体 */\n",[178,1745,1746,1749],{"class":180,"line":206},[178,1747,1748],{"class":184},"    u64                     min_vruntime;",[178,1750,1751],{"class":556},"   /* 最小 vruntime（新任务的起始值） */\n",[178,1753,1754,1757,1760,1763],{"class":180,"line":213},[178,1755,1756],{"class":570},"    unsigned",[178,1758,1759],{"class":570}," long",[178,1761,1762],{"class":184},"           nr_running;",[178,1764,1765],{"class":556},"     /* 就绪任务数 */\n",[178,1767,1768],{"class":180,"line":219},[178,1769,1770],{"class":184},"};\n",[178,1772,1773],{"class":180,"line":225},[178,1774,210],{"emptyLinePlaceholder":209},[178,1776,1777],{"class":180,"line":230},[178,1778,1779],{"class":556},"/* 选择下一任务：取最左节点，O(log n) */\n",[178,1781,1782,1785,1788,1791,1793,1796,1798,1800,1803,1805,1808],{"class":180,"line":235},[178,1783,1784],{"class":570},"static",[178,1786,1787],{"class":570}," struct",[178,1789,1790],{"class":184}," sched_entity ",[178,1792,1737],{"class":570},[178,1794,1795],{"class":641},"pick_next_entity",[178,1797,500],{"class":184},[178,1799,1713],{"class":570},[178,1801,1802],{"class":785}," cfs_rq ",[178,1804,1737],{"class":570},[178,1806,1807],{"class":650},"cfs_rq",[178,1809,1810],{"class":184},") {\n",[178,1812,1813,1815,1818,1820,1823,1825,1828,1830,1832,1834,1837,1840],{"class":180,"line":241},[178,1814,1721],{"class":570},[178,1816,1817],{"class":184}," rb_node ",[178,1819,1737],{"class":570},[178,1821,1822],{"class":184},"left ",[178,1824,571],{"class":570},[178,1826,1827],{"class":641}," rb_first_cached",[178,1829,500],{"class":184},[178,1831,647],{"class":570},[178,1833,1807],{"class":785},[178,1835,1836],{"class":184},"->",[178,1838,1839],{"class":785},"tasks_timeline",[178,1841,663],{"class":184},[178,1843,1844,1847,1850,1853,1855],{"class":180,"line":247},[178,1845,1846],{"class":570},"    return",[178,1848,1849],{"class":641}," rb_entry",[178,1851,1852],{"class":184},"(left, ",[178,1854,1713],{"class":570},[178,1856,1857],{"class":184}," sched_entity, run_node);\n",[178,1859,1860],{"class":180,"line":253},[178,1861,1862],{"class":184},"}\n",[10,1864,1865,1866,1909,1910,1913],{},"与 FreeRTOS 的 ",[178,1867,1869,1888],{"className":1868},[477],[178,1870,1872],{"className":1871},[481],[483,1873,1874],{"xmlns":485},[487,1875,1876,1886],{},[490,1877,1878,1880,1882,1884],{},[493,1879,495],{},[497,1881,500],{"stretchy":499},[502,1883,504],{},[497,1885,507],{"stretchy":499},[509,1887,512],{"encoding":511},[178,1889,1891],{"className":1890,"ariaHidden":517},[516],[178,1892,1894,1897,1900,1903,1906],{"className":1893},[521],[178,1895],{"className":1896,"style":526},[525],[178,1898,495],{"className":1899,"style":532},[530,531],[178,1901,500],{"className":1902},[536],[178,1904,504],{"className":1905},[530],[178,1907,507],{"className":1908},[543]," 位图方案相比，CFS 面对的是“数百~数千任务、需要动态公平”的场景，红黑树在任务数量大时仍保持对数级开销，而公平性也得到了精确保证——",[17,1911,1912],{},"这正是“场景决定数据结构”的典型例证","。",[870,1915,1917],{"id":1916},"linux-调度类层次","Linux 调度类层次",[10,1919,1920,1921,1924],{},"Linux 内核（含鸿蒙定制版）通过",[17,1922,1923],{},"调度类（Scheduling Class）"," 体系支持多种调度策略，调度类之间严格按优先级顺序执行（高优先级调度类完全饿死低优先级类）：",[168,1926,1928],{"className":170,"code":1927,"language":172,"meta":173,"style":173},"flowchart TD\n    Stop[\"Stop Class\u003Cbr/>专用于每CPU停止任务（最高，不可抢占）\"]\n    DL[\"DL Class\u003Cbr/>SCHED_DEADLINE（EDF 实现，截止时间调度）\"]\n    RT[\"RT Class\u003Cbr/>SCHED_FIFO / SCHED_RR（硬实时，优先级 0–99）\"]\n    CFS[\"CFS Class\u003Cbr/>SCHED_NORMAL / SCHED_BATCH / SCHED_IDLE（普通任务）\"]\n    Idle[\"Idle Class\u003Cbr/>空闲任务（最低）\"]\n\n    Stop --> DL --> RT --> CFS --> Idle\n",[175,1929,1930,1935,1940,1945,1950,1955,1960,1964],{"__ignoreMap":173},[178,1931,1932],{"class":180,"line":181},[178,1933,1934],{"class":184},"flowchart TD\n",[178,1936,1937],{"class":180,"line":188},[178,1938,1939],{"class":184},"    Stop[\"Stop Class\u003Cbr/>专用于每CPU停止任务（最高，不可抢占）\"]\n",[178,1941,1942],{"class":180,"line":194},[178,1943,1944],{"class":184},"    DL[\"DL Class\u003Cbr/>SCHED_DEADLINE（EDF 实现，截止时间调度）\"]\n",[178,1946,1947],{"class":180,"line":200},[178,1948,1949],{"class":184},"    RT[\"RT Class\u003Cbr/>SCHED_FIFO / SCHED_RR（硬实时，优先级 0–99）\"]\n",[178,1951,1952],{"class":180,"line":206},[178,1953,1954],{"class":184},"    CFS[\"CFS Class\u003Cbr/>SCHED_NORMAL / SCHED_BATCH / SCHED_IDLE（普通任务）\"]\n",[178,1956,1957],{"class":180,"line":213},[178,1958,1959],{"class":184},"    Idle[\"Idle Class\u003Cbr/>空闲任务（最低）\"]\n",[178,1961,1962],{"class":180,"line":219},[178,1963,210],{"emptyLinePlaceholder":209},[178,1965,1966],{"class":180,"line":225},[178,1967,1968],{"class":184},"    Stop --> DL --> RT --> CFS --> Idle\n",[10,1970,1971],{},[361,1972,1973],{},"图 2：Linux 内核调度类优先级层次图",[10,1975,1976],{},"鸿蒙将不同 QoS 等级的任务映射到不同调度类（详见下文 QoS 感知调度一节）——这一映射是理解鸿蒙应用侧调度策略的关键入口。",[29,1978,1980],{"id":1979},"能量感知调度eas","能量感知调度（EAS）",[10,1982,1983,1984,1987],{},"EAS（Energy-Aware Scheduling）是 Linux 内核自 v5.0 起引入的节能调度扩展，通过",[17,1985,1986],{},"能量模型（Energy Model, EM）"," 预测任务放置在不同 CPU 上的能耗，选择能效最优的方案。鸿蒙在 EAS 基础上进行了针对麒麟芯片的深度定制。",[870,1989,1991],{"id":1990},"麒麟-soc-大小核架构","麒麟 SoC 大小核架构",[10,1993,1994],{},"以麒麟 9000S（Mate 60 Pro 搭载）为例，其 CPU 集群架构如下：",[64,1996,1997,2013],{},[67,1998,1999],{},[70,2000,2001,2004,2007,2010],{},[73,2002,2003],{"align":75},"集群",[73,2005,2006],{"align":75},"核心配置",[73,2008,2009],{"align":79},"频率范围",[73,2011,2012],{"align":75},"能效特征",[85,2014,2015,2029,2043,2057],{},[70,2016,2017,2020,2023,2026],{},[90,2018,2019],{"align":75},"Prime Core（超大核）",[90,2021,2022],{"align":75},"1× TaiShan v120",[90,2024,2025],{"align":79},"1.53~2.62 GHz",[90,2027,2028],{"align":75},"最高性能，最高功耗",[70,2030,2031,2034,2037,2040],{},[90,2032,2033],{"align":75},"Big Core（大核）",[90,2035,2036],{"align":75},"3× TaiShan v120",[90,2038,2039],{"align":79},"1.12~2.15 GHz",[90,2041,2042],{"align":75},"高性能，中等功耗",[70,2044,2045,2048,2051,2054],{},[90,2046,2047],{"align":75},"Little Core（小核）",[90,2049,2050],{"align":75},"4× Cortex-A510",[90,2052,2053],{"align":79},"0.53~1.53 GHz",[90,2055,2056],{"align":75},"低性能，最低功耗",[70,2058,2059,2062,2065,2068],{},[90,2060,2061],{"align":75},"MCA（辅助核）",[90,2063,2064],{"align":75},"1× 微控制核",[90,2066,2067],{"align":79},"固定低频",[90,2069,2070],{"align":75},"传感器后台低功耗",[870,2072,2074],{"id":2073},"eas-任务放置决策","EAS 任务放置决策",[10,2076,2077,2078,2081,2082,2114,2115,2151],{},"EAS 的核心决策函数是",[17,2079,2080],{},"能耗差分计算","。对于需要放置的任务 ",[178,2083,2085,2100],{"className":2084},[477],[178,2086,2088],{"className":2087},[481],[483,2089,2090],{"xmlns":485},[487,2091,2092,2097],{},[490,2093,2094],{},[493,2095,2096],{},"τ",[509,2098,2099],{"encoding":511},"\\tau",[178,2101,2103],{"className":2102,"ariaHidden":517},[516],[178,2104,2106,2110],{"className":2105},[521],[178,2107],{"className":2108,"style":2109},[525],"height:0.4306em;",[178,2111,2096],{"className":2112,"style":2113},[530,531],"margin-right:0.1132em;","，EAS 枚举所有候选 CPU，选择满足性能约束前提下能耗增量 ",[178,2116,2118,2135],{"className":2117},[477],[178,2119,2121],{"className":2120},[481],[483,2122,2123],{"xmlns":485},[487,2124,2125,2132],{},[490,2126,2127,2129],{},[493,2128,913],{"mathvariant":912},[493,2130,2131],{},"E",[509,2133,2134],{"encoding":511},"\\Delta E",[178,2136,2138],{"className":2137,"ariaHidden":517},[516],[178,2139,2141,2144,2147],{"className":2140},[521],[178,2142],{"className":2143,"style":1530},[525],[178,2145,913],{"className":2146},[530],[178,2148,2131],{"className":2149,"style":2150},[530,531],"margin-right:0.0576em;"," 最小的目标：",[178,2153,2155],{"className":2154},[887],[178,2156,2158,2222],{"className":2157},[477],[178,2159,2161],{"className":2160},[481],[483,2162,2163],{"xmlns":485,"display":896},[487,2164,2165,2219],{},[490,2166,2167,2176,2178,2181,2184,2205,2207,2209,2211,2213,2215,2217],{},[2168,2169,2170,2173],"msup",{},[902,2171,2172],{},"CPU",[497,2174,2175],{},"∗",[497,2177,571],{},[493,2179,2180],{},"arg",[497,2182,2183],{},"⁡",[2185,2186,2187,2194],"munder",{},[490,2188,2189,2192],{},[493,2190,2191],{},"min",[497,2193,2183],{},[490,2195,2196,2198,2201],{},[493,2197,549],{},[497,2199,2200],{},"∈",[493,2202,2204],{"mathvariant":2203},"script","C",[493,2206,913],{"mathvariant":912},[493,2208,2131],{},[497,2210,500],{"stretchy":499},[493,2212,549],{},[497,2214,654],{"separator":517},[493,2216,2096],{},[497,2218,507],{"stretchy":499},[509,2220,2221],{"encoding":511},"\\text{CPU}^* = \\arg\\min_{c \\in \\mathcal{C}} \\Delta E(c, \\tau)",[178,2223,2225,2274],{"className":2224,"ariaHidden":517},[516],[178,2226,2228,2232,2265,2268,2271],{"className":2227},[521],[178,2229],{"className":2230,"style":2231},[525],"height:0.7619em;",[178,2233,2235,2241],{"className":2234},[530],[178,2236,2238],{"className":2237},[530,960],[178,2239,2172],{"className":2240},[530],[178,2242,2244],{"className":2243},[1008],[178,2245,2247],{"className":2246},[1012],[178,2248,2250],{"className":2249},[1017],[178,2251,2253],{"className":2252,"style":2231},[1021],[178,2254,2256,2259],{"style":2255},"top:-3.1362em;margin-right:0.05em;",[178,2257],{"className":2258,"style":1030},[1029],[178,2260,2262],{"className":2261},[1034,1035,1036,1037],[178,2263,2175],{"className":2264},[1068,1037],[178,2266],{"className":2267,"style":968},[967],[178,2269,571],{"className":2270},[972],[178,2272],{"className":2273,"style":968},[967],[178,2275,2277,2281,2289,2293,2353,2356,2359,2362,2365,2368,2372,2375,2378],{"className":2276},[521],[178,2278],{"className":2279,"style":2280},[525],"height:1.5217em;vertical-align:-0.7717em;",[178,2282,2285,2286],{"className":2283},[2284],"mop","ar",[178,2287,1657],{"style":2288},"margin-right:0.0139em;",[178,2290],{"className":2291,"style":2292},[967],"margin-right:0.1667em;",[178,2294,2297],{"className":2295},[2284,2296],"op-limits",[178,2298,2300,2344],{"className":2299},[1012,1013],[178,2301,2303,2341],{"className":2302},[1017],[178,2304,2307,2330],{"className":2305,"style":2306},[1021],"height:0.6679em;",[178,2308,2310,2313],{"style":2309},"top:-2.3557em;margin-left:0em;",[178,2311],{"className":2312,"style":1105},[1029],[178,2314,2316],{"className":2315},[1034,1035,1036,1037],[178,2317,2319,2322,2325],{"className":2318},[530,1037],[178,2320,549],{"className":2321},[530,531,1037],[178,2323,2200],{"className":2324},[972,1037],[178,2326,2204],{"className":2327,"style":2329},[530,2328,1037],"mathcal","margin-right:0.0583em;",[178,2331,2333,2336],{"style":2332},"top:-3em;",[178,2334],{"className":2335,"style":1105},[1029],[178,2337,2338],{},[178,2339,2191],{"className":2340},[2284],[178,2342,1051],{"className":2343},[1050],[178,2345,2347],{"className":2346},[1017],[178,2348,2351],{"className":2349,"style":2350},[1021],"height:0.7717em;",[178,2352],{},[178,2354],{"className":2355,"style":2292},[967],[178,2357,913],{"className":2358},[530],[178,2360,2131],{"className":2361,"style":2150},[530,531],[178,2363,500],{"className":2364},[536],[178,2366,549],{"className":2367},[530,531],[178,2369,654],{"className":2370},[2371],"mpunct",[178,2373],{"className":2374,"style":2292},[967],[178,2376,2096],{"className":2377,"style":2113},[530,531],[178,2379,507],{"className":2380},[543],[10,2382,1230],{},[178,2384,2386],{"className":2385},[887],[178,2387,2389,2461],{"className":2388},[477],[178,2390,2392],{"className":2391},[481],[483,2393,2394],{"xmlns":485,"display":896},[487,2395,2396,2458],{},[490,2397,2398,2400,2402,2404,2406,2408,2410,2412,2414,2416,2418,2420,2422,2429,2431,2437,2439,2442,2444,2446,2448,2450,2456],{},[493,2399,913],{"mathvariant":912},[493,2401,2131],{},[497,2403,500],{"stretchy":499},[493,2405,549],{},[497,2407,654],{"separator":517},[493,2409,2096],{},[497,2411,507],{"stretchy":499},[497,2413,571],{},[493,2415,2131],{},[497,2417,500],{"stretchy":499},[493,2419,549],{},[497,2421,654],{"separator":517},[915,2423,2424,2427],{},[902,2425,2426],{},"util",[493,2428,549],{},[497,2430,907],{},[915,2432,2433,2435],{},[902,2434,2426],{},[493,2436,2096],{},[497,2438,507],{"stretchy":499},[497,2440,2441],{},"−",[493,2443,2131],{},[497,2445,500],{"stretchy":499},[493,2447,549],{},[497,2449,654],{"separator":517},[915,2451,2452,2454],{},[902,2453,2426],{},[493,2455,549],{},[497,2457,507],{"stretchy":499},[509,2459,2460],{"encoding":511},"\\Delta E(c, \\tau) = E(c, \\text{util}_c + \\text{util}_\\tau) - E(c, \\text{util}_c)",[178,2462,2464,2503,2577,2638],{"className":2463,"ariaHidden":517},[516],[178,2465,2467,2470,2473,2476,2479,2482,2485,2488,2491,2494,2497,2500],{"className":2466},[521],[178,2468],{"className":2469,"style":526},[525],[178,2471,913],{"className":2472},[530],[178,2474,2131],{"className":2475,"style":2150},[530,531],[178,2477,500],{"className":2478},[536],[178,2480,549],{"className":2481},[530,531],[178,2483,654],{"className":2484},[2371],[178,2486],{"className":2487,"style":2292},[967],[178,2489,2096],{"className":2490,"style":2113},[530,531],[178,2492,507],{"className":2493},[543],[178,2495],{"className":2496,"style":968},[967],[178,2498,571],{"className":2499},[972],[178,2501],{"className":2502,"style":968},[967],[178,2504,2506,2509,2512,2515,2518,2521,2524,2568,2571,2574],{"className":2505},[521],[178,2507],{"className":2508,"style":526},[525],[178,2510,2131],{"className":2511,"style":2150},[530,531],[178,2513,500],{"className":2514},[536],[178,2516,549],{"className":2517},[530,531],[178,2519,654],{"className":2520},[2371],[178,2522],{"className":2523,"style":2292},[967],[178,2525,2527,2533],{"className":2526},[530],[178,2528,2530],{"className":2529},[530,960],[178,2531,2426],{"className":2532},[530],[178,2534,2536],{"className":2535},[1008],[178,2537,2539,2560],{"className":2538},[1012,1013],[178,2540,2542,2557],{"className":2541},[1017],[178,2543,2545],{"className":2544,"style":1022},[1021],[178,2546,2548,2551],{"style":2547},"top:-2.55em;margin-right:0.05em;",[178,2549],{"className":2550,"style":1030},[1029],[178,2552,2554],{"className":2553},[1034,1035,1036,1037],[178,2555,549],{"className":2556},[530,531,1037],[178,2558,1051],{"className":2559},[1050],[178,2561,2563],{"className":2562},[1017],[178,2564,2566],{"className":2565,"style":1058},[1021],[178,2567],{},[178,2569],{"className":2570,"style":1064},[967],[178,2572,907],{"className":2573},[1068],[178,2575],{"className":2576,"style":1064},[967],[178,2578,2580,2583,2626,2629,2632,2635],{"className":2579},[521],[178,2581],{"className":2582,"style":526},[525],[178,2584,2586,2592],{"className":2585},[530],[178,2587,2589],{"className":2588},[530,960],[178,2590,2426],{"className":2591},[530],[178,2593,2595],{"className":2594},[1008],[178,2596,2598,2618],{"className":2597},[1012,1013],[178,2599,2601,2615],{"className":2600},[1017],[178,2602,2604],{"className":2603,"style":1022},[1021],[178,2605,2606,2609],{"style":2547},[178,2607],{"className":2608,"style":1030},[1029],[178,2610,2612],{"className":2611},[1034,1035,1036,1037],[178,2613,2096],{"className":2614,"style":2113},[530,531,1037],[178,2616,1051],{"className":2617},[1050],[178,2619,2621],{"className":2620},[1017],[178,2622,2624],{"className":2623,"style":1058},[1021],[178,2625],{},[178,2627,507],{"className":2628},[543],[178,2630],{"className":2631,"style":1064},[967],[178,2633,2441],{"className":2634},[1068],[178,2636],{"className":2637,"style":1064},[967],[178,2639,2641,2644,2647,2650,2653,2656,2659,2702],{"className":2640},[521],[178,2642],{"className":2643,"style":526},[525],[178,2645,2131],{"className":2646,"style":2150},[530,531],[178,2648,500],{"className":2649},[536],[178,2651,549],{"className":2652},[530,531],[178,2654,654],{"className":2655},[2371],[178,2657],{"className":2658,"style":2292},[967],[178,2660,2662,2668],{"className":2661},[530],[178,2663,2665],{"className":2664},[530,960],[178,2666,2426],{"className":2667},[530],[178,2669,2671],{"className":2670},[1008],[178,2672,2674,2694],{"className":2673},[1012,1013],[178,2675,2677,2691],{"className":2676},[1017],[178,2678,2680],{"className":2679,"style":1022},[1021],[178,2681,2682,2685],{"style":2547},[178,2683],{"className":2684,"style":1030},[1029],[178,2686,2688],{"className":2687},[1034,1035,1036,1037],[178,2689,549],{"className":2690},[530,531,1037],[178,2692,1051],{"className":2693},[1050],[178,2695,2697],{"className":2696},[1017],[178,2698,2700],{"className":2699,"style":1058},[1021],[178,2701],{},[178,2703,507],{"className":2704},[543],[10,2706,2707,2765],{},[178,2708,2710,2735],{"className":2709},[477],[178,2711,2713],{"className":2712},[481],[483,2714,2715],{"xmlns":485},[487,2716,2717,2732],{},[490,2718,2719,2721,2723,2725,2727,2730],{},[493,2720,2131],{},[497,2722,500],{"stretchy":499},[493,2724,549],{},[497,2726,654],{"separator":517},[493,2728,2729],{},"u",[497,2731,507],{"stretchy":499},[509,2733,2734],{"encoding":511},"E(c, u)",[178,2736,2738],{"className":2737,"ariaHidden":517},[516],[178,2739,2741,2744,2747,2750,2753,2756,2759,2762],{"className":2740},[521],[178,2742],{"className":2743,"style":526},[525],[178,2745,2131],{"className":2746,"style":2150},[530,531],[178,2748,500],{"className":2749},[536],[178,2751,549],{"className":2752},[530,531],[178,2754,654],{"className":2755},[2371],[178,2757],{"className":2758,"style":2292},[967],[178,2760,2729],{"className":2761},[530,531],[178,2763,507],{"className":2764},[543]," 由能量模型给出，通过测量不同频率点的功耗预先建模：",[168,2767,2769],{"className":547,"code":2768,"language":549,"meta":173,"style":173},"/* Linux EAS 能量模型结构（简化） */\nstruct em_perf_domain {\n    struct em_perf_state *table;          /* 各频率点的能耗表 */\n    int                   nr_perf_states; /* 频率点数量 */\n};\n\nstruct em_perf_state {\n    unsigned long frequency;              /* Hz */\n    unsigned long power;                  /* mW */\n    unsigned long cost;                   /* power/frequency，能效指标 */\n};\n",[175,2770,2771,2776,2783,2798,2809,2813,2817,2824,2836,2848,2860],{"__ignoreMap":173},[178,2772,2773],{"class":180,"line":181},[178,2774,2775],{"class":556},"/* Linux EAS 能量模型结构（简化） */\n",[178,2777,2778,2780],{"class":180,"line":188},[178,2779,1713],{"class":570},[178,2781,2782],{"class":184}," em_perf_domain {\n",[178,2784,2785,2787,2790,2792,2795],{"class":180,"line":194},[178,2786,1721],{"class":570},[178,2788,2789],{"class":184}," em_perf_state ",[178,2791,1737],{"class":570},[178,2793,2794],{"class":184},"table;",[178,2796,2797],{"class":556},"          /* 各频率点的能耗表 */\n",[178,2799,2800,2803,2806],{"class":180,"line":200},[178,2801,2802],{"class":570},"    int",[178,2804,2805],{"class":184},"                   nr_perf_states;",[178,2807,2808],{"class":556}," /* 频率点数量 */\n",[178,2810,2811],{"class":180,"line":206},[178,2812,1770],{"class":184},[178,2814,2815],{"class":180,"line":213},[178,2816,210],{"emptyLinePlaceholder":209},[178,2818,2819,2821],{"class":180,"line":219},[178,2820,1713],{"class":570},[178,2822,2823],{"class":184}," em_perf_state {\n",[178,2825,2826,2828,2830,2833],{"class":180,"line":225},[178,2827,1756],{"class":570},[178,2829,1759],{"class":570},[178,2831,2832],{"class":184}," frequency;",[178,2834,2835],{"class":556},"              /* Hz */\n",[178,2837,2838,2840,2842,2845],{"class":180,"line":230},[178,2839,1756],{"class":570},[178,2841,1759],{"class":570},[178,2843,2844],{"class":184}," power;",[178,2846,2847],{"class":556},"                  /* mW */\n",[178,2849,2850,2852,2854,2857],{"class":180,"line":235},[178,2851,1756],{"class":570},[178,2853,1759],{"class":570},[178,2855,2856],{"class":184}," cost;",[178,2858,2859],{"class":556},"                   /* power/frequency，能效指标 */\n",[178,2861,2862],{"class":180,"line":241},[178,2863,1770],{"class":184},[10,2865,2866],{},"麒麟 9000S 各集群能耗模型参考数据（华为内部数据推算）：",[64,2868,2869,2884],{},[67,2870,2871],{},[70,2872,2873,2875,2878,2881],{},[73,2874,2003],{"align":75},[73,2876,2877],{"align":79},"频率点",[73,2879,2880],{"align":79},"功耗（mW）",[73,2882,2883],{"align":79},"归一化效率",[85,2885,2886,2900,2913,2926,2940,2953,2966,2980],{},[70,2887,2888,2891,2894,2897],{},[90,2889,2890],{"align":75},"小核 A510",[90,2892,2893],{"align":79},"530 MHz",[90,2895,2896],{"align":79},"18",[90,2898,2899],{"align":79},"1.00（基准）",[70,2901,2902,2904,2907,2910],{},[90,2903,2890],{"align":75},[90,2905,2906],{"align":79},"1000 MHz",[90,2908,2909],{"align":79},"52",[90,2911,2912],{"align":79},"0.81",[70,2914,2915,2917,2920,2923],{},[90,2916,2890],{"align":75},[90,2918,2919],{"align":79},"1530 MHz",[90,2921,2922],{"align":79},"130",[90,2924,2925],{"align":79},"0.62",[70,2927,2928,2931,2934,2937],{},[90,2929,2930],{"align":75},"大核 TaiShan",[90,2932,2933],{"align":79},"1120 MHz",[90,2935,2936],{"align":79},"180",[90,2938,2939],{"align":79},"0.57",[70,2941,2942,2944,2947,2950],{},[90,2943,2930],{"align":75},[90,2945,2946],{"align":79},"1800 MHz",[90,2948,2949],{"align":79},"420",[90,2951,2952],{"align":79},"0.49",[70,2954,2955,2957,2960,2963],{},[90,2956,2930],{"align":75},[90,2958,2959],{"align":79},"2150 MHz",[90,2961,2962],{"align":79},"780",[90,2964,2965],{"align":79},"0.41",[70,2967,2968,2971,2974,2977],{},[90,2969,2970],{"align":75},"超大核 TaiShan",[90,2972,2973],{"align":79},"2000 MHz",[90,2975,2976],{"align":79},"1050",[90,2978,2979],{"align":79},"0.38",[70,2981,2982,2984,2987,2990],{},[90,2983,2970],{"align":75},[90,2985,2986],{"align":79},"2620 MHz",[90,2988,2989],{"align":79},"2200",[90,2991,2992],{"align":79},"0.29",[10,2994,2995,2998,2999,3092],{},[17,2996,2997],{},"EAS 任务迁移策略（鸿蒙扩展）："," 任务负载利用率（",[178,3000,3002,3037],{"className":3001},[477],[178,3003,3005],{"className":3004},[481],[483,3006,3007],{"xmlns":485},[487,3008,3009,3034],{},[490,3010,3011,3013,3015,3017,3019,3021,3024,3026,3028,3031],{},[493,3012,2729],{},[493,3014,919],{},[493,3016,943],{},[493,3018,1651],{},[497,3020,2200],{},[497,3022,3023],{"stretchy":499},"[",[502,3025,936],{},[497,3027,654],{"separator":517},[502,3029,3030],{},"1024",[497,3032,3033],{"stretchy":499},"]",[509,3035,3036],{"encoding":511},"util \\in [0, 1024]",[178,3038,3040,3068],{"className":3039,"ariaHidden":517},[516],[178,3041,3043,3047,3050,3053,3056,3059,3062,3065],{"className":3042},[521],[178,3044],{"className":3045,"style":3046},[525],"height:0.7335em;vertical-align:-0.0391em;",[178,3048,2729],{"className":3049},[530,531],[178,3051,919],{"className":3052},[530,531],[178,3054,943],{"className":3055},[530,531],[178,3057,1651],{"className":3058,"style":1684},[530,531],[178,3060],{"className":3061,"style":968},[967],[178,3063,2200],{"className":3064},[972],[178,3066],{"className":3067,"style":968},[967],[178,3069,3071,3074,3077,3080,3083,3086,3089],{"className":3070},[521],[178,3072],{"className":3073,"style":526},[525],[178,3075,3023],{"className":3076},[536],[178,3078,936],{"className":3079},[530],[178,3081,654],{"className":3082},[2371],[178,3084],{"className":3085,"style":2292},[967],[178,3087,3030],{"className":3088},[530],[178,3090,3033],{"className":3091},[543],"）的决策规则为：",[39,3094,3095,3167,3261,3332],{},[42,3096,3097,3166],{},[178,3098,3100,3126],{"className":3099},[477],[178,3101,3103],{"className":3102},[481],[483,3104,3105],{"xmlns":485},[487,3106,3107,3123],{},[490,3108,3109,3111,3113,3115,3117,3120],{},[493,3110,2729],{},[493,3112,919],{},[493,3114,943],{},[493,3116,1651],{},[497,3118,3119],{},"\u003C",[502,3121,3122],{},"200",[509,3124,3125],{"encoding":511},"util \u003C 200",[178,3127,3129,3156],{"className":3128,"ariaHidden":517},[516],[178,3130,3132,3135,3138,3141,3144,3147,3150,3153],{"className":3131},[521],[178,3133],{"className":3134,"style":3046},[525],[178,3136,2729],{"className":3137},[530,531],[178,3139,919],{"className":3140},[530,531],[178,3142,943],{"className":3143},[530,531],[178,3145,1651],{"className":3146,"style":1684},[530,531],[178,3148],{"className":3149,"style":968},[967],[178,3151,3119],{"className":3152},[972],[178,3154],{"className":3155,"style":968},[967],[178,3157,3159,3163],{"className":3158},[521],[178,3160],{"className":3161,"style":3162},[525],"height:0.6444em;",[178,3164,3122],{"className":3165},[530],"：优先放置小核，低频运行；",[42,3168,3169,3260],{},[178,3170,3172,3202],{"className":3171},[477],[178,3173,3175],{"className":3174},[481],[483,3176,3177],{"xmlns":485},[487,3178,3179,3199],{},[490,3180,3181,3183,3186,3188,3190,3192,3194,3196],{},[502,3182,3122],{},[497,3184,3185],{},"≤",[493,3187,2729],{},[493,3189,919],{},[493,3191,943],{},[493,3193,1651],{},[497,3195,3119],{},[502,3197,3198],{},"600",[509,3200,3201],{"encoding":511},"200 \\le util \u003C 600",[178,3203,3205,3224,3251],{"className":3204,"ariaHidden":517},[516],[178,3206,3208,3212,3215,3218,3221],{"className":3207},[521],[178,3209],{"className":3210,"style":3211},[525],"height:0.7804em;vertical-align:-0.136em;",[178,3213,3122],{"className":3214},[530],[178,3216],{"className":3217,"style":968},[967],[178,3219,3185],{"className":3220},[972],[178,3222],{"className":3223,"style":968},[967],[178,3225,3227,3230,3233,3236,3239,3242,3245,3248],{"className":3226},[521],[178,3228],{"className":3229,"style":3046},[525],[178,3231,2729],{"className":3232},[530,531],[178,3234,919],{"className":3235},[530,531],[178,3237,943],{"className":3238},[530,531],[178,3240,1651],{"className":3241,"style":1684},[530,531],[178,3243],{"className":3244,"style":968},[967],[178,3246,3119],{"className":3247},[972],[178,3249],{"className":3250,"style":968},[967],[178,3252,3254,3257],{"className":3253},[521],[178,3255],{"className":3256,"style":3162},[525],[178,3258,3198],{"className":3259},[530],"：放置大核，中频运行；",[42,3262,3263,3331],{},[178,3264,3266,3291],{"className":3265},[477],[178,3267,3269],{"className":3268},[481],[483,3270,3271],{"xmlns":485},[487,3272,3273,3288],{},[490,3274,3275,3277,3279,3281,3283,3286],{},[493,3276,2729],{},[493,3278,919],{},[493,3280,943],{},[493,3282,1651],{},[497,3284,3285],{},"≥",[502,3287,3198],{},[509,3289,3290],{"encoding":511},"util \\ge 600",[178,3292,3294,3322],{"className":3293,"ariaHidden":517},[516],[178,3295,3297,3301,3304,3307,3310,3313,3316,3319],{"className":3296},[521],[178,3298],{"className":3299,"style":3300},[525],"height:0.8304em;vertical-align:-0.136em;",[178,3302,2729],{"className":3303},[530,531],[178,3305,919],{"className":3306},[530,531],[178,3308,943],{"className":3309},[530,531],[178,3311,1651],{"className":3312,"style":1684},[530,531],[178,3314],{"className":3315,"style":968},[967],[178,3317,3285],{"className":3318},[972],[178,3320],{"className":3321,"style":968},[967],[178,3323,3325,3328],{"className":3324},[521],[178,3326],{"className":3327,"style":3162},[525],[178,3329,3198],{"className":3330},[530],"：允许迁移至超大核，高频运行；",[42,3333,3334,3335,3403],{},"突发性任务（短时 ",[178,3336,3338,3364],{"className":3337},[477],[178,3339,3341],{"className":3340},[481],[483,3342,3343],{"xmlns":485},[487,3344,3345,3361],{},[490,3346,3347,3349,3351,3353,3355,3358],{},[493,3348,2729],{},[493,3350,919],{},[493,3352,943],{},[493,3354,1651],{},[497,3356,3357],{},">",[502,3359,3360],{},"800",[509,3362,3363],{"encoding":511},"util > 800",[178,3365,3367,3394],{"className":3366,"ariaHidden":517},[516],[178,3368,3370,3373,3376,3379,3382,3385,3388,3391],{"className":3369},[521],[178,3371],{"className":3372,"style":3046},[525],[178,3374,2729],{"className":3375},[530,531],[178,3377,919],{"className":3378},[530,531],[178,3380,943],{"className":3381},[530,531],[178,3383,1651],{"className":3384,"style":1684},[530,531],[178,3386],{"className":3387,"style":968},[967],[178,3389,3357],{"className":3390},[972],[178,3392],{"className":3393,"style":968},[967],[178,3395,3397,3400],{"className":3396},[521],[178,3398],{"className":3399,"style":3162},[525],[178,3401,3360],{"className":3402},[530],"）：触发 Boost，暂时提升频率上限。",[10,3405,3406,3407,3410],{},"这组规则的精髓在于“",[17,3408,3409],{},"能效优先，性能兜底","”：绝大多数交互场景下任务在小核完成，只有重负载任务才被允许“动用”大核与超大核。",[870,3412,3414],{"id":3413},"dvfs-调频联动","DVFS 调频联动",[10,3416,3417,3418,3421,3422,3425],{},"EAS 与 ",[17,3419,3420],{},"CPUFreq（DVFS 动态调频子系统）"," 联动，通过 ",[17,3423,3424],{},"schedutil"," 调速器根据当前 CPU 利用率实时调整频率：",[178,3427,3429],{"className":3428},[887],[178,3430,3432,3491],{"className":3431},[477],[178,3433,3435],{"className":3434},[481],[483,3436,3437],{"xmlns":485,"display":896},[487,3438,3439,3488],{},[490,3440,3441,3449,3451,3458,3460,3475,3477,3479,3481,3483,3486],{},[915,3442,3443,3446],{},[493,3444,3445],{},"f",[902,3447,3448],{},"target",[497,3450,571],{},[915,3452,3453,3455],{},[493,3454,3445],{},[902,3456,3457],{},"max",[497,3459,925],{},[927,3461,3462,3469],{},[915,3463,3464,3466],{},[902,3465,2426],{},[902,3467,3468],{},"cpu",[915,3470,3471,3473],{},[493,3472,2204],{},[902,3474,3468],{},[497,3476,925],{},[497,3478,500],{"stretchy":499},[502,3480,504],{},[497,3482,907],{},[902,3484,3485],{},"margin",[497,3487,507],{"stretchy":499},[509,3489,3490],{"encoding":511},"f_{\\text{target}} = f_{\\text{max}} \\times \\frac{\\text{util}_{\\text{cpu}}}{C_{\\text{cpu}}} \\times (1 + \\text{margin})",[178,3492,3494,3560,3622,3793,3814],{"className":3493,"ariaHidden":517},[516],[178,3495,3497,3501,3551,3554,3557],{"className":3496},[521],[178,3498],{"className":3499,"style":3500},[525],"height:0.9805em;vertical-align:-0.2861em;",[178,3502,3504,3508],{"className":3503},[530],[178,3505,3445],{"className":3506,"style":3507},[530,531],"margin-right:0.1076em;",[178,3509,3511],{"className":3510},[1008],[178,3512,3514,3542],{"className":3513},[1012,1013],[178,3515,3517,3539],{"className":3516},[1017],[178,3518,3521],{"className":3519,"style":3520},[1021],"height:0.2806em;",[178,3522,3524,3527],{"style":3523},"top:-2.55em;margin-left:-0.1076em;margin-right:0.05em;",[178,3525],{"className":3526,"style":1030},[1029],[178,3528,3530],{"className":3529},[1034,1035,1036,1037],[178,3531,3533],{"className":3532},[530,1037],[178,3534,3536],{"className":3535},[530,960,1037],[178,3537,3448],{"className":3538},[530,1037],[178,3540,1051],{"className":3541},[1050],[178,3543,3545],{"className":3544},[1017],[178,3546,3549],{"className":3547,"style":3548},[1021],"height:0.2861em;",[178,3550],{},[178,3552],{"className":3553,"style":968},[967],[178,3555,571],{"className":3556},[972],[178,3558],{"className":3559,"style":968},[967],[178,3561,3563,3567,3613,3616,3619],{"className":3562},[521],[178,3564],{"className":3565,"style":3566},[525],"height:0.8889em;vertical-align:-0.1944em;",[178,3568,3570,3573],{"className":3569},[530],[178,3571,3445],{"className":3572,"style":3507},[530,531],[178,3574,3576],{"className":3575},[1008],[178,3577,3579,3605],{"className":3578},[1012,1013],[178,3580,3582,3602],{"className":3581},[1017],[178,3583,3585],{"className":3584,"style":1022},[1021],[178,3586,3587,3590],{"style":3523},[178,3588],{"className":3589,"style":1030},[1029],[178,3591,3593],{"className":3592},[1034,1035,1036,1037],[178,3594,3596],{"className":3595},[530,1037],[178,3597,3599],{"className":3598},[530,960,1037],[178,3600,3457],{"className":3601},[530,1037],[178,3603,1051],{"className":3604},[1050],[178,3606,3608],{"className":3607},[1017],[178,3609,3611],{"className":3610,"style":1058},[1021],[178,3612],{},[178,3614],{"className":3615,"style":1064},[967],[178,3617,925],{"className":3618},[1068],[178,3620],{"className":3621,"style":1064},[967],[178,3623,3625,3629,3784,3787,3790],{"className":3624},[521],[178,3626],{"className":3627,"style":3628},[525],"height:2.3435em;vertical-align:-0.9721em;",[178,3630,3632,3635,3781],{"className":3631},[530],[178,3633],{"className":3634},[536,1085],[178,3636,3638],{"className":3637},[927],[178,3639,3641,3772],{"className":3640},[1012,1013],[178,3642,3644,3769],{"className":3643},[1017],[178,3645,3648,3704,3712],{"className":3646,"style":3647},[1021],"height:1.3714em;",[178,3649,3650,3653],{"style":1101},[178,3651],{"className":3652,"style":1105},[1029],[178,3654,3656],{"className":3655},[530],[178,3657,3659,3663],{"className":3658},[530],[178,3660,2204],{"className":3661,"style":3662},[530,531],"margin-right:0.0715em;",[178,3664,3666],{"className":3665},[1008],[178,3667,3669,3696],{"className":3668},[1012,1013],[178,3670,3672,3693],{"className":3671},[1017],[178,3673,3675],{"className":3674,"style":1022},[1021],[178,3676,3678,3681],{"style":3677},"top:-2.55em;margin-left:-0.0715em;margin-right:0.05em;",[178,3679],{"className":3680,"style":1030},[1029],[178,3682,3684],{"className":3683},[1034,1035,1036,1037],[178,3685,3687],{"className":3686},[530,1037],[178,3688,3690],{"className":3689},[530,960,1037],[178,3691,3468],{"className":3692},[530,1037],[178,3694,1051],{"className":3695},[1050],[178,3697,3699],{"className":3698},[1017],[178,3700,3702],{"className":3701,"style":3548},[1021],[178,3703],{},[178,3705,3706,3709],{"style":1154},[178,3707],{"className":3708,"style":1105},[1029],[178,3710],{"className":3711,"style":1162},[1161],[178,3713,3714,3717],{"style":1165},[178,3715],{"className":3716,"style":1105},[1029],[178,3718,3720],{"className":3719},[530],[178,3721,3723,3729],{"className":3722},[530],[178,3724,3726],{"className":3725},[530,960],[178,3727,2426],{"className":3728},[530],[178,3730,3732],{"className":3731},[1008],[178,3733,3735,3761],{"className":3734},[1012,1013],[178,3736,3738,3758],{"className":3737},[1017],[178,3739,3741],{"className":3740,"style":1022},[1021],[178,3742,3743,3746],{"style":2547},[178,3744],{"className":3745,"style":1030},[1029],[178,3747,3749],{"className":3748},[1034,1035,1036,1037],[178,3750,3752],{"className":3751},[530,1037],[178,3753,3755],{"className":3754},[530,960,1037],[178,3756,3468],{"className":3757},[530,1037],[178,3759,1051],{"className":3760},[1050],[178,3762,3764],{"className":3763},[1017],[178,3765,3767],{"className":3766,"style":3548},[1021],[178,3768],{},[178,3770,1051],{"className":3771},[1050],[178,3773,3775],{"className":3774},[1017],[178,3776,3779],{"className":3777,"style":3778},[1021],"height:0.9721em;",[178,3780],{},[178,3782],{"className":3783},[543,1085],[178,3785],{"className":3786,"style":1064},[967],[178,3788,925],{"className":3789},[1068],[178,3791],{"className":3792,"style":1064},[967],[178,3794,3796,3799,3802,3805,3808,3811],{"className":3795},[521],[178,3797],{"className":3798,"style":526},[525],[178,3800,500],{"className":3801},[536],[178,3803,504],{"className":3804},[530],[178,3806],{"className":3807,"style":1064},[967],[178,3809,907],{"className":3810},[1068],[178,3812],{"className":3813,"style":1064},[967],[178,3815,3817,3820,3826],{"className":3816},[521],[178,3818],{"className":3819,"style":526},[525],[178,3821,3823],{"className":3822},[530,960],[178,3824,3485],{"className":3825},[530],[178,3827,507],{"className":3828},[543],[10,3830,3831],{},"鸿蒙将默认 margin 从 Linux 标准的 25% 调整为场景自适应（前台应用 margin 约 20%，后台任务约 5%），在响应性与节能间动态平衡。",[29,3833,3835],{"id":3834},"qos-感知调度","QoS 感知调度",[10,3837,3838,3839,3842],{},"鸿蒙引入了",[17,3840,3841],{},"五级 QoS（Quality of Service）分类体系","，对应用中不同重要程度的任务进行差异化调度管理。",[870,3844,3846],{"id":3845},"qos-等级定义","QoS 等级定义",[64,3848,3849,3867],{},[67,3850,3851],{},[70,3852,3853,3856,3859,3862,3864],{},[73,3854,3855],{"align":79},"QoS 等级",[73,3857,3858],{"align":75},"名称",[73,3860,3861],{"align":75},"调度类映射",[73,3863,1501],{"align":79},[73,3865,3866],{"align":75},"典型任务",[85,3868,3869,3885,3900,3915,3931],{},[70,3870,3871,3873,3876,3879,3882],{},[90,3872,936],{"align":79},[90,3874,3875],{"align":75},"Background",[90,3877,3878],{"align":75},"SCHED_NORMAL",[90,3880,3881],{"align":79},"+10~+19",[90,3883,3884],{"align":75},"日志上报、云备份",[70,3886,3887,3889,3892,3894,3897],{},[90,3888,504],{"align":79},[90,3890,3891],{"align":75},"Utility",[90,3893,3878],{"align":75},[90,3895,3896],{"align":79},"+5~+9",[90,3898,3899],{"align":75},"预加载、后台下载",[70,3901,3902,3905,3908,3910,3912],{},[90,3903,3904],{"align":79},"2",[90,3906,3907],{"align":75},"Default",[90,3909,3878],{"align":75},[90,3911,936],{"align":79},[90,3913,3914],{"align":75},"一般应用逻辑",[70,3916,3917,3920,3923,3925,3928],{},[90,3918,3919],{"align":79},"3",[90,3921,3922],{"align":75},"User-Initiated",[90,3924,3878],{"align":75},[90,3926,3927],{"align":79},"-5~-8",[90,3929,3930],{"align":75},"文件导入、搜索",[70,3932,3933,3936,3939,3942,3944],{},[90,3934,3935],{"align":79},"4",[90,3937,3938],{"align":75},"User-Interactive",[90,3940,3941],{"align":75},"SCHED_RR（优先级 50-70）",[90,3943,728],{"align":79},[90,3945,3946],{"align":75},"UI 渲染、触摸响应",[10,3948,3949,3950,3953],{},"注意最高等级的 QoS 并非简单地再调低 nice 值，而是",[17,3951,3952],{},"直接切换到实时调度类 SCHED_RR","——UI 渲染与触摸响应任务本质上属于“交互实时任务”，用实时优先级保证其确定性，是鸿蒙流畅性体验的调度层根基。",[870,3955,3957],{"id":3956},"qos-api-使用","QoS API 使用",[3959,3960,3961,4019],"tabs",{},[3962,3963,3964],"template",{"v-slot:C++ 应用层接口":173},[168,3965,3969],{"className":3966,"code":3967,"language":3968,"meta":173,"style":173},"language-cpp shiki shiki-themes houston","#include \"qos.h\"\n\n// 为当前线程设置 QoS 等级\nint result = OHOS::QOS::SetThreadQos(\n    OHOS::QOS::QosLevel::QOS_USER_INTERACTIVE);\n","cpp",[175,3970,3971,3979,3983,3988,4014],{"__ignoreMap":173},[178,3972,3973,3976],{"class":180,"line":181},[178,3974,3975],{"class":570},"#include",[178,3977,3978],{"class":584}," \"qos.h\"\n",[178,3980,3981],{"class":180,"line":188},[178,3982,210],{"emptyLinePlaceholder":209},[178,3984,3985],{"class":180,"line":194},[178,3986,3987],{"class":556},"// 为当前线程设置 QoS 等级\n",[178,3989,3990,3993,3996,3998,4001,4005,4008,4011],{"class":180,"line":200},[178,3991,3992],{"class":570},"int",[178,3994,3995],{"class":184}," result ",[178,3997,571],{"class":570},[178,3999,4000],{"class":184}," OHOS::",[178,4002,4004],{"class":4003},"s8HWQ","QOS",[178,4006,4007],{"class":184},"::",[178,4009,4010],{"class":641},"SetThreadQos",[178,4012,4013],{"class":184},"(\n",[178,4015,4016],{"class":180,"line":206},[178,4017,4018],{"class":184},"    OHOS::QOS::QosLevel::QOS_USER_INTERACTIVE);\n",[3962,4020,4021],{"v-slot:FFRT 任务接口":173},[168,4022,4024],{"className":3966,"code":4023,"language":3968,"meta":173,"style":173},"#include \"ffrt.h\"\n\n// 创建带 QoS 的任务（FFRT 接口）\nffrt::task_attr attr;\nattr.qos(ffrt::qos_user_interactive);  // 最高优先级\nffrt::submit([]{\n    render_frame();  // 帧渲染任务\n}, {}, {}, attr);\n",[175,4025,4026,4033,4037,4042,4047,4064,4077,4088],{"__ignoreMap":173},[178,4027,4028,4030],{"class":180,"line":181},[178,4029,3975],{"class":570},[178,4031,4032],{"class":584}," \"ffrt.h\"\n",[178,4034,4035],{"class":180,"line":188},[178,4036,210],{"emptyLinePlaceholder":209},[178,4038,4039],{"class":180,"line":194},[178,4040,4041],{"class":556},"// 创建带 QoS 的任务（FFRT 接口）\n",[178,4043,4044],{"class":180,"line":200},[178,4045,4046],{"class":184},"ffrt::task_attr attr;\n",[178,4048,4049,4052,4055,4058,4061],{"class":180,"line":206},[178,4050,4051],{"class":785},"attr",[178,4053,4054],{"class":184},".",[178,4056,4057],{"class":641},"qos",[178,4059,4060],{"class":184},"(ffrt::qos_user_interactive);",[178,4062,4063],{"class":556},"  // 最高优先级\n",[178,4065,4066,4069,4071,4074],{"class":180,"line":213},[178,4067,4068],{"class":4003},"ffrt",[178,4070,4007],{"class":184},[178,4072,4073],{"class":641},"submit",[178,4075,4076],{"class":184},"([]{\n",[178,4078,4079,4082,4085],{"class":180,"line":219},[178,4080,4081],{"class":641},"    render_frame",[178,4083,4084],{"class":184},"();",[178,4086,4087],{"class":556},"  // 帧渲染任务\n",[178,4089,4090],{"class":180,"line":225},[178,4091,4092],{"class":184},"}, {}, {}, attr);\n",[870,4094,4096],{"id":4095},"qos-与-cpu-亲和性联动","QoS 与 CPU 亲和性联动",[10,4098,4099],{},"鸿蒙调度器将 QoS 等级与 CPU 集群绑定策略结合，形成完整的资源分配策略：",[64,4101,4102,4114],{},[67,4103,4104],{},[70,4105,4106,4108,4111],{},[73,4107,3855],{"align":75},[73,4109,4110],{"align":75},"CPU 亲和性策略",[73,4112,4113],{"align":75},"调频策略",[85,4115,4116,4127,4138,4148,4159],{},[70,4117,4118,4121,4124],{},[90,4119,4120],{"align":75},"Background（0）",[90,4122,4123],{"align":75},"仅允许小核",[90,4125,4126],{"align":75},"最低频率档",[70,4128,4129,4132,4135],{},[90,4130,4131],{"align":75},"Utility（1）",[90,4133,4134],{"align":75},"优先小核，可溢出至大核",[90,4136,4137],{"align":75},"按负载线性调频",[70,4139,4140,4143,4146],{},[90,4141,4142],{"align":75},"Default（2）",[90,4144,4145],{"align":75},"全核可用，EAS 决策",[90,4147,4137],{"align":75},[70,4149,4150,4153,4156],{},[90,4151,4152],{"align":75},"User-Initiated（3）",[90,4154,4155],{"align":75},"优先大核",[90,4157,4158],{"align":75},"适当超频（+10% margin）",[70,4160,4161,4164,4167],{},[90,4162,4163],{"align":75},"User-Interactive（4）",[90,4165,4166],{"align":75},"优先超大核/大核",[90,4168,4169],{"align":75},"激进调频，快速响应",[29,4171,4173],{"id":4172},"帧感知调度frame-aware-scheduling-fas","帧感知调度（Frame-Aware Scheduling, FAS）",[10,4175,4176],{},"帧感知调度是鸿蒙为保障屏幕渲染流畅性（60/90/120/144Hz）而专门设计的调度机制，于 HarmonyOS 3.0 正式引入，4.0 版本进一步优化。",[870,4178,4179],{"id":4179},"帧渲染的时间约束",[10,4181,4182],{},"以 120Hz 刷新率为例，每帧的时间预算为：",[178,4184,4186],{"className":4185},[887],[178,4187,4189,4227],{"className":4188},[477],[178,4190,4192],{"className":4191},[481],[483,4193,4194],{"xmlns":485,"display":896},[487,4195,4196,4224],{},[490,4197,4198,4206,4208,4215,4218,4221],{},[915,4199,4200,4203],{},[493,4201,4202],{},"T",[902,4204,4205],{},"frame",[497,4207,571],{},[927,4209,4210,4212],{},[502,4211,504],{},[502,4213,4214],{},"120",[497,4216,4217],{},"≈",[502,4219,4220],{},"8.33",[902,4222,4223],{}," ms",[509,4225,4226],{"encoding":511},"T_{\\text{frame}} = \\frac{1}{120} \\approx 8.33 \\text{ ms}",[178,4228,4230,4292,4372],{"className":4229,"ariaHidden":517},[516],[178,4231,4233,4236,4283,4286,4289],{"className":4232},[521],[178,4234],{"className":4235,"style":995},[525],[178,4237,4239,4242],{"className":4238},[530],[178,4240,4202],{"className":4241,"style":1115},[530,531],[178,4243,4245],{"className":4244},[1008],[178,4246,4248,4275],{"className":4247},[1012,1013],[178,4249,4251,4272],{"className":4250},[1017],[178,4252,4255],{"className":4253,"style":4254},[1021],"height:0.3361em;",[178,4256,4257,4260],{"style":1131},[178,4258],{"className":4259,"style":1030},[1029],[178,4261,4263],{"className":4262},[1034,1035,1036,1037],[178,4264,4266],{"className":4265},[530,1037],[178,4267,4269],{"className":4268},[530,960,1037],[178,4270,4205],{"className":4271},[530,1037],[178,4273,1051],{"className":4274},[1050],[178,4276,4278],{"className":4277},[1017],[178,4279,4281],{"className":4280,"style":1058},[1021],[178,4282],{},[178,4284],{"className":4285,"style":968},[967],[178,4287,571],{"className":4288},[972],[178,4290],{"className":4291,"style":968},[967],[178,4293,4295,4299,4363,4366,4369],{"className":4294},[521],[178,4296],{"className":4297,"style":4298},[525],"height:2.0074em;vertical-align:-0.686em;",[178,4300,4302,4305,4360],{"className":4301},[530],[178,4303],{"className":4304},[536,1085],[178,4306,4308],{"className":4307},[927],[178,4309,4311,4351],{"className":4310},[1012,1013],[178,4312,4314,4348],{"className":4313},[1017],[178,4315,4318,4329,4337],{"className":4316,"style":4317},[1021],"height:1.3214em;",[178,4319,4320,4323],{"style":1101},[178,4321],{"className":4322,"style":1105},[1029],[178,4324,4326],{"className":4325},[530],[178,4327,4214],{"className":4328},[530],[178,4330,4331,4334],{"style":1154},[178,4332],{"className":4333,"style":1105},[1029],[178,4335],{"className":4336,"style":1162},[1161],[178,4338,4339,4342],{"style":1165},[178,4340],{"className":4341,"style":1105},[1029],[178,4343,4345],{"className":4344},[530],[178,4346,504],{"className":4347},[530],[178,4349,1051],{"className":4350},[1050],[178,4352,4354],{"className":4353},[1017],[178,4355,4358],{"className":4356,"style":4357},[1021],"height:0.686em;",[178,4359],{},[178,4361],{"className":4362},[543,1085],[178,4364],{"className":4365,"style":968},[967],[178,4367,4217],{"className":4368},[972],[178,4370],{"className":4371,"style":968},[967],[178,4373,4375,4378,4381],{"className":4374},[521],[178,4376],{"className":4377,"style":3162},[525],[178,4379,4220],{"className":4380},[530],[178,4382,4384],{"className":4383},[530,960],[178,4385,4223],{"className":4386},[530],[10,4388,4389],{},"渲染管线各阶段的时间分配如下：",[168,4391,4393],{"className":170,"code":4392,"language":172,"meta":173,"style":173},"flowchart LR\n    A[\"应用逻辑\u003Cbr/>~1.5ms\"] --> B[\"布局测量\u003Cbr/>~1.5ms\"] --> C[\"绘制\u003Cbr/>~2.0ms\"] --> D[\"合成\u003Cbr/>~2.0ms\"] --> E[\"VSync同步\u003Cbr/>~1.33ms\"]\n",[175,4394,4395,4400],{"__ignoreMap":173},[178,4396,4397],{"class":180,"line":181},[178,4398,4399],{"class":184},"flowchart LR\n",[178,4401,4402],{"class":180,"line":188},[178,4403,4404],{"class":184},"    A[\"应用逻辑\u003Cbr/>~1.5ms\"] --> B[\"布局测量\u003Cbr/>~1.5ms\"] --> C[\"绘制\u003Cbr/>~2.0ms\"] --> D[\"合成\u003Cbr/>~2.0ms\"] --> E[\"VSync同步\u003Cbr/>~1.33ms\"]\n",[10,4406,4407],{},[361,4408,4409],{},"图 3：120Hz 刷新率下单帧渲染管线时间分配图",[10,4411,4412],{},"若任何阶段超时，该帧将被丢弃（Jank），用户感知到卡顿。",[870,4414,4416],{"id":4415},"fas-工作原理","FAS 工作原理",[10,4418,4419],{},"FAS 通过内核-用户态协同机制感知帧边界并动态调整调度行为：",[168,4421,4423],{"className":170,"code":4422,"language":172,"meta":173,"style":173},"flowchart TD\n    S1[\"步骤一：帧边界注册\u003Cbr/>(渲染进程 → 系统调用 → 内核记录 TID + 帧周期)\"]\n\n    S2{\"步骤二：Vsync 触发帧开始\"}\n    S2_1[\"提升渲染线程 QoS 至 User-Interactive\"]\n    S2_2[\"设置 CPU 频率 BOOST 标志\"]\n    S2_3[\"优先在大核/超大核调度渲染线程\"]\n\n    S3{\"步骤三：帧进度跟踪\"}\n    S3_1[\"正常调度\"]\n    S3_2[\"触发紧急提频 (Emergency Boost)\"]\n    S3_3[\"最高优先级，强制抢占所有非实时任务\"]\n\n    S4{\"步骤四：帧完成信号\"}\n    S4_1[\"渲染线程 QoS 恢复正常\"]\n    S4_2[\"CPU 频率 BOOST 撤销，进入节能状态\"]\n\n    S1 --> S2\n    S2 --> S2_1 & S2_2 & S2_3\n    S2_1 & S2_2 & S2_3 --> S3\n\n    S3 -- \"T_remaining > 3ms\" --> S3_1\n    S3 -- \"1ms \u003C T_remaining \u003C 3ms\" --> S3_2\n    S3 -- \"T_remaining \u003C 1ms\" --> S3_3\n\n    S3_1 & S3_2 & S3_3 --> S4\n    S4 --> S4_1 & S4_2\n",[175,4424,4425,4429,4434,4438,4443,4448,4453,4458,4462,4467,4472,4477,4482,4486,4491,4496,4501,4505,4510,4515,4520,4524,4529,4534,4539,4543,4548],{"__ignoreMap":173},[178,4426,4427],{"class":180,"line":181},[178,4428,1934],{"class":184},[178,4430,4431],{"class":180,"line":188},[178,4432,4433],{"class":184},"    S1[\"步骤一：帧边界注册\u003Cbr/>(渲染进程 → 系统调用 → 内核记录 TID + 帧周期)\"]\n",[178,4435,4436],{"class":180,"line":194},[178,4437,210],{"emptyLinePlaceholder":209},[178,4439,4440],{"class":180,"line":200},[178,4441,4442],{"class":184},"    S2{\"步骤二：Vsync 触发帧开始\"}\n",[178,4444,4445],{"class":180,"line":206},[178,4446,4447],{"class":184},"    S2_1[\"提升渲染线程 QoS 至 User-Interactive\"]\n",[178,4449,4450],{"class":180,"line":213},[178,4451,4452],{"class":184},"    S2_2[\"设置 CPU 频率 BOOST 标志\"]\n",[178,4454,4455],{"class":180,"line":219},[178,4456,4457],{"class":184},"    S2_3[\"优先在大核/超大核调度渲染线程\"]\n",[178,4459,4460],{"class":180,"line":225},[178,4461,210],{"emptyLinePlaceholder":209},[178,4463,4464],{"class":180,"line":230},[178,4465,4466],{"class":184},"    S3{\"步骤三：帧进度跟踪\"}\n",[178,4468,4469],{"class":180,"line":235},[178,4470,4471],{"class":184},"    S3_1[\"正常调度\"]\n",[178,4473,4474],{"class":180,"line":241},[178,4475,4476],{"class":184},"    S3_2[\"触发紧急提频 (Emergency Boost)\"]\n",[178,4478,4479],{"class":180,"line":247},[178,4480,4481],{"class":184},"    S3_3[\"最高优先级，强制抢占所有非实时任务\"]\n",[178,4483,4484],{"class":180,"line":253},[178,4485,210],{"emptyLinePlaceholder":209},[178,4487,4488],{"class":180,"line":259},[178,4489,4490],{"class":184},"    S4{\"步骤四：帧完成信号\"}\n",[178,4492,4493],{"class":180,"line":265},[178,4494,4495],{"class":184},"    S4_1[\"渲染线程 QoS 恢复正常\"]\n",[178,4497,4498],{"class":180,"line":270},[178,4499,4500],{"class":184},"    S4_2[\"CPU 频率 BOOST 撤销，进入节能状态\"]\n",[178,4502,4503],{"class":180,"line":275},[178,4504,210],{"emptyLinePlaceholder":209},[178,4506,4507],{"class":180,"line":281},[178,4508,4509],{"class":184},"    S1 --> S2\n",[178,4511,4512],{"class":180,"line":286},[178,4513,4514],{"class":184},"    S2 --> S2_1 & S2_2 & S2_3\n",[178,4516,4517],{"class":180,"line":292},[178,4518,4519],{"class":184},"    S2_1 & S2_2 & S2_3 --> S3\n",[178,4521,4522],{"class":180,"line":298},[178,4523,210],{"emptyLinePlaceholder":209},[178,4525,4526],{"class":180,"line":304},[178,4527,4528],{"class":184},"    S3 -- \"T_remaining > 3ms\" --> S3_1\n",[178,4530,4531],{"class":180,"line":309},[178,4532,4533],{"class":184},"    S3 -- \"1ms \u003C T_remaining \u003C 3ms\" --> S3_2\n",[178,4535,4536],{"class":180,"line":314},[178,4537,4538],{"class":184},"    S3 -- \"T_remaining \u003C 1ms\" --> S3_3\n",[178,4540,4541],{"class":180,"line":320},[178,4542,210],{"emptyLinePlaceholder":209},[178,4544,4545],{"class":180,"line":326},[178,4546,4547],{"class":184},"    S3_1 & S3_2 & S3_3 --> S4\n",[178,4549,4550],{"class":180,"line":331},[178,4551,4552],{"class":184},"    S4 --> S4_1 & S4_2\n",[10,4554,4555],{},[361,4556,4557],{},"图 4：FAS 帧感知调度工作原理图",[10,4559,4560],{},[17,4561,4562],{},"关键内核接口（鸿蒙扩展的 sched API）：",[168,4564,4566],{"className":547,"code":4565,"language":549,"meta":173,"style":173},"/* 内核侧：注册帧边界（简化） */\nvoid harmony_fas_register_frame_producer(pid_t tid, int refresh_rate_hz) {\n    struct fas_info *fi = get_fas_info(tid);\n    fi->frame_deadline_ns = NSEC_PER_SEC / refresh_rate_hz;\n    fi->is_frame_producer  = true;\n}\n\n/* Vsync 信号处理：提升帧渲染线程优先级 */\nvoid harmony_fas_on_vsync(void) {\n    struct fas_info *fi;\n    list_for_each_entry(fi, &fas_frame_producers, list) {\n        /* 临时提升至实时调度类 */\n        sched_set_fifo_low(fi->task);\n        fi->frame_start_time = ktime_get_ns();\n    }\n}\n",[175,4567,4568,4573,4599,4619,4641,4658,4662,4666,4671,4684,4695,4708,4713,4730,4748,4753],{"__ignoreMap":173},[178,4569,4570],{"class":180,"line":181},[178,4571,4572],{"class":556},"/* 内核侧：注册帧边界（简化） */\n",[178,4574,4575,4578,4581,4583,4586,4589,4591,4594,4597],{"class":180,"line":188},[178,4576,4577],{"class":570},"void",[178,4579,4580],{"class":641}," harmony_fas_register_frame_producer",[178,4582,500],{"class":184},[178,4584,4585],{"class":570},"pid_t",[178,4587,4588],{"class":650}," tid",[178,4590,654],{"class":184},[178,4592,4593],{"class":570}," int",[178,4595,4596],{"class":650}," refresh_rate_hz",[178,4598,1810],{"class":184},[178,4600,4601,4603,4606,4608,4611,4613,4616],{"class":180,"line":194},[178,4602,1721],{"class":570},[178,4604,4605],{"class":184}," fas_info ",[178,4607,1737],{"class":570},[178,4609,4610],{"class":184},"fi ",[178,4612,571],{"class":570},[178,4614,4615],{"class":641}," get_fas_info",[178,4617,4618],{"class":184},"(tid);\n",[178,4620,4621,4624,4626,4629,4632,4635,4638],{"class":180,"line":200},[178,4622,4623],{"class":785},"    fi",[178,4625,1836],{"class":184},[178,4627,4628],{"class":785},"frame_deadline_ns",[178,4630,4631],{"class":570}," =",[178,4633,4634],{"class":184}," NSEC_PER_SEC ",[178,4636,4637],{"class":570},"/",[178,4639,4640],{"class":184}," refresh_rate_hz;\n",[178,4642,4643,4645,4647,4650,4653,4656],{"class":180,"line":206},[178,4644,4623],{"class":785},[178,4646,1836],{"class":184},[178,4648,4649],{"class":785},"is_frame_producer",[178,4651,4652],{"class":570},"  =",[178,4654,4655],{"class":584}," true",[178,4657,604],{"class":184},[178,4659,4660],{"class":180,"line":213},[178,4661,1862],{"class":184},[178,4663,4664],{"class":180,"line":219},[178,4665,210],{"emptyLinePlaceholder":209},[178,4667,4668],{"class":180,"line":225},[178,4669,4670],{"class":556},"/* Vsync 信号处理：提升帧渲染线程优先级 */\n",[178,4672,4673,4675,4678,4680,4682],{"class":180,"line":230},[178,4674,4577],{"class":570},[178,4676,4677],{"class":641}," harmony_fas_on_vsync",[178,4679,500],{"class":184},[178,4681,4577],{"class":570},[178,4683,1810],{"class":184},[178,4685,4686,4688,4690,4692],{"class":180,"line":235},[178,4687,1721],{"class":570},[178,4689,4605],{"class":184},[178,4691,1737],{"class":570},[178,4693,4694],{"class":184},"fi;\n",[178,4696,4697,4700,4703,4705],{"class":180,"line":241},[178,4698,4699],{"class":641},"    list_for_each_entry",[178,4701,4702],{"class":184},"(fi, ",[178,4704,647],{"class":570},[178,4706,4707],{"class":184},"fas_frame_producers, list) {\n",[178,4709,4710],{"class":180,"line":247},[178,4711,4712],{"class":556},"        /* 临时提升至实时调度类 */\n",[178,4714,4715,4718,4720,4723,4725,4728],{"class":180,"line":253},[178,4716,4717],{"class":641},"        sched_set_fifo_low",[178,4719,500],{"class":184},[178,4721,4722],{"class":785},"fi",[178,4724,1836],{"class":184},[178,4726,4727],{"class":785},"task",[178,4729,663],{"class":184},[178,4731,4732,4735,4737,4740,4742,4745],{"class":180,"line":259},[178,4733,4734],{"class":785},"        fi",[178,4736,1836],{"class":184},[178,4738,4739],{"class":785},"frame_start_time",[178,4741,4631],{"class":570},[178,4743,4744],{"class":641}," ktime_get_ns",[178,4746,4747],{"class":184},"();\n",[178,4749,4750],{"class":180,"line":265},[178,4751,4752],{"class":184},"    }\n",[178,4754,4755],{"class":180,"line":270},[178,4756,1862],{"class":184},[10,4758,4759,4760,4763],{},"FAS 的思想可以概括为“",[17,4761,4762],{},"把帧当作实时系统的截止时间任务","”：每一帧就是一个周期为 8.33ms（120Hz）的软实时任务，Vsync 是它的释放时刻，渲染完成是它的截止时间。调度器围绕这个截止时间动态调节资源，把“流畅”从玄学变成可管理的时序指标。",[870,4765,4767],{"id":4766},"fas-性能数据","FAS 性能数据",[10,4769,4770],{},"根据华为 HDC 2023 技术分享及第三方测评数据：",[64,4772,4773,4792],{},[67,4774,4775],{},[70,4776,4777,4780,4783,4786,4789],{},[73,4778,4779],{"align":75},"测试场景",[73,4781,4782],{"align":75},"设备",[73,4784,4785],{"align":79},"关闭 FAS",[73,4787,4788],{"align":79},"开启 FAS",[73,4790,4791],{"align":79},"改善幅度",[85,4793,4794,4811,4828,4845],{},[70,4795,4796,4799,4802,4805,4808],{},[90,4797,4798],{"align":75},"微信复杂聊天列表滑动（120Hz）",[90,4800,4801],{"align":75},"Mate 60 Pro",[90,4803,4804],{"align":79},"掉帧率 6.8%",[90,4806,4807],{"align":79},"掉帧率 1.1%",[90,4809,4810],{"align":79},"-83.8%",[70,4812,4813,4816,4819,4822,4825],{},[90,4814,4815],{"align":75},"微博图文 Feed 滑动（90Hz）",[90,4817,4818],{"align":75},"P60 Pro",[90,4820,4821],{"align":79},"掉帧率 4.2%",[90,4823,4824],{"align":79},"掉帧率 0.9%",[90,4826,4827],{"align":79},"-78.6%",[70,4829,4830,4833,4836,4839,4842],{},[90,4831,4832],{"align":75},"游戏（王者荣耀，60Hz）",[90,4834,4835],{"align":75},"麒麟 9000S",[90,4837,4838],{"align":79},"掉帧率 1.8%",[90,4840,4841],{"align":79},"掉帧率 0.3%",[90,4843,4844],{"align":79},"-83.3%",[70,4846,4847,4850,4852,4855,4858],{},[90,4848,4849],{"align":75},"应用冷启动帧渲染时延",[90,4851,4801],{"align":75},[90,4853,4854],{"align":79},"平均 412ms",[90,4856,4857],{"align":79},"平均 318ms",[90,4859,4860],{"align":79},"-22.8%",[25,4862,4864],{"id":4863},"ffrt用户态并发运行时调度","FFRT：用户态并发运行时调度",[29,4866,4867],{"id":4867},"传统线程模型的痛点",[10,4869,4870],{},"在传统多线程编程模型中，开发者需要手动管理线程创建、同步与销毁，存在以下问题：",[4872,4873,4874,4880,4886,4892],"ol",{},[42,4875,4876,4879],{},[17,4877,4878],{},"线程数量爆炸","：复杂应用往往创建数百个线程，上下文切换开销巨大（每次约 5~20 μs）；",[42,4881,4882,4885],{},[17,4883,4884],{},"串行化过度","：为保证共享数据安全，大量使用锁，导致并行度严重不足；",[42,4887,4888,4891],{},[17,4889,4890],{},"负载不均衡","：固定线程池难以适应运行时负载动态变化；",[42,4893,4894,4897],{},[17,4895,4896],{},"优先级反转","：线程间依赖复杂，优先级继承机制难以覆盖所有场景。",[29,4899,4901],{"id":4900},"ffrt-设计原理","FFRT 设计原理",[10,4903,4904,4907,4908,1913],{},[17,4905,4906],{},"FFRT（Function Flow Runtime Technology）"," 是鸿蒙 3.0 引入、4.0 正式大规模推广的用户态并发调度框架。其核心思想是：",[17,4909,4910],{},"将任务间的数据依赖关系显式声明，由运行时自动构建 DAG（有向无环图）并调度并行执行",[870,4912,4914],{"id":4913},"ffrt-编程模型","FFRT 编程模型",[168,4916,4918],{"className":3966,"code":4917,"language":3968,"meta":173,"style":173},"#include \"ffrt.h\"\n\nvoid image_processing_pipeline() {\n    int raw = 0, denoised = 0, enhanced = 0, final = 0;\n\n    // 声明任务依赖：输入依赖 → 输出依赖\n    // FFRT 自动分析并行性，无依赖的任务并行执行\n\n    ffrt::submit(\n        [&] { raw = capture_raw_image(); },         // 任务A：采集\n        {},          /* 输入依赖（无）*/\n        {&raw}       /* 输出依赖（写 raw）*/\n    );\n\n    ffrt::submit(\n        [&] { denoised = denoise(raw); },           // 任务B：降噪（依赖A）\n        {&raw},      /* 需要 raw 就绪 */\n        {&denoised}\n    );\n\n    ffrt::submit(\n        [&] { enhanced = ai_enhance(raw); },        // 任务C：AI增强（依赖A，与B并行）\n        {&raw},\n        {&enhanced}\n    );\n\n    ffrt::submit(\n        [&] { final = merge(denoised, enhanced); }, // 任务D：合并（依赖B和C）\n        {&denoised, &enhanced},\n        {&final}\n    );\n\n    ffrt::wait({&final}); // 等待最终结果\n}\n",[175,4919,4920,4926,4930,4940,4978,4982,4987,4992,4996,5005,5021,5029,5037,5042,5046,5054,5070,5078,5083,5087,5091,5099,5114,5119,5124,5128,5132,5140,5158,5163,5168,5172,5177,5191],{"__ignoreMap":173},[178,4921,4922,4924],{"class":180,"line":181},[178,4923,3975],{"class":570},[178,4925,4032],{"class":584},[178,4927,4928],{"class":180,"line":188},[178,4929,210],{"emptyLinePlaceholder":209},[178,4931,4932,4934,4937],{"class":180,"line":194},[178,4933,4577],{"class":570},[178,4935,4936],{"class":641}," image_processing_pipeline",[178,4938,4939],{"class":184},"() {\n",[178,4941,4942,4944,4947,4949,4952,4955,4957,4959,4962,4964,4966,4969,4972,4974,4976],{"class":180,"line":200},[178,4943,2802],{"class":570},[178,4945,4946],{"class":184}," raw ",[178,4948,571],{"class":570},[178,4950,4951],{"class":584}," 0",[178,4953,4954],{"class":184},", denoised ",[178,4956,571],{"class":570},[178,4958,4951],{"class":584},[178,4960,4961],{"class":184},", enhanced ",[178,4963,571],{"class":570},[178,4965,4951],{"class":584},[178,4967,4968],{"class":184},", ",[178,4970,4971],{"class":570},"final",[178,4973,4631],{"class":570},[178,4975,4951],{"class":584},[178,4977,604],{"class":184},[178,4979,4980],{"class":180,"line":206},[178,4981,210],{"emptyLinePlaceholder":209},[178,4983,4984],{"class":180,"line":213},[178,4985,4986],{"class":556},"    // 声明任务依赖：输入依赖 → 输出依赖\n",[178,4988,4989],{"class":180,"line":219},[178,4990,4991],{"class":556},"    // FFRT 自动分析并行性，无依赖的任务并行执行\n",[178,4993,4994],{"class":180,"line":225},[178,4995,210],{"emptyLinePlaceholder":209},[178,4997,4998,5001,5003],{"class":180,"line":230},[178,4999,5000],{"class":184},"    ffrt::",[178,5002,4073],{"class":641},[178,5004,4013],{"class":184},[178,5006,5007,5010,5012,5015,5018],{"class":180,"line":235},[178,5008,5009],{"class":184},"        [&] { raw ",[178,5011,571],{"class":570},[178,5013,5014],{"class":641}," capture_raw_image",[178,5016,5017],{"class":184},"(); },",[178,5019,5020],{"class":556},"         // 任务A：采集\n",[178,5022,5023,5026],{"class":180,"line":241},[178,5024,5025],{"class":184},"        {},",[178,5027,5028],{"class":556},"          /* 输入依赖（无）*/\n",[178,5030,5031,5034],{"class":180,"line":247},[178,5032,5033],{"class":184},"        {&raw}",[178,5035,5036],{"class":556},"       /* 输出依赖（写 raw）*/\n",[178,5038,5039],{"class":180,"line":253},[178,5040,5041],{"class":184},"    );\n",[178,5043,5044],{"class":180,"line":259},[178,5045,210],{"emptyLinePlaceholder":209},[178,5047,5048,5050,5052],{"class":180,"line":265},[178,5049,5000],{"class":184},[178,5051,4073],{"class":641},[178,5053,4013],{"class":184},[178,5055,5056,5059,5061,5064,5067],{"class":180,"line":270},[178,5057,5058],{"class":184},"        [&] { denoised ",[178,5060,571],{"class":570},[178,5062,5063],{"class":641}," denoise",[178,5065,5066],{"class":184},"(raw); },",[178,5068,5069],{"class":556},"           // 任务B：降噪（依赖A）\n",[178,5071,5072,5075],{"class":180,"line":275},[178,5073,5074],{"class":184},"        {&raw},",[178,5076,5077],{"class":556},"      /* 需要 raw 就绪 */\n",[178,5079,5080],{"class":180,"line":281},[178,5081,5082],{"class":184},"        {&denoised}\n",[178,5084,5085],{"class":180,"line":286},[178,5086,5041],{"class":184},[178,5088,5089],{"class":180,"line":292},[178,5090,210],{"emptyLinePlaceholder":209},[178,5092,5093,5095,5097],{"class":180,"line":298},[178,5094,5000],{"class":184},[178,5096,4073],{"class":641},[178,5098,4013],{"class":184},[178,5100,5101,5104,5106,5109,5111],{"class":180,"line":304},[178,5102,5103],{"class":184},"        [&] { enhanced ",[178,5105,571],{"class":570},[178,5107,5108],{"class":641}," ai_enhance",[178,5110,5066],{"class":184},[178,5112,5113],{"class":556},"        // 任务C：AI增强（依赖A，与B并行）\n",[178,5115,5116],{"class":180,"line":309},[178,5117,5118],{"class":184},"        {&raw},\n",[178,5120,5121],{"class":180,"line":314},[178,5122,5123],{"class":184},"        {&enhanced}\n",[178,5125,5126],{"class":180,"line":320},[178,5127,5041],{"class":184},[178,5129,5130],{"class":180,"line":326},[178,5131,210],{"emptyLinePlaceholder":209},[178,5133,5134,5136,5138],{"class":180,"line":331},[178,5135,5000],{"class":184},[178,5137,4073],{"class":641},[178,5139,4013],{"class":184},[178,5141,5142,5145,5147,5149,5152,5155],{"class":180,"line":336},[178,5143,5144],{"class":184},"        [&] { ",[178,5146,4971],{"class":570},[178,5148,4631],{"class":570},[178,5150,5151],{"class":641}," merge",[178,5153,5154],{"class":184},"(denoised, enhanced); },",[178,5156,5157],{"class":556}," // 任务D：合并（依赖B和C）\n",[178,5159,5160],{"class":180,"line":342},[178,5161,5162],{"class":184},"        {&denoised, &enhanced},\n",[178,5164,5165],{"class":180,"line":348},[178,5166,5167],{"class":184},"        {&final}\n",[178,5169,5170],{"class":180,"line":354},[178,5171,5041],{"class":184},[178,5173,5175],{"class":180,"line":5174},32,[178,5176,210],{"emptyLinePlaceholder":209},[178,5178,5180,5182,5185,5188],{"class":180,"line":5179},33,[178,5181,5000],{"class":184},[178,5183,5184],{"class":641},"wait",[178,5186,5187],{"class":184},"({&final});",[178,5189,5190],{"class":556}," // 等待最终结果\n",[178,5192,5194],{"class":180,"line":5193},34,[178,5195,1862],{"class":184},[10,5197,5198],{},"FFRT 根据上述依赖声明自动构建 DAG：",[168,5200,5202],{"className":170,"code":5201,"language":172,"meta":173,"style":173},"flowchart TD\n    A[\"任务A: 采集\"] --> B[\"任务B: 降噪\"]\n    A --> C[\"任务C: AI增强\"]\n    B --> D[\"任务D: 合并\"]\n    C --> D\n\n    classDef parallel fill:#FF408040,stroke:#FF4080,color:#e7fffa;\n    class B,C parallel\n",[175,5203,5204,5208,5213,5218,5223,5228,5232,5237],{"__ignoreMap":173},[178,5205,5206],{"class":180,"line":181},[178,5207,1934],{"class":184},[178,5209,5210],{"class":180,"line":188},[178,5211,5212],{"class":184},"    A[\"任务A: 采集\"] --> B[\"任务B: 降噪\"]\n",[178,5214,5215],{"class":180,"line":194},[178,5216,5217],{"class":184},"    A --> C[\"任务C: AI增强\"]\n",[178,5219,5220],{"class":180,"line":200},[178,5221,5222],{"class":184},"    B --> D[\"任务D: 合并\"]\n",[178,5224,5225],{"class":180,"line":206},[178,5226,5227],{"class":184},"    C --> D\n",[178,5229,5230],{"class":180,"line":213},[178,5231,210],{"emptyLinePlaceholder":209},[178,5233,5234],{"class":180,"line":219},[178,5235,5236],{"class":184},"    classDef parallel fill:#FF408040,stroke:#FF4080,color:#e7fffa;\n",[178,5238,5239],{"class":180,"line":225},[178,5240,5241],{"class":184},"    class B,C parallel\n",[10,5243,5244],{},[361,5245,5246],{},"图 5：FFRT 任务依赖 DAG 构建图（B、C 并行执行）",[870,5248,5250],{"id":5249},"ffrt-运行时调度策略","FFRT 运行时调度策略",[10,5252,5253,5254,5257],{},"FFRT 运行时采用",[17,5255,5256],{},"工作窃取（Work Stealing）+ QoS 感知","的调度策略：",[39,5259,5260,5266,5284],{},[42,5261,5262,5265],{},[17,5263,5264],{},"工作线程数","：严格等于 CPU 核心数（与硬件并行度匹配，避免过度创建带来的上下文切换开销）。",[42,5267,5268,5271,5272,5275,5276,5279,5280,5283],{},[17,5269,5270],{},"工作窃取（Work Stealing）","：每个工作线程维护本地的双端队列（",[175,5273,5274],{},"deque","），本线程优先从",[17,5277,5278],{},"头部","取任务执行；当线程空闲时，会主动从其他繁忙线程的队列",[17,5281,5282],{},"尾部","“窃取”任务。",[42,5285,5286,5289],{},[17,5287,5288],{},"QoS 感知分配","：高优先级任务优先进入大核队列，后台任务则进入小核队列。",[168,5291,5293],{"className":170,"code":5292,"language":172,"meta":173,"style":173},"flowchart LR\n    TaskHigh[高 QoS 任务\u003Cbr/>User-Interactive]\n    TaskLow[低 QoS 任务\u003Cbr/>Background]\n\n    subgraph CoreBig [大核调度域]\n        direction TB\n        WorkerB((大核工作线程))\n        DequeB[(本地 Deque)]\n        WorkerB -->|1. 优先取头部| DequeB\n    end\n\n    subgraph CoreLittle [小核调度域]\n        direction TB\n        WorkerL((小核工作线程))\n        DequeL[(本地 Deque)]\n        WorkerL -->|1. 优先取头部| DequeL\n    end\n\n    TaskHigh -->|优先分配| DequeB\n    TaskLow -->|优先分配| DequeL\n\n    WorkerB -.->|2. 空闲时窃取尾部| DequeL\n    WorkerL -.->|2. 空闲时窃取尾部| DequeB\n",[175,5294,5295,5299,5304,5309,5313,5318,5323,5328,5333,5338,5342,5346,5351,5355,5360,5365,5370,5374,5378,5383,5388,5392,5397],{"__ignoreMap":173},[178,5296,5297],{"class":180,"line":181},[178,5298,4399],{"class":184},[178,5300,5301],{"class":180,"line":188},[178,5302,5303],{"class":184},"    TaskHigh[高 QoS 任务\u003Cbr/>User-Interactive]\n",[178,5305,5306],{"class":180,"line":194},[178,5307,5308],{"class":184},"    TaskLow[低 QoS 任务\u003Cbr/>Background]\n",[178,5310,5311],{"class":180,"line":200},[178,5312,210],{"emptyLinePlaceholder":209},[178,5314,5315],{"class":180,"line":206},[178,5316,5317],{"class":184},"    subgraph CoreBig [大核调度域]\n",[178,5319,5320],{"class":180,"line":213},[178,5321,5322],{"class":184},"        direction TB\n",[178,5324,5325],{"class":180,"line":219},[178,5326,5327],{"class":184},"        WorkerB((大核工作线程))\n",[178,5329,5330],{"class":180,"line":225},[178,5331,5332],{"class":184},"        DequeB[(本地 Deque)]\n",[178,5334,5335],{"class":180,"line":230},[178,5336,5337],{"class":184},"        WorkerB -->|1. 优先取头部| DequeB\n",[178,5339,5340],{"class":180,"line":235},[178,5341,203],{"class":184},[178,5343,5344],{"class":180,"line":241},[178,5345,210],{"emptyLinePlaceholder":209},[178,5347,5348],{"class":180,"line":247},[178,5349,5350],{"class":184},"    subgraph CoreLittle [小核调度域]\n",[178,5352,5353],{"class":180,"line":253},[178,5354,5322],{"class":184},[178,5356,5357],{"class":180,"line":259},[178,5358,5359],{"class":184},"        WorkerL((小核工作线程))\n",[178,5361,5362],{"class":180,"line":265},[178,5363,5364],{"class":184},"        DequeL[(本地 Deque)]\n",[178,5366,5367],{"class":180,"line":270},[178,5368,5369],{"class":184},"        WorkerL -->|1. 优先取头部| DequeL\n",[178,5371,5372],{"class":180,"line":275},[178,5373,203],{"class":184},[178,5375,5376],{"class":180,"line":281},[178,5377,210],{"emptyLinePlaceholder":209},[178,5379,5380],{"class":180,"line":286},[178,5381,5382],{"class":184},"    TaskHigh -->|优先分配| DequeB\n",[178,5384,5385],{"class":180,"line":292},[178,5386,5387],{"class":184},"    TaskLow -->|优先分配| DequeL\n",[178,5389,5390],{"class":180,"line":298},[178,5391,210],{"emptyLinePlaceholder":209},[178,5393,5394],{"class":180,"line":304},[178,5395,5396],{"class":184},"    WorkerB -.->|2. 空闲时窃取尾部| DequeL\n",[178,5398,5399],{"class":180,"line":309},[178,5400,5401],{"class":184},"    WorkerL -.->|2. 空闲时窃取尾部| DequeB\n",[10,5403,5404],{},[361,5405,5406],{},"图 6：FFRT 运行时工作窃取与 QoS 调度机制图",[870,5408,5410],{"id":5409},"ffrt-性能数据","FFRT 性能数据",[10,5412,5413],{},"华为官方测试（对比传统 ThreadPool 实现）：",[64,5415,5416,5431],{},[67,5417,5418],{},[70,5419,5420,5422,5425,5428],{},[73,5421,4779],{"align":75},[73,5423,5424],{"align":79},"传统线程池（基准）",[73,5426,5427],{"align":79},"FFRT",[73,5429,5430],{"align":79},"性能提升",[85,5432,5433,5447,5461,5474,5487],{},[70,5434,5435,5438,5441,5444],{},[90,5436,5437],{"align":75},"相机 HDR 合成管线",[90,5439,5440],{"align":79},"100%（基准时延）",[90,5442,5443],{"align":79},"61%",[90,5445,5446],{"align":79},"39% ↑",[70,5448,5449,5452,5455,5458],{},[90,5450,5451],{"align":75},"图库 AI 分类（1000 张）",[90,5453,5454],{"align":79},"100%",[90,5456,5457],{"align":79},"67%",[90,5459,5460],{"align":79},"33% ↑",[70,5462,5463,5466,5468,5471],{},[90,5464,5465],{"align":75},"游戏帧生成管线",[90,5467,5454],{"align":79},[90,5469,5470],{"align":79},"72%",[90,5472,5473],{"align":79},"28% ↑",[70,5475,5476,5479,5481,5484],{},[90,5477,5478],{"align":75},"多媒体转码（4K→1080P）",[90,5480,5454],{"align":79},[90,5482,5483],{"align":79},"63%",[90,5485,5486],{"align":79},"37% ↑",[70,5488,5489,5492,5495,5498],{},[90,5490,5491],{"align":75},"CPU 峰值线程数",[90,5493,5494],{"align":79},"156 线程",[90,5496,5497],{"align":79},"12 线程",[90,5499,5500],{"align":79},"-92%",[10,5502,5503],{},"线程数从 156 降至 12 的显著减少，大幅降低了上下文切换开销和内存占用（每个线程栈默认 1~8 MB）。",[25,5505,5507],{"id":5506},"分布式任务调度dsched","分布式任务调度（DSched）",[29,5509,5510],{"id":5510},"分布式软总线基础",[10,5512,5513,5514,5517,5518,5521],{},"鸿蒙的分布式能力构建于",[17,5515,5516],{},"分布式软总线（Distributed Soft Bus）"," 之上。软总线是一种将 WiFi、蓝牙、有线以太网等物理通信信道抽象统一的中间件层，向上层提供",[17,5519,5520],{},"设备发现、拓扑管理、高速传输","三大基础服务。",[10,5523,5524],{},"软总线通信性能（华为实验室数据）：",[64,5526,5527,5543],{},[67,5528,5529],{},[70,5530,5531,5534,5537,5540],{},[73,5532,5533],{"align":75},"通信链路",[73,5535,5536],{"align":79},"理论带宽",[73,5538,5539],{"align":79},"实测延迟",[73,5541,5542],{"align":75},"适用场景",[85,5544,5545,5559,5573,5587],{},[70,5546,5547,5550,5553,5556],{},[90,5548,5549],{"align":75},"WiFi6（同局域网）",[90,5551,5552],{"align":79},"2.4 Gbps",[90,5554,5555],{"align":79},"0.8~2.5 ms",[90,5557,5558],{"align":75},"视频流、大文件传输",[70,5560,5561,5564,5567,5570],{},[90,5562,5563],{"align":75},"蓝牙 5.0",[90,5565,5566],{"align":79},"2 Mbps",[90,5568,5569],{"align":79},"8~20 ms",[90,5571,5572],{"align":75},"控制指令、低速数据",[70,5574,5575,5578,5581,5584],{},[90,5576,5577],{"align":75},"USB 3.0（有线）",[90,5579,5580],{"align":79},"5 Gbps",[90,5582,5583],{"align":79},"\u003C 0.5 ms",[90,5585,5586],{"align":75},"PC 端高速同步",[70,5588,5589,5592,5595,5598],{},[90,5590,5591],{"align":75},"WiFi P2P（直连）",[90,5593,5594],{"align":79},"866 Mbps",[90,5596,5597],{"align":79},"1.5~4.0 ms",[90,5599,5600],{"align":75},"超级终端屏幕共享",[29,5602,5604],{"id":5603},"分布式调度框架dsched架构","分布式调度框架（DSched）架构",[10,5606,5607,5610],{},[17,5608,5609],{},"DSched（Distributed Scheduler）"," 是鸿蒙跨设备任务调度的核心框架，支持三类分布式任务操作：",[168,5612,5614],{"className":170,"code":5613,"language":172,"meta":173,"style":173},"flowchart TD\n    subgraph AppLayer [应用层调用（ArkTS）]\n        API[\"startAbility() / connectAbility() / migrateAbility()\"]\n    end\n\n    subgraph DSchedLayer [分布式调度服务（DSched）]\n        direction LR\n        RS[\"远程启动\u003Cbr/>(RemoteStart)\"]\n        Mig[\"Ability迁移\u003Cbr/>(Migration)\"]\n        Col[\"协同调用\u003Cbr/>(Collaborate)\"]\n    end\n\n    subgraph BusLayer [分布式软总线（传输层）]\n        Bus[\"设备发现、拓扑管理、高速传输\"]\n    end\n\n    subgraph DeviceLayer [跨设备协同]\n        direction LR\n        DevA[\"设备 A（手机）\"] \u003C--> DevB[\"设备 B（平板）\"]\n    end\n\n    AppLayer --> DSchedLayer\n    DSchedLayer --> BusLayer\n    BusLayer \u003C--> DeviceLayer\n",[175,5615,5616,5620,5625,5630,5634,5638,5643,5647,5652,5657,5662,5666,5670,5675,5680,5684,5688,5693,5697,5702,5706,5710,5715,5720],{"__ignoreMap":173},[178,5617,5618],{"class":180,"line":181},[178,5619,1934],{"class":184},[178,5621,5622],{"class":180,"line":188},[178,5623,5624],{"class":184},"    subgraph AppLayer [应用层调用（ArkTS）]\n",[178,5626,5627],{"class":180,"line":194},[178,5628,5629],{"class":184},"        API[\"startAbility() / connectAbility() / migrateAbility()\"]\n",[178,5631,5632],{"class":180,"line":200},[178,5633,203],{"class":184},[178,5635,5636],{"class":180,"line":206},[178,5637,210],{"emptyLinePlaceholder":209},[178,5639,5640],{"class":180,"line":213},[178,5641,5642],{"class":184},"    subgraph DSchedLayer [分布式调度服务（DSched）]\n",[178,5644,5645],{"class":180,"line":219},[178,5646,244],{"class":184},[178,5648,5649],{"class":180,"line":225},[178,5650,5651],{"class":184},"        RS[\"远程启动\u003Cbr/>(RemoteStart)\"]\n",[178,5653,5654],{"class":180,"line":230},[178,5655,5656],{"class":184},"        Mig[\"Ability迁移\u003Cbr/>(Migration)\"]\n",[178,5658,5659],{"class":180,"line":235},[178,5660,5661],{"class":184},"        Col[\"协同调用\u003Cbr/>(Collaborate)\"]\n",[178,5663,5664],{"class":180,"line":241},[178,5665,203],{"class":184},[178,5667,5668],{"class":180,"line":247},[178,5669,210],{"emptyLinePlaceholder":209},[178,5671,5672],{"class":180,"line":253},[178,5673,5674],{"class":184},"    subgraph BusLayer [分布式软总线（传输层）]\n",[178,5676,5677],{"class":180,"line":259},[178,5678,5679],{"class":184},"        Bus[\"设备发现、拓扑管理、高速传输\"]\n",[178,5681,5682],{"class":180,"line":265},[178,5683,203],{"class":184},[178,5685,5686],{"class":180,"line":270},[178,5687,210],{"emptyLinePlaceholder":209},[178,5689,5690],{"class":180,"line":275},[178,5691,5692],{"class":184},"    subgraph DeviceLayer [跨设备协同]\n",[178,5694,5695],{"class":180,"line":281},[178,5696,244],{"class":184},[178,5698,5699],{"class":180,"line":286},[178,5700,5701],{"class":184},"        DevA[\"设备 A（手机）\"] \u003C--> DevB[\"设备 B（平板）\"]\n",[178,5703,5704],{"class":180,"line":292},[178,5705,203],{"class":184},[178,5707,5708],{"class":180,"line":298},[178,5709,210],{"emptyLinePlaceholder":209},[178,5711,5712],{"class":180,"line":304},[178,5713,5714],{"class":184},"    AppLayer --> DSchedLayer\n",[178,5716,5717],{"class":180,"line":309},[178,5718,5719],{"class":184},"    DSchedLayer --> BusLayer\n",[178,5721,5722],{"class":180,"line":314},[178,5723,5724],{"class":184},"    BusLayer \u003C--> DeviceLayer\n",[10,5726,5727],{},[361,5728,5729],{},"图 7：DSched 分布式任务调度架构图",[870,5731,5733],{"id":5732},"ability-迁移migration","Ability 迁移（Migration）",[10,5735,5736,5737,5740],{},"迁移允许将正在运行的应用组件连同其",[17,5738,5739],{},"完整状态","从一台设备转移至另一台设备执行，用户无感知切换：",[168,5742,5746],{"className":5743,"code":5744,"language":5745,"meta":173,"style":173},"language-typescript shiki shiki-themes houston","// ArkTS：发起 Ability 迁移（手机 → 平板）\nimport AbilityConstant from '@ohos.app.ability.AbilityConstant';\n\n// 迁移前：保存当前状态\nonContinue(wantParam: Record\u003Cstring, Object>): AbilityConstant.OnContinueResult {\n    wantParam[\"scroll_position\"]   = this.currentScrollY;\n    wantParam[\"playback_progress\"] = this.videoCurrentMs;\n    return AbilityConstant.OnContinueResult.AGREE; // 同意迁移\n}\n\n// 目标设备上：恢复状态\nonCreate(want: Want, launchParam: AbilityConstant.LaunchParam): void {\n    if (launchParam.launchReason === AbilityConstant.LaunchReason.CONTINUATION) {\n        this.currentScrollY  = want.parameters[\"scroll_position\"] as number;\n        this.videoCurrentMs  = want.parameters[\"playback_progress\"] as number;\n    }\n}\n","typescript",[175,5747,5748,5753,5769,5773,5778,5818,5841,5862,5883,5887,5891,5896,5932,5964,5998,6026,6030],{"__ignoreMap":173},[178,5749,5750],{"class":180,"line":181},[178,5751,5752],{"class":556},"// ArkTS：发起 Ability 迁移（手机 → 平板）\n",[178,5754,5755,5758,5761,5764,5767],{"class":180,"line":188},[178,5756,5757],{"class":570},"import",[178,5759,5760],{"class":785}," AbilityConstant",[178,5762,5763],{"class":570}," from",[178,5765,5766],{"class":584}," '@ohos.app.ability.AbilityConstant'",[178,5768,604],{"class":184},[178,5770,5771],{"class":180,"line":194},[178,5772,210],{"emptyLinePlaceholder":209},[178,5774,5775],{"class":180,"line":200},[178,5776,5777],{"class":556},"// 迁移前：保存当前状态\n",[178,5779,5780,5783,5785,5788,5791,5794,5796,5799,5801,5804,5807,5810,5812,5815],{"class":180,"line":206},[178,5781,5782],{"class":641},"onContinue",[178,5784,500],{"class":184},[178,5786,5787],{"class":785},"wantParam",[178,5789,5790],{"class":184},": ",[178,5792,5793],{"class":785},"Record",[178,5795,3119],{"class":184},[178,5797,5798],{"class":785},"string",[178,5800,4968],{"class":184},[178,5802,5803],{"class":785},"Object",[178,5805,5806],{"class":184},">): ",[178,5808,5809],{"class":785},"AbilityConstant",[178,5811,4054],{"class":184},[178,5813,5814],{"class":785},"OnContinueResult",[178,5816,5817],{"class":184}," {\n",[178,5819,5820,5823,5825,5828,5831,5834,5836,5839],{"class":180,"line":213},[178,5821,5822],{"class":785},"    wantParam",[178,5824,3023],{"class":184},[178,5826,5827],{"class":584},"\"scroll_position\"",[178,5829,5830],{"class":184},"]   = ",[178,5832,5833],{"class":4003},"this",[178,5835,4054],{"class":184},[178,5837,5838],{"class":785},"currentScrollY",[178,5840,604],{"class":184},[178,5842,5843,5845,5847,5850,5853,5855,5857,5860],{"class":180,"line":219},[178,5844,5822],{"class":785},[178,5846,3023],{"class":184},[178,5848,5849],{"class":584},"\"playback_progress\"",[178,5851,5852],{"class":184},"] = ",[178,5854,5833],{"class":4003},[178,5856,4054],{"class":184},[178,5858,5859],{"class":785},"videoCurrentMs",[178,5861,604],{"class":184},[178,5863,5864,5866,5868,5870,5872,5874,5877,5880],{"class":180,"line":225},[178,5865,1846],{"class":570},[178,5867,5760],{"class":785},[178,5869,4054],{"class":184},[178,5871,5814],{"class":785},[178,5873,4054],{"class":184},[178,5875,5876],{"class":4003},"AGREE",[178,5878,5879],{"class":184},"; ",[178,5881,5882],{"class":556},"// 同意迁移\n",[178,5884,5885],{"class":180,"line":230},[178,5886,1862],{"class":184},[178,5888,5889],{"class":180,"line":235},[178,5890,210],{"emptyLinePlaceholder":209},[178,5892,5893],{"class":180,"line":241},[178,5894,5895],{"class":556},"// 目标设备上：恢复状态\n",[178,5897,5898,5901,5903,5906,5908,5911,5913,5916,5918,5920,5922,5925,5928,5930],{"class":180,"line":247},[178,5899,5900],{"class":641},"onCreate",[178,5902,500],{"class":184},[178,5904,5905],{"class":785},"want",[178,5907,5790],{"class":184},[178,5909,5910],{"class":785},"Want",[178,5912,4968],{"class":184},[178,5914,5915],{"class":785},"launchParam",[178,5917,5790],{"class":184},[178,5919,5809],{"class":785},[178,5921,4054],{"class":184},[178,5923,5924],{"class":785},"LaunchParam",[178,5926,5927],{"class":184},"): ",[178,5929,4577],{"class":570},[178,5931,5817],{"class":184},[178,5933,5934,5937,5940,5942,5944,5947,5950,5952,5954,5957,5959,5962],{"class":180,"line":253},[178,5935,5936],{"class":570},"    if",[178,5938,5939],{"class":184}," (",[178,5941,5915],{"class":785},[178,5943,4054],{"class":184},[178,5945,5946],{"class":785},"launchReason",[178,5948,5949],{"class":184}," === ",[178,5951,5809],{"class":785},[178,5953,4054],{"class":184},[178,5955,5956],{"class":785},"LaunchReason",[178,5958,4054],{"class":184},[178,5960,5961],{"class":4003},"CONTINUATION",[178,5963,1810],{"class":184},[178,5965,5966,5969,5971,5973,5976,5978,5980,5983,5985,5987,5990,5993,5996],{"class":180,"line":259},[178,5967,5968],{"class":4003},"        this",[178,5970,4054],{"class":184},[178,5972,5838],{"class":785},[178,5974,5975],{"class":184},"  = ",[178,5977,5905],{"class":785},[178,5979,4054],{"class":184},[178,5981,5982],{"class":785},"parameters",[178,5984,3023],{"class":184},[178,5986,5827],{"class":584},[178,5988,5989],{"class":184},"] ",[178,5991,5992],{"class":570},"as",[178,5994,5995],{"class":4003}," number",[178,5997,604],{"class":184},[178,5999,6000,6002,6004,6006,6008,6010,6012,6014,6016,6018,6020,6022,6024],{"class":180,"line":265},[178,6001,5968],{"class":4003},[178,6003,4054],{"class":184},[178,6005,5859],{"class":785},[178,6007,5975],{"class":184},[178,6009,5905],{"class":785},[178,6011,4054],{"class":184},[178,6013,5982],{"class":785},[178,6015,3023],{"class":184},[178,6017,5849],{"class":584},[178,6019,5989],{"class":184},[178,6021,5992],{"class":570},[178,6023,5995],{"class":4003},[178,6025,604],{"class":184},[178,6027,6028],{"class":180,"line":270},[178,6029,4752],{"class":184},[178,6031,6032],{"class":180,"line":275},[178,6033,1862],{"class":184},[870,6035,6037],{"id":6036},"dsched-调度决策模型","DSched 调度决策模型",[10,6039,6040],{},"当应用发起跨设备操作时，DSched 需要在多台候选设备中选择最优执行设备。调度决策综合以下因素：",[178,6042,6044],{"className":6043},[887],[178,6045,6047,6118],{"className":6046},[477],[178,6048,6050],{"className":6049},[481],[483,6051,6052],{"xmlns":485,"display":896},[487,6053,6054,6115],{},[490,6055,6056,6059,6061,6068,6070,6072,6089,6096,6099,6105,6107,6113],{},[902,6057,6058],{},"Score",[497,6060,500],{"stretchy":499},[915,6062,6063,6066],{},[493,6064,6065],{},"D",[493,6067,943],{},[497,6069,507],{"stretchy":499},[497,6071,571],{},[6073,6074,6075,6078,6087],"munderover",{},[497,6076,6077],{},"∑",[490,6079,6080,6083,6085],{},[493,6081,6082],{},"k",[497,6084,571],{},[502,6086,504],{},[502,6088,3935],{},[915,6090,6091,6094],{},[493,6092,6093],{},"w",[493,6095,6082],{},[497,6097,6098],{},"⋅",[915,6100,6101,6103],{},[493,6102,3445],{},[493,6104,6082],{},[497,6106,500],{"stretchy":499},[915,6108,6109,6111],{},[493,6110,6065],{},[493,6112,943],{},[497,6114,507],{"stretchy":499},[509,6116,6117],{"encoding":511},"\\text{Score}(D_i) = \\sum_{k=1}^{4} w_k \\cdot f_k(D_i)",[178,6119,6121,6189,6326],{"className":6120,"ariaHidden":517},[516],[178,6122,6124,6127,6133,6136,6177,6180,6183,6186],{"className":6123},[521],[178,6125],{"className":6126,"style":526},[525],[178,6128,6130],{"className":6129},[530,960],[178,6131,6058],{"className":6132},[530],[178,6134,500],{"className":6135},[536],[178,6137,6139,6142],{"className":6138},[530],[178,6140,6065],{"className":6141,"style":532},[530,531],[178,6143,6145],{"className":6144},[1008],[178,6146,6148,6169],{"className":6147},[1012,1013],[178,6149,6151,6166],{"className":6150},[1017],[178,6152,6154],{"className":6153,"style":1128},[1021],[178,6155,6157,6160],{"style":6156},"top:-2.55em;margin-left:-0.0278em;margin-right:0.05em;",[178,6158],{"className":6159,"style":1030},[1029],[178,6161,6163],{"className":6162},[1034,1035,1036,1037],[178,6164,943],{"className":6165},[530,531,1037],[178,6167,1051],{"className":6168},[1050],[178,6170,6172],{"className":6171},[1017],[178,6173,6175],{"className":6174,"style":1058},[1021],[178,6176],{},[178,6178,507],{"className":6179},[543],[178,6181],{"className":6182,"style":968},[967],[178,6184,571],{"className":6185},[972],[178,6187],{"className":6188,"style":968},[967],[178,6190,6192,6196,6272,6275,6317,6320,6323],{"className":6191},[521],[178,6193],{"className":6194,"style":6195},[525],"height:3.1032em;vertical-align:-1.3021em;",[178,6197,6199],{"className":6198},[2284,2296],[178,6200,6202,6263],{"className":6201},[1012,1013],[178,6203,6205,6260],{"className":6204},[1017],[178,6206,6209,6232,6245],{"className":6207,"style":6208},[1021],"height:1.8011em;",[178,6210,6212,6216],{"style":6211},"top:-1.8479em;margin-left:0em;",[178,6213],{"className":6214,"style":6215},[1029],"height:3.05em;",[178,6217,6219],{"className":6218},[1034,1035,1036,1037],[178,6220,6222,6226,6229],{"className":6221},[530,1037],[178,6223,6082],{"className":6224,"style":6225},[530,531,1037],"margin-right:0.0315em;",[178,6227,571],{"className":6228},[972,1037],[178,6230,504],{"className":6231},[530,1037],[178,6233,6235,6238],{"style":6234},"top:-3.05em;",[178,6236],{"className":6237,"style":6215},[1029],[178,6239,6240],{},[178,6241,6077],{"className":6242},[2284,6243,6244],"op-symbol","large-op",[178,6246,6248,6251],{"style":6247},"top:-4.3em;margin-left:0em;",[178,6249],{"className":6250,"style":6215},[1029],[178,6252,6254],{"className":6253},[1034,1035,1036,1037],[178,6255,6257],{"className":6256},[530,1037],[178,6258,3935],{"className":6259},[530,1037],[178,6261,1051],{"className":6262},[1050],[178,6264,6266],{"className":6265},[1017],[178,6267,6270],{"className":6268,"style":6269},[1021],"height:1.3021em;",[178,6271],{},[178,6273],{"className":6274,"style":2292},[967],[178,6276,6278,6282],{"className":6277},[530],[178,6279,6093],{"className":6280,"style":6281},[530,531],"margin-right:0.0269em;",[178,6283,6285],{"className":6284},[1008],[178,6286,6288,6309],{"className":6287},[1012,1013],[178,6289,6291,6306],{"className":6290},[1017],[178,6292,6294],{"className":6293,"style":4254},[1021],[178,6295,6297,6300],{"style":6296},"top:-2.55em;margin-left:-0.0269em;margin-right:0.05em;",[178,6298],{"className":6299,"style":1030},[1029],[178,6301,6303],{"className":6302},[1034,1035,1036,1037],[178,6304,6082],{"className":6305,"style":6225},[530,531,1037],[178,6307,1051],{"className":6308},[1050],[178,6310,6312],{"className":6311},[1017],[178,6313,6315],{"className":6314,"style":1058},[1021],[178,6316],{},[178,6318],{"className":6319,"style":1064},[967],[178,6321,6098],{"className":6322},[1068],[178,6324],{"className":6325,"style":1064},[967],[178,6327,6329,6332,6372,6375,6415],{"className":6328},[521],[178,6330],{"className":6331,"style":526},[525],[178,6333,6335,6338],{"className":6334},[530],[178,6336,3445],{"className":6337,"style":3507},[530,531],[178,6339,6341],{"className":6340},[1008],[178,6342,6344,6364],{"className":6343},[1012,1013],[178,6345,6347,6361],{"className":6346},[1017],[178,6348,6350],{"className":6349,"style":4254},[1021],[178,6351,6352,6355],{"style":3523},[178,6353],{"className":6354,"style":1030},[1029],[178,6356,6358],{"className":6357},[1034,1035,1036,1037],[178,6359,6082],{"className":6360,"style":6225},[530,531,1037],[178,6362,1051],{"className":6363},[1050],[178,6365,6367],{"className":6366},[1017],[178,6368,6370],{"className":6369,"style":1058},[1021],[178,6371],{},[178,6373,500],{"className":6374},[536],[178,6376,6378,6381],{"className":6377},[530],[178,6379,6065],{"className":6380,"style":532},[530,531],[178,6382,6384],{"className":6383},[1008],[178,6385,6387,6407],{"className":6386},[1012,1013],[178,6388,6390,6404],{"className":6389},[1017],[178,6391,6393],{"className":6392,"style":1128},[1021],[178,6394,6395,6398],{"style":6156},[178,6396],{"className":6397,"style":1030},[1029],[178,6399,6401],{"className":6400},[1034,1035,1036,1037],[178,6402,943],{"className":6403},[530,531,1037],[178,6405,1051],{"className":6406},[1050],[178,6408,6410],{"className":6409},[1017],[178,6411,6413],{"className":6412,"style":1058},[1021],[178,6414],{},[178,6416,507],{"className":6417},[543],[64,6419,6420,6574],{},[67,6421,6422],{},[70,6423,6424,6497,6500],{},[73,6425,6426,6427],{"align":75},"因子 ",[178,6428,6430,6448],{"className":6429},[477],[178,6431,6433],{"className":6432},[481],[483,6434,6435],{"xmlns":485},[487,6436,6437,6445],{},[490,6438,6439],{},[915,6440,6441,6443],{},[493,6442,3445],{},[493,6444,6082],{},[509,6446,6447],{"encoding":511},"f_k",[178,6449,6451],{"className":6450,"ariaHidden":517},[516],[178,6452,6454,6457],{"className":6453},[521],[178,6455],{"className":6456,"style":3566},[525],[178,6458,6460,6463],{"className":6459},[530],[178,6461,3445],{"className":6462,"style":3507},[530,531],[178,6464,6466],{"className":6465},[1008],[178,6467,6469,6489],{"className":6468},[1012,1013],[178,6470,6472,6486],{"className":6471},[1017],[178,6473,6475],{"className":6474,"style":4254},[1021],[178,6476,6477,6480],{"style":3523},[178,6478],{"className":6479,"style":1030},[1029],[178,6481,6483],{"className":6482},[1034,1035,1036,1037],[178,6484,6082],{"className":6485,"style":6225},[530,531,1037],[178,6487,1051],{"className":6488},[1050],[178,6490,6492],{"className":6491},[1017],[178,6493,6495],{"className":6494,"style":1058},[1021],[178,6496],{},[73,6498,6499],{"align":75},"含义",[73,6501,1504,6502,6573],{"align":79},[178,6503,6505,6523],{"className":6504},[477],[178,6506,6508],{"className":6507},[481],[483,6509,6510],{"xmlns":485},[487,6511,6512,6520],{},[490,6513,6514],{},[915,6515,6516,6518],{},[493,6517,6093],{},[493,6519,6082],{},[509,6521,6522],{"encoding":511},"w_k",[178,6524,6526],{"className":6525,"ariaHidden":517},[516],[178,6527,6529,6533],{"className":6528},[521],[178,6530],{"className":6531,"style":6532},[525],"height:0.5806em;vertical-align:-0.15em;",[178,6534,6536,6539],{"className":6535},[530],[178,6537,6093],{"className":6538,"style":6281},[530,531],[178,6540,6542],{"className":6541},[1008],[178,6543,6545,6565],{"className":6544},[1012,1013],[178,6546,6548,6562],{"className":6547},[1017],[178,6549,6551],{"className":6550,"style":4254},[1021],[178,6552,6553,6556],{"style":6296},[178,6554],{"className":6555,"style":1030},[1029],[178,6557,6559],{"className":6558},[1034,1035,1036,1037],[178,6560,6082],{"className":6561,"style":6225},[530,531,1037],[178,6563,1051],{"className":6564},[1050],[178,6566,6568],{"className":6567},[1017],[178,6569,6571],{"className":6570,"style":1058},[1021],[178,6572],{}," 示例（视频播放场景）",[85,6575,6576,6657,6738,6819],{},[70,6577,6578,6651,6654],{},[90,6579,6580,6650],{"align":75},[178,6581,6583,6601],{"className":6582},[477],[178,6584,6586],{"className":6585},[481],[483,6587,6588],{"xmlns":485},[487,6589,6590,6598],{},[490,6591,6592],{},[915,6593,6594,6596],{},[493,6595,3445],{},[502,6597,504],{},[509,6599,6600],{"encoding":511},"f_1",[178,6602,6604],{"className":6603,"ariaHidden":517},[516],[178,6605,6607,6610],{"className":6606},[521],[178,6608],{"className":6609,"style":3566},[525],[178,6611,6613,6616],{"className":6612},[530],[178,6614,3445],{"className":6615,"style":3507},[530,531],[178,6617,6619],{"className":6618},[1008],[178,6620,6622,6642],{"className":6621},[1012,1013],[178,6623,6625,6639],{"className":6624},[1017],[178,6626,6628],{"className":6627,"style":1190},[1021],[178,6629,6630,6633],{"style":3523},[178,6631],{"className":6632,"style":1030},[1029],[178,6634,6636],{"className":6635},[1034,1035,1036,1037],[178,6637,504],{"className":6638},[530,1037],[178,6640,1051],{"className":6641},[1050],[178,6643,6645],{"className":6644},[1017],[178,6646,6648],{"className":6647,"style":1058},[1021],[178,6649],{},"：计算能力",[90,6652,6653],{"align":75},"目标设备 CPU/GPU 性能评分",[90,6655,6656],{"align":79},"0.35",[70,6658,6659,6732,6735],{},[90,6660,6661,6731],{"align":75},[178,6662,6664,6682],{"className":6663},[477],[178,6665,6667],{"className":6666},[481],[483,6668,6669],{"xmlns":485},[487,6670,6671,6679],{},[490,6672,6673],{},[915,6674,6675,6677],{},[493,6676,3445],{},[502,6678,3904],{},[509,6680,6681],{"encoding":511},"f_2",[178,6683,6685],{"className":6684,"ariaHidden":517},[516],[178,6686,6688,6691],{"className":6687},[521],[178,6689],{"className":6690,"style":3566},[525],[178,6692,6694,6697],{"className":6693},[530],[178,6695,3445],{"className":6696,"style":3507},[530,531],[178,6698,6700],{"className":6699},[1008],[178,6701,6703,6723],{"className":6702},[1012,1013],[178,6704,6706,6720],{"className":6705},[1017],[178,6707,6709],{"className":6708,"style":1190},[1021],[178,6710,6711,6714],{"style":3523},[178,6712],{"className":6713,"style":1030},[1029],[178,6715,6717],{"className":6716},[1034,1035,1036,1037],[178,6718,3904],{"className":6719},[530,1037],[178,6721,1051],{"className":6722},[1050],[178,6724,6726],{"className":6725},[1017],[178,6727,6729],{"className":6728,"style":1058},[1021],[178,6730],{},"：网络质量",[90,6733,6734],{"align":75},"软总线延迟与带宽评分",[90,6736,6737],{"align":79},"0.25",[70,6739,6740,6813,6816],{},[90,6741,6742,6812],{"align":75},[178,6743,6745,6763],{"className":6744},[477],[178,6746,6748],{"className":6747},[481],[483,6749,6750],{"xmlns":485},[487,6751,6752,6760],{},[490,6753,6754],{},[915,6755,6756,6758],{},[493,6757,3445],{},[502,6759,3919],{},[509,6761,6762],{"encoding":511},"f_3",[178,6764,6766],{"className":6765,"ariaHidden":517},[516],[178,6767,6769,6772],{"className":6768},[521],[178,6770],{"className":6771,"style":3566},[525],[178,6773,6775,6778],{"className":6774},[530],[178,6776,3445],{"className":6777,"style":3507},[530,531],[178,6779,6781],{"className":6780},[1008],[178,6782,6784,6804],{"className":6783},[1012,1013],[178,6785,6787,6801],{"className":6786},[1017],[178,6788,6790],{"className":6789,"style":1190},[1021],[178,6791,6792,6795],{"style":3523},[178,6793],{"className":6794,"style":1030},[1029],[178,6796,6798],{"className":6797},[1034,1035,1036,1037],[178,6799,3919],{"className":6800},[530,1037],[178,6802,1051],{"className":6803},[1050],[178,6805,6807],{"className":6806},[1017],[178,6808,6810],{"className":6809,"style":1058},[1021],[178,6811],{},"：电量状态",[90,6814,6815],{"align":75},"目标设备剩余电量评分",[90,6817,6818],{"align":79},"0.20",[70,6820,6821,6894,6897],{},[90,6822,6823,6893],{"align":75},[178,6824,6826,6844],{"className":6825},[477],[178,6827,6829],{"className":6828},[481],[483,6830,6831],{"xmlns":485},[487,6832,6833,6841],{},[490,6834,6835],{},[915,6836,6837,6839],{},[493,6838,3445],{},[502,6840,3935],{},[509,6842,6843],{"encoding":511},"f_4",[178,6845,6847],{"className":6846,"ariaHidden":517},[516],[178,6848,6850,6853],{"className":6849},[521],[178,6851],{"className":6852,"style":3566},[525],[178,6854,6856,6859],{"className":6855},[530],[178,6857,3445],{"className":6858,"style":3507},[530,531],[178,6860,6862],{"className":6861},[1008],[178,6863,6865,6885],{"className":6864},[1012,1013],[178,6866,6868,6882],{"className":6867},[1017],[178,6869,6871],{"className":6870,"style":1190},[1021],[178,6872,6873,6876],{"style":3523},[178,6874],{"className":6875,"style":1030},[1029],[178,6877,6879],{"className":6878},[1034,1035,1036,1037],[178,6880,3935],{"className":6881},[530,1037],[178,6883,1051],{"className":6884},[1050],[178,6886,6888],{"className":6887},[1017],[178,6889,6891],{"className":6890,"style":1058},[1021],[178,6892],{},"：用户偏好",[90,6895,6896],{"align":75},"历史使用习惯推断评分",[90,6898,6818],{"align":79},[10,6900,6901,6902,6905],{},"从调度理论的角度看，这已经超出了传统操作系统的范畴——",[17,6903,6904],{},"候选集合从“本机 CPU 核心”变成了“多台异构设备”","，优化目标也从时间维度扩展到了“性能-网络-能耗-偏好”的多维空间。",[870,6907,6908],{"id":6908},"超级终端任务流水线",[10,6910,6911,6912,6915],{},"鸿蒙“超级终端”场景支持将复杂任务拆解为子任务流，在多设备间形成",[17,6913,6914],{},"处理流水线","，充分利用各设备的异构计算资源：",[168,6917,6919],{"className":170,"code":6918,"language":172,"meta":173,"style":173},"flowchart LR\n    subgraph DevA [设备A：手机]\n        A[\"视频采集\u003Cbr/>(30fps)\"]\n    end\n\n    subgraph DevB [设备B：平板]\n        B[\"AI超分辨率推理\u003Cbr/>(NPU 30ms/帧)\"]\n    end\n\n    subgraph DevC [设备C：PC]\n        C[\"视频编码存储\u003Cbr/>(H.265编码)\"]\n    end\n\n    A -- 软总线 --> B\n    B -- 软总线 --> C\n",[175,6920,6921,6925,6930,6935,6939,6943,6948,6953,6957,6961,6966,6971,6975,6979,6984],{"__ignoreMap":173},[178,6922,6923],{"class":180,"line":181},[178,6924,4399],{"class":184},[178,6926,6927],{"class":180,"line":188},[178,6928,6929],{"class":184},"    subgraph DevA [设备A：手机]\n",[178,6931,6932],{"class":180,"line":194},[178,6933,6934],{"class":184},"        A[\"视频采集\u003Cbr/>(30fps)\"]\n",[178,6936,6937],{"class":180,"line":200},[178,6938,203],{"class":184},[178,6940,6941],{"class":180,"line":206},[178,6942,210],{"emptyLinePlaceholder":209},[178,6944,6945],{"class":180,"line":213},[178,6946,6947],{"class":184},"    subgraph DevB [设备B：平板]\n",[178,6949,6950],{"class":180,"line":219},[178,6951,6952],{"class":184},"        B[\"AI超分辨率推理\u003Cbr/>(NPU 30ms/帧)\"]\n",[178,6954,6955],{"class":180,"line":225},[178,6956,203],{"class":184},[178,6958,6959],{"class":180,"line":230},[178,6960,210],{"emptyLinePlaceholder":209},[178,6962,6963],{"class":180,"line":235},[178,6964,6965],{"class":184},"    subgraph DevC [设备C：PC]\n",[178,6967,6968],{"class":180,"line":241},[178,6969,6970],{"class":184},"        C[\"视频编码存储\u003Cbr/>(H.265编码)\"]\n",[178,6972,6973],{"class":180,"line":247},[178,6974,203],{"class":184},[178,6976,6977],{"class":180,"line":253},[178,6978,210],{"emptyLinePlaceholder":209},[178,6980,6981],{"class":180,"line":259},[178,6982,6983],{"class":184},"    A -- 软总线 --> B\n",[178,6985,6986],{"class":180,"line":265},[178,6987,6988],{"class":184},"    B -- 软总线 --> C\n",[10,6990,6991],{},[361,6992,6993],{},"图 8：跨设备超级终端任务流水线协同图",[10,6995,6996],{},[17,6997,6998],{},"流水线性能分析：",[39,7000,7001,7004,7007],{},[42,7002,7003],{},"流水线吞吐 = min(1/30fps, 1/30ms) ≈ 30ms/帧（30fps）；",[42,7005,7006],{},"单设备串行 = 采集 + 推理 + 编码 ≈ 80ms/帧（12.5fps）；",[42,7008,7009],{},"流水线加速比 ≈ 2.7×。",[29,7011,7012],{"id":7012},"分布式场景下的一致性调度",[10,7014,7015,7016,7019,7020,7023],{},"鸿蒙在分布式调度中面临",[17,7017,7018],{},"状态一致性","挑战：当任务迁移时，需保证两台设备上的任务状态完整同步。DSched 采用",[17,7021,7022],{},"检查点（Checkpoint）+ 增量同步","机制：",[4872,7025,7026,7032,7038,7044],{},[42,7027,7028,7031],{},[17,7029,7030],{},"迁移前","：源设备执行 Checkpoint，将任务状态序列化（内存状态、UI 状态、网络连接状态）；",[42,7033,7034,7037],{},[17,7035,7036],{},"传输","：通过软总线加密传输 Checkpoint 数据（延迟约 50~200 ms，取决于状态大小）；",[42,7039,7040,7043],{},[17,7041,7042],{},"恢复","：目标设备反序列化状态，从 Checkpoint 点继续执行；",[42,7045,7046,7049],{},[17,7047,7048],{},"增量同步","：迁移完成后，若用户在两台设备间切换，通过增量 diff 同步状态变更（\u003C10 ms）。",[25,7051,7052],{"id":7052},"调度性能综合评测",[29,7054,7056],{"id":7055},"能效对比鸿蒙-vs-同硬件-aosp-参考基线","能效对比（鸿蒙 vs 同硬件 AOSP 参考基线）",[10,7058,7059],{},"以下数据来源于华为官方发布数据及 Anandtech、GSMArena 第三方评测：",[64,7061,7062,7080],{},[67,7063,7064],{},[70,7065,7066,7068,7071,7074,7077],{},[73,7067,4779],{"align":75},[73,7069,7070],{"align":75},"测试设备",[73,7072,7073],{"align":79},"HarmonyOS 4 功耗",[73,7075,7076],{"align":79},"AOSP 参考基线",[73,7078,7079],{"align":79},"节能优势",[85,7081,7082,7098,7114,7130,7146],{},[70,7083,7084,7087,7089,7092,7095],{},[90,7085,7086],{"align":75},"日常混合使用（1 小时）",[90,7088,4801],{"align":75},[90,7090,7091],{"align":79},"12.4% 电量",[90,7093,7094],{"align":79},"15.8% 电量",[90,7096,7097],{"align":79},"21.5% ↑",[70,7099,7100,7103,7105,7108,7111],{},[90,7101,7102],{"align":75},"1080P 视频播放（1 小时）",[90,7104,4801],{"align":75},[90,7106,7107],{"align":79},"4.1% 电量",[90,7109,7110],{"align":79},"5.2% 电量",[90,7112,7113],{"align":79},"21.2% ↑",[70,7115,7116,7119,7121,7124,7127],{},[90,7117,7118],{"align":75},"后台待机（8 小时）",[90,7120,4801],{"align":75},[90,7122,7123],{"align":79},"4.2% 电量",[90,7125,7126],{"align":79},"7.8% 电量",[90,7128,7129],{"align":79},"46.2% ↑",[70,7131,7132,7135,7137,7140,7143],{},[90,7133,7134],{"align":75},"王者荣耀（60fps，30min）",[90,7136,4801],{"align":75},[90,7138,7139],{"align":79},"9.6% 电量",[90,7141,7142],{"align":79},"11.2% 电量",[90,7144,7145],{"align":79},"14.3% ↑",[70,7147,7148,7151,7153,7156,7159],{},[90,7149,7150],{"align":75},"微信/社交（1 小时）",[90,7152,4818],{"align":75},[90,7154,7155],{"align":79},"8.3% 电量",[90,7157,7158],{"align":79},"10.1% 电量",[90,7160,7161],{"align":79},"17.8% ↑",[29,7163,7164],{"id":7164},"响应性对比",[64,7166,7167,7183],{},[67,7168,7169],{},[70,7170,7171,7174,7177,7180],{},[73,7172,7173],{"align":75},"指标",[73,7175,7176],{"align":75},"HarmonyOS 4",[73,7178,7179],{"align":75},"竞品均值（高端安卓）",[73,7181,7182],{"align":79},"优势",[85,7184,7185,7199,7213,7227],{},[70,7186,7187,7190,7193,7196],{},[90,7188,7189],{"align":75},"应用冷启动时间（微信）",[90,7191,7192],{"align":75},"312 ms",[90,7194,7195],{"align":75},"428 ms",[90,7197,7198],{"align":79},"27.1% ↑",[70,7200,7201,7204,7207,7210],{},[90,7202,7203],{"align":75},"桌面滑动帧率稳定性（120Hz）",[90,7205,7206],{"align":75},"均值 119.1 fps，σ=1.2",[90,7208,7209],{"align":75},"均值 116.8 fps，σ=4.1",[90,7211,7212],{"align":79},"更稳定",[70,7214,7215,7218,7221,7224],{},[90,7216,7217],{"align":75},"触控响应延迟",[90,7219,7220],{"align":75},"16.2 ms",[90,7222,7223],{"align":75},"19.8 ms",[90,7225,7226],{"align":79},"18.2% ↑",[70,7228,7229,7232,7235,7238],{},[90,7230,7231],{"align":75},"多任务切换延迟",[90,7233,7234],{"align":75},"180 ms",[90,7236,7237],{"align":75},"240 ms",[90,7239,7240],{"align":79},"25.0% ↑",[10,7242,7243],{},[361,7244,7245],{},"数据来源：华为 HDC2023 技术分享 + AnandTech Mate 60 Pro 评测。",[25,7247,7248],{"id":7248},"总结与展望",[29,7250,7251],{"id":7251},"研究结论",[10,7253,7254],{},"本文系统研究了鸿蒙操作系统的调度体系，得出以下核心结论：",[4872,7256,7257,7266,7274,7282],{},[42,7258,7259,7262,7265],{},[17,7260,7261],{},"分层调度架构是鸿蒙的核心设计创新",[7263,7264],"br",{},"鸿蒙构建了从 LiteOS-M（MCU）→ LiteOS-A（IoT）→ Linux 定制内核（手机）的梯级调度架构，同一套应用框架 API 可在不同能力的设备上运行，体现了“一次开发，多端部署”的设计哲学。",[42,7267,7268,7271,7273],{},[17,7269,7270],{},"多目标联合优化是主线技术挑战",[7263,7272],{},"EAS + QoS + FAS 三层机制分别从能效、任务重要性、帧渲染时效性三个维度对调度进行约束，通过内核协同实现了传统操作系统无法同时满足的多维度优化目标。实测数据表明，后台待机功耗相较参考基线降低约 46%，UI 帧率稳定性显著提升。",[42,7275,7276,7279,7281],{},[17,7277,7278],{},"FFRT 代表用户态调度的范式转变",[7263,7280],{},"FFRT 将调度粒度从“线程”细化到“函数”，通过数据流依赖分析自动挖掘并行性，在减少线程数量 92% 的同时提升了 28–39% 的多媒体处理性能，是鸿蒙区别于传统系统的重要技术差异点。",[42,7283,7284,7287,7289],{},[17,7285,7286],{},"分布式调度开创了操作系统调度的新维度",[7263,7288],{},"DSched 将“选择哪台设备执行”纳入操作系统的调度决策范畴，这是传统单机操作系统调度理论未曾涉及的新领域，也是鸿蒙在操作系统研究领域最具原创性的贡献。",[29,7291,7292],{"id":7292},"局限性与展望",[365,7294,7296,7301],{"type":7295},"warning",[10,7297,7298],{},[17,7299,7300],{},"当前仍存在的挑战：",[39,7302,7303,7309,7315],{},[42,7304,7305,7308],{},[17,7306,7307],{},"跨设备调度的延迟开销","：Ability 迁移的状态同步延迟（50~200 ms）在某些实时性要求较高的场景（如云游戏控制）仍显过长；",[42,7310,7311,7314],{},[17,7312,7313],{},"EAS 能量模型的准确性","：能量模型在任务负载突变场景下的预测误差约为 15~25%，影响调度决策质量；",[42,7316,7317,7320],{},[17,7318,7319],{},"FFRT 的适用边界","：FFRT 依赖开发者显式声明数据依赖，对于依赖隐式共享状态的遗留代码改造成本较高。",[10,7322,7323],{},[17,7324,7325],{},"未来发展方向：",[4872,7327,7328,7334,7340],{},[42,7329,7330,7333],{},[17,7331,7332],{},"AI 驱动的预测调度","：利用设备端 NPU 在线分析任务负载模式，提前预测资源需求并主动调度，将被动响应转变为主动预测；",[42,7335,7336,7339],{},[17,7337,7338],{},"毫秒级分布式调度","：结合 WiFi 7 超低延迟（\u003C1 ms）与任务热迁移技术，将跨设备任务迁移的感知延迟降至毫秒级；",[42,7341,7342,7345],{},[17,7343,7344],{},"混合关键性调度（MCS）","：在同一设备上融合硬实时任务（如 AR/VR 渲染）与普通任务的混合关键性调度框架，是 HarmonyOS NEXT 的重要演进方向。",[25,7347,7348],{"id":7348},"参考文献",[10,7350,7351,7353,7354,7357,7358],{},[178,7352,504],{}," 华为技术有限公司. (2023). ",[361,7355,7356],{},"HarmonyOS 技术白皮书 v4.0",". 华为开发者联盟. ",[7359,7360,7361],"a",{"href":7361,"rel":7362},"https://developer.harmonyos.com/",[7363],"nofollow",[10,7365,7366,7368,7369,7372],{},[178,7367,3904],{}," Chen, Y., Li, H., & Zhang, W. (2022). Distributed scheduling in HarmonyOS: Architecture and implementation. ",[361,7370,7371],{},"Proceedings of the 43rd IEEE Real-Time Systems Symposium (RTSS 2022)",", Houston, TX. pp. 245–256.",[10,7374,7375,7377,7378,7381,7382],{},[178,7376,3919],{}," 华为开源社区. (2023). ",[361,7379,7380],{},"LiteOS-A 内核调度机制源码分析",". OpenHarmony Gitee 仓库. ",[7359,7383,7384],{"href":7384,"rel":7385},"https://gitee.com/openharmony/kernel_liteos_a",[7363],[10,7387,7388,7390,7391,7397,7398],{},[178,7389,3935],{}," Molnár, I. (2007). ",[361,7392,7393,7394],{},"Modular Scheduler Core and Completely Fair Scheduler ",[178,7395,7396],{},"v4",". Linux Kernel Mailing List. ",[7359,7399,7400],{"href":7400,"rel":7401},"https://lwn.net/Articles/230501/",[7363],[10,7403,7404,7407,7408,7411],{},[178,7405,7406],{},"5"," Quentin, P., Reddy, V., & Regnier, P. (2019). Energy Aware Scheduling for Mobile Devices. ",[361,7409,7410],{},"Proceedings of Linux Plumbers Conference 2019",", Lisbon.",[10,7413,7414,7353,7417,7420],{},[178,7415,7416],{},"6",[361,7418,7419],{},"HarmonyOS QoS 调度框架技术规范 v2.1",". OpenHarmony 技术委员会内部文档（部分公开于 HDC 2023）.",[10,7422,7423,7426,7427,7430],{},[178,7424,7425],{},"7"," 华为技术有限公司. (2023). 帧感知调度：提升 HarmonyOS 流畅体验的核心技术 ",[178,7428,7429],{},"技术演讲",". 华为开发者大会 2023（HDC 2023）, 东莞.",[10,7432,7433,7436,7437,7440,7441],{},[178,7434,7435],{},"8"," Cutress, I., & Frumusanu, A. (2023). ",[361,7438,7439],{},"Huawei Mate 60 Pro In-Depth Review: Scheduling and Power Analysis",". AnandTech. ",[7359,7442,7443],{"href":7443,"rel":7444},"https://www.anandtech.com/",[7363],[10,7446,7447,7353,7450,7453,7454],{},[178,7448,7449],{},"9",[361,7451,7452],{},"FFRT: Function Flow Runtime Technology - Whitepaper",". OpenHarmony 开源文档. ",[7359,7455,7456],{"href":7456,"rel":7457},"https://gitee.com/openharmony/docs",[7363],[10,7459,7460,7463,7464,7467,7468],{},[178,7461,7462],{},"10"," Li, X., Wang, Z., & Zhao, M. (2022). DSched: Cross-device task scheduling in distributed OS. ",[361,7465,7466],{},"IEEE Transactions on Mobile Computing",", 21(8), 2789–2804. ",[7359,7469,7470],{"href":7470,"rel":7471},"https://doi.org/10.1109/TMC.2021.3098472",[7363],[10,7473,7474,7477,7478,7481,7482],{},[178,7475,7476],{},"11"," GSMArena. (2023). ",[361,7479,7480],{},"Huawei Mate 60 Pro Battery Life and Performance Testing",". ",[7359,7483,7484],{"href":7484,"rel":7485},"https://www.gsmarena.com/",[7363],[10,7487,7488,7491,7492,7495],{},[178,7489,7490],{},"12"," Burns, A., & Davis, R. I. (2017). A survey of research into mixed criticality systems. ",[361,7493,7494],{},"ACM Computing Surveys",", 50(6), 1–37.",[10,7497,7498,7501,7502,7481,7505],{},[178,7499,7500],{},"13"," Linux Kernel Documentation. (2023). ",[361,7503,7504],{},"Energy Aware Scheduling",[7359,7506,7507],{"href":7507,"rel":7508},"https://www.kernel.org/doc/html/latest/scheduler/sched-energy.html",[7363],[10,7510,7511,7514,7515,7518],{},[178,7512,7513],{},"14"," 华为开发者联盟. (2023). ",[361,7516,7517],{},"HarmonyOS 4.0 系统功耗优化技术白皮书",". 华为开发者联盟官网.",[7520,7521,7522],"style",{},"html pre.shiki code .sy89t, html code.shiki .sy89t{--shiki-default:#EEF0F98F;--shiki-default-font-style:italic}html pre.shiki code .sqF6k, html code.shiki .sqF6k{--shiki-default:#54B9FF}html pre.shiki code .sb16X, html code.shiki .sb16X{--shiki-default:#4BF3C8}html pre.shiki code .se2J0, html code.shiki .se2J0{--shiki-default:#FFD493}html pre.shiki code .sLo_3, html code.shiki .sLo_3{--shiki-default:#EEF0F9}html pre.shiki code .stHQG, html code.shiki .stHQG{--shiki-default:#00DAEF}html pre.shiki code .s8HWQ, html code.shiki .s8HWQ{--shiki-default:#ACAFFF}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html pre.shiki code .smONe, html code.shiki .smONe{--shiki-default:#4BF3C8;--shiki-default-font-style:italic}",{"title":173,"searchDepth":188,"depth":188,"links":7524},[7525,7529,7533,7538,7544,7548,7553,7557,7561],{"id":27,"depth":188,"text":27,"children":7526},[7527,7528],{"id":31,"depth":194,"text":31},{"id":62,"depth":194,"text":62},{"id":156,"depth":188,"text":156,"children":7530},[7531,7532],{"id":159,"depth":194,"text":159},{"id":377,"depth":194,"text":377},{"id":454,"depth":188,"text":455,"children":7534},[7535,7536,7537],{"id":458,"depth":194,"text":458},{"id":666,"depth":194,"text":666},{"id":752,"depth":194,"text":753},{"id":857,"depth":188,"text":857,"children":7539},[7540,7541,7542,7543],{"id":860,"depth":194,"text":861},{"id":1979,"depth":194,"text":1980},{"id":3834,"depth":194,"text":3835},{"id":4172,"depth":194,"text":4173},{"id":4863,"depth":188,"text":4864,"children":7545},[7546,7547],{"id":4867,"depth":194,"text":4867},{"id":4900,"depth":194,"text":4901},{"id":5506,"depth":188,"text":5507,"children":7549},[7550,7551,7552],{"id":5510,"depth":194,"text":5510},{"id":5603,"depth":194,"text":5604},{"id":7012,"depth":194,"text":7012},{"id":7052,"depth":188,"text":7052,"children":7554},[7555,7556],{"id":7055,"depth":194,"text":7056},{"id":7164,"depth":194,"text":7164},{"id":7248,"depth":188,"text":7248,"children":7558},[7559,7560],{"id":7251,"depth":194,"text":7251},{"id":7292,"depth":194,"text":7292},{"id":7348,"depth":188,"text":7348},"2026-06-05","从鸿蒙的多内核分层架构出发，系统拆解 LiteOS-A、Linux CFS、能量感知调度（EAS）、QoS 感知调度、帧感知调度（FAS）、FFRT 用户态并发运行时与分布式任务调度（DSched）的调度机制与实测数据。",false,"md",{"excerpt":7567},{"type":7,"value":7568},[7569,7571,7575],[10,7570,12],{},[10,7572,15,7573,20],{},[17,7574,19],{},[10,7576,23],{},"/blog/harmonyos-scheduling-strategy-research",{"title":5,"description":7563},"blog/harmonyos-scheduling-strategy-research",[7581,7582,7583,7584,4068,7585],"harmonyos","operating-system","scheduling","eas","distributed","OchFS1sVnKBVoywkK1VOGEtfRdEgjETCgWrj42Ploq4",1789936009849]