当前位置:首页>自动驾驶>自动驾驶 ECU 确定性调度体系:从核绑定到全栈可控架构

自动驾驶 ECU 确定性调度体系:从核绑定到全栈可控架构

  • 2026-05-07 23:16:54
自动驾驶 ECU 确定性调度体系:从核绑定到全栈可控架构
本文约7,880字,建议收藏阅读
作 者 | aFakeProgramer
出 品 | 汽车电子与软件

引言

那个让你长期困惑的“偶发延迟”

想象一个场景:你负责的自动驾驶项目路测一切顺利,数据回放也完美无缺。但就在某天,工程师一脸严肃地找到你,说在长达100小时的测试日志里,发现刹车控制指令有一次莫名的2毫秒延迟

2毫秒,人眼根本无法察觉。但在高速行驶的车上,这意味着一两米的制动距离偏差。你看着日志,CPU利用率才40%,任务优先级已经拉满,关键任务也绑定了专用核心。所有常规优化手段都用了,问题出在哪?

这就是很多自动驾驶工程师的梦魇——系统看似稳定,但总存在“不确定的抖动”。我们

最常做的优化包括:

  • 绑核(CPU Affinity)

  • 提升优先级(SCHED_FIFO)

  • 优化任务调度

这些手段确实有效,但如果你把问题停留在这里,会很快遇到一个现象:系统“看起来没问题”,但偶发延迟、抖动、甚至安全风险仍然存在。

根本原因在于:调度只是冰山一角。自动驾驶对“确定性”的追求,是一场从单点技术到全栈架构的系统性战役。今天,我们就来彻底拆解问题的传播路径:

抖动来源链:CPU → Cache → Memory → IRQ → System

从核绑定出发,如何一步步构建一个真正“可控”的ECU确定性调度体系。

01

为什么绑核只是“安慰剂”?

问:我把激光雷达的处理线程绑在Core 0,优先级设为最高,这还不够吗?

答:这就像你给一位重要客人预订了酒店的一个房间(Core 0),并告诉所有人他是VIP(高优先级)。但这能保证他睡个好觉吗?不一定。因为:

1. Cache污染:Core 1上的AI模型推理,可能把共享的L3缓存(LLC)塞得满满当当。你的VIP线程一运行,发现缓存里的数据都被踢出去了,不得不去慢得多的内存里重新读取,造成延迟。

2. 内存带宽争抢:AI任务和海量数据传感器可能占满了通往内存的“高速公路”(内存带宽)。你的VIP线程虽然上了路,但被堵死在路上,寸步难行。

3. 中断干扰:网卡、CAN总线来的中断,可能随时打断VIP线程的休息。

所以,绑核只是第一步,它解决了“任务不会被别人赶到走廊里”的问题,但没解决“在房间里也被各种噪音干扰”的问题。

这意味着:核绑定只是第一层优化,真正的解决方案是“全栈确定性架构”。

02

自动驾驶确定性体系:

五层技术模型

我们将调度问题上升为一个完整的系统模型:

注意:本文前面从“问题来源”角度(CPU → Cache → Memory → IRQ → System)展开,

而上图从“系统架构分层”角度进行抽象,两者是同一体系的不同视角。

2.1 CPU层:核绑定与实时调度(基础但不充分)

这确实是基础。目标:避免任务被抢占或迁移,我们通过 sched_setaffinity 把任务钉死在核心上,用 SCHED_FIFO 赋予它实时优先级,甚至用内核启动参数 isolcpus 把某些核心完全隔离出来,只运行指定任务。

为避免优先级反转问题,需要引入 PCP(优先级天花板协议)或 PI(优先级继承机制),确保高优先级任务不会被低优先级任务间接阻塞。

核心技术:

  • sched_setaffinity

  • SCHED_FIFO / SCHED_RR

  • isolcpus / cpuset

作用:

  • 降低上下文切换

  • 提升响应优先级

  • 固定执行位置,防止缓存失效

局限性:即使绑核,系统仍然可能抖动(原因在下面几层),因为它控制不了共享资源。

2.2 Cache层:缓存隔离(决定实时性的关键因素)

这是很多工程师容易忽略的“性能黑洞”。

问题核心:现代多核SoC的最后一级缓存(LLC)通常是共享的。一个核心上的任务,会悄无声息地把另一个核心上关键任务的缓存数据“挤出去”。这导致关键任务每次运行时,都面临“缓存冷启动”,延迟剧烈抖动。

CPU 多级缓存基础知识补充

现代 CPU 普遍采用多核架构与多级缓存设计,早期处理器多为两级缓存(L1、L2),新款处理器则普遍升级为三级缓存(L1、L2、L3),整体存储体系遵循离核心越近、速度越快、容量越小的设计原则。如下图所示:

缓存结构与分工

  • L1 缓存:分为指令缓存与数据缓存,是最靠近运算核心的高速缓存,每个 CPU 核心独立拥有。

  • L2 缓存:不区分指令与数据,同样为每个核心独占,容量与速度介于 L1 和 L3 之间。

  • L3 缓存:不区分指令与数据,由所有 CPU 核心共享,容量最大、速度相对最慢。

访问速度对比(以 CPU 时钟周期为单位)

  • L1 缓存:约 4 个时钟周期

  • L2 缓存:约 11 个时钟周期

  • L3 缓存:约 39 个时钟周期

  • 内存(RAM):约 107 个时钟周期

可见 L1 缓存的访问速度约是内存的 27 倍,但容量差异悬殊:L1、L2 多为KB 级,L3 则达到MB 级。缓存之后依次为系统内存、硬盘等存储设备,速度逐级下降、容量逐级增大。

为什么要设计三级缓存?以及由此带来的核心问题

CPU 采用三级缓存架构,本质是在速度、容量、物理实现、多核协同之间做综合权衡,并非单纯追求更快或更大。

一、为什么要分成 L1 / L2 / L3 三层?

1. 物理限制:速度与容量天生矛盾

想要更大容量,就需要更多晶体管,不仅会增大芯片面积,更关键的是信号传输路径变长、延迟上升。访问速度和电路距离强相关,离计算核心越远,速度越慢。大容量高速缓存从物理上就无法实现。

2. 多核场景下的协同与同步成本

多核架构中,多个核心会同时访问、修改数据,缓存越大、共享越复杂,数据同步开销就越高。

同时,缓存与内存速度差距极大,如果只用一级缓存,要么容量太小频繁失效,要么太大速度跟不上。多级缓存可以用小容量极速缓存 + 中容量高速缓存 + 大容量共享缓存的组合,最大化整体吞吐。

这个世界永远是平衡的,一面变得有多光鲜,另一面也会变得有多黑暗。

3. 工程上的折中艺术

技术世界永远是权衡:速度上去了,容量就要妥协;容量做大了,速度必然下降。多级缓存就是在这对矛盾里找到最优平衡点。

二、多级缓存带来的两大关键问题

更多层级、更多副本,必然引入新的复杂度,最核心的是两个问题:

1. 缓存命中率

数据是否刚好在缓存里,直接决定访问速度。命中率越低,CPU 越要去慢速内存取数,性能急剧下降。

2. 缓存一致性(多核下尤为复杂)

多个核心各自有独立 L1/L2,同一份数据可能在多处缓存中存在副本。一旦某个核心修改数据,其他副本必须同步更新或失效,否则会出现数据不一致。

多核缓存一致性,本质和分布式系统多节点数据同步非常相似。

三、先理解一个基础概念:Cache Line

CPU 不会以单个字节为单位从内存加载数据,效率太低。它会整块批量读取,这个最小读取单位就叫 Cache Line。

  • 主流 CPU 通常为 64 字节

  • 部分架构使用 32 字节或 128 字节

  • 64 字节相当于 16 个 32 位整数

举例:如果 L1 缓存大小为 32KB:32KB = 32768 字节

32768 / 64 = 512 个 Cache Line

也就是说,这片 L1 缓存被划分为 512 个槽位,数据只能以整行的形式载入。

四、内存地址与缓存的映射策略(CPU Associativity)

缓存远小于内存,同一块内存数据不可能同时存在所有位置,因此需要一套映射规则,决定内存数据应该放到缓存的哪个位置。

1. 全相联映射(Full Associativity)

  • 内存数据块可以放到任意一个 Cache Line中。

  • 优点:灵活,冲突少,空间利用率高。

  • 缺点:查找时要遍历所有 Cache Line,复杂度 O (n),硬件实现成本高、速度慢。

2. 直接映射(Direct Mapped)

类似最简单的哈希表,用取模方式定位:

缓存索引 = 内存地址 mod 缓存行数

举例:L1 有 512 个 Cache Line,则

地址 mod 512 就能直接算出对应 Cache Line 位置。

  • 优点:查找极快,硬件简单。

  • 缺点:冲突严重。如果多个频繁访问的地址刚好映射到同一条 Cache Line,就会频繁失效、性能暴跌。

3. N 路组相联映射(N-Way Set Associativity)

为兼顾前两种方案的优缺点,现代 CPU 普遍采用此方案:

(1) 先把缓存分成若干组(Set),每组包含 N 个 Cache Line,称为 “N 路”。

(2) 通过地址哈希先定位到对应的组。

(3) 再在这一组内的 N 个 Cache Line 中查找。

这样既降低了搜索开销,又大幅减少冲突,是速度、成本、命中率之间最成熟的折中方案。

扯远了,咱们把话题再拉回来。

核心问题:多核系统中,Cache是共享的, 干扰不可避免。

即使任务固定在核心上,其他核心仍然可能污染LLC,cache miss导致延迟不可预测

工程常见解法:缓存着色(Cache Coloring)与硬件分区想象一下,如果把Cache比作一个有很多行(Set)的书架。默认情况下,所有程序的书都可以随意放在任何一行。缓存着色技术,就是通过软件手段,控制物理内存页映射到Cache的哪一行。这样,我们可以把关键任务的书,只放在书架的前几行,而其他任务的书只能放在后几行,物理上隔离。

一段对话:

A: “这听起来很底层,实现起来难吗?”

B: “确实需要内核或BSP(板级支持包)层面的支持。但带来的收益是巨大的——关键任务的延迟抖动可以减少30%到70%。像一些高性能实时系统,已经在用类似技术。新一代ARM芯片的MPAM(内存系统资源分区与监控)功能,更是直接在硬件层面支持这种分区,让隔离更干净、配置更简单。”

2.3 内存与NoC层:带宽与访问控制(隐形瓶颈)

典型场景:你监控到CPU负载很低,但控制任务就是偶尔“卡顿”。查了半天,发现是AI加速器正在通过DMA(直接内存访问)大量搬运数据,把内存带宽吃满了。你的控制任务虽然CPU有空,但等不到内存数据,只能干等。

这就是内存带宽和片内网络(NoC,Network-on-Chip)争用带来的问题。

工程解法:带宽控制与QoS

我们需要给关键任务开辟一条“高速公路专用道”。

1) 内存带宽控制:利用 resctrl(Linux内核的资源控制接口)、cgroup 等机制,限制非关键任务(如AI推理、日志记录)可以使用的最大内存带宽。

2) QoS机制:现代SoC(如ARM系列)内部有总线仲裁器。通过配置ARM QoS扩展,我们可以给关键事务(如控制CPU的访存请求)更高的优先级,确保它永远能插队先行。

关键价值

  • 避免突发延迟

  • 保证关键任务带宽

2.4 中断层:IRQ调度(最容易翻车的点)

IRQ 的全称是 Interrupt Request,即中断请求

在自动驾驶 ECU 的确定性调度体系中,中断层是造成系统抖动的关键来源之一。IRQ 是硬件向 CPU 发出的信号,用于通知某个事件(如传感器数据到达、定时器超时)需要立即处理。如果不加控制,频繁或高优先级的中断会随时打断关键实时任务的执行,导致延迟不可预测。

你是否遇到过:CAN总线突然涌入大量报文,触发的中断直接把正在执行的控制任务给打断了?如:摄像头中断打断控制任务,CAN中断导致刹车延迟。这就是中断带来的不确定性。

工程解法:中断隔离与线程化

  • 中断绑定(IRQ Affinity):把高频率、非关键的中断(比如某个不太重要的传感器)统统赶到专门的“中断处理核心”上去,不让它们打扰关键任务。

  • 中断线程化(Threaded IRQ):将中断处理程序的下半部(耗时的处理逻辑)变成一个内核线程。这样,这个线程就可以被调度器管理,你可以给它设置优先级,甚至像普通任务一样进行绑核。核心思想是:把不可控的“硬件打断”,转化为可控的“软件调度”。

一个典型的分区策略:

按核心功能分区 + 中断集中管理的思路,把不同任务和中断精准分配到不同 CPU 核心,互不干扰:

1) Core 0-1 作为安全岛

只负责最高安全等级的制动、转向等 ASIL-D 控制任务,关闭一切非必要中断,保证安全功能绝对稳定可靠。

2) Core 2-3 负责感知计算

专门处理摄像头、激光雷达数据和 AI 推理,同时承接这些传感器相关的中断,让感知和计算在同一组核心内闭环运行。

3) Core 4 作为专职管家

统一接管 CAN、以太网等所有外设中断,避免各类外设中断去打扰安全核心和感知核心,保证关键业务不被频繁打断。

4) Core 5...及以后核心负责娱乐系统

运行类 Linux等非实时系统,处理车机、人机交互等对实时性要求不高的应用。

2.5 系统层:混合关键级 + 虚拟化隔离(决定上限)

这是从“调度优化”到“系统架构”的跃迁。

当我们把CPU、Cache、内存、中断都做到极致后,如果还想更进一步,或者要满足严格的功能安全要求(如ISO 26262的免于干扰,FFI,Freedom From Interference),就需要从“逻辑隔离”走向“物理隔离”。

为什么需要?

因为:Linux本质上不是确定性系统

工程解法:混合关键级系统 + 虚拟化

这是从“优化”到“架构”的质变。

  • 方案A:Hypervisor强隔离(如Jailhouse、Xen、QNX Hypervisor)

    在硬件之上运行一个轻量级的虚拟机监视器。它将物理核心、内存区域、外设静态分区,分配给不同的虚拟机。一个虚拟机里跑的Linux即使崩溃了,也影响不到旁边虚拟机里跑的实时操作系统(RTOS)。Jailhouse这种静态分区Hypervisor,更是把“隔离”做到了极致,非常适合安全场景。

  • 方案B:Mixed-Criticality架构

    在一个芯片上,同时运行多个系统:

    • ASIL-D (最高安全等级):运行在独立的RTOS分区上,执行制动、转向。

    • ASIL-B (中等安全等级):运行在Linux RT(实时Linux)分区,执行部分规划控制。

    • QM (无安全等级):运行在普通Linux分区,执行信息娱乐、OTA升级。

这样,不同安全等级的任务,从一开始就生活在不同的“物理世界”里,从根本上消除了干扰的可能。

本质提升

  • 从“尽量不干扰” → “物理隔离”

  • 满足ISO 26262 FFI要求

03

关键进阶技术

3.1 时间触发调度(Time-Triggered)

区别于传统事件触发/优先级调度“资源竞争模式”,时间触发调度采用全局时序预规划机制,任务执行时刻、时长、通信周期均提前固化,无需抢占资源即可保障时序确定性,彻底规避优先级反转、调度抖动等问题。

不同于优先级调度:任务执行时间是“提前规划”的,而不是“竞争得来的”

核心技术落地:

  • TTA(时间触发架构):构建全局统一时钟,实现任务、中断、通信的全链路时序同步

  • TDMA时分多址调度:按固定时隙分配资源,杜绝多任务并发争抢带宽

  • TSN(802.1Qbv):车载时间敏感网络,将时间触发机制延伸至车内通信,实现ECU间端到端确定性传输

3.2 WCET最坏执行时间分析

自动驾驶必须回答一个问题:最坏情况下,这个任务多久能完成?

工程化分析方法:

  • 静态时序分析:依托aiT等专业工具,无需实车运行即可完成代码级时序建模

  • 全路径覆盖分析:遍历任务所有执行分支,锁定最长执行路径

  • 缓存行为精准建模:结合Cache隔离策略,消除缓存抖动对执行时间的干扰

典型应用场景:制动控制、转向控制等硬实时任务,严格限定<1ms响应阈值,无任何超时容错空间。

3.3 基于eBPF的可观测性诊断:从经验调优到数据驱动排障

传统调度问题排查依赖“经验猜测”,偶发抖动、延迟超标难以复现定位;而eBPF无侵入式实时诊断,可直接抓取内核级调度数据,实现问题根因的精准定位,大幅提升调试效率。

核心诊断能力:

  • 实时追踪任务调度延迟、上下文切换耗时,定位抢占瓶颈

  • 精准分析IRQ中断干扰,识别打断关键任务的外设中断源

  • 完整捕获任务抢占链,还原延迟发生的全流程

工程价值:实现调度优化从“盲调”到“数据驱动”,快速定位偶发问题,缩短调试周期。

3.4 NUMA与拓扑感知调度

高阶自动驾驶采用多核异构NUMA架构SoC,不同CPU Cluster、内存节点存在物理访问延迟差异,若忽略硬件拓扑盲目调度,会大幅增加访存延迟、引发性能抖动。

核心优化策略:

  • CPU-内存就近绑定:将任务绑定至同NUMA节点的CPU与内存,降低跨节点访存延迟

  • 拓扑感知智能调度:感知SoC Cluster、Cache层级、总线拓扑,动态分配最优执行资源

适配高端车规SoC的多核架构,最大化硬件性能,同时保障实时性。

3.5 AI智能调度:下一代确定性调度的演进方向

传统调度依赖固定规则,难以适配自动驾驶复杂多变的场景负载;AI调度实现从规则驱动到数据驱动的跃迁,兼顾确定性与资源利用率,适配高阶自动驾驶的动态需求。

核心能力布局:

  • 场景化负载预测:基于路况、感知负载预判算力需求,提前分配资源

  • 动态任务迁移:在不破坏确定性的前提下,平衡多核负载,提升硬件利用率

  • 自适应优先级调控:根据场景风险等级,动态调整任务优先级,兼顾安全与效率

04

工程落地:

从理论到实践的“四步法”

理论讲完,我们来点实在的。如何在自己的项目里一步步落地这套体系?

Step 1:任务分级与关键性分析

别急着动手写代码,先坐下来,把车上所有任务列个清单,贴上标签:

  • 硬实时 (几毫秒级):制动控制、转向控制、气囊触发。失败意味着伤亡。

  • 软实时 (几十毫秒级):感知融合、轨迹规划、V2V通信。失败意味着功能降级或体验差。

  • 非实时 (秒级以上):UI、日志存储、远程诊断、仪表盘显示。失败可以容忍。

Step 2:核心分区与资源规划

根据任务分级,规划你的多核SoC。

  • 保留核心:为硬实时任务预留专用核心。可以考虑使用 isolcpus 或 cpuset 将这些核心从Linux通用调度器中隔离出来。

  • 分区规划:参考上面“中断层”的分区策略,为不同类型任务规划核心归属。

Step 3:逐层资源隔离与配置

按照我们讲的五层模型,一层一层往上“加固”:

1. CPU:用 sched_setaffinity 绑核。

2. Cache:调研你的SoC是否支持MPAM或能否实现缓存着色。与BSP或芯片原厂沟通,寻求支持。

3. 内存:使用 cgroup 的 memory 控制器限制非关键任务的内存使用量;使用 resctrl 限制其内存带宽(如果硬件支持)。

4. 中断:将关键核心的中断亲和性设置为0(不处理中断),将非核心中断绑定到指定核心,并为关键的中断处理线程设置高实时优先级。

5. 系统:评估是否需要引入Hypervisor。如果安全要求极高,或者需要在单芯片上混合多个操作系统,这是必选项。

Step 4:验证与观测——用数据说话

所有配置完成后,必须验证效果。不能靠“感觉良好”,要靠数据。

  • latency tracing:使用 ftrace、perf 或更强大的 eBPF 工具,实时追踪关键任务的调度延迟、抢占次数、运行时间分布。eBPF可以让你像“上帝视角”一样,看到任务为何被延迟,是被谁抢占了,还是等内存等了多久。

  • 压力测试:在系统满负载(CPU、内存、IO全速运行)的情况下,反复测试关键任务的响应时间,观察其最坏情况执行时间(WCET)验证是否仍在容忍范围内。

  • 故障注入:故意让非关键任务崩溃、让内存带宽爆满,看是否真的如设计一样,不影响关键任务。

05

典型问题复盘

(那些年我们踩过的坑)

问题1:我已经绑核了,为什么关键任务还是抖得厉害?

可能原因:Cache污染 / 内存争用

诊断:查Cache!大概率是共享缓存被其他核心的任务污染了。用性能计数器(perf stat -e cache-misses)看看你的关键任务绑核后的缓存缺失率是不是异常高。如果是,就需要引入缓存隔离技术。

问题2:CPU利用率不到一半,系统却偶发卡顿?

可能原因:Memory bottleneck

诊断:查内存带宽!用 perf 或者芯片提供的性能监测单元(PMU)工具,看看内存控制器带宽是否被某些非关键任务(如大量数据拷贝的AI任务)长时间占满。解决方案就是上内存带宽限制。

问题3:为什么系统跑着跑着,偶尔会出现一次巨大的延迟尖峰?

可能原因:IRQ打断

诊断:查中断!很可能是一次突发的网络风暴或CAN总线事件,触发了大量中断,打断了一切。检查 /proc/interrupts,看看哪个中断在关键核心上计数暴增。解决方案是把中断都赶走。

问题4:我感觉系统不稳定,但就是复现不了,也定位不到?

可能原因:缺乏隔离 (需要Hypervisor)

诊断:这是最棘手的情况。问题可能源于多方面的偶发耦合。如果预算和时间允许,可能需要考虑架构升级。从“尽力而为”的Linux调度,迁移到像 Jailhouse 这样的静态分区Hypervisor,通过硬件级别的强制隔离,从根本上斩断所有不确定性的来源。

06

未来已来:从调度优化到

“确定性操作系统”

展望未来,自动驾驶正在发生一个根本性转变:对确定性的追求不会止步。

1. 从CPU调度 → 全栈确定性控制

控制范围必然会从CPU,扩展到Cache、内存、NoC、中断,乃至车内的网络(如时间敏感网络TSN)。未来的架构师,需要具备全栈资源视角

2. 从静态策略 → 动态智能调度

静态的绑核分区是基础,但可能不是最高效的。未来,我们可能会看到 AI辅助的调度器。它能实时预测任务负载和资源争抢情况,动态调整任务优先级、甚至进行预测性的任务迁移和资源再分配,实现“自动驾驶”的调度系统。

3. 从单ECU → 整车时间系统

自动驾驶不是一个ECU的战斗。基于 TSN 的整车级时间同步将成为标配。所有ECU都同步到一个全局时间,任务按事先规划好的“时间触发”时刻表精确执行,整个车辆变成一个像交响乐团一样高度协同的确定性系统。

07

总 结

自动驾驶系统的终极竞争,表面上看是算力的竞争,深一层看是算法的竞争,但归根结底,是“确定性能力”的竞争——即在任何情况下,都能在确切的时间内,给出确切的结果。

自动驾驶 ECU 确定性架构金字塔 + 干扰路径图

核绑定和优先级调度,是我们对抗不确定性的第一件武器,也是最重要的一件,但它绝不是唯一的一件。真正决定系统上限的是:

  • Cache是否可控

  • 内存是否可控

  • 中断是否可控

  • 时间是否可预测

当你下次再面对那个“偶发的2毫秒延迟”时,希望你能想起这座五层金字塔,从一个更全面、更系统的高度去审视问题。

从“调度优化”到“系统级隔离”,再到“软件定义实时系统”,这条路没有尽头。但每向前一步,我们离那个真正安全、可靠、可控的自动驾驶未来,就更近了一步。

参考资料:

1. ISO 26262:2018, Road vehicles — Functional safety

2. Linux内核官方文档: Real-Time Linux (kernel.org)

3. Intel Corporation, Intel® Cache Allocation Technology, 2020

4. ARM Limited, *ARM MPAM for Armv8.4-A*, 2020

5. Siemens, Jailhouse: Linux-based partitioning hypervisor, https://github.com/siemens/jailhouse

6. IEEE 802.1Qbv, Enhancements for Scheduled Traffic

7. Brendan Gregg, BPF Performance Tools, Addison-Wesley, 2019

8. https://mp.weixin.qq.com/s/s9w--YRkyAvQi4LQcenq4g

作者微信:

/ END /

最新文章

随机文章

基本 文件 流程 错误 SQL 调试
  1. 请求信息 : 2026-05-08 08:03:43 HTTP/2.0 GET : https://e.mffb.com.cn/a/486820.html
  2. 运行时间 : 0.135893s [ 吞吐率:7.36req/s ] 内存消耗:4,370.97kb 文件加载:140
  3. 缓存信息 : 0 reads,0 writes
  4. 会话信息 : SESSION_ID=bfa889aab5a0869db37094ee6d1198c8
  1. /yingpanguazai/ssd/ssd1/www/e.mffb.com.cn/public/index.php ( 0.79 KB )
  2. /yingpanguazai/ssd/ssd1/www/e.mffb.com.cn/vendor/autoload.php ( 0.17 KB )
  3. /yingpanguazai/ssd/ssd1/www/e.mffb.com.cn/vendor/composer/autoload_real.php ( 2.49 KB )
  4. /yingpanguazai/ssd/ssd1/www/e.mffb.com.cn/vendor/composer/platform_check.php ( 0.90 KB )
  5. /yingpanguazai/ssd/ssd1/www/e.mffb.com.cn/vendor/composer/ClassLoader.php ( 14.03 KB )
  6. /yingpanguazai/ssd/ssd1/www/e.mffb.com.cn/vendor/composer/autoload_static.php ( 4.90 KB )
  7. /yingpanguazai/ssd/ssd1/www/e.mffb.com.cn/vendor/topthink/think-helper/src/helper.php ( 8.34 KB )
  8. /yingpanguazai/ssd/ssd1/www/e.mffb.com.cn/vendor/topthink/think-validate/src/helper.php ( 2.19 KB )
  9. /yingpanguazai/ssd/ssd1/www/e.mffb.com.cn/vendor/topthink/think-orm/src/helper.php ( 1.47 KB )
  10. /yingpanguazai/ssd/ssd1/www/e.mffb.com.cn/vendor/topthink/think-orm/stubs/load_stubs.php ( 0.16 KB )
  11. /yingpanguazai/ssd/ssd1/www/e.mffb.com.cn/vendor/topthink/framework/src/think/Exception.php ( 1.69 KB )
  12. /yingpanguazai/ssd/ssd1/www/e.mffb.com.cn/vendor/topthink/think-container/src/Facade.php ( 2.71 KB )
  13. /yingpanguazai/ssd/ssd1/www/e.mffb.com.cn/vendor/symfony/deprecation-contracts/function.php ( 0.99 KB )
  14. /yingpanguazai/ssd/ssd1/www/e.mffb.com.cn/vendor/symfony/polyfill-mbstring/bootstrap.php ( 8.26 KB )
  15. /yingpanguazai/ssd/ssd1/www/e.mffb.com.cn/vendor/symfony/polyfill-mbstring/bootstrap80.php ( 9.78 KB )
  16. /yingpanguazai/ssd/ssd1/www/e.mffb.com.cn/vendor/symfony/var-dumper/Resources/functions/dump.php ( 1.49 KB )
  17. /yingpanguazai/ssd/ssd1/www/e.mffb.com.cn/vendor/topthink/think-dumper/src/helper.php ( 0.18 KB )
  18. /yingpanguazai/ssd/ssd1/www/e.mffb.com.cn/vendor/symfony/var-dumper/VarDumper.php ( 4.30 KB )
  19. /yingpanguazai/ssd/ssd1/www/e.mffb.com.cn/vendor/topthink/framework/src/think/App.php ( 15.30 KB )
  20. /yingpanguazai/ssd/ssd1/www/e.mffb.com.cn/vendor/topthink/think-container/src/Container.php ( 15.76 KB )
  21. /yingpanguazai/ssd/ssd1/www/e.mffb.com.cn/vendor/psr/container/src/ContainerInterface.php ( 1.02 KB )
  22. /yingpanguazai/ssd/ssd1/www/e.mffb.com.cn/app/provider.php ( 0.19 KB )
  23. /yingpanguazai/ssd/ssd1/www/e.mffb.com.cn/vendor/topthink/framework/src/think/Http.php ( 6.04 KB )
  24. /yingpanguazai/ssd/ssd1/www/e.mffb.com.cn/vendor/topthink/think-helper/src/helper/Str.php ( 7.29 KB )
  25. /yingpanguazai/ssd/ssd1/www/e.mffb.com.cn/vendor/topthink/framework/src/think/Env.php ( 4.68 KB )
  26. /yingpanguazai/ssd/ssd1/www/e.mffb.com.cn/app/common.php ( 0.03 KB )
  27. /yingpanguazai/ssd/ssd1/www/e.mffb.com.cn/vendor/topthink/framework/src/helper.php ( 18.78 KB )
  28. /yingpanguazai/ssd/ssd1/www/e.mffb.com.cn/vendor/topthink/framework/src/think/Config.php ( 5.54 KB )
  29. /yingpanguazai/ssd/ssd1/www/e.mffb.com.cn/config/app.php ( 0.95 KB )
  30. /yingpanguazai/ssd/ssd1/www/e.mffb.com.cn/config/cache.php ( 0.78 KB )
  31. /yingpanguazai/ssd/ssd1/www/e.mffb.com.cn/config/console.php ( 0.23 KB )
  32. /yingpanguazai/ssd/ssd1/www/e.mffb.com.cn/config/cookie.php ( 0.56 KB )
  33. /yingpanguazai/ssd/ssd1/www/e.mffb.com.cn/config/database.php ( 2.48 KB )
  34. /yingpanguazai/ssd/ssd1/www/e.mffb.com.cn/vendor/topthink/framework/src/think/facade/Env.php ( 1.67 KB )
  35. /yingpanguazai/ssd/ssd1/www/e.mffb.com.cn/config/filesystem.php ( 0.61 KB )
  36. /yingpanguazai/ssd/ssd1/www/e.mffb.com.cn/config/lang.php ( 0.91 KB )
  37. /yingpanguazai/ssd/ssd1/www/e.mffb.com.cn/config/log.php ( 1.35 KB )
  38. /yingpanguazai/ssd/ssd1/www/e.mffb.com.cn/config/middleware.php ( 0.19 KB )
  39. /yingpanguazai/ssd/ssd1/www/e.mffb.com.cn/config/route.php ( 1.89 KB )
  40. /yingpanguazai/ssd/ssd1/www/e.mffb.com.cn/config/session.php ( 0.57 KB )
  41. /yingpanguazai/ssd/ssd1/www/e.mffb.com.cn/config/trace.php ( 0.34 KB )
  42. /yingpanguazai/ssd/ssd1/www/e.mffb.com.cn/config/view.php ( 0.82 KB )
  43. /yingpanguazai/ssd/ssd1/www/e.mffb.com.cn/app/event.php ( 0.25 KB )
  44. /yingpanguazai/ssd/ssd1/www/e.mffb.com.cn/vendor/topthink/framework/src/think/Event.php ( 7.67 KB )
  45. /yingpanguazai/ssd/ssd1/www/e.mffb.com.cn/app/service.php ( 0.13 KB )
  46. /yingpanguazai/ssd/ssd1/www/e.mffb.com.cn/app/AppService.php ( 0.26 KB )
  47. /yingpanguazai/ssd/ssd1/www/e.mffb.com.cn/vendor/topthink/framework/src/think/Service.php ( 1.64 KB )
  48. /yingpanguazai/ssd/ssd1/www/e.mffb.com.cn/vendor/topthink/framework/src/think/Lang.php ( 7.35 KB )
  49. /yingpanguazai/ssd/ssd1/www/e.mffb.com.cn/vendor/topthink/framework/src/lang/zh-cn.php ( 13.70 KB )
  50. /yingpanguazai/ssd/ssd1/www/e.mffb.com.cn/vendor/topthink/framework/src/think/initializer/Error.php ( 3.31 KB )
  51. /yingpanguazai/ssd/ssd1/www/e.mffb.com.cn/vendor/topthink/framework/src/think/initializer/RegisterService.php ( 1.33 KB )
  52. /yingpanguazai/ssd/ssd1/www/e.mffb.com.cn/vendor/services.php ( 0.14 KB )
  53. /yingpanguazai/ssd/ssd1/www/e.mffb.com.cn/vendor/topthink/framework/src/think/service/PaginatorService.php ( 1.52 KB )
  54. /yingpanguazai/ssd/ssd1/www/e.mffb.com.cn/vendor/topthink/framework/src/think/service/ValidateService.php ( 0.99 KB )
  55. /yingpanguazai/ssd/ssd1/www/e.mffb.com.cn/vendor/topthink/framework/src/think/service/ModelService.php ( 2.04 KB )
  56. /yingpanguazai/ssd/ssd1/www/e.mffb.com.cn/vendor/topthink/think-trace/src/Service.php ( 0.77 KB )
  57. /yingpanguazai/ssd/ssd1/www/e.mffb.com.cn/vendor/topthink/framework/src/think/Middleware.php ( 6.72 KB )
  58. /yingpanguazai/ssd/ssd1/www/e.mffb.com.cn/vendor/topthink/framework/src/think/initializer/BootService.php ( 0.77 KB )
  59. /yingpanguazai/ssd/ssd1/www/e.mffb.com.cn/vendor/topthink/think-orm/src/Paginator.php ( 11.86 KB )
  60. /yingpanguazai/ssd/ssd1/www/e.mffb.com.cn/vendor/topthink/think-validate/src/Validate.php ( 63.20 KB )
  61. /yingpanguazai/ssd/ssd1/www/e.mffb.com.cn/vendor/topthink/think-orm/src/Model.php ( 23.55 KB )
  62. /yingpanguazai/ssd/ssd1/www/e.mffb.com.cn/vendor/topthink/think-orm/src/model/concern/Attribute.php ( 21.05 KB )
  63. /yingpanguazai/ssd/ssd1/www/e.mffb.com.cn/vendor/topthink/think-orm/src/model/concern/AutoWriteData.php ( 4.21 KB )
  64. /yingpanguazai/ssd/ssd1/www/e.mffb.com.cn/vendor/topthink/think-orm/src/model/concern/Conversion.php ( 6.44 KB )
  65. /yingpanguazai/ssd/ssd1/www/e.mffb.com.cn/vendor/topthink/think-orm/src/model/concern/DbConnect.php ( 5.16 KB )
  66. /yingpanguazai/ssd/ssd1/www/e.mffb.com.cn/vendor/topthink/think-orm/src/model/concern/ModelEvent.php ( 2.33 KB )
  67. /yingpanguazai/ssd/ssd1/www/e.mffb.com.cn/vendor/topthink/think-orm/src/model/concern/RelationShip.php ( 28.29 KB )
  68. /yingpanguazai/ssd/ssd1/www/e.mffb.com.cn/vendor/topthink/think-helper/src/contract/Arrayable.php ( 0.09 KB )
  69. /yingpanguazai/ssd/ssd1/www/e.mffb.com.cn/vendor/topthink/think-helper/src/contract/Jsonable.php ( 0.13 KB )
  70. /yingpanguazai/ssd/ssd1/www/e.mffb.com.cn/vendor/topthink/think-orm/src/model/contract/Modelable.php ( 0.09 KB )
  71. /yingpanguazai/ssd/ssd1/www/e.mffb.com.cn/vendor/topthink/framework/src/think/Db.php ( 2.88 KB )
  72. /yingpanguazai/ssd/ssd1/www/e.mffb.com.cn/vendor/topthink/think-orm/src/DbManager.php ( 8.52 KB )
  73. /yingpanguazai/ssd/ssd1/www/e.mffb.com.cn/vendor/topthink/framework/src/think/Log.php ( 6.28 KB )
  74. /yingpanguazai/ssd/ssd1/www/e.mffb.com.cn/vendor/topthink/framework/src/think/Manager.php ( 3.92 KB )
  75. /yingpanguazai/ssd/ssd1/www/e.mffb.com.cn/vendor/psr/log/src/LoggerTrait.php ( 2.69 KB )
  76. /yingpanguazai/ssd/ssd1/www/e.mffb.com.cn/vendor/psr/log/src/LoggerInterface.php ( 2.71 KB )
  77. /yingpanguazai/ssd/ssd1/www/e.mffb.com.cn/vendor/topthink/framework/src/think/Cache.php ( 4.92 KB )
  78. /yingpanguazai/ssd/ssd1/www/e.mffb.com.cn/vendor/psr/simple-cache/src/CacheInterface.php ( 4.71 KB )
  79. /yingpanguazai/ssd/ssd1/www/e.mffb.com.cn/vendor/topthink/think-helper/src/helper/Arr.php ( 16.63 KB )
  80. /yingpanguazai/ssd/ssd1/www/e.mffb.com.cn/vendor/topthink/framework/src/think/cache/driver/File.php ( 7.84 KB )
  81. /yingpanguazai/ssd/ssd1/www/e.mffb.com.cn/vendor/topthink/framework/src/think/cache/Driver.php ( 9.03 KB )
  82. /yingpanguazai/ssd/ssd1/www/e.mffb.com.cn/vendor/topthink/framework/src/think/contract/CacheHandlerInterface.php ( 1.99 KB )
  83. /yingpanguazai/ssd/ssd1/www/e.mffb.com.cn/app/Request.php ( 0.09 KB )
  84. /yingpanguazai/ssd/ssd1/www/e.mffb.com.cn/vendor/topthink/framework/src/think/Request.php ( 55.78 KB )
  85. /yingpanguazai/ssd/ssd1/www/e.mffb.com.cn/app/middleware.php ( 0.25 KB )
  86. /yingpanguazai/ssd/ssd1/www/e.mffb.com.cn/vendor/topthink/framework/src/think/Pipeline.php ( 2.61 KB )
  87. /yingpanguazai/ssd/ssd1/www/e.mffb.com.cn/vendor/topthink/think-trace/src/TraceDebug.php ( 3.40 KB )
  88. /yingpanguazai/ssd/ssd1/www/e.mffb.com.cn/vendor/topthink/framework/src/think/middleware/SessionInit.php ( 1.94 KB )
  89. /yingpanguazai/ssd/ssd1/www/e.mffb.com.cn/vendor/topthink/framework/src/think/Session.php ( 1.80 KB )
  90. /yingpanguazai/ssd/ssd1/www/e.mffb.com.cn/vendor/topthink/framework/src/think/session/driver/File.php ( 6.27 KB )
  91. /yingpanguazai/ssd/ssd1/www/e.mffb.com.cn/vendor/topthink/framework/src/think/contract/SessionHandlerInterface.php ( 0.87 KB )
  92. /yingpanguazai/ssd/ssd1/www/e.mffb.com.cn/vendor/topthink/framework/src/think/session/Store.php ( 7.12 KB )
  93. /yingpanguazai/ssd/ssd1/www/e.mffb.com.cn/vendor/topthink/framework/src/think/Route.php ( 23.73 KB )
  94. /yingpanguazai/ssd/ssd1/www/e.mffb.com.cn/vendor/topthink/framework/src/think/route/RuleName.php ( 5.75 KB )
  95. /yingpanguazai/ssd/ssd1/www/e.mffb.com.cn/vendor/topthink/framework/src/think/route/Domain.php ( 2.53 KB )
  96. /yingpanguazai/ssd/ssd1/www/e.mffb.com.cn/vendor/topthink/framework/src/think/route/RuleGroup.php ( 22.43 KB )
  97. /yingpanguazai/ssd/ssd1/www/e.mffb.com.cn/vendor/topthink/framework/src/think/route/Rule.php ( 26.95 KB )
  98. /yingpanguazai/ssd/ssd1/www/e.mffb.com.cn/vendor/topthink/framework/src/think/route/RuleItem.php ( 9.78 KB )
  99. /yingpanguazai/ssd/ssd1/www/e.mffb.com.cn/route/app.php ( 1.72 KB )
  100. /yingpanguazai/ssd/ssd1/www/e.mffb.com.cn/vendor/topthink/framework/src/think/facade/Route.php ( 4.70 KB )
  101. /yingpanguazai/ssd/ssd1/www/e.mffb.com.cn/vendor/topthink/framework/src/think/route/dispatch/Controller.php ( 4.74 KB )
  102. /yingpanguazai/ssd/ssd1/www/e.mffb.com.cn/vendor/topthink/framework/src/think/route/Dispatch.php ( 10.44 KB )
  103. /yingpanguazai/ssd/ssd1/www/e.mffb.com.cn/app/controller/Index.php ( 4.81 KB )
  104. /yingpanguazai/ssd/ssd1/www/e.mffb.com.cn/app/BaseController.php ( 2.05 KB )
  105. /yingpanguazai/ssd/ssd1/www/e.mffb.com.cn/vendor/topthink/think-orm/src/facade/Db.php ( 0.93 KB )
  106. /yingpanguazai/ssd/ssd1/www/e.mffb.com.cn/vendor/topthink/think-orm/src/db/connector/Mysql.php ( 5.44 KB )
  107. /yingpanguazai/ssd/ssd1/www/e.mffb.com.cn/vendor/topthink/think-orm/src/db/PDOConnection.php ( 52.47 KB )
  108. /yingpanguazai/ssd/ssd1/www/e.mffb.com.cn/vendor/topthink/think-orm/src/db/Connection.php ( 8.39 KB )
  109. /yingpanguazai/ssd/ssd1/www/e.mffb.com.cn/vendor/topthink/think-orm/src/db/ConnectionInterface.php ( 4.57 KB )
  110. /yingpanguazai/ssd/ssd1/www/e.mffb.com.cn/vendor/topthink/think-orm/src/db/builder/Mysql.php ( 16.58 KB )
  111. /yingpanguazai/ssd/ssd1/www/e.mffb.com.cn/vendor/topthink/think-orm/src/db/Builder.php ( 24.06 KB )
  112. /yingpanguazai/ssd/ssd1/www/e.mffb.com.cn/vendor/topthink/think-orm/src/db/BaseBuilder.php ( 27.50 KB )
  113. /yingpanguazai/ssd/ssd1/www/e.mffb.com.cn/vendor/topthink/think-orm/src/db/Query.php ( 15.71 KB )
  114. /yingpanguazai/ssd/ssd1/www/e.mffb.com.cn/vendor/topthink/think-orm/src/db/BaseQuery.php ( 45.13 KB )
  115. /yingpanguazai/ssd/ssd1/www/e.mffb.com.cn/vendor/topthink/think-orm/src/db/concern/TimeFieldQuery.php ( 7.43 KB )
  116. /yingpanguazai/ssd/ssd1/www/e.mffb.com.cn/vendor/topthink/think-orm/src/db/concern/AggregateQuery.php ( 3.26 KB )
  117. /yingpanguazai/ssd/ssd1/www/e.mffb.com.cn/vendor/topthink/think-orm/src/db/concern/ModelRelationQuery.php ( 20.07 KB )
  118. /yingpanguazai/ssd/ssd1/www/e.mffb.com.cn/vendor/topthink/think-orm/src/db/concern/ParamsBind.php ( 3.66 KB )
  119. /yingpanguazai/ssd/ssd1/www/e.mffb.com.cn/vendor/topthink/think-orm/src/db/concern/ResultOperation.php ( 7.01 KB )
  120. /yingpanguazai/ssd/ssd1/www/e.mffb.com.cn/vendor/topthink/think-orm/src/db/concern/WhereQuery.php ( 19.37 KB )
  121. /yingpanguazai/ssd/ssd1/www/e.mffb.com.cn/vendor/topthink/think-orm/src/db/concern/JoinAndViewQuery.php ( 7.11 KB )
  122. /yingpanguazai/ssd/ssd1/www/e.mffb.com.cn/vendor/topthink/think-orm/src/db/concern/TableFieldInfo.php ( 2.63 KB )
  123. /yingpanguazai/ssd/ssd1/www/e.mffb.com.cn/vendor/topthink/think-orm/src/db/concern/Transaction.php ( 2.77 KB )
  124. /yingpanguazai/ssd/ssd1/www/e.mffb.com.cn/vendor/topthink/framework/src/think/log/driver/File.php ( 5.96 KB )
  125. /yingpanguazai/ssd/ssd1/www/e.mffb.com.cn/vendor/topthink/framework/src/think/contract/LogHandlerInterface.php ( 0.86 KB )
  126. /yingpanguazai/ssd/ssd1/www/e.mffb.com.cn/vendor/topthink/framework/src/think/log/Channel.php ( 3.89 KB )
  127. /yingpanguazai/ssd/ssd1/www/e.mffb.com.cn/vendor/topthink/framework/src/think/event/LogRecord.php ( 1.02 KB )
  128. /yingpanguazai/ssd/ssd1/www/e.mffb.com.cn/vendor/topthink/think-helper/src/Collection.php ( 16.47 KB )
  129. /yingpanguazai/ssd/ssd1/www/e.mffb.com.cn/vendor/topthink/framework/src/think/facade/View.php ( 1.70 KB )
  130. /yingpanguazai/ssd/ssd1/www/e.mffb.com.cn/vendor/topthink/framework/src/think/View.php ( 4.39 KB )
  131. /yingpanguazai/ssd/ssd1/www/e.mffb.com.cn/vendor/topthink/framework/src/think/Response.php ( 8.81 KB )
  132. /yingpanguazai/ssd/ssd1/www/e.mffb.com.cn/vendor/topthink/framework/src/think/response/View.php ( 3.29 KB )
  133. /yingpanguazai/ssd/ssd1/www/e.mffb.com.cn/vendor/topthink/framework/src/think/Cookie.php ( 6.06 KB )
  134. /yingpanguazai/ssd/ssd1/www/e.mffb.com.cn/vendor/topthink/think-view/src/Think.php ( 8.38 KB )
  135. /yingpanguazai/ssd/ssd1/www/e.mffb.com.cn/vendor/topthink/framework/src/think/contract/TemplateHandlerInterface.php ( 1.60 KB )
  136. /yingpanguazai/ssd/ssd1/www/e.mffb.com.cn/vendor/topthink/think-template/src/Template.php ( 46.61 KB )
  137. /yingpanguazai/ssd/ssd1/www/e.mffb.com.cn/vendor/topthink/think-template/src/template/driver/File.php ( 2.41 KB )
  138. /yingpanguazai/ssd/ssd1/www/e.mffb.com.cn/vendor/topthink/think-template/src/template/contract/DriverInterface.php ( 0.86 KB )
  139. /yingpanguazai/ssd/ssd1/www/e.mffb.com.cn/runtime/temp/600e51726691ba7063b44bb89d9aaaff.php ( 11.98 KB )
  140. /yingpanguazai/ssd/ssd1/www/e.mffb.com.cn/vendor/topthink/think-trace/src/Html.php ( 4.42 KB )
  1. CONNECT:[ UseTime:0.000469s ] mysql:host=127.0.0.1;port=3306;dbname=e_mffb;charset=utf8mb4
  2. SHOW FULL COLUMNS FROM `fenlei` [ RunTime:0.000542s ]
  3. SELECT * FROM `fenlei` WHERE `fid` = 0 [ RunTime:0.000914s ]
  4. SELECT * FROM `fenlei` WHERE `fid` = 63 [ RunTime:0.002812s ]
  5. SHOW FULL COLUMNS FROM `set` [ RunTime:0.000536s ]
  6. SELECT * FROM `set` [ RunTime:0.001305s ]
  7. SHOW FULL COLUMNS FROM `article` [ RunTime:0.000608s ]
  8. SELECT * FROM `article` WHERE `id` = 486820 LIMIT 1 [ RunTime:0.013478s ]
  9. UPDATE `article` SET `lasttime` = 1778198623 WHERE `id` = 486820 [ RunTime:0.001382s ]
  10. SELECT * FROM `fenlei` WHERE `id` = 67 LIMIT 1 [ RunTime:0.000255s ]
  11. SELECT * FROM `article` WHERE `id` < 486820 ORDER BY `id` DESC LIMIT 1 [ RunTime:0.002442s ]
  12. SELECT * FROM `article` WHERE `id` > 486820 ORDER BY `id` ASC LIMIT 1 [ RunTime:0.001940s ]
  13. SELECT * FROM `article` WHERE `id` < 486820 ORDER BY `id` DESC LIMIT 10 [ RunTime:0.012075s ]
  14. SELECT * FROM `article` WHERE `id` < 486820 ORDER BY `id` DESC LIMIT 10,10 [ RunTime:0.012261s ]
  15. SELECT * FROM `article` WHERE `id` < 486820 ORDER BY `id` DESC LIMIT 20,10 [ RunTime:0.008820s ]
0.137494s