linux 查看 缓存 centos内存查看

大家好,关于linux 查看 缓存很多朋友都还不太明白,今天小编就来为大家分享关于centos内存查看的知识,希望对各位有所帮助!

如何查看 Linux 当前缓存了哪些大文件

Linux用户可能经常遇到的一个问题是,机器有 16GB内存之多,运行的进程也不多,但是剩下的 free内存并不多,大部分都被 buff和 cache占用了(比如下面我的 PC)。

$ free-h

total

used

free

shared buff/cache availableMem:

15G

6.4G

2.3G

1.1G

6.9G

7.7GSwap:

975M

268K

975M

虽然对于 Linux的内存分配机制来说,这种被 buff和 cache占用的内存在系统需要时会及时释放出来,但是有时候我们想知道到底 cache了些什么却没有一个好的办法。

前几天看到有个人用 go写了个?pcstat,可以查看某个文件是否被缓存(作者的目的是数据库调优),也可以根据进程的 PID来查看都缓存了哪些文件,不过该工具不能查看整个操作系统都 cache了哪些文件。

因此,我基于 pcstat写了个hcache,增加了查看当前操作系统所 cache的前若干个文件的特性。如果有什么建议的话也欢迎反馈给我:hubottle@gmail.com。

使用方法比较简单:

$ sudo hcache--top 10[sudo] password for silenceshell:+----------------------------------------------------------------------------------+----------------+------------+-----------+---------+| Name

| Size(bytes)| Pages

| Cached| Percent||----------------------------------------------------------------------------------+----------------+------------+-----------+---------||/opt/google/chrome/chrome

| 114911208

| 28055

| 25457| 090.740||/usr/share/code/code

| 67688720

| 16526

| 12274| 074.271||/home/silenceshell/Software/pycharm-community-2016.2/lib/pycharm.jar

| 95177431

| 23237

| 11325| 048.737||/opt/atom/atom

| 62641344

| 15294

| 10578| 069.164||/usr/bin/dockerd

| 39121168

| 9552

| 7103

| 074.361||/home/silenceshell/Software/pycharm-community-2016.2/jre/jre/lib/amd64/libjfxwebkit.so| 57455824

| 14028

| 6625

| 047.227||/usr/lib/x86_64-linux-gnu/libQtWebKit.so.4.10.2

| 36462184

| 8902

| 6316

| 070.950||/usr/lib/beyondcompare/BCompare

| 30640160

| 7481

| 5505

| 073.586||/usr/bin/SecureCRT

| 29524560

| 7209

| 4806

| 066.667||/usr/share/code/libnode.so

| 21135976

| 5161

| 4588

| 088.898|+---------------------------------------------------------------------

让我们来查看一下其中列出的一个文件:

$ lsof/usr/lib/x86_64-linux-gnu/libQtWebKit.so.4.10.2COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAMEquiterss 20630 silenceshell mem REG 8,5 36462184 3936610/usr/lib/x86_64-linux-gnu/libQtWebKit.so.4.10.2

默认情况下会显示 cache的文件的全路径,会比较长,也可以使用--bname选项来仅显示文件名:

-------------+----------------+------------+-----------+---------+$ sudo./hcache--top 3--bname+-------------+----------------+------------+-----------+---------+| Name

| Size(bytes)| Pages

| Cached| Percent||-------------+----------------+------------+-----------+---------|| chrome

| 114911208

| 28055

| 25476| 090.807|| pycharm.jar| 95177431

| 23237

| 11479| 049.400|| atom

| 62641344

| 15294

| 10578| 069.164|+-------------+----------------+------------+-----------+---------+

这个小工具的源码开源在 Github上:hcache,欢迎关注和提交 issue及 PR。

linux硬盘缓存大小应该怎么查看

Linux中要查看硬盘缓存大小,可以使用hdparm命令。

1、在终端中执行如下命令。

sudohdparm-I/dev/sdb

2、执行效果如下图所示,其中cache/buffer size行即为缓存大小。

说明:-I:直接读取硬盘所提供的硬件规格信息,/dev/sdb指的电脑中的第二块硬盘。

3、hdparm常用参数及说明如下:

-a<快取分区>:设定读取文件时,预先存入块区的分区数,若不加上<快取分区>选项,则显示目前的设定;

-A<0或1>:启动或关闭读取文件时的快取功能;

-c<I/O模式>:设定IDE32位I/O模式;

-C:检测IDE硬盘的电源管理模式;

-d<0或1>:设定磁盘的DMA模式;

-f:将内存缓冲区的数据写入硬盘,并清楚缓冲区;

-g:显示硬盘的磁轨,磁头,磁区等参数;

-h:显示帮助;

-i:显示硬盘的硬件规格信息,这些信息是在开机时由硬盘本身所提供;

-I:直接读取硬盘所提供的硬件规格信息;

-k<0或1>:重设硬盘时,保留-dmu参数的设定;

-K<0或1>:重设硬盘时,保留-APSWXZ参数的设定;

-m<磁区数>:设定硬盘多重分区存取的分区数;

-n<0或1>:忽略硬盘写入时所发生的错误;

-p<PIO模式>:设定硬盘的PIO模式;

-P<磁区数>:设定硬盘内部快取的分区数;

-q:在执行后续的参数时,不在屏幕上显示任何信息;

-r<0或1>:设定硬盘的读写模式;

-S<时间>:设定硬盘进入省电模式前的等待时间;

-t;评估硬盘的读取效率;

-T:平谷硬盘快取的读取效率;

-u<0或1>:在硬盘存取时,允许其他中断要求同时执行;

-v:显示硬盘的相关设定;

-w<0或1>:设定硬盘的写入快取;

-X<传输模式>:设定硬盘的传输模式;

-y:使IDE硬盘进入省电模式;

-Y:使IDE硬盘进入睡眠模式;

-Z:关闭某些Seagate硬盘的自动省电功能。

linux内存缓存特别高linux内存缓存

linuxcached为什么一直不释放?

当读写文件的时候,Linux内核为了提高读写效率与速度,会将文件在内存中进行缓存,这部分内存就是CacheMemory(缓存内存)。即使你的程序运行结束后,CacheMemory也不会自动释放。缓存内存(CacheMemory)在你需要使用内存的时候会自动释放,所以不必担心没有内存可用。当然也可以手动释放:

echo1>/proc/sys/vm/drop_caches

echo2>/proc/sys/vm/drop_caches

echo3>/proc/sys/vm/drop_caches

注意:生产环境请谨慎操作。

linux内存清理caches是什么?

linux内存清理caches是对内存之外的储存空间,也就是系统自带的高速缓存进行清理的一种功能。

当linux第一次读取一个文件运行时,一份放到一片内存中cache起来,另一份放入运行程序的内存中,正常运行,当程序运行完,关闭了,cache中的那一分却没有释放,第二次运行的时候,系统先看看在内存中是否有一地次运行时存起来的cache中的副本,如果有的话,直接从内存中读取,那样,速度就快多了。

说明这种情况的很典型的例子是启动firefox,由于firefox程序很大,因此第一次读取运行的时候很慢,尤其在速度不快的机器上,但是当你彻底关闭了firefox,ps看不到一个firefox进程,第二次再启动的时候就比第一次明显快很多,这是由于这次系统是直接从cache中读取的firefox来运行,并不是从磁盘上读取的。

再有一个例子:我们频繁使用的ls命令等基本命令,你运行的时候根本看不到硬盘灯闪,因为这些常用的命令都是再第一次运行后就保存在cache中的,以后就一直从内存中读出来运行。

如果cache占用的内存过多了,影响正常运行程序需要的内存,那么会释放掉一部分cache内存,但是总量会保持一个很高的值,所以,linux总是能最大限度的使用内存,就算加到16G,32G内存,也会随着不断的IO操作,内存的free值会慢慢减少到只有几M,想要内存不发生这种情况,只有一个办法:把内存加到比硬盘大。

linux清理内存空间?

1、使用free命令查看一下当前内存使用情况

freetotalusedfreesharedbufferscachedMem:166218968967952765394402123528377276-/+buffers/cache:37832416243572Swap:10241428010241428#针对free命令后出现的信息解释#total:总计物理内存的大小#used:已使用多大#free:可用有多少#Shared:多个进程共享的内存总额#Buffers/cached:磁盘缓存的大小

2、执行sync同步数据

sync#该命令将未写的系统缓冲区写到磁盘中#包含已修改的i-node、已延迟的块I/O和读写映射文件。

3、清理cache(缓存)

echo3>/proc/sys/vm/drop_cachesfreetotalusedfreesharedbufferscachedMem:16621896579592160423040268308708-/+buffers/cache:27061616351280Swap:10241428010241428

4、对比步骤1和3的free命令,used(减少)、free(增大)对应Mem部分就清楚了,cache(缓存)被清理掉了。

ubuntu没有分配交换空间,内存被缓存快满了,有事吗?

如果你的内存够大,比如有2G,那不开交换分区也无所谓的了。

LINUX使用内存和WINDOWS使用内存的机制不一样,平时内存占满是正常的。LINUX优先使用内存做缓存,然后使用交换空间做缓存。麦麦的不老阁

Linux用户进程是如何释放内存的?

如果内存够,进程不去主动回收,内存是不会释放的Linux系统的缓存机制是相当先进的,他会针对dentry(用于VFS,加速文件路径名到inode的转换)、BufferCache(针对磁盘块的读写)和PageCache(针对文件inode的读写)进行缓存操作。

但是在进行了大量文件操作之后,缓存会把内存资源基本用光。但实际上我们文件操作已经完成,这部分缓存已经用不到了。

阅读剩余
THE END