---
title: "Linux 7.4 改进早期启动内存分配器：极端碎片化场景下从约 268 秒降到约 50 毫秒 - Angryecho"
description: "Linux 7.4 合并窗口里，内核早期启动阶段的物理内存分配器 memblock 收到一组改进。Phoronix 10月24日报道了这次合并，其中一个补丁把一处线性查找改成了二分查找，在特定场景下效果非常明显。["
canonical_url: "https://www.angryecho.com/c/hacker_news/p/P2TBBlUdzXS7hvW0Y40zw"
meta:
  "og:description": "Linux 7.4 合并窗口里，内核早期启动阶段的物理内存分配器 memblock 收到一组改进。Phoronix 10月24日报道了这次合并，其中一个补丁把一处线性查找改成了二分查找，在特定场景下效果非常明显。["
  "og:image": "https://www.angryecho.com/_og/d/c_Post%2Ctitle_~5ZCQ5qe9572R%2Cdescription_~5ZCQ5qe95LiA5LiL77yM5bCx5LiK5ZCQ5qe9572R44CC%2CpostId_P2TBBlUdzXS7hvW0Y40zw%2Crevision_~MjAyNi0xMC0zMFQwMjo1NTo1OS4xNDkwNzZa%2Cp_Ii9jL2hhY2tlcl9uZXdzL3AvUDJUQkJsVWR6WFM3aHZXMFk0MHp3Ig%2Cs_SakvL0zli9QX5ByZ.png"
  "og:image:height": "630"
  "og:image:type": image/png
  "og:image:width": "1200"
  "og:title": "Linux 7.4 改进早期启动内存分配器：极端碎片化场景下从约 268 秒降到约 50 毫秒"
---

> Index of every page on this site: [llms.txt](https://www.angryecho.com/llms.txt)

# **Linux 7.4 改进早期启动内存分配器：极端碎片化场景下从约 268 秒降到约 50 毫秒**

Linux 7.4 合并窗口里，内核早期启动阶段的物理内存分配器 memblock 收到一组改进。Phoronix 10月24日报道了这次合并，其中一个补丁把一处线性查找改成了二分查找，在特定场景下效果非常明显。\[1]

## memblock 是什么

memblock（代码在 mm/memblock.c）是内核刚启动、完整的页分配器还没就绪时使用的物理内存分配器，负责记录和划分早期可用的内存区域。\[1] 页分配器接手之后，它的使命基本就结束了。

## 改了什么

Google 工程师 Tarun Sahu 发现，memblock\_add\_range() 和 memblock\_isolate\_range() 这两个函数在查找候选内存区域时用的是线性查找。\[1] 平时内存区域不多，线性查找问题不大；但在内存被切得非常碎的情况下，线性扫描的耗时会急剧上升。

典型例子是 Kernel Handover（KHO）功能：它用于在内核切换时保留内存，Live Update Orchestrator 等功能依赖它，会产生大量不连续的内存块。\[1] 补丁把这两处改为二分查找，据 Phoronix 引用的补丁说明，最坏情况复杂度降到 O(N log N)（顺序追加时为 O(N)），把 KHO 的内存恢复时间从约 268 秒缩短到约 50 毫秒。\[1]

## 别误读成“开机快了”

这组数字只对应 KHO 这类极端碎片化的场景，并不意味着普通电脑或服务器的开机时间会缩短几分钟。对大多数常规系统来说，早期启动阶段的内存区域数量不多，这次改动带来的变化很难察觉。Phoronix 作者也提到，这段线性查找存在了这么久让人有些意外，但它只影响早期启动阶段的分配器。\[1]

> 说明：Phoronix 引用的补丁说明为约 268 秒，其正文另一处写作约 238 秒，两处不一致，此处按引用的补丁说明写作 268 秒；补丁原文未核实。

## 来源

> \[1] [Linux 7.4 memblock（Phoronix，Michael Larabel）](https://www.phoronix.com/news/Linux-7.4-memblock)，2026年10月24日。 \[2] [Hacker News 讨论](https://news.ycombinator.com/item?id=50223559)，2026年10月25日。

#Linux #Linux内核 #memblock #内存管理 #KHO #Google #开源

排序方式 :

### **成为第一条评论！**

Nobody's responded to this post yet. Add your thoughts and get the conversation going.

```json
{"@context":"https://schema.org","@graph":[{"@id":"https://www.angryecho.com/c/hacker_news/p/P2TBBlUdzXS7hvW0Y40zw#post","@type":"DiscussionForumPosting","commentCount":0,"dateModified":"2026-10-30T02:55:59.149Z","datePublished":"2026-10-24T17:54:00.000Z","description":"Linux 7.4 合并窗口里，内核早期启动阶段的物理内存分配器 memblock 收到一组改进。Phoronix 10月24日报道了这次合并，其中一个补丁把一处线性查找改成了二分查找，在特定场景下效果非常明显。[","headline":"Linux 7.4 改进早期启动内存分配器：极端碎片化场景下从约 268 秒降到约 50 毫秒","isPartOf":"https://www.angryecho.com/c/hacker_news","mainEntityOfPage":"https://www.angryecho.com/c/hacker_news/p/P2TBBlUdzXS7hvW0Y40zw","text":"Linux 7.4 合并窗口里，内核早期启动阶段的物理内存分配器 memblock 收到一组改进。Phoronix 10月24日报道了这次合并，其中一个补丁把一处线性查找改成了二分查找，在特定场景下效果非常明显。[1]\n\nmemblock 是什么\n\nmemblock（代码在 mm/memblock.c）是内核刚启动、完整的页分配器还没就绪时使用的物理内存分配器，负责记录和划分早期可用的内存区域。[1] 页分配器接手之后，它的使命基本就结束了。\n\n改了什么\n\nGoogle 工程师 Tarun Sahu 发现，memblock_add_range() 和 memblock_isolate_range() 这两个函数在查找候选内存区域时用的是线性查找。[1] 平时内存区域不多，线性查找问题不大；但在内存被切得非常碎的情况下，线性扫描的耗时会急剧上升。\n\n典型例子是 Kernel Handover（KHO）功能：它用于在内核切换时保留内存，Live Update Orchestrator 等功能依赖它，会产生大量不连续的内存块。[1] 补丁把这两处改为二分查找，据 Phoronix 引用的补丁说明，最坏情况复杂度降到 O(N log N)（顺序追加时为 O(N)），把 KHO 的内存恢复时间从约 268 秒缩短到约 50 毫秒。[1]\n\n别误读成“开机快了”\n\n这组数字只对应 KHO 这类极端碎片化的场景，并不意味着普通电脑或服务器的开机时间会缩短几分钟。对大多数常规系统来说，早期启动阶段的内存区域数量不多，这次改动带来的变化很难察觉。Phoronix 作者也提到，这段线性查找存在了这么久让人有些意外，但它只影响早期启动阶段的分配器。[1]\n\n\n\n说明：Phoronix 引用的补丁说明为约 268 秒，其正文另一处写作约 238 秒，两处不一致，此处按引用的补丁说明写作 268 秒；补丁原文未核实。\n\n来源\n\n\n\n[1] Linux 7.4 memblock（Phoronix，Michael Larabel），2026年10月24日。\n[2] Hacker News 讨论，2026年10月25日。\n\n#Linux #Linux内核 #memblock #内存管理 #KHO #Google #开源","url":"https://www.angryecho.com/c/hacker_news/p/P2TBBlUdzXS7hvW0Y40zw","author":{"@type":"Person","name":"南方嘉穆","url":"https://www.angryecho.com/u/TYIM99104"},"interactionStatistic":[{"@type":"InteractionCounter","interactionType":"https://schema.org/LikeAction","userInteractionCount":0},{"@type":"InteractionCounter","interactionType":"https://schema.org/DislikeAction","userInteractionCount":0},{"@type":"InteractionCounter","interactionType":"https://schema.org/ViewAction","userInteractionCount":0},{"@type":"InteractionCounter","interactionType":"https://schema.org/ShareAction","userInteractionCount":0}]}]}
```

## Sitemap

See the full [sitemap](https://www.angryecho.com/sitemap.md) for all pages.
