在Linux系统中,为了提高文件系统性能,内核利用一部分物理内存分配出缓冲区,用于缓存系统操作和数据文件,当内核收到读写的请求时,内核先去缓存区找是否有请求的数据,有就直接返回,如果没有则通过驱动程序直接操作磁盘。

缓存机制优点:减少系统调用次数,降低CPU上下文切换和磁盘访问频率。
CPU上下文切换:CPU给每个进程一定的服务时间,当时间片用完后,内核从正在运行的进程中收回处理器,同时把进程当前运行状态保存下来,然后加载下一个任务,这个过程叫做上下文切换。实质上就是被终止运行进程与待运行进程的进程切换。

Swap用途:Swap意思是交换分区,通常我们说的虚拟内存,是从硬盘中划分出的一个分区。当物理内存不够用的时候,内核就会释放缓存区(buffers/cache)里一些长时间不用的程序,然后将这些程序临时放到Swap中,也就是说如果物理内存和缓存区内存不够用的时候,才会用到Swap。

swap清理:swapoff -a && swapon -a
注意:这样清理有个前提条件,空闲的内存必须比已经使用的swap空间大

1. 新建和增加SWAP分区(都必须用root权限,操作过程应该小心谨慎。)

  1)新建分区

.以root身份进入控制台(登录系统),输入
swapoff -a #停止所有的swap分区 . 用fdisk命令(例:# fdisk /dev/sdb)对磁盘进行分区,添加swap分区,新建分区,在fdisk中用“t”命令将新添的分区id改为82(Linux swap类型),最后用w将操作实际写入硬盘(没用w之前的操作是无效的)。 . mkswap /dev/sdb2 #格式化swap分区,这里的sdb2要看您加完后p命令显示的实际分区设备名 . # swapon /dev/sdb2 #启动新的swap分区 . 为了让系统启动时能自动启用这个交换分区,可以编辑/etc/fstab,加入下面一行
/dev/sdb2 swap swap defaults

  2)新增分区

.创建要作为swap分区的文件:增加1GB大小的交换分区,则命令写法如下,其中的count等于想要的块的数量(bs*count=文件大小)。
# dd if=/dev/zero of=/root/swapfile bs=1M count= .格式化为交换分区文件:
# mkswap /root/swapfile #建立swap的文件系统 .启用交换分区文件:
# swapon /root/swapfile #启用swap文件 .使系统开机时自启用,在文件/etc/fstab中添加一行:
/root/swapfile swap swap defaults

2.调整swap空间使用的优先级

  如果内存够大,应当告诉 linux 不必太多的使用 SWAP 分区, 可以通过修改 swappiness 的数值。

  swappiness=0 的时候表示最大限度使用物理内存,然后才是 swap空间,swappiness=100的时候表示积极的使用swap分区,并且把内存上的数据及时的搬运到swap空间里面。

  各个操作系统的优先级可能都不一样,如果不调整,你会发现添加的虚拟内存几乎没有用到

  

查看当前swappiness值

  # cat /proc/sys/vm/swappiness

  修改swappiness值为60(临时修改,重启后即还原为默认值)

  # sudo sysctl vm.swappiness=

  永久修改swappiness默认值(重启生效)

  # vim /etc/sysctl.conf

  找到vm.swappiness ,如果没有则需要手动添加一行 vm.swappiness =  保存即可

3. 四种方法在 Linux 系统中查找最大的前 10 个文件

  

# find / -type f -print0 | xargs - du -h | sort -rh | head -n 

.4G /swapfile
.1G /home/magi/ubuntu-17.04-desktop-amd64.iso
564M /home/magi/.gdfuse/magi/cache/0B5nso_FPaZFqTFU0XzkzUlJUZzA
378M /home/magi/.gdfuse/magi/cache/0B5nso_FPaZFqeldzUmhPeC03Zm8
377M /home/magi/.gdfuse/magi/cache/0B5nso_FPaZFqRGd4V0VrOXM4YVU
100M /usr/lib/x86_64-linux-gnu/libOxideQtCore.so.
93M /usr/lib/firefox/libxul.so
84M /var/lib/snapd/snaps/core_3604.snap
84M /var/lib/snapd/snaps/core_3440.snap
84M /var/lib/snapd/snaps/core_3247.snap

详解:

    • find:在目录结构中搜索文件的命令
    • /:在整个系统(从根目录开始)中查找
    • -type:指定文件类型
      f:普通文件
    • -print0:在标准输出显示完整的文件名,其后跟一个空字符(null)
    • |:控制操作符,将一条命令的输出传递给下一个命令以供进一步处理
    • xargs:将标准输入转换成命令行参数的命令
    • -0:以空字符(null)而不是空白字符(LCTT 译者注:即空格、制表符和换行)来分割记录
    • du -h:以可读格式计算磁盘空间使用情况的命令
    • sort:对文本文件进行排序的命令
    • -r:反转结果
    • -h:用可读格式打印输出
    • head:输出文件开头部分的命令
    • n -10:打印前 10 个文件

  2)

# find / -type f -exec du -Sh {} + | sort -rh | head -n 

.4G /swapfile
.1G /home/magi/ubuntu-17.04-desktop-amd64.iso
564M /home/magi/.gdfuse/magi/cache/0B5nso_FPaZFqTFU0XzkzUlJUZzA
378M /home/magi/.gdfuse/magi/cache/0B5nso_FPaZFqeldzUmhPeC03Zm8
377M /home/magi/.gdfuse/magi/cache/0B5nso_FPaZFqRGd4V0VrOXM4YVU
100M /usr/lib/x86_64-linux-gnu/libOxideQtCore.so.
93M /usr/lib/firefox/libxul.so
84M /var/lib/snapd/snaps/core_3604.snap
84M /var/lib/snapd/snaps/core_3440.snap
84M /var/lib/snapd/snaps/core_3247.snap

详解:

    • find:在目录结构中搜索文件的命令
    • /:在整个系统(从根目录开始)中查找
    • -type:指定文件类型
      f:普通文件
    • -exec:在所选文件上运行指定命令
    • du:计算文件占用的磁盘空间的命令
    • -S:不包含子目录的大小
    • -h:以可读格式打印
    • {}:递归地查找目录,统计每个文件占用的磁盘空间
    • |:控制操作符,将一条命令的输出传递给下一个命令以供进一步处理
    • sort:对文本文件进行按行排序的命令
    • -r:反转结果
    • -h:用可读格式打印输出
    • head:输出文件开头部分的命令
    • n -10:打印前 10 个文件

  3)

# find / -type f -print0 | xargs - du | sort -n | tail - | cut -f2 | xargs -I{} du -sh {}

84M /var/lib/snapd/snaps/core_3247.snap
84M /var/lib/snapd/snaps/core_3440.snap
84M /var/lib/snapd/snaps/core_3604.snap
93M /usr/lib/firefox/libxul.so
100M /usr/lib/x86_64-linux-gnu/libOxideQtCore.so.
377M /home/magi/.gdfuse/magi/cache/0B5nso_FPaZFqRGd4V0VrOXM4YVU
378M /home/magi/.gdfuse/magi/cache/0B5nso_FPaZFqeldzUmhPeC03Zm8
564M /home/magi/.gdfuse/magi/cache/0B5nso_FPaZFqTFU0XzkzUlJUZzA
.1G /home/magi/ubuntu-17.04-desktop-amd64.iso
.4G /swapfile

详解:

    • find:在目录结构中搜索文件的命令
    • /:在整个系统(从根目录开始)中查找
    • -type:指定文件类型
      f:普通文件
    • -print0:输出完整的文件名,其后跟一个空字符(null)
    • |:控制操作符,将一条命令的输出传递给下一个命令以供进一步处理
    • xargs:将标准输入转换成命令行参数的命令
    • -0:以空字符(null)而不是空白字符来分割记录
    • du:计算文件占用的磁盘空间的命令
    • sort:对文本文件进行按行排序的命令
    • -n:根据数字大小进行比较
    • tail -10:输出文件结尾部分的命令(最后 10 个文件)
    • cut:从每行删除特定部分的命令
    • -f2:只选择特定字段值
    • -I{}:将初始参数中出现的每个替换字符串都替换为从标准输入读取的名称
    • -s:仅显示每个参数的总和
    • -h:用可读格式打印输出
    • {}:递归地查找目录,统计每个文件占用的磁盘空间

  4)

# find / -type f -ls | sort -k  -r -n | head - | column -t | awk '{print $7,$11}'

 /swapfile
/home/magi/ubuntu-17.04-desktop-amd64.iso
/home/magi/.gdfuse/magi/cache/0B5nso_FPaZFqTFU0XzkzUlJUZzA
/home/magi/.gdfuse/magi/cache/0B5nso_FPaZFqeldzUmhPeC03Zm8
/home/magi/.gdfuse/magi/cache/0B5nso_FPaZFqRGd4V0VrOXM4YVU
/usr/lib/x86_64-linux-gnu/libOxideQtCore.so.
/usr/lib/firefox/libxul.so
/var/lib/snapd/snaps/core_3604.snap
/var/lib/snapd/snaps/core_3440.snap
/var/lib/snapd/snaps/core_3247.snap

详解:

    • find:在目录结构中搜索文件的命令
    • /:在整个系统(从根目录开始)中查找
    • -type:指定文件类型
      f:普通文件
    • -ls:在标准输出中以 ls -dils 的格式列出当前文件
    • |:控制操作符,将一条命令的输出传递给下一个命令以供进一步处理
    • sort:对文本文件进行按行排序的命令
    • -k:按指定列进行排序
    • -r:反转结果
    • -n:根据数字大小进行比较
    • head:输出文件开头部分的命令
    • -10:打印前 10 个文件
    • column:将其输入格式化为多列的命令
    • -t:确定输入包含的列数并创建一个表
    • awk:模式扫描和处理语言
    • '{print $7,$11}':只打印指定的列

linux 之内存与磁盘的更多相关文章

  1. linux限制内存和磁盘使用

    一.如何限制用户的磁盘空间 1. 查看系统中所有用户的磁盘空间配额 sudo repquota /dev/vda1 2. 查看某个用户的磁盘空间配额 sudo edquota user_name 要想 ...

  2. linux查看内存及磁盘使用情况

    1.查看当前目录 命令:   df -h       (统一每个目录下磁盘的整体情况) 2.查看指定目录 在命令后直接放目录名,比如查看"usr"目录使用情况: 命令:   df ...

  3. Linux按照CPU、内存、磁盘IO、网络性能监测

      系统优化是一项复杂.繁琐.长期的工作,优化前需要监测.采集.测试.评估,优化后也需要测试.采集.评估.监测,而且是一个长期和持续的过程,不 是说现在优化了,测试了,以后就可以一劳永逸了,也不是说书 ...

  4. linux性能问题(CPU,内存,磁盘I/O,网络)

    一. CPU性能评估 1.vmstat [-V] [-n] [depay [count]] -V : 打印出版本信息,可选参数 -n : 在周期性循环输出时,头部信息仅显示一次 delay : 两次输 ...

  5. 方法:Linux 下用JAVA获取CPU、内存、磁盘的系统资源信息

    CPU使用率: InputStream is = null; InputStreamReader isr = null; BufferedReader brStat = null; StringTok ...

  6. linux中监控CPU、内存和磁盘状态的shell脚本。(centos7)

    这篇博客中所写的脚本,在实际工作中并没有什么卵用,工作中并不会用到这种脚本去监控.不过自己写一遍,可以让初学者对CPU.内存.磁盘等一些基础知识和基础命令更加了解. 1.利用vmstat工具监控CPU ...

  7. Linux按照CPU、内存、磁盘IO、网络性能监测【转载】

    本文转载地址:https://my.oschina.net/chape/blog/159640 系统优化是一项复杂.繁琐.长期的工作,优化前需要监测.采集.测试.评估,优化后也需要测试.采集.评估.监 ...

  8. 操作系统复习——如何查看一个进程的详细信息,如何追踪一个进程的执行过程 ,如何在 Linux 系统下查看 CPU、内存、磁盘、IO、网卡情况?epoll和select区别?

    1. 如何查看一个进程的详细信息,如何追踪一个进程的执行过程 通过pstree命令(根据pid)进行查询进程内部当前运行了多少线程:# pstree -p 19135(进程号) 使用top命令查看(可 ...

  9. 测网速 fping Linux查看网络即时网速 linux性能问题(CPU,内存,磁盘I/O,网络)

    Linux查看网络即时网速 fping 是ping 工具的加强版本 例出局域网中存活的主机 (Ubuntu apt-get装上  cnetos装不上) zzx@zzx11:~$ fping -a 19 ...

随机推荐

  1. 【Webscraper】不懂编程也能爬虫

    一.配置环境 在浏览器中安装web scraper插件. 所有安装包下载链接: https://pan.baidu.com/s/1CfAWf0wMO6WqicoUgdYgkg 提取码: nn2e 安装 ...

  2. 性能优化 | JVM与性能优化知识点综合整理

    JVM JVM是java的核心和基础,在java编译器和os平台之间的虚拟处理器.它是一种利用软件方法实现的抽象的计算机基于下层的操作系统和硬件平台,可以在上面执行java的字节码程序. java编译 ...

  3. Mac OS为UltraEdit在Terminal中添加快捷使用命令

    一,什么是UltraEdit 我觉得是个程序员,撸代码的都知道UrlEdit是什么.我们在会使用Linux,在Linux中有个很出名的编辑器gedit,使得我们在终端中输入gedit xxx.便可进入 ...

  4. UML 2.5版本与UML分类概述

    UML 2.5版本与UML分类概述 转 http://www.umlstudy.com/uml-25-diagrams.html UML简述 UML图是设计.实现或已经存在的系统模型的部分图形表示(视 ...

  5. R语言与概率统计(一) 描述性统计分析

      #查看已安装的包,查看已载入的包,查看包的介绍 ########例题3.1 #向量的输入方法 w<-c(75.0, 64.0, 47.4, 66.9, 62.2, 62.2, 58.7, 6 ...

  6. 关于Java新手开发配置各种环境可能会遇到的的坑

    一.软件的安装 虽然国内的软件都支持中文目录安装,部分国外软件也支持,但是作为一名合格的程序开发者,必须做到以下几点 Windows下开发软件的安装目录和环境变量中永远不要包含中文字符,包括汉字[]. ...

  7. mdk3 工具使用-表白神器

    一:在root目录下新建个txt文档,用vim编辑文档,写几段暧昧的话 二:终端执行命令: 开启网卡监听模式 airmon-ng start wlan0 开启无线广播 mdk3 wlan0mon b ...

  8. robots.txt文件

    网站通过一个符合Robots协议的robots.txt文件来告诉搜索引擎哪些页面可以爬取.Robots.txt协议全称“网络爬虫排除标准”.一般情况下,该文件以一行或多行User-agent记录开始, ...

  9. kernel32.dll 这个系统模块

    详细解读:远程线程注入DLL到PC版微信 一.远程线程注入的原理 1.其基础是在 Windows 系统中,每个 .exe 文件在双击打开时都会加载 kernel32.dll 这个系统模块,该模块中有一 ...

  10. python 爬虫 基于requests模块发起ajax的post请求

    基于requests模块发起ajax的post请求 需求:爬取肯德基餐厅查询http://www.kfc.com.cn/kfccda/index.aspx中指定某个城市地点的餐厅数据 点击肯德基餐厅查 ...