当前位置:首页>Linux>论文解读|Keystone + Linux PREEMPT_RT:RISC-V 上能跑“实时安全飞地”吗?

论文解读|Keystone + Linux PREEMPT_RT:RISC-V 上能跑“实时安全飞地”吗?

  • 2026-06-30 16:02:02
论文解读|Keystone + Linux PREEMPT_RT:RISC-V 上能跑“实时安全飞地”吗?
论文:Keystone with Linux PREEMPT_RT: Real-Time Enclaves on RISC-V?
关键词:RISC-V、Keystone、TEE、PREEMPT_RT、实时 Linux、混合关键系统、调度延迟
这篇论文问了一个很实际的问题:
TEE 能保护机密数据,但它会不会破坏实时任务的时间确定性?
更具体一点:Keystone 是 RISC-V 上一个开源 TEE 框架,Linux PREEMPT_RT 是让 Linux 更“实时”的补丁集合。那么,把 Keystone 跑在 PREEMPT_RT Linux 上,能不能既获得安全隔离,又获得可预测的实时响应?
论文最终结论可以先剧透:
如果实时任务跑在普通 Linux 侧,Keystone enclave 只是后台运行,那么影响不明显;但如果实时任务本身要放进 enclave,尤其多个 enclave 并发启动,Keystone 会引入明显且不稳定的启动延迟。论文摘要也指出,Keystone 的 Secure Monitor 和 enclave 不会显著干扰高优先级非安全进程,但多个 enclave 并发执行时会带来 substantial latencies,限制其在需要“机密性 + 可预测时序”的场景中的适用性。

一、先把问题讲清楚:安全和实时为什么会打架?

TEE,Trusted Execution Environment,可以理解为处理器提供的“安全房间”。应用把敏感代码和数据放进 enclave,外面的操作系统即使权限很高,也不能随便偷看或篡改。
但实时系统关心的是另一件事:
一个任务该什么时候运行,就必须尽量准时运行。
比如电网监控、机器人控制、车载系统、工业控制,它们不只要求数据安全,还要求任务响应时间稳定。如果一个任务本来应该 100 微秒后被唤醒,结果因为系统某处不可抢占、锁竞争、上下文切换等原因拖到了几毫秒甚至几百毫秒,那实时性就被破坏了。
论文指出,TEE 的安全机制经常会带来额外的非确定性延迟,例如 timer、interrupt、enclave exit、上下文切换等,而这些问题在传统 TEE 研究里经常被认为是“可用性问题”或“不在范围内”。
所以这篇论文不是在问“Keystone 安不安全”,而是在问:

Keystone 在 RISC-V 上安全隔离时,会不会影响 Linux PREEMPT_RT 的实时调度表现?

二、背景知识:Keystone 和 PREEMPT_RT 分别是什么?

1. Keystone:RISC-V 上的开源 TEE

Keystone 是一个面向 RISC-V 的开源 TEE 框架。它的特点是尽量只使用标准 RISC-V 特性,不依赖定制安全扩展,因此更容易在真实 RISC-V 硬件上部署。论文介绍,Keystone 主要依赖 RISC-V 的特权级和 PMP,Physical Memory Protection,来隔离 enclave 内存。

2. PREEMPT_RT:让 Linux 更适合实时任务

普通 Linux 不是硬实时操作系统。Linux 内核里有些路径不能随时被抢占,因此高优先级任务可能会被延迟唤醒。
PREEMPT_RT 补丁的目标是减少 Linux 内核中不可抢占的区域,让高优先级任务更容易及时获得 CPU。论文提到,PREEMPT_RT 已经在 6.12 版本开始合入 Linux mainline,这说明它已经相当成熟。
但注意:
PREEMPT_RT 让 Linux 更实时,不等于让 Linux 变成严格硬实时 RTOS。
论文也明确指出,由于 Linux 内核规模很大,即使有 PREEMPT_RT,也很难完全证明执行时间有严格上界,因此它更适合软实时或部分 firm real-time 场景。

三、图 1:Keystone 的软件特权层级

论文第 3 页的Figure 1展示了 Keystone-enabled 平台的软件特权层级。
RISC-V 中常见的三个特权级是:
M-mode,Machine mode:最高权限,一般跑 OpenSBI 和 Keystone Secure Monitor;
S-mode,Supervisor mode:操作系统内核运行的位置,比如 Linux;
U-mode,User mode:普通用户程序运行的位置。
Keystone 的特殊之处在于,系统里同时存在“普通世界”和“安全 enclave 世界”:
普通 Linux 侧:
M-mode: OpenSBI + Keystone Secure Monitor
S-mode: Host Linux kernel
U-mode: 普通 Linux 用户进程
Enclave 侧:
M-mode: Keystone Secure Monitor
S-mode: Enclave runtime
U-mode: Secure app
论文强调,Keystone 的 Secure Monitor 是核心组件,它是 OpenSBI 的扩展,运行在 M-mode,负责 PMP 配置、enclave 上下文切换、完整性检查和远程证明。Host OS 不需要被 enclave 信任,因为真正决定 enclave 隔离边界的是 Secure Monitor 和硬件 PMP。
给小白的理解是:

Linux 是“普通管理员”,Secure Monitor 是“最高级别的门禁系统”。Linux 可以调度程序,但 enclave 的内存隔离最终由 M-mode 的 Secure Monitor 配置 PMP 来保证。

四、图 2:Enclave 是怎么启动的?

论文第 3 页的Figure 2展示了 enclave 创建流程。这个图非常关键,因为本文后面测的很多延迟,实际上都和 enclave 创建有关。
流程大致是:
用户态进程请求创建 secure app;
Host OS 分配内存;
Host OS 加载 enclave binary;
控制权交给 Secure Monitor;
Secure Monitor 用 PMP 锁住内存区域;
Secure Monitor 验证 enclave 没有被篡改;
跳转到 enclave 入口,secure app 开始执行。
论文指出,enclave 创建时间和 enclave binary 及 runtime 的大小相关,之前工作已经观察到大小和启动时间之间大致呈线性关系。
这也解释了后面的实验现象:
如果一个实时任务必须“先创建 enclave,再开始执行”,那么它的响应时间就不仅仅取决于 Linux 调度,还取决于 Keystone enclave 创建流程。

五、本文研究的两个场景

论文设计了两个很贴近现实的场景。

场景一:Mixed Context,混合上下文

实时任务跑在普通 Linux 侧,enclave 作为后台安全任务运行。
比如智能电网设备:
高优先级任务:周期性采集电压、电流等数据;
普通安全任务:把报告加密后发给服务器;
加密密钥放在 enclave 里保护。
这个场景下,核心问题是:

后台运行 Keystone enclave,会不会影响普通 Linux 高优先级实时任务?

场景二:Real-Time Enclave,实时任务本身跑进 enclave

还是智能电网例子,如果加密报告不是“统计用途”,而是要参与本地电网调度决策,那么安全任务本身也有实时要求。
这时问题变成:

如果实时任务必须在 enclave 中执行,Keystone enclave 的创建和启动延迟是否足够稳定?

论文用 cyclictest 测调度延迟,用 stress-ng 和 iperf3 制造 CPU、内存、磁盘、网络等压力,并在 HiFive Unmatched Rev. B RISC-V 开发板上实验。论文还说明,该板使用 SiFive Freedom U740 SoC,Linux 使用 4 个 U7 core,并有 8 个 PMP region。

六、实验工具:cyclictest 到底在测什么?

论文使用cyclictest测调度延迟。它的基本思路是:
创建高优先级周期性任务;
任务睡眠到某个目标时间;
到点后系统应该唤醒它;
记录“理想唤醒时间”和“实际唤醒时间”的差值。
这个差值就是调度延迟。
论文中 cyclictest 使用默认的SCHED_FIFO调度类,并把任务优先级设置为 99。对于 real-time enclave 场景,作者还修改了 cyclictest,让它在每次迭代中请求创建 enclave,并在 enclave 内部记录真正开始执行的时间。
简单说:

cyclictest 测的是“高优先级任务被叫醒得有多准时”。修改版 cyclictest 测的是“高优先级 enclave 任务从请求到真正跑起来花多久”。

七、图 3:PREEMPT_RT 在 RISC-V 上确实有效

论文第 5 页的Figure 3比较了没有 Keystone 时,普通 Linux kernel 和 PREEMPT_RT kernel 的调度延迟。
图是 log-log 直方图:
横轴是 latency,单位是微秒;
纵轴是 count,也就是出现次数;
曲线越集中、越靠左,说明延迟越低、越稳定;
如果右侧有长尾,说明偶尔会出现很大的延迟尖峰。
Figure 3 中,stock kernel 的延迟分布明显更散,并且右侧有长尾;PREEMPT_RT 的分布更集中,平均延迟更低,说明高优先级任务启动更可预测。论文也指出,这个结果符合已有 RT Linux 研究。
这一步相当于先验证实验平台:

在作者的 RISC-V 板子上,PREEMPT_RT 的确让 Linux 调度更稳定。

八、图 4 和图 5:后台 Keystone enclave 会不会干扰实时 Linux 任务?

接下来进入第一个核心场景:mixed context。
作者在每个 core 上运行 Keystone enclave,同时继续用 cyclictest 测高优先级 Linux 任务的调度延迟。
论文第 5 页的Figure 4比较了“有 Keystone 后台 enclave 时”的 stock kernel 和 PREEMPT_RT kernel。结果和 Figure 3 很像:PREEMPT_RT 仍然表现更好,延迟更低、更集中。
更关键的是Figure 5。它只看 PREEMPT_RT kernel,对比:
没有 Keystone;
有 Keystone enclave 在后台运行。
图中两组分布几乎重叠。论文据此认为,引入 Keystone enclave 并没有显著改变系统中高优先级 Linux 进程的调度延迟。
这部分的结论非常重要:

如果实时任务仍然跑在 Linux 侧,而 enclave 只是作为普通优先级后台安全任务运行,那么 Keystone + PREEMPT_RT 是比较可行的。

换句话说,Keystone 没有明显“拖慢”普通实时 Linux 任务。

九、图 6:单个 enclave 创建本身很稳定,但很慢

第二个场景更复杂:实时任务自己跑进 enclave。
这时总延迟包括两部分:
总延迟 = Linux 调度延迟 + Keystone enclave 创建延迟
论文第 6 页的Figure 6单独测了 enclave 创建持续时间,不加 stressor,只用一个 core 顺序创建 enclave。
结果显示,作者实验中 enclave 创建时间基本落在760 ms 到 770 ms之间,因此可以认为单个 enclave 顺序创建时比较确定。
这里有个很关键的认识:

“稳定”不代表“快”。760–770 ms 对很多实时任务来说已经非常长。

对于软实时任务,也许还能接受;对于控制周期很短的工业控制、机器人控制,这个启动时间就明显太大。

十、图 7:单线程 real-time enclave,PREEMPT_RT 仍有帮助,但帮助变小

论文第 6 页的Figure 7测的是单线程 high-priority enclave 启动总延迟。
实验方法是:修改版 cyclictest 的任务每次醒来后创建 enclave,真正的计时点放在 enclave 内部。这样测到的是“从唤醒请求到 enclave 代码真正开始运行”的总时间。
结果显示:
总延迟明显比普通 Linux 进程调度延迟大得多;
原因是加入了 enclave 创建步骤;
PREEMPT_RT 仍然改善了延迟可预测性;
但相比 mixed context 场景,PREEMPT_RT 的改善效果没那么显著。
原因也很直观:
当 760 ms 级别的 enclave 创建成本成为主要部分时,Linux 调度优化带来的几十微秒、几百微秒级收益就被“淹没”了。

十一、图 8 和图 9:两个 enclave 并发启动,问题暴露出来了

真正有意思的是并发场景。
论文让 cyclictest 使用两个线程,在两个不同 core 上并发启动 real-time enclave。
第 6 页的Figure 8比较了两个并发 enclave 线程下,stock kernel 和 PREEMPT_RT kernel 的总启动延迟。结果显示,两者差异并不明显。也就是说,PREEMPT_RT 对这个问题帮不上太多。
第 6 页的Figure 9更直观,它在 PREEMPT_RT 下比较:
1 个 enclave 启动线程;
2 个 enclave 启动线程。
结果很明显:两个线程时,延迟平均值更高,而且分布范围大幅变宽,部分延迟甚至接近数秒级。论文认为,这说明多个 enclave 同时创建会引入显著且不可预测的延迟。
作者推测原因可能是 Keystone Secure Monitor 的 enclave 创建代码中存在不能被多个线程共享的临界区,例如使用spin_lock的独占访问区域。多个 enclave 并发启动时,这些锁可能导致等待、抢占和非确定性延迟。论文认为,如果要解决这个问题,可能需要像 PREEMPT_RT 改造 Linux 内核那样,对 Keystone SM 中的锁和临界区做细致检查和改造。
这部分可以用一句话概括:

单个 enclave 创建是“慢但稳定”;多个 enclave 并发创建则变成“更慢且不稳定”。

十二、附录图 10–13:进一步确认两类延迟不是一个量级

论文附录还有几张对比图。
Figure 10比较了没有 PREEMPT_RT 时,后台有无 Keystone enclave 对 Linux 进程调度延迟的影响。整体看,Keystone 后台 enclave 仍没有显著改变普通 Linux 任务的调度延迟分布。
Figure 11比较没有 PREEMPT_RT 时,一个和两个并发 enclave 启动线程的总延迟。趋势和主文 Figure 9 一致:两个并发线程明显更散、更不可预测。
Figure 12Figure 13把普通 Linux 进程调度延迟与 Keystone enclave 启动总延迟放在同一张图中对比。这个对比非常直观:普通 Linux 任务延迟通常在微秒级,而 Keystone enclave 启动总延迟接近 10^6 微秒,也就是秒级附近。
这进一步说明:

对 real-time enclave 来说,瓶颈已经不是普通 Linux 调度,而是 enclave 创建和 Keystone 内部同步机制。

十三、这篇论文的核心贡献是什么?

这篇论文并没有提出一个全新的 TEE 架构,而是做了一件很重要的系统测量工作。
第一,它把 Keystone 和 PREEMPT_RT 放到一起研究。
论文指出,在此之前,PREEMPT_RT 与 Keystone 或其他 enclave 系统的组合尚未被系统研究。
第二,它明确区分了两类场景。
很多人讨论“TEE 能不能实时”时容易混在一起,但本文拆成了:
实时任务在 Linux,enclave 后台运行
实时任务本身在 enclave
这两个场景结论完全不同。
第三,它提供了一套可复用的评估方法。
作者修改 Keystone build 流程以支持 PREEMPT_RT,也修改 cyclictest 以测量 enclave 内部启动时间,并使用 stress-ng、iperf3 等工具模拟高负载。论文还说明相关代码和脚本以 artifact 形式开放。

十四、给科研小白的重点理解

读这篇论文时,不要一开始就陷入所有实时系统术语。可以抓住三个问题:
1. 测的是什么?
测的是latency,尤其是高优先级任务从“应该被唤醒”到“实际开始运行”的延迟。
2. 为什么看直方图?
因为实时系统不只关心平均值,还关心长尾。
一个系统平均延迟低,但偶尔突然卡 1 秒,对实时控制来说可能是灾难。所以论文用 log-log histogram 看延迟分布是否集中、是否有长尾。
3. 最大发现是什么?
Keystone 后台 enclave 不明显影响普通 Linux 实时任务;
但把实时任务放进 enclave 后,尤其多个 enclave 并发启动,Keystone 创建流程会成为主要延迟来源。

十五、这篇论文对系统设计有什么启发?

如果你要设计一个“安全 + 实时”的 RISC-V 系统,可以从这篇论文得到几个工程建议。
第一,能不频繁创建 enclave,就不要频繁创建。
Figure 6 已经显示,单个 enclave 创建大约 760–770 ms。对于高频实时任务,动态创建 enclave 很可能不合适。
第二,可以考虑预创建或缓存 enclave。
论文提到已有工作提出 enclave application cache,可以降低重复任务启动时间。虽然这不是本文重点,但对实际系统非常重要。
第三,把实时采集/控制留在 Linux RT 侧,把机密处理放到后台 enclave,可能更现实。
Figure 4 和 Figure 5 说明,在 mixed context 下 Keystone 对高优先级 Linux 进程干扰不明显。
第四,如果必须 real-time enclave,需要进一步改造 Keystone Secure Monitor。
尤其要分析 SM 中 spin_lock、临界区、PMP 配置、上下文切换路径,看哪些地方会导致并发启动时长尾延迟。

十六、局限性:这篇论文没有解决什么?

这篇论文主要关注enclave startup latency,也就是 enclave 启动相关延迟。它没有全面解决 TEE 实时性的所有问题。
论文也说明,timer、interrupt、availability 等更广泛问题留给未来工作。
此外,实验平台是 HiFive Unmatched Rev. B,结果对其他 RISC-V SoC、其他 Keystone 配置、其他内核版本不一定完全一致。但它提供了一个很好的测量范式。

结语:Keystone + PREEMPT_RT 可以做实时安全吗?

答案不是简单的“可以”或“不可以”。
更准确的结论是:
对于 mixed-criticality 场景,如果实时任务在 Linux PREEMPT_RT 侧运行,Keystone enclave 作为后台安全任务,整体是有希望的。
但:
如果实时任务本身必须在 enclave 中启动和执行,当前 Keystone 的 enclave 创建延迟,尤其是并发创建时的不可预测延迟,会成为明显障碍。
这篇论文的价值在于,它把 TEE 研究从“能不能隔离、能不能证明安全”推进到了更工程化的问题:

安全机制进入真实嵌入式和控制系统后,是否还能满足时间约束?

对于 RISC-V TEE 来说,下一步不仅要让 enclave 更安全,还要让 enclave 的启动、切换、调度更加可预测。安全和实时,必须一起设计。

最新文章

随机文章

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