• RHEL 7 下内存管理小记


    RHEL 7 下内存管理小记

    一、Overview

    众所周知,在 Linux 操作系统中有三个目录非常有趣好玩。

    • /dev
    • /run
    • /proc

    一个个解释下,/dev 用于对特殊设备(BTW:特殊设备可用 touch 生成)进行文件化(Store data in flat text files);/run 用于内存目录化,很有名的例子就是 radius nosql 中的内存读写持久化。其实关于 /run 我一直很好奇银行的 UNIX 是不是就利用这个技术,从而实现维护时添加足够内存待维护完毕系统再写入 SQL 中。

    最后,铛铛铛。

    /proc 是一个虚拟文件系统,我们可以通过对它的读写操作做为与 kernel 实体间进行通信的一种手段。
    

    那这次我们简单讲讲 /proc/sys/vm/drop_caches 文件

    二、Resolution procfs

    清空 pagecache:
    sync
    echo 1 > /proc/sys/vm/drop_caches
    或者:
    sync
    sysctl -w vm.drop_caches=1
    清空 dentries 和 inodes:
    sync
    echo 2 > /proc/sys/vm/drop_caches
    或者:
    sync
    sysctl -w vm.drop_caches=2
    
    
    清空所有缓存(pagecache、dentries 和 inodes):
    sync
    echo 3 > /proc/sys/vm/drop_caches
    或者:
    sync
    sysctl -w vm.drop_caches=3
    

    三、Source

    sync

    手动执行sync命令(描述:sync 命令运行 sync 子例程。如果必须停止系统,则运行sync 命令以确保文件系统的完整性。sync 命令将所有未写的系统缓冲区写到磁盘中,包含已修改的 i-node、已延迟的块 I/O 和读写映射文件)
    

    sysctl

    针对 /proc 进行操作的简易方法,不用再手动修改 /proc 目录(就好比 windows 中组策略与注册表的区别,当然啦 Linux 并没有注册表的概念)。BTW:即便使用 sysctl -w 命令进行操作,重启后会依然会失效。若希望持久保存应写入 /etc/sysctl.conf 文件,还可以使用 sysctl -p 立即运行生效。
    

    当发生内存不足、应用获取不到可用内存、OOM错误等问题时,还是更应该去分析应用方面的原因,如用户量太大导致内存不足、发生应用内存溢出等情况,否则,清空buffer,强制腾出free的大小,可能只是把问题给暂时屏蔽了。——摘自:linuxの飘扬

    四、Reference material

    https://zh.wikipedia.org/wiki/Procfs

    http://blog.csdn.net/sky_qing/article/details/8988461

  • 相关阅读:
    flask多线程多协程操作
    flask介绍
    centos django+Nginx+uwsgi部署
    centos下运行python3.6+Django+mysql项目
    centos虚拟机下安装nginx
    redis安装
    路飞学城课程_课程详细_作业点评
    redis使用方式
    git命令学习
    组合&多态&封装
  • 原文地址:https://www.cnblogs.com/itxdm/p/RHEL_7_memory_management_under_the_small_note.html
Copyright © 2020-2023  润新知