---
title: 调整内存页大小
description: "TLB（Translation lookaside buffer）为页表（存放虚拟地址的页地址和物理地址的页地址的映射关系）在CPU内部的高速缓存。TLB的命中率越高，页表查询性能就越好。"
url: https://www.hikunpeng.com/document/detail/zh/kunpenghpcs/hpcindapp/tngg/kunpenghpcsolution_05_0012.html
sourcePath: /source/zh/kunpenghpcs/hpcindapp/tngg/kunpenghpcsolution_05_0012.html
indexId: 375af6dff0ae0226029ea2bc5cdd1f43aa786db2ecc8cbbb6258c1eace3f989769
---
# 调整内存页大小

#### 原理

TLB（Translation lookaside buffer）为页表（存放虚拟地址的页地址和物理地址的页地址的映射关系）在CPU内部的高速缓存。TLB的命中率越高，页表查询性能就越好。

TLB的一行为一个页的映射关系，也就是管理了一个页大小的内存：

TLB管理的内存大小 = TLB行数 x 内存的页大小。

同一个CPU的TLB行数固定，因此内存页越大，管理的内存越大，相同业务场景下的TLB命中率就越高。

ARMv8平台一般设置PAGE SIZE 64KB，可以提升TLB命中率。


#### 验证方法

1. 执行以下命令查看内存页大小，默认显示数值单位是B。

```
getconf -a | grep PAGESIZE
```


  输出结果样例如下所示。

```
PAGESIZE       65536
```


#### 使用方法

修改前后可以执行以下命令观察TLB的命中率（$PID为进程ID）：

perf stat -p $PID -d -d -d

输出结果包含如下信息，其中1.21%和0.59%分别表示数据的miss率和指令的miss率。

```
1,090,788,717      dTLB-loads                #  520.592 M/sec
13,213,603      dTLB-load-misses          #    1.21% of all dTLB cache hits
669,485,765      iTLB-loads                #  319.520 M/sec
3,979,246      iTLB-load-misses          #    0.59% of all iTLB cache hits
```

如果PAGESIZE大小不为64KB，需要修改Linux内核编译选项，并重新编译。

1. 执行以下命令重新编译。

```
make menuconfig
```


2. 选择PAGESIZE大小为64K。
  Kernel Features-->Page size(64KB)

3. 编译和安装内核。
