当前位置:首页>Linux>[linux 调度器第九讲] 实时调度:RT 与 Deadline 两种调度器

[linux 调度器第九讲] 实时调度:RT 与 Deadline 两种调度器

  • 2026-06-30 11:59:06
[linux 调度器第九讲] 实时调度:RT 与 Deadline 两种调度器

实时调度:RT 与 Deadline

Linux 调度子系统技术文档系列 · 第 9 篇

一次 RT 进程引发的生产事故

2019 年,某工业自动化公司部署了一套基于 Linux 的实时数据采集系统。为了降低传感器数据处理的延迟,工程师将所有采集进程设置为 SCHED_FIFO 最高优先级。上线第一天,系统表现完美——数据延迟从 5 毫秒降低到 50 微秒。第三天凌晨,整个产线突然卡死。监控画面凝固,报警系统静音,产线上的机械臂停在半空中。运维人员赶到现场后发现:一个 SCHED_FIFO 的日志线程进入了无限循环,由于它的优先级高于所有普通进程(包括 sshd、systemd-journald),系统变成了"砖头"——除了硬复位,没有任何恢复手段。

这不是虚构的故事,而是 RT throttling 机制诞生的真实诱因之一。Linux 的实时调度是一把双刃剑:它能给关键任务确定性的响应时间,也能在配置不当时让整个系统陷入瘫痪。

什么是实时调度?有哪些类型?

实时调度的核心诉求不是"快",而是"确定"。普通进程追求公平——每个进程最终都能分到 CPU;实时进程追求承诺——我必须在 2 毫秒内响应,这个承诺必须兑现。

Linux 内核提供了三种实时调度策略,每种策略对应不同的使用场景:

调度策略
调度算法
适用场景
时间片
SCHED_FIFO
静态优先级 + 抢占
需要连续执行直到完成的任务
SCHED_RR
静态优先级 + 时间片轮转
多个同优先级任务共享 CPU
默认 100ms
SCHED_DEADLINE
EDF(最早截止时间优先)
有明确周期和截止时间约束的周期性任务
由 runtime 参数决定

这三种策略共享一个关键特征:它们的优先级(1-99)始终高于普通进程的 nice 值(-20 到 19)。当 RT 进程就绪时,它会强制抢占当前运行的普通进程,这种抢占没有任何延迟。

核心数据结构:RT 与 Deadline 的骨架

理解实时调度的第一步,是看清它在内核中的数据组织方式。RT 进程和 Deadline 进程分别通过 sched_rt_entity 和 sched_dl_entity 两个结构体嵌入到 task_struct 中,每个进程只属于其中一个调度类。

sched_rt_entity:RT 进程的身份证

run_list 是 RT 调度的关键——每个优先级(1-99)对应一个独立的 FIFO 链表。调度器从最高优先级开始扫描,找到第一个非空链表,取出队首任务执行。这种设计保证了 O(1) 的调度决策复杂度。

RT 优先级位图:快速查找的加速器

如果每次调度都要遍历 99 个优先级链表,效率会非常低。Linux 使用了一个巧妙的优化:优先级位图(priority bitmap)。

位图的每一位对应一个优先级。当某个优先级的队列从空变为非空时,对应位被置 1;当队列从非空变为空时,对应位被清零。调度器只需要用 find_first_bit() 指令(在 x86 上是单条 BSF 汇编指令)就能瞬间找到最高就绪优先级。这就像一本带索引的字典,你不需要从头翻起,直接跳到有内容的那一页。

sched_dl_entity:Deadline 的三参数模型

Deadline 调度器的数据结构更加复杂,因为它需要跟踪任务的执行时间、周期和截止时间。

三参数模型是 Deadline 调度的核心设计。WCET(最坏执行时间)、周期和相对截止时间,这三个参数完整描述了一个周期性任务的时序特征。调度器根据这些参数计算带宽需求 dl_runtime / dl_period,并通过准入测试(Admission Test)判断系统是否有足够的剩余带宽接纳新任务。如果所有任务的带宽总和超过 CPU 容量,新任务会被拒绝。

执行路径:RT 带宽控制的限流机制

回到文章开头的生产事故。SCHED_FIFO 进程进入死循环后,由于它没有主动让出 CPU 的时机(FIFO 策略没有时间片),也没有更高优先级的进程来抢占它,CPU 被 100% 占用。普通进程——包括负责网络通信的 sshd、负责日志的 journald、甚至负责终端的 getty——全部被饿死。

这是 RT 调度器的固有风险。为了解决这个问题,Linux 在 2.6.38 内核引入了 RT 带宽控制(RT Bandwidth Control)机制。

95% 规则:为什么 RT 不能独占 CPU

内核定义了两个关键参数:

这两个参数的含义是:在任意 1 秒的滑动窗口内,RT 进程最多只能运行 0.95 秒,剩余 0.05 秒强制留给普通进程。95% 这个数字并非随意选择——它基于一个经验法则:如果 RT 进程需要超过 95% 的 CPU,说明系统的实时负载设计本身就存在问题,应该重新评估架构,而不是用实时优先级来掩盖设计缺陷。

RT throttle 触发的完整路径

RT throttle 的检查嵌入在 RT 进程的运行时更新路径中,每次时钟中断都会执行:

当 rt_throttled 被置 1 后,RT 进程会被强制从运行队列中移除,CPU 会切换到普通进程。限流状态会持续到下一个周期(默认 1 秒)开始时自动解除。

这个机制带来了一个有趣的现象:如果你在音频处理中使用了 SCHED_FIFO,却发现音频偶尔卡顿,很可能不是你的代码有问题,而是 RT throttling 在起作用。一个经典的排查命令是:

# 查看当前 RT 带宽配置
cat/proc/sys/kernel/sched_rt_period_us #1000000
cat/proc/sys/kernel/sched_rt_runtime_us # 950000 
# 临时关闭限流(不推荐用于生产环境)
echo-1>/proc/sys/kernel/sched_rt_runtime_us

chrt 命令:用户空间与内核的桥梁

chrt 命令是用户空间设置实时优先级的标准工具,它通过 sched_setscheduler() 系统调用与内核交互:

Deadline 调度器的准入测试

Deadline 调度器比 RT 调度更"聪明"——它不会让系统超载。在任务创建时,内核会执行准入测试(Admission Test),确保新任务不会导致已有任务错过截止时间。

准入测试是 Deadline 调度器的安全阀。它保证了一个数学定理:如果所有任务的带宽总和不超过 CPU 容量,且每个任务的 deadline >= runtime,那么所有任务都不会错过截止时间。这是 EDF 算法的最优性保证。

为什么引入 Deadline 调度器?

RT 调度基于静态优先级,它有一个根本性缺陷:优先级继承(Priority Inheritance)问题。假设系统中有两个 RT 任务:任务 A 优先级 90,每 100ms 执行 5ms;任务 B 优先级 80,每 50ms 执行 3ms。由于 A 的优先级更高,它总是抢占 B。但 A 的截止时间可能比 B 更宽松——A 可能每 10 秒才需要响应一次,而 B 每 50ms 就要响应一次。静态优先级无法表达"紧迫程度",它只能表达"重要程度"。

Deadline 调度器用 EDF(Earliest Deadline First)算法解决了这个问题。每个任务的优先级不是预先设定的,而是动态计算的——截止时间最早的任务获得最高优先级。这种策略在数学上被证明是最优的:如果一个任务集合可以被任何算法调度成功,EDF 一定也能调度成功。

引入 Deadline 调度器的第二个动机是带宽隔离。在 RT 调度中,一个失控的高优先级任务会饿死所有低优先级任务。而在 Deadline 调度中,每个任务的运行时间被严格限制在 dl_runtime 内。即使一个任务耗尽了它的运行时,它只会自己被限流(dl_throttled),不会影响其他 Deadline 任务的执行。这就像给每个任务分配了一个独立的"时间预算账户",花完了就等下个周期,不拖欠别人的额度。

总结

实时调度是 Linux 对时间敏感任务的基础设施。RT 调度类(SCHED_FIFO/SCHED_RR)用静态优先级和抢占机制保证确定性响应,但需要 RT throttling 来防止系统被饿死。Deadline 调度器(SCHED_DEADLINE)用三参数模型和 EDF 算法提供更精确的时间保证,并通过准入测试确保系统不会超载。理解这些机制的 trade-off——确定性与灵活性、优先级与截止时间、抢占与限流——是在生产环境中正确使用实时调度的前提。

一个常见误区:认为设置实时优先级就能让程序"变快"。实时调度保证的是"按时",而不是"更快"。如果你的音频程序延迟高,首先要检查的是程序本身的逻辑,而不是盲目提升优先级。

思考题

  1. 如果你有一个音视频处理程序,同时使用了 SCHED_FIFO 和 SCHED_DEADLINE 两种策略,哪种策略更适合音频缓冲区的填充任务?为什么?
  2. RT throttling 机制在某些场景下会导致"周期性卡顿",你能设计一种方案来检测这种卡顿吗?
  3. Deadline 调度器的准入测试拒绝了你的任务创建请求(返回 -EBUSY),但你确认 CPU 还有很多空闲时间,这可能是什么原因?如何排查?

本系列文章基于 Linux 6.19.13 内核源码采用 CC BY-NC-SA 4.0 协议,转载请注明出处

最新文章

随机文章

基本 文件 流程 错误 SQL 调试
  1. 请求信息 : 2026-07-03 00:55:13 HTTP/2.0 GET : https://f.mffb.com.cn/a/501966.html
  2. 运行时间 : 0.312815s [ 吞吐率:3.20req/s ] 内存消耗:4,726.29kb 文件加载:140
  3. 缓存信息 : 0 reads,0 writes
  4. 会话信息 : SESSION_ID=f9d06c64941f21138422b17081b6d6f1
  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.000553s ] mysql:host=127.0.0.1;port=3306;dbname=f_mffb;charset=utf8mb4
  2. SHOW FULL COLUMNS FROM `fenlei` [ RunTime:0.000731s ]
  3. SELECT * FROM `fenlei` WHERE `fid` = 0 [ RunTime:0.006506s ]
  4. SELECT * FROM `fenlei` WHERE `fid` = 63 [ RunTime:0.014241s ]
  5. SHOW FULL COLUMNS FROM `set` [ RunTime:0.000725s ]
  6. SELECT * FROM `set` [ RunTime:0.009940s ]
  7. SHOW FULL COLUMNS FROM `article` [ RunTime:0.001632s ]
  8. SELECT * FROM `article` WHERE `id` = 501966 LIMIT 1 [ RunTime:0.011642s ]
  9. UPDATE `article` SET `lasttime` = 1783011313 WHERE `id` = 501966 [ RunTime:0.009680s ]
  10. SELECT * FROM `fenlei` WHERE `id` = 67 LIMIT 1 [ RunTime:0.006396s ]
  11. SELECT * FROM `article` WHERE `id` < 501966 ORDER BY `id` DESC LIMIT 1 [ RunTime:0.057362s ]
  12. SELECT * FROM `article` WHERE `id` > 501966 ORDER BY `id` ASC LIMIT 1 [ RunTime:0.013367s ]
  13. SELECT * FROM `article` WHERE `id` < 501966 ORDER BY `id` DESC LIMIT 10 [ RunTime:0.029139s ]
  14. SELECT * FROM `article` WHERE `id` < 501966 ORDER BY `id` DESC LIMIT 10,10 [ RunTime:0.033196s ]
  15. SELECT * FROM `article` WHERE `id` < 501966 ORDER BY `id` DESC LIMIT 20,10 [ RunTime:0.030099s ]
0.316557s