当前位置:首页>Linux>[linux 调度器第11讲] 时间片与调度粒度:为什么你的任务跑一会儿就停了?

[linux 调度器第11讲] 时间片与调度粒度:为什么你的任务跑一会儿就停了?

  • 2026-07-01 00:03:20
[linux 调度器第11讲] 时间片与调度粒度:为什么你的任务跑一会儿就停了?

时间片与调度粒度:为什么你的任务跑一会儿就停了?

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

你是否有过这样的体验:一个编译任务跑着跑着突然停顿,接着另一个进程抢占上来;或者一个交互式应用在关键时刻卡顿了几毫秒,用户感知到了明显的延迟。你调了 nice 值、配了 cgroup 权重,但问题依然若隐若现。

问题的根源,往往藏在一个看似不起眼的参数里——时间片(time slice)

在 EEVDF(Earliest Eligible Virtual Deadline First)调度器中,时间片是调度决策的基本原子单位。它决定了每个任务一次能运行多久、何时该让出 CPU、以及多个任务之间如何公平分配算力。Linux 内核的默认值是 0.7 毫秒——不是 1 毫秒,不是 0.1 毫秒,恰好 0.7 毫秒。这个数字背后,是十几年调度器演进留下的精确权衡。

本文将从源码层面追踪时间片的完整生命周期:从初始化赋值,到运行时递减,再到耗尽检测与重新调度。你会理解为什么你的任务"跑一会儿就停了"——这正是调度器在精确执行它的职责。

一、时间片到底是什么?有哪些核心参数?

时间片的本质是调度器分配给每个任务的一次性 CPU 使用配额。它不是绝对物理时间,而是经过权重加权后的虚拟时间(virtual time)增量。在 EEVDF 模型中,每个调度实体 sched_entity 都有自己的时间片配额,内核通过多个参数协同控制它。

核心参数一览:

参数
类型
默认值
含义
sysctl_sched_base_slice
全局变量
700000 ns(0.7ms)
基础时间片,所有任务的基准配额
se->slice
调度实体字段
继承 base_slice
当前任务实际剩余时间片
se->deadline
调度实体字段
动态计算
虚拟截止时间,决定调度优先级
se->custom_slice
标志位
0
是否设置了自定义时间片(sched_setattr)
se->min_slice
调度实体字段
动态维护
红黑树子树中的最小 slice 值
cfs_rq_min_slice()
内联函数
运行时查询
遍历红黑树找到当前就绪队列的最小 slice
normalized_sysctl_sched_base_slice
静态变量
700000 ns
归一化的基准值,不随 CPU 数变化

这些参数不是孤立存在的,它们通过 EEVDF 的虚拟时间模型紧密耦合。理解它们的关系,是理解调度器行为的第一步。

为什么默认是 0.7 毫秒?

打开 fair.c:L75-80,答案写在内核注释里:

0.7 毫秒不是随意选取的。它经历了 CFS 时代的反复调优:

  • 太小(0.1ms)
    :上下文切换开销占比过高。每次切换涉及寄存器保存、TLB 刷新、缓存失效,成本约 1-3 微秒。如果时间片太短,CPU spends 大量时间在"切换"而非"执行"上,吞吐量断崖式下降。
  • 太大(1ms+)
    :交互式任务延迟显著增加。假设有 10 个任务轮流执行,每个 1ms,最后一个任务要等 9ms 才能运行。人类对 10ms 以上的延迟有感知,GUI 应用对 16.6ms(60fps 帧间隔)内的延迟极为敏感。
  • 0.7ms 是甜点区
    :在典型负载下,它让上下文切换开销保持在 2-5% 以下,同时保证 10 个任务轮转一轮不超过 7ms,处于人类感知阈值之下。

为什么需要随 CPU 数量缩放?

关键在 fair.c:L192-210 中的缩放因子:

默认采用对数缩放(SCHED_TUNABLESCALING_LOG),实际生效的时间片 = 0.7ms × (1 + ilog2(ncpus))

为什么是对数而不是线性? 这是一个精妙的架构选择。想象一个 64 核服务器:

  • 线性缩放
    :0.7ms × 64 = 44.8ms。最后一个任务等 44 核 × 44.8ms ≈ 2 秒,交互式体验崩溃。
  • 对数缩放
    :0.7ms × (1 + 6) = 4.9ms。64 核下轮转一轮约 300ms,虽然也不理想,但比线性方案好一个数量级。

对数缩放的哲学是:核数增加时,调度粒度应该适度放宽,但不能线性增长。核数从 1 到 8 的变化比从 32 到 64 的变化更应该影响调度粒度,因为前者对单线程任务的影响更大。ilog2 恰好捕捉了这种边际递减效应。

二、EEVDF 中的 deadline 计算:slice 如何变成调度决策?

EEVDF 的核心公式 vd_i = ve_i + r_i / w_i 将时间片与调度优先级绑定在一起。让我们逐变量拆解:

  • vd_i(virtual deadline)
    :虚拟截止时间,决定任务在红黑树中的排序位置
  • ve_i(virtual eligible time / vruntime)
    :当前虚拟运行时间
  • r_i(request time)
    :请求时间,即 se->slice(默认 0.7ms)
  • w_i(weight)
    :任务权重,由 nice 值映射而来(nice 0 = 1024)

公式的直观含义:deadline = 当前 vruntime + (slice / weight 归一化系数)。权重越高(nice 值越低),deadline 增量越小,任务在红黑树中越靠左,越早被调度。

关键代码在 fair.c:L1117-1140:

calc_delta_fair 是公式中 r_i / w_i 的具体实现(fair.c:L290-296):

当一个 nice 0 的任务(权重 1024)消耗 0.7ms 的物理时间,calc_delta_fair 返回 0.7ms,deadline = vruntime + 0.7ms。而一个 nice 5 的任务(权重 335)消耗同样的 0.7ms,calc_delta_fair 返回约 2.1ms——它的 deadline 增长更快,在红黑树中排得更靠右,优先级更低。

slice 和 deadline 的关系可以这样理解:slice 是"燃料",deadline 是"油表"。 燃料消耗完时,油表指向下一个截止点。调度器每次选择 deadline 最早的任务执行,确保高权重任务获得更多 CPU 份额。

三、set_protect_slice 与 cfs_rq_min_slice:防止饿死的保护机制

在 EEVDF 中,有一个微妙的问题:如果一个任务的时间片还剩下一点点,而另一个任务的 deadline 更紧急,调度器是否应该立即切换?

如果每次 tick 都严格比较 deadline,那剩余 1 微秒时间片的任务可能被立刻踢下 CPU,造成"碎片化浪费"——它已经获得了调度开销,却没来得及做任何实际工作。

set_protect_slice 就是解决这个问题的保护机制(fair.c:L958-971):

这个机制的核心思想是:给当前任务一个最小保证运行窗口,在窗口内不执行抢占。这个窗口的大小取 min(基准时间片, 剩余时间片),确保即使时间片快耗尽,任务也至少能运行一个最小量子。

cfs_rq_min_slice() 遍历红黑树,找到就绪队列中所有任务的最小 slice 值(fair.c:L818-830):

min_slice 字段在每个 sched_entity 的红黑树节点中维护,通过 fair.c:L884-906 的回调函数在树结构变化时增量更新,避免了每次都遍历整棵树。

四、时间片耗尽的完整执行路径

理解了参数和机制,现在追踪一个任务从运行到被调度的完整生命周期。路径如下:

第一阶段:sched_tick 驱动

每个定时器中断(默认 HZ=250 或 1000,即每 4ms 或 1ms 一次),内核调用 core.c:L5515-5549 中的 sched_tick

task_tick 最终调用到 entity_tick,这是时间片检测的入口。

第二阶段:entity_tick 更新运行时

fair.c:L5627-5650 是时间片检测的核心函数:

第三阶段:update_curr 判断是否需要重调度

真正的决策逻辑在 update_curr 中(fair.c:L1286-1332):

这里有两个触发重调度的条件:

  1. resched == true
    update_deadline 返回 true,表示 vruntime >= deadline,时间片已完全耗尽。
  2. !protect_slice(curr)
    :当前任务的 vruntime 已超出保护窗口 vprot,即使时间片未完全耗尽,也应该让位给 deadline 更紧急的任务。

第四阶段:resched_curr_lazy 标记重调度

resched_curr_lazy 设置线程信息标志 TIF_NEED_RESCHED_LAZY。这个"lazy"版本是内核的优化:不立即触发 IPI(处理器间中断),而是等待当前中断退出或下次内核态返回用户态时再执行调度。这减少了不必要的中断风暴,在多核系统中显著降低了调度开销。

当系统需要立即调度时(如 HRTICK 高精度定时器到期),会使用 resched_curr 直接设置 TIF_NEED_RESCHED,强制下一次调度时机立刻到来。

五、用户空间视角:你能控制什么?

内核的时间片机制并非完全黑盒。用户空间可以通过多个途径影响调度行为。

1. sysctl kernel.sched_base_slice

适用场景

  • 批处理服务器
    :增大到 2-5ms,减少上下文切换,提升吞吐量。适合编译、数据处理等 CPU 密集型任务。
  • 桌面/交互系统
    :保持默认或略微减小到 0.5ms,降低交互延迟。适合 GUI 应用、游戏服务器。
  • 实时性要求高的场景
    :不建议通过调整 slice 来满足实时需求,应使用 SCHED_FIFO 或 SCHED_DEADLINE 实时调度类。

2. cgroup cpu.weight 与时间片的关系

cgroup v2 的 cpu.weight 影响任务的权重 w_i,进而间接影响有效时间片:

权重为 200 的任务相对于权重 100 的任务,在相同时间内能获得约 2 倍的 CPU 份额。但这不是因为它的时间片变大了——se->slice 仍然是 0.7ms——而是因为它的 deadline 增长更慢(calc_delta_fair 中除以更大的权重),在红黑树中更靠前,被选中的频率更高。

类比:时间片是"每次上车能坐多久",权重是"排队的优先级"。权重高不代表坐得更久,只代表上车更频繁。

3. sched_setattr 自定义时间片

通过 sched_setattr 系统调用,可以为特定任务设置自定义时间片:

这对应源码中 fair.c:L5196-5204 的逻辑:

内核限制了自定义时间片的范围:0.1ms 到 100ms。太小的值会导致调度抖动,太大的值会破坏系统的公平性。

4. 吞吐量 vs 延迟的权衡矩阵

场景
推荐策略
sched_base_slice
cpu.weight
原理
Web 服务器
低延迟优先
0.5-0.7ms
按需分配
小时间片保证请求快速响应
编译服务器
高吞吐优先
2-5ms
均等
大时间片减少切换开销
数据库
平衡
0.7ms(默认)
IO-bound 任务加权
混合负载需要平衡
容器混部
隔离优先
默认
按 SLA 分配
权重控制份额,slice 保证公平

六、架构要点总结

时间片机制是 EEVDF 调度器的节拍器,它用 0.7 毫秒的粒度丈量着每个任务的 CPU 使用量。理解它,就理解了调度器的大部分行为。

核心要点:

  • 0.7ms 是吞吐量和延迟的甜点值
    ,经过十几年真实负载验证,不是随意选取的
  • 对数缩放因子 1 + ilog2(ncpus)
     让调度粒度在多核系统中适度放宽,避免核数增长导致调度延迟线性恶化
  • update_deadline 中的 vd_i = ve_i + r_i / w_i
     是 EEVDF 的灵魂:slice 通过权重加权后变成 deadline,deadline 决定红黑树排序,红黑树排序决定谁先执行
  • set_protect_slice 防止碎片化抢占
    ,确保任务在保护窗口内不被踢下 CPU
  • update_curr 中的双重判断
    (deadline 到期 || 超出保护窗口)覆盖了所有需要重调度的场景
  • 用户空间可以通过 sysctl、cgroup weight、sched_setattr 三个层次干预
    ,从全局到任务级别精细控制

下次当你看到任务"跑一会儿就停了",不要急着调优——这可能正是调度器在忠实地执行它的职责:在精确的时间片耗尽后,把 CPU 让给下一个更需要的任务。

互动问题:你的生产环境中,有没有遇到过因为时间片设置不当导致的性能问题?是批处理任务被频繁打断,还是交互式任务响应延迟过高?欢迎在评论区分享你的经验和调优参数。


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

最新文章

随机文章

基本 文件 流程 错误 SQL 调试
  1. 请求信息 : 2026-07-02 23:33:27 HTTP/2.0 GET : https://f.mffb.com.cn/a/502315.html
  2. 运行时间 : 0.167239s [ 吞吐率:5.98req/s ] 内存消耗:4,349.23kb 文件加载:140
  3. 缓存信息 : 0 reads,0 writes
  4. 会话信息 : SESSION_ID=6281288c4fc593d54a1f5720855676b4
  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.000655s ] mysql:host=127.0.0.1;port=3306;dbname=f_mffb;charset=utf8mb4
  2. SHOW FULL COLUMNS FROM `fenlei` [ RunTime:0.000828s ]
  3. SELECT * FROM `fenlei` WHERE `fid` = 0 [ RunTime:0.007147s ]
  4. SELECT * FROM `fenlei` WHERE `fid` = 63 [ RunTime:0.037816s ]
  5. SHOW FULL COLUMNS FROM `set` [ RunTime:0.000874s ]
  6. SELECT * FROM `set` [ RunTime:0.000322s ]
  7. SHOW FULL COLUMNS FROM `article` [ RunTime:0.000587s ]
  8. SELECT * FROM `article` WHERE `id` = 502315 LIMIT 1 [ RunTime:0.006899s ]
  9. UPDATE `article` SET `lasttime` = 1783006407 WHERE `id` = 502315 [ RunTime:0.010658s ]
  10. SELECT * FROM `fenlei` WHERE `id` = 67 LIMIT 1 [ RunTime:0.000317s ]
  11. SELECT * FROM `article` WHERE `id` < 502315 ORDER BY `id` DESC LIMIT 1 [ RunTime:0.000535s ]
  12. SELECT * FROM `article` WHERE `id` > 502315 ORDER BY `id` ASC LIMIT 1 [ RunTime:0.000394s ]
  13. SELECT * FROM `article` WHERE `id` < 502315 ORDER BY `id` DESC LIMIT 10 [ RunTime:0.000608s ]
  14. SELECT * FROM `article` WHERE `id` < 502315 ORDER BY `id` DESC LIMIT 10,10 [ RunTime:0.004370s ]
  15. SELECT * FROM `article` WHERE `id` < 502315 ORDER BY `id` DESC LIMIT 20,10 [ RunTime:0.004721s ]
0.168883s