当前位置:首页>Linux>Linux内核内存管理 (MM) 子系统分析

Linux内核内存管理 (MM) 子系统分析

  • 2026-01-31 19:16:09
Linux内核内存管理 (MM) 子系统分析
目标读者:具备基本操作系统和 C 语言知识,希望深入理解Linux内核内存管理机制的开发者、学生或系统工程师。
内核版本:Linux 6.6
核心参考mm/目录源码及Documentation/mm/

第一章:目录概述 - 内存管理的全景地图

内存是计算机最核心的资源之一。Linux 内核的 mm/ 目录就是这座庞大而精密的“内存城市”的中央规划局,它负责从物理内存的分配到虚拟地址空间的管理,确保所有进程都能高效、安全地使用内存。

1.1 核心功能模块划分

我们可以将 mm/ 目录的功能划分为几个关键部门:

  • 页面分配器 (page_alloc.cmemblock.c):这是城市的“土地管理局”。它直接与物理内存打交道,使用 Buddy(伙伴)系统 算法来管理物理页帧(通常为 4KB)。Buddy 系统通过将内存块按 2 的幂次方大小进行分割和合并,高效地满足不同大小的连续物理内存请求,并尽量减少外部碎片。
  • 对象分配器 (slab.cslub.c):这是城市的“预制件工厂”。当内核需要频繁分配和释放大量相同大小的小对象(如 task_structinode)时,直接调用页面分配器效率低下且会产生内部碎片。Slab/SLUB 分配器在页面分配器之上构建了一层缓存,预先分配好对象并维护空闲列表,使得 kmalloc() 和 kmem_cache_alloc() 能以极低的开销完成分配。
  • 虚拟内存管理 (memory.cmmap.c):这是城市的“户籍与地图管理部门”。每个进程都有一个独立的虚拟地址空间(由 mm_struct 描述),这个空间被划分为多个区域(VMA, vm_area_struct),如代码段、数据段、堆、栈等。mmap.c 负责创建和管理这些 VMA,而 memory.c 则是处理 缺页异常(Page Fault) 的核心,当进程访问一个尚未映射到物理内存的虚拟地址时,它会介入,为其分配物理页并建立页表映射。
  • 页面回收 (vmscan.cswap.c):这是城市的“拆迁与再开发办公室”。当物理内存紧张时,内核必须回收不再活跃的页面以腾出空间。vmscan.c 实现了复杂的 LRU(最近最少使用)算法 变种,将页面分为活跃/非活跃、匿名/文件等链表。kswapd 内核线程会周期性地扫描这些链表,将非活跃页面回收。匿名页(如堆内存)会被写入 Swap 分区/文件(由 swap.c 管理),而文件页则可以直接丢弃(因为可以从磁盘重新读取)。
  • 内存压缩 (compaction.cmigrate.c):这是城市的“城市更新与整理部门”。随着内存的不断分配和释放,物理内存会变得碎片化,即使总空闲内存足够,也可能找不到足够大的连续物理块来满足大页(如 HugeTLB)或 DMA 请求。内存压缩(Compaction) 通过将可移动的页面向一端迁移,将空闲页面聚集起来,从而形成更大的连续空闲块。
  • 内存控制组 (memcontrol.c):这是城市的“社区资源配额管理员”。cgroup (Control Group) 是 Linux 的资源隔离机制。memcontrol.c 实现了内存 cgroup,允许系统管理员为一组进程设置内存使用上限。当某个 cgroup 的内存使用量达到其配额时,内核会优先从该 cgroup 中回收页面,甚至触发 OOM Killer 来杀死该组内的进程,防止其耗尽整个系统的内存。
  • 巨页管理 (hugetlb.ckhugepaged.c):这是城市的“大型工业区规划”。标准的 4KB 页面在处理大内存应用(如数据库)时,会导致 TLB(Translation Lookaside Buffer) 缓存频繁失效,产生大量性能开销。巨页(Huge Page,如 2MB 或 1GB)可以显著减少 TLB 压力。hugetlb.c 管理预分配的巨页池,而 khugepaged.c 则实现了 透明巨页(THP) 机制,内核会自动将符合条件的普通 4KB 页面合并成巨页。
  • 共享内存 (shmem.c):这是城市的“公共广场”。shmem.c 实现了基于 tmpfs 的共享内存机制(如 tmpfs 文件系统和 memfd_create)。它允许多个进程通过不同的虚拟地址映射到同一组物理页面,实现高效的进程间通信(IPC)。

1.2 文件大小分析

文件大小往往反映了其实现的复杂度。例如,vmscan.c(页面回收)和 page_alloc.c(页面分配)是最大的文件,说明内存的分配与回收是整个子系统中最核心、逻辑最复杂的部分。memcontrol.c 的巨大体积也凸显了现代容器化环境中资源隔离的重要性。

第二章:核心数据结构关系 - 内存世界的骨架

理解内存管理的关键在于掌握其核心数据结构及其层级关系。

2.1 内存层次结构

想象一个自上而下的金字塔:

  1. mm_struct:位于塔顶,代表一个进程的整个虚拟地址空间。
  2. vm_area_struct (VMA)mm_struct 包含一个红黑树和链表,用于管理多个 VMA。每个 VMA 描述了虚拟地址空间中一个连续的、具有相同属性(如可读、可写、可执行)的区域。
  3. 页表 (PGD -> PMD -> PTE):CPU 的 MMU 通过多级页表将 VMA 中的虚拟地址翻译成物理地址。页表项(PTE)最终指向一个物理页帧。
  4. struct page / struct folio:这是物理内存的基本单位。struct page 是传统描述符,而 struct folio(在较新内核中引入)是对复合页(如 THP)的更高效抽象。
  5. struct zone:物理内存被划分为不同的区域(Zone),如 ZONE_DMA(供老设备使用)、ZONE_NORMAL(常规内存)、ZONE_HIGHMEM(高端内存,在 32 位系统上)。
  6. struct pglist_data (NUMA Node):在 NUMA(非统一内存访问)架构下,系统有多个 CPU 节点,每个节点有自己的本地内存。pglist_data 代表一个 NUMA 节点,它包含该节点下的所有 zone

2.2 关键数据结构文件分布

这些数据结构定义在头文件(如 mm_types.hmmzone.h)中,但它们的生命周期管理和操作逻辑分散在各个 .c 文件中。例如,page_alloc.c 负责 struct page 的分配和释放,而 vmscan.c 则负责将其加入或移出 LRU 链表。

第三章:学习路径建议 - 循序渐进的探索之旅

3.1 初学者路径

学习内存管理切忌一上来就钻牛角尖。推荐以下路径:

  1. 第一阶段:筑基。先通过 mm_init.c 了解内存子系统是如何在内核启动时初始化的。然后重点攻克 page_alloc.c 和 memory.c,理解物理内存如何被管理,以及虚拟地址空间的基本概念。
  2. 第二阶段:内存分配。学习 SLAB/SLUB 分配器(slab.c/slub.c)如何优化小对象分配。同时,通过 mmap.c 理解用户空间的 mmap() 系统调用在内核中是如何实现的。
  3. 第三阶段:内存回收。这是难点也是重点。深入 vmscan.c 的 LRU 算法和 swap.c 的交换机制,理解系统如何在内存压力下“腾笼换鸟”。
  4. 第四阶段:高级特性。此时你已经打下坚实基础,可以探索 memcontrol.c 的 cgroup 控制、hugetlb.c 的巨页优化以及 ksm.c 的内存去重等高级话题。

3.2 快速索引文件

这份索引是你的“急救手册”。当你需要解决特定问题时,可以直接定位到相关文件和函数,例如,想知道 malloc() 底层发生了什么,就去看 page_alloc.c 中的 __alloc_pages()

第四章:核心调用流程 - 内存世界的动态故事

理论需要结合实践。以下是几个关键场景的动态流程:

4.1 页面分配流程
当用户程序调用 malloc() 时,最终会触发内核的 brk 或 mmap 系统调用。内核可能会调用 kmalloc(小对象)或直接调用 __alloc_pages(大块内存)。__alloc_pages 首先尝试快速路径(get_page_from_freelist),如果失败,则进入慢速路径,可能唤醒 kswapd 回收内存、进行内存压缩,甚至在极端情况下触发 OOM Killer。

4.2 页面回收流程
kswapd 后台线程会监控内存水位线。一旦空闲内存低于阈值,它就会被唤醒,调用 balance_pgdat -> shrink_node -> shrink_lruvec,遍历 LRU 链表,将非活跃页面写入 swap(匿名页)或回写到磁盘(脏文件页)。

4.3 缺页处理流程
这是虚拟内存的精髓所在。当 CPU 访问一个无效的虚拟地址时,会触发硬件中断,进入 handle_mm_fault。内核会判断缺页类型:如果是首次访问堆(匿名映射),则分配一个新页;如果是访问 mmap 映射的文件,则调用 filemap_fault 从磁盘读取数据填充页面。

4.4 内存映射流程
mmap() 系统调用的核心是 do_mmap。它会在进程的 mm_struct 中找到一个合适的虚拟地址范围,创建一个新的 VMA,并将其插入红黑树。对于文件映射,它还会关联到文件的 address_space 结构,为后续的按需分页做准备。

第五章:周边交互、调试与实战

这部分内容强调内存管理不是孤立的:

  • 与文件系统:文件页缓存 (filemap.c) 是内存和磁盘之间的桥梁。
  • 与驱动:设备驱动通过 vmalloc 或 dma_map 接口与内存子系统交互。
  • 与进程管理fork 时的写时复制(COW)、exec 时的地址空间替换都离不开 mm/ 的支持。

调试方法 是工程师的必备技能。通过 /proc/meminfo/proc/vmstat 可以实时监控内存状态;利用 ftrace 可以动态跟踪页面分配、回收等事件;kmemleak 和 page_owner 则是排查内存泄漏和追踪页面归属的利器。

常见问题定位 提供了标准化的排查思路,例如通过 buddyinfo 查看内存碎片,通过 vmstat 分析回收行为

第六章:总结与展望

Linux 的内存管理子系统是一个集成了数十年操作系统研究精华的杰作。它不仅要高效地管理有限的物理资源,还要提供虚拟内存、内存保护、资源共享等高级抽象。通过本教材的学习,你应该已经掌握了其核心脉络。未来,你可以直接阅读 Linux 6.6 的 mm/ 源码,去探索更多精妙的实现细节。

最新文章

随机文章

基本 文件 流程 错误 SQL 调试
  1. 请求信息 : 2026-02-07 13:31:52 HTTP/2.0 GET : https://f.mffb.com.cn/a/470280.html
  2. 运行时间 : 0.404897s [ 吞吐率:2.47req/s ] 内存消耗:4,660.10kb 文件加载:140
  3. 缓存信息 : 0 reads,0 writes
  4. 会话信息 : SESSION_ID=34542382722d8117dd419c794d3a8708
  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.001152s ] mysql:host=127.0.0.1;port=3306;dbname=f_mffb;charset=utf8mb4
  2. SHOW FULL COLUMNS FROM `fenlei` [ RunTime:0.001460s ]
  3. SELECT * FROM `fenlei` WHERE `fid` = 0 [ RunTime:0.011188s ]
  4. SELECT * FROM `fenlei` WHERE `fid` = 63 [ RunTime:0.007059s ]
  5. SHOW FULL COLUMNS FROM `set` [ RunTime:0.001404s ]
  6. SELECT * FROM `set` [ RunTime:0.000763s ]
  7. SHOW FULL COLUMNS FROM `article` [ RunTime:0.001524s ]
  8. SELECT * FROM `article` WHERE `id` = 470280 LIMIT 1 [ RunTime:0.001745s ]
  9. UPDATE `article` SET `lasttime` = 1770442312 WHERE `id` = 470280 [ RunTime:0.015661s ]
  10. SELECT * FROM `fenlei` WHERE `id` = 67 LIMIT 1 [ RunTime:0.000707s ]
  11. SELECT * FROM `article` WHERE `id` < 470280 ORDER BY `id` DESC LIMIT 1 [ RunTime:0.019429s ]
  12. SELECT * FROM `article` WHERE `id` > 470280 ORDER BY `id` ASC LIMIT 1 [ RunTime:0.009007s ]
  13. SELECT * FROM `article` WHERE `id` < 470280 ORDER BY `id` DESC LIMIT 10 [ RunTime:0.059928s ]
  14. SELECT * FROM `article` WHERE `id` < 470280 ORDER BY `id` DESC LIMIT 10,10 [ RunTime:0.046079s ]
  15. SELECT * FROM `article` WHERE `id` < 470280 ORDER BY `id` DESC LIMIT 20,10 [ RunTime:0.040393s ]
0.407195s