谁在使用交换内存,为什么?

我的数据库服务器使用191MB的交换空间,但也显示182MB的可用 RAM

这个盒子是一个专用的MySQL服务器,运行着Debian Lenny。

如何确定填充交换空间的人员和原因,而不是使用可用的RAM?

inputtop ,然后按f来编辑可见的字段,按p来显示交换使用情况,然后按Enter键返回到程序的显示。 使用Shift + <>来让它按照交换使用进行sorting。

Linux从RAM中交换数据的基础是(Linux的个人意见),它很可能需要很快被引用。 你可以改变你的swappiness以增加/减less发生这种情况的可能性。

这不容易回答 – 看看这里: https : //help.ubuntu.com/community/SwapFaq 。

您可以使用top命令查看交换使用情况,inputman top或google。

至于为什么 – 一种可能的情况如下。 假设你有1GB或者RAM。 然后你加载2GB的应用程序(包括操作系统)。 您将使用1GB内存和1GB交换使用。 然后卸载1.5GB的应用程序。 你会认为你将有0.5GB的RAM免费和所有免费掉。 但是,情况可能并非如此。 例如,如果您加载了3个应用程序:

  • A – 1 GB,
  • B – 900 MB
  • C – 100 MB

那么主动使用A,很可能B和C都会被换出到磁盘上,使得A使用RAM变得更快。 当closuresA并切换到C时,将会使用100 MB RAM,并且B仍然被换出(使用900 MB交换),因为不需要。

简单地说 – 内核试图使用RAM,并以它认为高效的方式进行交换。 在仍有空闲内存的情况下交换使用量并不一定意味着你的系统运行速度可能会比较慢。

 free -m 

看看你的真正的ram +/-缓冲线减去文件系统缓冲区。 现代操作系统的常用文件加载到内存中,内核将根据需要释放它们。

例如

  total used free shared buffers cached Mem: 3483 1702 1780 0 299 778 -/+ buffers/cache: 623 2859 Swap: 3999 0 3999 

运行顶部我会看到我有1.7GIG免费的内存,但如果我看看免费-mi看到我真的有2.8gigs免费。 另一个1.1 gig是文件系统caching。

只是关于交换内存的一点,以支持ErikA对詹姆斯的回答的评论:

你看到一些交换使用情况不是一件坏事。 正如詹姆斯所说,内核将机会性地换出不太可能被使用的内存页面。 这为其他可能需要它的应用程序释放了内存,并且在极less数情况下会导致性能损失。

从RAM中交换出来的数据将存在于RAM和交换磁盘上,直到RAM被声明为另一个目的,所以就像mmap的文件一样。 据我所知,如果一个进程决定在回收之前使用这个数据,那么它就不需要再次交换了。 交换通常是好的,但有两个主要原因可能导致你不想要:

  1. 你正在努力节约能源:急切地换出通常会增加磁盘旋转的数量,因为不需要换出一些资源;
  2. 交换可能会改善一个进程的活跃程度,而这个进程的性能可能是你不关心的,代价是延迟是一个问题。

使用echo 0 > /proc/pid/vm/swappiness可以消除机会交换。