Linux读写文件时的缓存机制与windows不同,以致于读写大文件时cached值非常大且居高不下。
偶查阅了linux内存管理资料,发现linux的内存管理计数上讲的东西和windows讲的有很大差异。下面具体列举下几种计数、查看方式和含义。
total mem,可以用top free查看出来。
free mem,可以用top free vmstat查看出来。
used mem,可以用top free查看出来.
buffer mem,可以用top free vmstat查看出来。
shared mem,可以用free查看出来。
swap mem,可以用top查看出来。
swap used,可以用top vmstat查看出来。
cached mem,可以用top free vmstat查看出来。
active mem,可以用free vmstat -a查看出来,即cached used。
inactive mem,可以用free vmstat -a查看出来,即cached free。
其中total mem是除去系统外的可用内存,系统大约占1M多。然后分配给free mem和used mem。used mem又包括了内核表使用(例如GDT),程序使用,buffer,cached。所以
cached mem=active mem+inactive mem
total mem=free mem+used mem
used mem=内核表使用+程序使用物理内存+buffer mem+cached mem
略去内核表使用,这个式子可以变形成这样:
程序使用总内存=swap used+程序使用物理内存
=swap used+used mem-buffer mem-cached mem
=total mem-free mem+swap used-buffer mem-cached mem