RHEL で hugepage の使用量と、何に使用されているかを確認する
Environment
- Red Hat Enterprise Linux 5
- Red Hat Enterprise Linux 6
Issue
- システムの hugepage が何に使用されているかを確認するにはどうしたら良いですか?
- 指定したプロセスで使用される hugepage のサイズを計算するにはどうしたら良いですか?
Resolution
カーネルの観点
-
最初に、現在の hugepage の使用量を確認します。
[root@server ~]# grep HugePages_ /proc/meminfo HugePages_Total: 16299 HugePages_Free: 7764 HugePages_Rsvd: 5330 HugePages_Surp: 0 -
次に、未使用分のページを引いて使用中のページ量を計算し、それに予約ページを足します。したがって、割り当てられたページの計算式は
Total - Free + Rsvdになります。16299 - 7764 + 5330 = 13865 -
割り当てられたページを 2048 で掛けます (2048 は 1 ページのキロバイト数です)。
13865 x 2048 = 28,395,520 キロバイト -
キロバイトをバイトに変換したい場合は、さらに 1024 を掛けます (1 キロバイト = 1024 バイト)。
28395520 x 1024 = 29,077,012,480 バイト
メモリーの使用先
- 共有の hugepage メモリーは簡単に数値化することができます。以下のように行います。
-
使用中の共有メモリーを一覧表示します。
[root@rfreire sys]# ipcs -m ------ Shared Memory Segments -------- key shmid owner perms bytes nattch status 0x00000000 163840 oracle 640 14680064 50 0x00000000 196609 oracle 640 2499805184 50 0x27126a4c 229378 oracle 640 2097152 50 0x00000000 5636099 oracle 640 33554432 58 0x00000000 5668868 oracle 640 4160749568 58 [...] -
(
ipcs -m|awk '{ print $5}'|awk '{a+=$0}END{print a}'コマンドで) 5 列目の合計を算出し、/proc/meminfohugepage 情報と比較します (上述の手順を参照)。値が一致したら、共有されているメモリーは hugepage だけとなります。値が大きい場合は、通常の 4 キロバイトのページが使用中のメモリーも共有しています。/proc/meminfoの hugepage 値 (バイト単位) からこの合計を引くと、通常の 4 キロバイトページのうち、どのぐらいを持っているかを確認できます。
-
hugepage ファイルシステムを使用しているかどうかを確認します。
/proc/mountsで huge を grep します。[root@server ~]# grep -i huge /proc/mounts none /hugepages hugetlbfs rw,relatime 0 0 -
ただし、ここで、たとえば
qemu-kvmで使用されているプライベートの hugetlbfs ページを数値化する方法はありません。
特定のプロセスで使用される hugepage のサイズを計算する方法
- 以下のコマンドを使用して、指定したプロセスで使用される hugepage のサイズを計算することができます。HugePage のサイズが 2048 kB とすると、出力の単位 MiB となります。
grep -B 11 'KernelPageSize: 2048 kB' /proc/[PID]/smaps | grep "^Size:"| awk 'BEGIN{sum=0}{sum+=$2}END{print sum/1024}'
- 注意: /proc/[PID]/smaps で同じアドレスを二重にカウントしないようにしてください。
This solution is part of Red Hat’s fast-track publication program, providing a huge library of solutions that Red Hat engineers have created while supporting our customers. To give you the knowledge you need the instant it becomes available, these articles may be presented in a raw and unedited form.
Welcome! Check out the Getting Started with Red Hat page for quick tours and guides for common tasks.
