Go to file
Jesper Dangaard Brouer c76490bffc net: page_pool: use alloc_pages_bulk in refill code path
There are cases where the page_pool need to refill with pages from the
page allocator.  Some workloads cause the page_pool to release pages
instead of recycling these pages.

For these workload it can improve performance to bulk alloc pages from the
page-allocator to refill the alloc cache.

For XDP-redirect workload with 100G mlx5 driver (that use page_pool)
redirecting xdp_frame packets into a veth, that does XDP_PASS to create an
SKB from the xdp_frame, which then cannot return the page to the
page_pool.

Performance results under GitHub xdp-project[1]:
 [1] https://github.com/xdp-project/xdp-project/blob/master/areas/mem/page_pool06_alloc_pages_bulk.org

Mel: The patch "net: page_pool: convert to use alloc_pages_bulk_array
variant" was squashed with this patch. From the test page, the array
variant was superior with one of the test results as follows.

	Kernel		XDP stats       CPU     pps           Delta
	Baseline	XDP-RX CPU      total   3,771,046       n/a
	List		XDP-RX CPU      total   3,940,242    +4.49%
	Array		XDP-RX CPU      total   4,249,224   +12.68%

Link: https://lkml.kernel.org/r/20210325114228.27719-10-mgorman@techsingularity.net
Signed-off-by: Jesper Dangaard Brouer <brouer@redhat.com>
Signed-off-by: Mel Gorman <mgorman@techsingularity.net>
Reviewed-by: Alexander Lobakin <alobakin@pm.me>
Cc: Alexander Duyck <alexander.duyck@gmail.com>
Cc: Christoph Hellwig <hch@infradead.org>
Cc: Chuck Lever <chuck.lever@oracle.com>
Cc: David Miller <davem@davemloft.net>
Cc: Ilias Apalodimas <ilias.apalodimas@linaro.org>
Cc: Matthew Wilcox (Oracle) <willy@infradead.org>
Cc: Vlastimil Babka <vbabka@suse.cz>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Signed-off-by: hongrongxuan <hongrongxuan@huawei.com>
2024-06-12 13:16:57 +08:00
Documentation asm-generic: introduce io_stop_wc() and add implementation for ARM64 2024-06-12 13:16:50 +08:00
LICENSES LICENSES: Rename other to deprecated 2019-05-03 06:34:32 -06:00
arch asm-generic: introduce io_stop_wc() and add implementation for ARM64 2024-06-12 13:16:50 +08:00
block tkernel: sync code to the same with tk4 pub/lts/0017-kabi 2024-06-12 13:13:20 +08:00
certs tkernel: sync code to the same with tk4 pub/lts/0017-kabi 2024-06-12 13:13:20 +08:00
crypto tkernel: sync code to the same with tk4 pub/lts/0017-kabi 2024-06-12 13:13:20 +08:00
dist dist: provide kernel version info in kernel*core*.rpm 2024-06-12 13:16:35 +08:00
drivers net: page_pool: API cleanup and comments 2024-06-12 13:16:53 +08:00
fs tkernel: sync code to the same with tk4 pub/lts/0017-kabi 2024-06-12 13:13:20 +08:00
include net: page_pool: use alloc_pages_bulk in refill code path 2024-06-12 13:16:57 +08:00
init Kconfig: disable BT_SCHED and ZRAM_MEMCG 2024-06-12 13:16:36 +08:00
ipc tkernel: sync code to the same with tk4 pub/lts/0017-kabi 2024-06-12 13:13:20 +08:00
kernel tkernel: sync code to the same with tk4 pub/lts/0017-kabi 2024-06-12 13:13:20 +08:00
lib tkernel: sync code to the same with tk4 pub/lts/0017-kabi 2024-06-12 13:13:20 +08:00
mm mm/page_alloc: inline __rmqueue_pcplist 2024-06-12 13:16:56 +08:00
net net: page_pool: use alloc_pages_bulk in refill code path 2024-06-12 13:16:57 +08:00
package tkernel: sync code to the same with tk4 pub/lts/0017-kabi 2024-06-12 13:13:20 +08:00
samples tkernel: sync code to the same with tk4 pub/lts/0017-kabi 2024-06-12 13:13:20 +08:00
scripts tkernel: sync code to the same with tk4 pub/lts/0017-kabi 2024-06-12 13:13:20 +08:00
security tkernel: sync code to the same with tk4 pub/lts/0017-kabi 2024-06-12 13:13:20 +08:00
sound tkernel: sync code to the same with tk4 pub/lts/0017-kabi 2024-06-12 13:13:20 +08:00
tools tkernel: sync code to the same with tk4 pub/lts/0017-kabi 2024-06-12 13:13:20 +08:00
usr tkernel: add base tlinux kernel interfaces 2024-06-11 20:09:33 +08:00
virt tkernel: sync code to the same with tk4 pub/lts/0017-kabi 2024-06-12 13:13:20 +08:00
.clang-format tkernel: sync code to the same with tk4 pub/lts/0017-kabi 2024-06-12 13:13:20 +08:00
.cocciconfig
.get_maintainer.ignore Opt out of scripts/get_maintainer.pl 2019-05-16 10:53:40 -07:00
.gitattributes ock: sync codes to ock 5.4.119-20.0009.21 2024-06-11 20:27:38 +08:00
.gitignore ock: sync codes to ock 5.4.119-20.0009.21 2024-06-11 20:27:38 +08:00
.mailmap tkernel: sync code to the same with tk4 pub/lts/0017-kabi 2024-06-12 13:13:20 +08:00
COPYING COPYING: use the new text with points to the license files 2018-03-23 12:41:45 -06:00
CREDITS MAINTAINERS: Remove Simon as Renesas SoC Co-Maintainer 2019-10-10 08:12:51 -07:00
Kbuild kbuild: do not descend to ./Kbuild when cleaning 2019-08-21 21:03:58 +09:00
Kconfig docs: kbuild: convert docs to ReST and rename to *.rst 2019-06-14 14:21:21 -06:00
MAINTAINERS tkernel: sync code to the same with tk4 pub/lts/0017-kabi 2024-06-12 13:13:20 +08:00
Makefile tkernel: sync code to the same with tk4 pub/lts/0017-kabi 2024-06-12 13:13:20 +08:00
README Drop all 00-INDEX files from Documentation/ 2018-09-09 15:08:58 -06:00
README.md tkernel: sync code to the same with tk4 pub/lts/0017-kabi 2024-06-12 13:13:20 +08:00
backport_remove_lists.txt tkernel: add base tlinux kernel interfaces 2024-06-11 20:09:33 +08:00
tools_key.pub tkernel: add base tlinux kernel interfaces 2024-06-11 20:09:33 +08:00

README.md

Tencent Linux Kernel 4.0

一、项目介绍 README

wiki空间
TK (TencentOS kernel)是腾讯OS团队自研的TencentOS内核将最新的Linux创新推向市场
为企业各类软件提供了超强性能、高可伸缩性和可靠性。

生命周期

TK4基于社区5.4 longterm2020年发布2025年12月31日停止维护。
image.png

  • 开发阶段:内核发布前的内部构建、准备、开发阶段。
  • 全面支持会持续开发、回合新特性、定期对其上游Bug Fix。
  • 扩展支持主要对齐上游bug fix patch以稳定运行为主。
    TK4各版本changelog信息

二、快速上手 Getting Started

1、config

本地编译前需要按照服务器类型准备好对应config文件服务器编译可以跳过该部分

  • 标准 X86 config路径
package/default/config.default   
  • 标准 ARM config路径
package/arm/config.default   

2、构建&安装镜像

  • 本地编译
make -j[x] # 编译   
make modules_install install # 安装  
  • Tmanger编译
    tmanger 在下拉菜单中选择对应仓库等会自动进行编译成功后会生成对应rpm压缩包。 执行如下指令安装
rpm -ivh *.rpm

头文件rpm包最好使用-Uvh方式安装


三、常见问题

详细各模块问题: 常见问题总结

  • TK现网问题负责人
    tlinux_helperfrankjpliu, shookliusamuelliaoalexsshi。
  • 如何查看内核版本
uname -r

4、行为准则

1、合入准则

TK采用TKCI保证合入代码的初步检测。 TKCI 是tkernel 自动CI系统 它可以自动监测TKERNEL https://git.woa.com/tlinux/tkernel4 仓库任意push 并对pushed commit/branch, 自动启动13个蓝盾测试包括一个 commit 规范检查12个内核不同config build测试并支持TKCONFIG 内核准入测试711case未来还会支持更多。 TK4合入准则

2、MR请求

各领域Reviewer

  • 现网运营问题: samuelliao(廖生苗)
  • TK通用Bug kaixuxia(夏开旭)
  • 如意相关问题: herberthbli(李弘博)
  • 悟能相关问题: aurelianliu(刘诗)
  • TK规范问题: alexsshi(时奎亮)
  • BPF工具问题: haisuwang(王海粟)
    (或可联系内核研发组任意同学)

五、如何加入 How To Join

  • 专职开发
    企微联系jasperwang(王佳)
  • Bug提交
    可以MR方式提交并联系前文提到的同学

六、团队介绍 Members

1、总览

image.png

2、新特性

悟能

悟能wiki空间
悟能(简称ECO),目前基于x86 corec-state、uncore duf两部分硬件节能。例如x86 cpu c-state来做能效架构设计。以x86为例在操作系统层面通过电源管理、cpu idle子系统、调度器子系统、中断子系统等使cpu空闲并且使其进入深度睡眠c6 state从而达到节能的目的。悟能的当前目标是保证性能的前提下争取节能。二期也就是现在到明年的目标是提高性能的前提下争取节能。

如意

如意wiki空间
如意TencentOS RUE(Resource Utilization Enhancement)是TencentOS产品矩阵中一款专为云原生场景下服务器资源QoS设计提升资源利用率降低运营成本的产品。如意是统一调度分配云上机器的CPU、IO、网络、内存等资源相比传统的服务器资源管理方案如意更适用于云场景能够显著提升云上机器的资源使用效率降低云上客户的运营成本为公有云、混合云、私有云等客户提供资源增值服务。

七、版本规划及changelog

1、版本规划

版本规划详见: https://iwiki.woa.com/pages/viewpage.action?pageId=4007003111

2、changelog

changelog详见 https://iwiki.woa.com/pages/viewpage.action?pageId=4007003117