我还以为这个问题很简单,原本认为没有必要回答的,但瞧瞧现有的三个答案,虽然都没有回答问题马哥linux,那就我来回答一下吧。
题主的问题不是怎样配置swap,而是配置了swap后,free这个命令看不懂。作为一个Linux用户,你首先要理解Linux的显存管理中的基本概念。
Linux的显存分两部份,一部份是内核用的,就是驱动等模块直接分配的显存,这以slab显存为主,背后是真实的数学显存。一部份是进程用的显存,这是Linux使用显存的大头。
第二个你要理解的问题是,Linux对进程显存的管理策略称为Lazy策略。总的来说,但凡用不到的东西就不实际做动作,能拖多久就拖多久。你在进程里分配一片显存,只要你不往里写,Linux就不真的分配显存。你读文件也一样,只要你不真的读到哪里,就不真的把文件读到显存上面。执行一个程序也一样的,一个老大老大的程序,只要执行不到相应的位置,这个位置的代码数据哪些的就老老实实待在c盘上,不会步入显存中。
所以linux内存使用情况,对Linux来说linux内存使用情况,进程的显存,有真有假,有些是真的在化学显存中的,有些只是说好要,但不一定真会有的。这样打个时间差,Linux就可以运行更多的程序了。
所以,进程分配的每片显存背后,就会有一个backlog文件,你打开一个文件f,读上面的内容,这种内容都会写入显存,这个显存背后的backlog文件就是这个文件f。而所谓swap,就是所有其他显存(比如进程中用malloc分配的显存)的backlog文件。你一定要从这个角度理解swap,前面的解释就好理解了。
好了,你应当注意到了,若果你的显存背后有backlog文件,这片显存只要不是正在被访问,它就是可以被舍弃的。由于大不了到你要用的时侯linux重启命令,重新从c盘中把数据读回去而已。
如今你就可以理解free命令的输出了,第一行的所谓free和used,就是实际的化学显存的药量。而+-buffer/cache那一行,是把buffer和cache(可以随时被舍弃的)当做空闲显存之后的free和used。你基本上可以觉得第二行才表示系统中有多少显存。swap那一行,是说有多少swap被用作backlog(同时被写入)了,那种虽然关系不大。
之后我们讨论一下哪些是buffer和cache,虽然这两个是一个东西,都是c盘数据读入到显存去的部份。但Buffer是Metadata,就是记录哪些文件名啦,创建时间啦这些数据。Cache则是文件内容。把这两个东西分开,是由于Cache总是一页一页分配的,Buffer一般不大,是几个文件用一个页来保存的。所以一般buffer更难释放。但free这个命令虽然不是很关心这些细节啦,你要看更深入的信息,就要看/proc/meminfo和/proc/slabinfo了。假如你真的须要这些信息恐怕要不须要我在这儿给你解释了。
最后我们说说如何设置swap。这个似乎没有固定的方式。传统是让你设化学显存的两到三倍。但这个是没有准数的,两到三倍的逻辑是保证最坏的情况下,系统还勉强可以运行,这样你有维护的机会。据我所知,BAT普遍是不用swap,这可以保证性能,但增加单机可靠性。我个人一般是设很大的SWAP的,由于tmpfs背后就是SWAP,我常常用这些文件系统做验证,这样比较便捷,题主不用太郁闷这个问题,有问题解决问题就好了。