---
title: 内核CRC32优化
description: "CRC32算法在网络通信、存储等方面常用于数据正确性校验。以网络通信方面为例，在收到网络包之后，先通过CRC32算法计算校验值，并与收到的CRC32值做对比，以确定数据的完整性。"
url: https://www.hikunpeng.com/document/detail/zh/perftuning/tuningtip/kunpengtuning_12_0077.html
sourcePath: /source/zh/perftuning/tuningtip/kunpengtuning_12_0077.html
indexId: f2d62980c8ffcbb7a7263f55b21f9dc87795399aa16e26cc262fe0e0bf9fa0ec58
---
# 内核CRC32优化

#### 原理

CRC32算法在网络通信、存储等方面常用于数据正确性校验。以网络通信方面为例，在收到网络包之后，先通过CRC32算法计算校验值，并与收到的CRC32值做对比，以确定数据的完整性。

Linux内核（4.14）包含了CRC32算法的C语言实现，但是性能较低，可能会成为性能瓶颈。同时，在高版本内核（5.0以上版本），已经合入AArch64架构下的CRC指令实现。当内核态中CRC32函数调用占比很高，成为瓶颈时，可以考虑合入该实现，提升性能。

内核态CRC32占比高火焰图如图1所示。

图1 内核态CRC32占比高火焰图


#### 修改方式

修改方式可以参考：Linux内核态CRC32算法优化。

修改后需要重新编译内核，详情可参考：操作系统内核源码编译。
