如何通过示例检查Linux中每个进程的透明HugePage使用情况
如何查看系统上实际使用的透明大页面的数量(全局或者单个进程)?如何在Linux中检查每个进程的透明大页使用情况。
如何检查哪个应用程序或者进程使用了多少HugePages。如何查找每个进程的大页面利用率。
在本文中,我将通过示例分享"检查Linux中每个进程的透明HugePage使用情况的步骤"。
首先,我们必须检查系统是否配置了大页面:
# grep -i huge /proc/meminfo AnonHugePages: 835584 kB HugePages_Total: 12850 HugePages_Free: 13 HugePages_Rsvd: 0 HugePages_Surp: 0 Hugepagesize: 2048 kB
可以使用下面的方法来计算使用过的大页面。
HugePages_Total- HugePages_Free = HugePages_Used
检查系统范围内的透明HugePage使用情况
在我们检查每个进程的透明大页之前,让我们检查系统妻子THP的使用情况。通过阅读/proc/meminfo
中的AnonHugePages
字段,可以获得系统当前使用的匿名透明大页面的数量。
# grep AnonHugePages /proc/meminfo AnonHugePages: 835584 kB
检查每个进程的透明HugePage使用情况
/proc/[pid]/smaps(自Linux 2.6.14起)显示了每个进程映射的内存消耗。对于每个映射,都有一系列的线。
为了确定哪些应用程序正在使用匿名透明大页面,必须读取/proc/PID/smaps并计算每个映射的AnonHugePages字段。 AnonHugePages显示透明大页面支持的内存量。如果我们已经具有要收集其THP使用情况的过程信息
# grep -e AnonHugePages /proc/10723/smaps | awk '{ if(>4) print# grep -e AnonHugePages /proc/10723/smaps | awk '{ if(>4) print} ' | awk -F "/" '{print ##代码##; system("ps -fp 10723")} ' AnonHugePages: 2048 kB UID PID PPID C STIME TTY TIME CMD polkitd 10723 1 0 Jul29 ? 00:00:08 /usr/lib/polkit-1/polkitd --no-debug AnonHugePages: 6144 kB UID PID PPID C STIME TTY TIME CMD polkitd 10723 1 0 Jul29 ? 00:00:08 /usr/lib/polkit-1/polkitd --no-debug# grep -e AnonHugePages /proc/10709/smaps | awk '{ if(>4) print} ' | awk -F "/" '{print ##代码##; system("ps -fp 10723 -o comm=")} ' AnonHugePages: 2048 kB polkitd AnonHugePages: 6144 kB polkitd# grep -e AnonHugePages /proc/*/smaps | awk '{ if(>4) print ##代码##} ' | awk -F "/" '{print ##代码##; system("ps -fp " )} '} ' | awk -F ":" '{print }' | awk '{Total+=} END {print "Total AnonHugePages: " Total" Kb -"}' | awk -F "/" '{printf ##代码##; system("ps -fp 10709 -o comm= ")} ' Total AnonHugePages: 6144 Kb -polkitd
提示:
可以通过阅读/proc/meminfo
中的ShmemPmdMapped
和ShmemHugePages
字段来获得映射到用户空间的文件透明大页面的数量。为了确定哪些应用程序正在映射文件透明大页面,必须读取/proc/PID/smaps并为每个映射计数FileHugeMapped字段。
这里的" 10723"是我希望获得透明大页面用法的PID。要仅获取有关命令的有限(简要)信息,我们将使用-o comm ="
##代码##另请阅读:
如何禁用透明大页面(CentOS/RHEL 7)如何在Linux中检查透明大页面状态(禁用或者启用)?
因此,对于" polkitd"过程的两个映射,我看到它正在使用透明的大页面。现在,要获取此过程的THP使用总量,我们可以运行以下命令
##代码##在使用THP的系统上检查每个进程(对于所有进程)的透明大页使用情况
##代码##