在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. POCO C++库笔记 【1.Foundation基础库的结构】

    Foundation库是POCO的基础库,提供了一些C++编程中常用的功能的抽象封装,主要由以下这些部分组成: Core  -- 这部分除了建立跨平台库的基础头文件外,最有意义的部分是分装了原子计数的 ...

  2. [Kerberos] Kerberos教程(二)

    4 Kerberos操作 最后,在获得前面段落中描述的概念后,可以讨论Kerberos如何运作.我们将通过列出和描述在身份验证期间在客户端和KDC之间以及客户端和应用程序服务器之间的每个数据包来执行此 ...

  3. Oracle CDC (Change Data Capture)更新数据捕获——概述

    Change Data Capture能高效识别并捕获数据的插入.修改和删除,使更新数据供个人或应用使用. CDC从oracle 9i开始引入,//TODO 在11G R2之后的版本里将取消支持,被O ...

  4. Android Notification 消息通知 相关资料.md

    目录 Android Notification 消息通知 相关资料 Android 5.0 Lollipop (API 21)无法正常显示通知图标,只能看到一个白色方块或灰色方块的问题 解决方案 参考 ...

  5. 使用python装饰器计算函数运行时间的实例

    使用python装饰器计算函数运行时间的实例 装饰器在python里面有很重要的作用, 如果能够熟练使用,将会大大的提高工作效率 今天就来见识一下 python 装饰器,到底是怎么工作的. 本文主要是 ...

  6. phpfpm开启pm.status_path配置,查看fpm状态参数

    php-fpm配置 pm.status_path = /phpfpm_status nginx配置 server {    root /data/www;    listen 80;    serve ...

  7. LOGIT REGRESSION

    Version info: Code for this page was tested in SPSS 20. Logistic regression, also called a logit mod ...

  8. IDEA 2019.2.2破解激活方法(激活到2089年8月,亲测有效)

    本来笔者这边是有个正版激活码可以使用的,但是,2019.9月3号的时候,一些小伙伴反映这个注册码已经失效了,于是拿着自己的 IDEA, 赶快测试了一下,果不其然,已然是不能用了. 好在,笔者又找到了新 ...

  9. ZOJ Problem Set - 1007

    1.参考这个吧,一道数学公式题,还没看懂...好像需要把公式变形出来,先略过. http://dengbaoleng.iteye.com/blog/1504940

  10. visio给任意图形进行填充

    使用visio给图形填充颜色的条件:图形必须是封闭的!!! 但是很多人不明白:我明明画的图形是封闭的啊!可是无法填充颜色!这是因为,你画了一个看上去是封闭的图形,但是VISIO认为你画的不是封闭图形! ...