当前位置:首页>Linux>Linux 6.6 ftrace 环形缓冲区(Ring Buffer)深度解析

Linux 6.6 ftrace 环形缓冲区(Ring Buffer)深度解析

  • 2026-02-05 01:02:35
Linux 6.6 ftrace 环形缓冲区(Ring Buffer)深度解析

在Linux内核中,跟踪(Tracing)和事件记录是调试、性能分析和安全审计的核心手段。然而,这些操作必须在不显著影响系统正常运行的前提下进行,尤其是在中断(IRQ)、不可屏蔽中断(NMI)等高优先级上下文中。环形缓冲区(Ring Buffer)正是为此而生的高性能、无锁、Per-CPU 存储引擎。它不仅是ftrace、perf等子系统的底层支柱,其精妙的设计思想也值得每一位内核开发者学习。本文将深入剖析Linux 6.6内核中环形缓冲区的实现原理。

1.架构概览:为极致性能而生

1.1 设计目标

环形缓冲区的设计哲学围绕着几个核心目标: 零锁写入 (Lockless Write):这是最关键的特性。每个CPU核心只向自己专属的缓冲区写入数据,从根本上消除了多核写入时的竞争和锁开销。 无竞争读取 (Non-Contentious Read):读者(通常是用户空间进程)通过一个独立的“读者页”(reader page)来读取数据,与写入者路径分离,避免了读写冲突。 时间戳压缩 (Timestamp Compression):连续事件的时间戳通常非常接近。环形缓冲区采用 Delta 编码,只存储与上一个事件的时间差,大幅节省了存储空间。 Buffer Swap (缓冲区交换):支持在运行时将整个缓冲区的内容“快照”到另一个缓冲区,这对于捕获瞬时状态(如系统崩溃前一刻)至关重要。 NMI 安全 (NMI Safe):整个写入路径不依赖任何可能睡眠的锁或内存分配,因此可以在 NMI 这种最高优先级的上下文中安全使用。

1.2 核心文件 

· kernel/trace/ring_buffer.c:环形缓冲区的核心逻辑实现,包含了所有关键的数据结构和操作函数。

· include/linux/ring_buffer.h:对外暴露的公共API接口定义。

· kernel/trace/trace_clock.c:提供高精度、低开销的时间戳获取接口。

1.3 内存布局图解

理解环形缓冲区的关键在于掌握其分层的内存结构。

图解说明:

· 一个全局的ring_buffer结构管理着整个缓冲池。

· 它为系统中的每个CPU分配一个独立的ring_buffer_per_cpu结构,实现了 Per-CPU 隔离。

· 每个ring_buffer_per_cpu拥有一个由buffer_page组成的循环链表,这些buffer_page是真正的数据容器。

· buffer_pagepage成员指向一个标准的4KB内核页,其内容以buffer_data_page的格式组织。

· 最终,事件以紧凑的ring_buffer_event格式被序列化到data[]区域中。

2.核心数据结构剖析

2.1 ring_buffer(顶层管理者)

struct ring_buffer {

unsigned long pages;        // 总页数

cpumask_var_t cpumask;      // 参与的CPU掩码

struct ring_buffer_per_cpu **buffers; // Per-CPU缓冲区数组

u64 (*clock)(void);         // 时间戳函数指针

// ... 其他辅助成员,如工作队列等

};

这个结构是全局视角的管理者,它不直接处理数据,而是协调各个 CPU 的缓冲区,并提供统一的时钟源。

2.2 ring_buffer_per_cpu(Per-CPU 工作单元)

struct ring_buffer_per_cpu {

int nr_pages;               // 本CPU拥有的页数

struct list_head pages;     // 页的循环链表

struct buffer_page *reader_page; // 独立的读者页

struct buffer_page *commit_page; // 当前提交页

unsigned long read, write;  // 本CPU的读写指针

// 关键:无锁设计依赖原子变量

    local_t commit_overrun;     // 提交溢出计数(原子)

    local_t overrun;            // 覆盖计数(原子)

    raw_spinlock_t lock;     // 仅用于非热路径(如resize)

int cpu;                    // 所属CPU ID

int online;                 // CPU是否在线

};

这是并发处理的核心。local_t类型的原子变量是实现无锁写入的关键,它们保证了即使在多核并发写入时,对commit和entries的修改也是安全的。

2.3 buffer_page(页的元数据)

struct buffer_page {

struct list_head list;      // 链入pages链表

void *page;              // 指向4KB物理页

unsigned long real_end;     // 页的真实结束位置

// 读者/写入者状态

    local_t entries;           // 本页的事件条目数(原子)

    local_t commit;           // 本页的提交指针(原子)

unsigned long read, write;  // 本页的读写指针

};

buffer_page 是页的“控制块”,它将物理页与逻辑信息(如读写位置、条目数)关联起来。commit 原子变量尤为重要,它标记了哪些数据是已经安全提交、可供读者读取的。

2.4 ring_buffer_event(事件的紧凑表示)

struct ring_buffer_event {

    u32 type_len:5, time_delta:27;

    u32 array[];

};

这是一个极其精巧的设计。一个32位的前导字节承载了两种信息: type_len (5 bits):编码了事件的类型(普通事件、时间扩展、填充等)和长度信息。time_delta(27 bits):存储了与上一个事件的时间戳差值。

这种设计将事件头压缩到最小,极大地提高了缓存效率和存储密度。当 time_delta超过27位能表示的范围时,会插入一个特殊的TIME_EXTEND事件来存储完整的增量。

3.初始化与分配:一次性预分配

为了保证在NMI等上下文中也能安全写入,环形缓冲区在初始化阶段就一次性预分配好所有需要的内存页。

流程:

1.__ring_buffer_alloc():分配全局ring_buffer结构。

2.遍历所有CPU:为每个CPU调用rb_allocate_cpu_buffer()

3.rb_allocate_cpu_buffer()

·分配ring_buffer_per_cpu结构。

·初始化自旋锁(用于冷路径)。

·循环nr_pages次,调用rb_allocate_page()分配物理页并构建循环链表。

·额外分配一个独立的reader_page

4.rb_allocate_page()

·使用alloc_pages_node()在指定CPU的NUMA节点上分配物理页,保证局部性。

·将物理页映射到内核虚拟地址。

·分配并初始化buffer_page控制块。

这种“启动时分配,运行时零分配”的策略是NMI安全的根本保障。

4.事件写入:无锁的快车道

写入是环形缓冲区最频繁的操作,其路径被精心优化为无锁的“快车道”。

写入流程图解:

关键点:

rb_move_tail_page():当一页写满时,需要移动到下一页。这里有一个巧妙的处理:如果下一页恰好是reader_page(意味着读者正在读这页),写入者会触发一次页交换(swap),将一个干净的备用页交给读者,从而避免了写入阻塞。 

原子操作:local_inc(), local_add() 等原子操作确保了commit和entries 的更新是线程安全的,无需加锁。

5.事件读取:独立的读者通道

读取操作由用户空间通过trace_pipe或trace文件触发,其路径与写入完全分离。

读取流程图解:

关键点: rb_swap_reader_page():这是读写解耦的核心。当 reader_page被读空后,读者会用当前缓冲区的头页(head_page)来交换它。头页是写入者最早写入、最可能已填满的页。交换后,读者可以安心地读取这个“快照”,而写入者则继续在新的尾页上工作,两者互不干扰。

6.时间戳管理:Delta编码的艺术

为了节省宝贵的缓冲区空间,环形缓冲区对时间戳进行了智能压缩。 

ring_buffer_time_stamp():获取当前的绝对时间戳。 

rb_add_time_stamp():计算与上一个事件的时间差 (delta)。

如果 delta <= 0x7FFFFFF (27位最大值),直接存入event->time_delta。

如果 delta 过大,则插入一个 RINGBUF_TYPE_TIME_EXTEND 类型的特殊事件,其 array[0] 存放高位部分。

这种 “常规事件存小delta,大delta用扩展事件” 的混合模式,在绝大多数情况下都能获得极高的压缩率。

7.Buffer Swap 机制:快照的魔法

ring_buffer_swap_cpu() 函数允许在两个ring_buffer实例之间交换指定 CPU的ring_buffer_per_cpu指针。

应用场景: tracing_snapshot:这是最经典的用例。系统维护一个主缓冲区和一个快照缓冲区。当用户触发快照时,内核瞬间交换两者的指针。此后,新的跟踪数据写入原来的快照区,而用户可以安全地读取原来主缓冲区中“冻结”的历史数据,实现了零停机的瞬时状态捕获。

8.性能优化总结 

1.Per-CPU 隔离:彻底消除写入竞争。 

2.无锁原子操作:使用local_t在快路径上避免锁。 

3.预分配内存:启动时完成所有内存分配,保证运行时(尤其是NMI)的安全。 

4.紧凑事件格式:5+27位的事件头极大提升缓存效率。 

5.Delta时间戳:显著减少时间戳存储开销。 

6.读写页分离:通过reader_page和swap机制,实现高效的无锁读取。

9.调试与观测

·内核提供了丰富的接口来观测环形缓冲区的状态:

l/sys/kernel/tracing/per_cpu/cpuX/ 目录下包含buffer_size_kb,entries,overrun等文件,可以直接查看每个CPU缓冲区的统计信息。

l启用CONFIG_RING_BUFFER_STARTUP_TEST可以在内核启动时自动运行环形缓冲区的压力测试。

l内核代码中的trace_printk等函数也可以用来在关键路径上输出调试信息。

10.总结

Linux6.6的环形缓冲区是一个集高性能、高可靠性和精巧设计于一体的杰作。它通过Per-CPU隔离、无锁原子操作、预分配、紧凑格式和读写分离 等一系列技术,成功地解决了在高并发、高实时性要求的内核环境中高效、安全地记录事件的难题。理解其内部机制,不仅有助于我们更好地使用ftrace等工具,更能从中汲取到宝贵的系统设计思想。

往期精彩文章回顾

linux ftrace跟踪子系统

linux内核调试子系统

linux内核内存管理子系统

linux设备驱动子系统

最新文章

随机文章

基本 文件 流程 错误 SQL 调试
  1. 请求信息 : 2026-02-07 18:32:27 HTTP/2.0 GET : https://f.mffb.com.cn/a/472743.html
  2. 运行时间 : 0.107237s [ 吞吐率:9.33req/s ] 内存消耗:4,855.59kb 文件加载:140
  3. 缓存信息 : 0 reads,0 writes
  4. 会话信息 : SESSION_ID=a243d4969fb2f0e2cabf9067da04a9bd
  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.000550s ] mysql:host=127.0.0.1;port=3306;dbname=f_mffb;charset=utf8mb4
  2. SHOW FULL COLUMNS FROM `fenlei` [ RunTime:0.000749s ]
  3. SELECT * FROM `fenlei` WHERE `fid` = 0 [ RunTime:0.000886s ]
  4. SELECT * FROM `fenlei` WHERE `fid` = 63 [ RunTime:0.001375s ]
  5. SHOW FULL COLUMNS FROM `set` [ RunTime:0.000504s ]
  6. SELECT * FROM `set` [ RunTime:0.002870s ]
  7. SHOW FULL COLUMNS FROM `article` [ RunTime:0.000642s ]
  8. SELECT * FROM `article` WHERE `id` = 472743 LIMIT 1 [ RunTime:0.003768s ]
  9. UPDATE `article` SET `lasttime` = 1770460347 WHERE `id` = 472743 [ RunTime:0.002054s ]
  10. SELECT * FROM `fenlei` WHERE `id` = 67 LIMIT 1 [ RunTime:0.001878s ]
  11. SELECT * FROM `article` WHERE `id` < 472743 ORDER BY `id` DESC LIMIT 1 [ RunTime:0.000605s ]
  12. SELECT * FROM `article` WHERE `id` > 472743 ORDER BY `id` ASC LIMIT 1 [ RunTime:0.002292s ]
  13. SELECT * FROM `article` WHERE `id` < 472743 ORDER BY `id` DESC LIMIT 10 [ RunTime:0.007546s ]
  14. SELECT * FROM `article` WHERE `id` < 472743 ORDER BY `id` DESC LIMIT 10,10 [ RunTime:0.007164s ]
  15. SELECT * FROM `article` WHERE `id` < 472743 ORDER BY `id` DESC LIMIT 20,10 [ RunTime:0.003370s ]
0.108958s