解释顶级实用程序中的交换

时间:2017-01-23 23:49:27

标签: mysql unix swap

我怀疑我的MySQL框中有一些交换行为。我跑了“顶级”实用程序它给了我只有51MB的交换发生。

然而,当我在top工具中启用“Swap”列时,它显示mysqld实际上有12g的交换。

你能告诉我哪些是准确的信息吗?有没有交换?

enter image description here

1 个答案:

答案 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.htmlman 5 proc。手册部分说明:

  
      
  • VmSwap:匿名私有页面交换虚拟内存大小; shmem swap使用不包括在内(自Linux 2.6.34起)。
  •   

重新评论:

显然,您使用的Linux版本太旧,无法在每个进程状态中包含VmSwap字段。

您可以阅读 / proc / meminfo 并找出服务器上使用的总交换空间,但这并不能告诉您每个进程。

您还可以运行 vmstat 来监视交换活动。如果" si"和"所以"字段为零,你没关系。

请参阅https://access.redhat.com/documentation/en-US/Red_Hat_Enterprise_Linux/5/html/Tuning_and_Optimizing_Red_Hat_Enterprise_Linux_for_Oracle_9i_and_10g_Databases/sect-Oracle_9i_and_10g_Tuning_Guide-Swap_Space-Checking_Swap_Space_Size_and_Usage.html