加上cache就对了...
B. linux free命令中buffer和cache的区别
linux free命令中buffer与cache的区别
~$ free
total used free shared buffers cached
Mem: 1025204 981636 43568 0 38244 387808
-/+ buffers/cache: 555584 469620
Swap: 1931256 162948 1768308 www.2cto.com
也可以通过$watch free看到动态信息
以上为free命令的输出内容,从中可以得到当前系统内存使用情况.
系统的可用内存应该看第二行数据,
-buffers/cache=used-buffers-cached
+buffers/cache=free+buffers+cached
因为第一行的used包含了系统使用的buffer及cache,而free则没包含buffer及cache,
这部分也是可以使用的部分.
如上所示555584为真正的系统使用内存情况,而469620为系统真正的可用内存情况.
下面介绍buffer与cache的差别:
A buffer is something that has yet to be "written" to disk.
A cache is something that has been "read" from the disk and stored for later use.
buffer: www.2cto.com
缓冲区,一个用于存储速度不同步的设备或优先级不同的设备之间传输数据
的区域。通过缓冲区,可以使进程之间的相互等待变少,从而使从速度慢的设备读入数据
时,速度快的设备的操作进程不发生间断。
cache:
高速缓存,是位于CPU与主内存间的一种容量较小但速度很高的存储器。由于
CPU的速度远高于主内存,CPU直接从内存中存取数据要等待一定时间周期, Cache中保存
着CPU刚用过或循环使用的一部分数据,当CPU再次使用该部分数据时可从Cache中直接调
用,这样就减少了CPU的等待时间,提高了系统的效率。Cache又分为一级Cache(L1 Cache)
和二级Cache(L2 Cache),L1 Cache集成在CPU内部,L2 Cache早期一般是焊在主板上,现
在也都集成在CPU内部,常见的容量有256KB或512KB L2 Cache。
当你读写文件的时候,Linux内核为了提高读写性能与速度,会将文件在内存中进行缓存,
这部分内存就是Cache Memory(缓存内存)。即使你的程序运行结束后,Cache Memory也不会
自动释放。这就会导致你在Linux系统中程序频繁读写文件后,你会发现可用物理内存会很少。
其实这缓存内存(Cache Memory)在你需要使用内存的时候会自动释放,所以你不必担心没有
内存可用。如果你希望手动去释放Cache Memory也是有办法的。
如何释放Cache Memory(缓存内存), 用下面的命令可以释放Cache Memory:
To free pagecache
$sync; echo 1>/proc/sys/vm/drop_caches
To free dentries and inodes: www.2cto.com
$sync; echo 2>/proc/sys/vm/drop_caches
To free pagecache, dentries and inodes:
$sync; echo 3>/proc/sys/vm/drop_caches
注意,释放前最好sync一下,防止丢失数据。
free命令中的buffer和cache:(它们都是占用内存):
buffer : 作为buffer cache的内存,是块设备的读写缓冲区
cache: 作为page cache的内存, 文件系统的cache
C. free命令buff和cache的区别
buff
cache
Buffer:缓冲区,用于存储速度不同步的设备或优先级不同的设备之间传输数据;通过buffer可以减少进程间通信需要等待的时间,当存储速度快的设备与存储速度慢的设备进行通信时,存储慢的数据先把数据存放到buffer,达到一定程度存储快的设备再读取buffer的数据,在此期间存储快的设备CPU可搜索以干其他的事情。
Cache:缓存区,是高速缓存,是位于CPU和主内存之间的容量较小但速度很快的存储器,因为CPU的速度远远高于主内存的速度,CPU从内存中读取数据需等待很长的时间,而
Cache保存着CPU刚用过的数据或循环使用的部分数据,这时从Cache中读取数据会更快,减少了CPU等待的时间,提高了系统的性能。
Buffer:一般是用在写入磁盘的,例如:某个进程要求多个字段被读入,当所有要求的字段被读入之前已经读入的字段会先放到buffer中。 Cache并不是缓存文件的,而是缓存块的(块是I/O读写最小的单元);Cache一般会用在I/O请求上,如果多个进程要访问某个文件,可以把此文件读入Cache中,这样下一个进程获取CPU控制权并访问此文件直接从Cache读取,提高系统性能。
D. shell脚本中如何编写程序med.sh,根据free命令的结果计算内存占有率
#!/bin/bash
NowTime=`date +%F' '%T`
PhyMemPercent=`free -m|grep "Mem:"|awk '{printf("%2.2f\n",$3 * 100/$2)}'`
VirMemPercent=`free -m|grep "Swap"|awk '{printf("%2.2f\n",$3 * 100/$2)}'`
pyhmem=`free -m |grep "Mem:" |awk '{print $2}'`
virmem=`free -m |grep "Swap" |awk '{print $2}'`
Pyhmemused=`free -m |grep "Mem:" |awk '{print $3}'`
Virmemused=`free -m |grep "Swap" |awk '{print $3}'`
echo -n "$NowTime "
printf "%-16s%5s%8s%5s%12s%6s\n" "PhyMemory:total" "$pyhmem" " MB,used " "$Pyhmemused" " MB,percent " "$PhyMemPercent%"
# echo "PhyMemory:total $pyhmem MB,used $Pyhmemused MB,percent $PhyMemPercent%" >&3
echo -n "$NowTime "
printf "%-16s%5s%8s%5s%12s%6s\n" "VirMemory:total" "$virmem" " MB,used " "$Virmemused" " MB,percent " "$VirMemPercent%"
将以上复制到你的脚本中,执行下就会知道。
E. linux中free命令,total≠used+free,什么原因呢
-m 表示以MB显示
-G 表示用GB显示
当你内存为3500M时候
你用-G就会只显示3
明白我的意思不
就是 他并不是严格按照实际数量计算
用free 别加参数显示的就是正确数值 但是 单位是kb
F. cfree命令编写,请各位帮帮忙
第一题:
# include <stdio.h>
int main(void)
{
int a, b;
float x, y;
char c1, c2;
printf("请输入两个整数:\n");
scanf("%d %d", &a, &b);
printf("请输入两个小数:\n");
scanf("%f %f", &x, &y);
getchar(); //此处用来接受回车
printf("请输入两个字符:\n");
scanf("%c %c", &c1, &c2);
printf("各个变量的值为:\n");
printf("a = %d, b = %d\n", a, b);
printf("x = %f, y = %f\n", x, y);
printf("c1 = %c, c2 = %c\n", c1, c2);
return 0;
}
第二题:
# include <stdio.h>
int main(void)
{
char c1, c2;
printf("请输入第一个字符并回车:\n");
c1 = getchar();
getchar(); // 此处用来接受回车
printf("请输入第二个字符并回车:\n");
c2 = getchar();
printf("您输入的两个字符为:\n");
putchar(c1);
putchar('\n');
printf("%c", c2);
return 0;
}
第三题:
# include <stdio.h>
int main(void)
{
float a, b, c, d, x, y;
printf("请输入a b c d的值:\n");
scanf("%f %f %f %f",&a, &b, &c, &d);
printf("请输入x的值\n");
scanf("%f", &x);
y = x + ( (a-b) / (c+d) );
printf("y的值为:\n");
printf("y = %f", y);
return 0;
}
第四题:
# include <stdio.h>
# include <math.h>
int main(void)
{
float x, y;
printf("请输入x(弧度制)的值\n");
scanf("%f", &x);
y = sin(x) + cos(x);
printf("角度数为:\n");
printf("%.2f\n", x);
printf("sin(x) + cos(x)的值y为:\n");
printf("y = %.2f", y);
return 0;
}
这些都是我自己打的,一定要给分哦!
G. linux下free命令结果如下,谁能帮我通俗地解释下对应的意思
内存总共大小(total),
使用量(used)
剩余内存(free)
被OS buffer住的内存。 (buffers)
被OS cache的内存(cached)
buffer是用于存放要输出到disk(块设备)的数据的
,而cache是存放从disk上读出的数据。这二者是为了提高IO性能的,并由OS管理。
H. linux服务器使用free命令显示如下情况,是不是需要增加内存了
没关系,free虽然少,因为都被cached了。我的机器24G内存,可以cache22G,这是linux内存管理的机制。并不影响使用,如果linux发现内存不够用,会自己释放cache,增加内存的。
I. linux free命令
Mem:表示物理内存统计
-/+ buffers/cached:表示物理内存的缓存统计
Swap:表示硬盘上交换分区的使用情况,
第1行 Mem:
total:表示物理内存总量。
used:表示总计分配给缓存(包含buffers 与cache )使用的数量,但其中可能部分缓存并未实际使用。
free:未被分配的内存。
shared:共享内存,一般系统不会用到,这里也不讨论。
buffers:系统分配但未被使用的buffers 数量。
cached:系统分配但未被使用的cache 数量。buffer 与cache 的区别见后面。
total = used + free
第2行 -/+ buffers/cached:
used:也就是第一行中的used - buffers-cached 也是实际使用的内存总量。
free:未被使用的buffers 与cache 和未被分配的内存之和,这就是系统当前实际可用内存。
J. Linux里面free -g命令作用是什么
不带任何选项运行 free 命令会显示系统内存,包括空闲、已用、交换、缓冲、缓存和交换的内存总数。这个时候显示的是字节为单位。-G 参数加上去以后,所有显示的内容就按照单位GB来显示明白了吗 查询命令 看看《Linux就该这么学》 里面有个专栏是 Linux命令大全(手册