如何计算某个进程使用的 Hugepage Size (Doc ID 2493079.1)

How to Calculate Hugepage Size Which is Used by a Certain Process (Doc ID 2493079.1)

APPLIES TO:

Linux OS - Version Oracle Linux 5.8 with Unbreakable Enterprise Kernel [2.6.39] and later
Linux x86-64
Linux x86

GOAL

 This document describes how to calculate the size of Hugepages which are used by a certain process.

本文档介绍了如何计算特定进程使用的大页面的大小

SOLUTION

 There is no OS command which shows the used size of Hugepages for processes individually.  没有OS命令显示单个进程使用的大页面大小。

 However, Hugepages which are used by a process can be checked by reading /proc/<PID>/smaps. This file shows memory range, used size and its page size which a process is using, for every memory range. Actual used size of Hugepages for the process needs to be calcurated via the file.  但是,可以通过读取/proc/<PID>/smaps来检查进程使用的大页面。该文件显示每个内存范围的内存范围,已用大小及其进程正在使用的页面大小。该进程实际使用的大页面大小需要通过文件计算。

 For example, /proc/<PID>/smaps shows:

(snip)
0d2bf000-0d301000 rw-p 00000000 00:00 0 [heap]
Size: 264 kB
Rss: 228 kB
Pss: 228 kB
Shared_Clean: 0 kB
Shared_Dirty: 0 kB
Private_Clean: 0 kB
Private_Dirty: 228 kB
Referenced: 228 kB
Anonymous: 228 kB
AnonHugePages: 0 kB
Swap: 0 kB
KernelPageSize: 4 kB
MMUPageSize: 4 kB
Locked: 0 kB
VmFlags: rd wr mr mw me ac sd
60000000-6c000000 rw-s 00000000 00:0f 360457 /SYSV00000000 (deleted)
Size: 196608 kB
Rss: 0 kB
Pss: 0 kB
Shared_Clean: 0 kB
Shared_Dirty: 0 kB
Private_Clean: 0 kB
Private_Dirty: 0 kB
Referenced: 0 kB
Anonymous: 0 kB
AnonHugePages: 0 kB
Swap: 0 kB
KernelPageSize: 2048 kB
MMUPageSize: 2048 kB
Locked: 0 kB
VmFlags: rd wr sh mr mw me ms de ht sd
6c000000-2b0000000 rw-s 00000000 00:0f 393226 /SYSV00000000 (deleted)
Size: 9502720 kB
Rss: 0 kB
Pss: 0 kB
Shared_Clean: 0 kB
Shared_Dirty: 0 kB
Private_Clean: 0 kB
Private_Dirty: 0 kB
Referenced: 0 kB
Anonymous: 0 kB
AnonHugePages: 0 kB
Swap: 0 kB
KernelPageSize: 2048 kB
MMUPageSize: 2048 kB
Locked: 0 kB
VmFlags: rd wr sh mr mw me ms de ht sd
(snip)

 Used Hugepage size can be calculated by summing the "Size:" of the range which has "KernelPageSize: 2048 kB". In above example, this process has Hugepage used 196608 kB + 9502720 kB = 9699328 kB. Note that there can be some of Hugepage memory ranges in one process, thus all of the "Size:" of the Hugepage range needs to be summed.  

可以通过对具有"KernelPageSize: 2048 kB"的范围的 "Size:" 求和来计算使用的Hugepage大小。在上面的示例中,此过程使用了196608 kB + 9502720 kB = 9699328 kB的Hugepage。请注意,在一个进程中可能会有一些Hugepage内存范围,因此需要对Hugepage范围的所有"Size:"进行求和。

 Here is a sample command line which sums all of "Size:" of Hugepage range of PID 299473:

这是一个示例命令行,其对PID 299473的Hugepage 范围的所有"Size:"求和:

# grep -E -B 11 "KernelPageSize:[ ]*2048 kB" /proc/299473/smaps | awk 'BEGIN{sum=0} $1=="Size:" {sum+=$2} END{print sum}'

 

 Note that Hugepage is not included into RSS of ps output but included into VSS as the memory range above shows "Rss: 0 kB", although Hugepage will never be swapped out.

 

 Note that one Hugepage range can be shared by several processes. Thus, summing the Hugepage usage of each processes can be over the total Hugepage usage of the system which is observed in /proc/meminfo.

 

REFERENCES


NOTE:361323.1 - HugePages on Linux: What It Is... and What It Is Not...

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值