如果我跑
top
在Linux系统上,我可以看到很多关于内存使用的信息。
Mem: 15736360k total, 8415332k used, 7321028k free, 174876k buffers
Swap: 0k total, 0k used, 0k free, 2630508k cached
我想知道:告诉我的“缓存”属性是什么?似乎这根本没有被释放 - 这是正常行为吗?
我们正在为我们的网络应用运行memcached。这有什么关系吗?
马特
答案 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