我怀疑我的MySQL框中有一些交换行为。我跑了“顶级”实用程序它给了我只有51MB的交换发生。
然而,当我在top工具中启用“Swap”列时,它显示mysqld实际上有12g的交换。
你能告诉我哪些是准确的信息吗?有没有交换?
答案 0 :(得分:2)
编辑:根据我的阅读,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
VmSwap为0表示它当前没有使用任何交换。
有关其他字段的信息,请参阅http://man7.org/linux/man-pages/man5/proc.5.html或man 5 proc
。手册部分说明:
- VmSwap:匿名私有页面交换虚拟内存大小; shmem swap使用不包括在内(自Linux 2.6.34起)。
重新评论:
显然,您使用的Linux版本太旧,无法在每个进程状态中包含VmSwap字段。
您可以阅读 / proc / meminfo 并找出服务器上使用的总交换空间,但这并不能告诉您每个进程。
您还可以运行 vmstat 来监视交换活动。如果" si"和"所以"字段为零,你没关系。