解释 top 实用程序中的交换
Interpreting swap in top utility
我怀疑我的 MySQL 盒子里有一些交换活动。我 运行 "top" 实用程序只给了我 51MB 的交换空间。
然而,当我在top实用程序中启用"Swap"列时,它显示实际上有12g的交换空间被mysqld使用。
你能告诉我哪个是准确的信息吗?是否有交换发生?
编辑: 根据我的阅读,top 输出中的 SWAP 列实际上只是 VIRT - RES
。假设部分流程已被换出。很难或不可能准确衡量给定进程使用了多少交换空间。
如果您使用的是 Linux 或支持 /proc
的 UNIX 变种之一,您可以使用它来获取实际使用情况:
cat /proc/18810/status
(其中 18810 是您的 mysqld 进程的 PID。)
它将向您显示一堆实际内存使用情况的字段。这是我的开发 VM 中 mysqld 进程的一个例外:
VmPeak: 3258116 kB
VmSize: 3258116 kB
VmLck: 1416344 kB
VmHWM: 1180788 kB
VmRSS: 1180780 kB
VmData: 3189940 kB
VmStk: 88 kB
VmExe: 11608 kB
VmLib: 7312 kB
VmPTE: 2540 kB
VmSwap: 0 kB
0的VmSwap表示当前没有使用任何swap。
有关其他字段的信息,请参阅 http://man7.org/linux/man-pages/man5/proc.5.html 或 man 5 proc
。手册部分说:
- VmSwap: Swapped-out virtual memory size by anonymous private pages; shmem swap usage is not included (since Linux 2.6.34).
回复您的评论:
显然您使用的 Linux 版本太旧,无法在 per-process 状态中包含 VmSwap 字段。
您可以阅读 /proc/meminfo 并找出服务器上正在使用的总交换 space,但这不会告诉您每个进程。
您还可以 运行 vmstat 监视交换 activity。如果 "si" 和 "so" 字段为零,则没有问题。
我怀疑我的 MySQL 盒子里有一些交换活动。我 运行 "top" 实用程序只给了我 51MB 的交换空间。
然而,当我在top实用程序中启用"Swap"列时,它显示实际上有12g的交换空间被mysqld使用。
你能告诉我哪个是准确的信息吗?是否有交换发生?
编辑: 根据我的阅读,top 输出中的 SWAP 列实际上只是 VIRT - RES
。假设部分流程已被换出。很难或不可能准确衡量给定进程使用了多少交换空间。
如果您使用的是 Linux 或支持 /proc
的 UNIX 变种之一,您可以使用它来获取实际使用情况:
cat /proc/18810/status
(其中 18810 是您的 mysqld 进程的 PID。)
它将向您显示一堆实际内存使用情况的字段。这是我的开发 VM 中 mysqld 进程的一个例外:
VmPeak: 3258116 kB
VmSize: 3258116 kB
VmLck: 1416344 kB
VmHWM: 1180788 kB
VmRSS: 1180780 kB
VmData: 3189940 kB
VmStk: 88 kB
VmExe: 11608 kB
VmLib: 7312 kB
VmPTE: 2540 kB
VmSwap: 0 kB
0的VmSwap表示当前没有使用任何swap。
有关其他字段的信息,请参阅 http://man7.org/linux/man-pages/man5/proc.5.html 或 man 5 proc
。手册部分说:
- VmSwap: Swapped-out virtual memory size by anonymous private pages; shmem swap usage is not included (since Linux 2.6.34).
回复您的评论:
显然您使用的 Linux 版本太旧,无法在 per-process 状态中包含 VmSwap 字段。
您可以阅读 /proc/meminfo 并找出服务器上正在使用的总交换 space,但这不会告诉您每个进程。
您还可以 运行 vmstat 监视交换 activity。如果 "si" 和 "so" 字段为零,则没有问题。