Linux系统上的内存使用情况

时间:2009-05-28 06:26:00

标签: linux memory memcached

如果我跑

top
在Linux系统上,我可以看到很多关于内存使用的信息。

Mem:  15736360k total,  8415332k used,  7321028k free,   174876k buffers
Swap:        0k total,        0k used,        0k free,  2630508k cached

我想知道:告诉我的“缓存”属性是什么?似乎这根本没有被释放 - 这是正常行为吗?

我们正在为我们的网络应用运行memcached。这有什么关系吗?

马特

5 个答案:

答案 0 :(得分:7)

您可以(也可能)使用free命令打印内存状态:

             total       used       free     shared    buffers     cached
Mem:        515568     504740      10828          0      44248     427800
-/+ buffers/cache:      32692     482876
Swap:       915664      64820     850844

“buffers / cache”行告诉你内核当前用于各种缓冲区和缓存的RAM量,主要用于我认为的磁盘I / O.如果程序需要,这个内存可供程序使用,但在它们执行之前,如果内核使用它来缓冲I / O而不是只剩下空闲时,它会被更好地利用。

答案 1 :(得分:3)

我认为“缓存”是用于块设备(即磁盘)缓存的内存 - 如果需要,可以立即将此内存转换为可用内存,以便应用程序可以使用它。总而言之,将其视为“免费”:)

答案 2 :(得分:2)

您的问题here有一个很好的答案。简而言之,linux swap系统可以在内存和磁盘上拥有相同的页面。当页面从交换中引入而未更改时会发生这种情况 - 当发生这种情况时系统不会从磁盘上擦除页面,因为它可能需要不必要地重写它。需要一个数据结构来跟踪交换状态,缓存以及哪些页面被换出哪些不是等等。详细信息在链接中,但交换缓存是处理此簿记的数据结构,它是大小取决于您的页面表的大小。

答案 3 :(得分:2)

让你知道好事:

ServerFault启动 - 它是系统管理员的StackOverflow

答案 4 :(得分:1)

如果我的记忆正确地为我服务,Linux内核将保留此内存用于其他目的,直到应用程序需要它为止。这是完全正常的。以下是简要说明:http://www.novell.com/coolsolutions/feature/18990.html