当前位置: 首页 > news >正文

第6章:计算机内存实战

Linux内存扩容,swap配置实战

swap 配置参数:swappiness

  • 参数可以从 0 - 100 进行设置,默认值swappiness=60,表示内存使用率超过100 - 60 = 40%时开始使用交换分区。
  • swappiness=0的时候表示最大限度使用物理内存,尽量不用 swap 空间,有些服务器厂商直接设置为 0:
    • 注意:把swappiness设置成 0 不会禁止 swap,是最大限度不用,不是一定不用,想要禁止,就不要开启 swap。
  • swappiness=100的时候表示积极的使用 swap 分区,把内存上的数据及时的搬运到 swap 空间。
  • 命令:
    • 查看:cat /proc/sys/vm/swappiness
    • 临时修改:echo 10 > /proc/sys/vm/swappiness
    • 永久调整:cat /etc/sysctl.conf 加上,vm.swappiness=10

查看是否有开启 swap:free -m,如果没 0,则说明没开启。

Linux 支持两种类型的 Swap:Swap 分区和 Swap 文件(我们实战使用文件方式)。

命令:

  • dd:用指定大小的块拷贝一个文件,并在拷贝的同时进行指定的转换,下面是参数:
    • if = 文件名:输入文件名,缺省为标准输入,即指定源文件。< if = input file >
    • of = 文件名:输出文件名,缺省为标准输出,即指定目的文件。< of = output file >
    • bs = bytes:同时设置读入 / 输出的块大小为 bytes 个字节。
    • count = blocks:仅拷贝 blocks 个块,块大小等于指定的字节数。

  • 例子:
    • 增加 swap 分区文件大小(创建一个大小为 256M 的文件,256 * 1024kb = 262144)
dd if=/dev/zero of=/swapfile bs=1024 count=262144
#/dev/zero是一个输入设备,用它来初始化文件。
    • 把创建的文件变成 swap 文件
mkswap /swapfile
    • 启用这个 swap 文件
swapon /swapfile
    • (可选)编辑 /etc/fstab 文件,末行添加下面命令,每次开机时自动加载 swap 文件
vim /etc/fstab
/swapfile swap swap default 0 0
    • (可选)如果不需要了,可以也可以卸载
sudo swapoff /swapfile
    • (可选)查看 swap 文件位置
swapon -s
    • 查看
free -m

Linux的free命令

free 命令(宏观命令 mpstat \ vm)

  • 显示 Linux 系统中空闲的、已用的物理内存、swap 内存 和 被内核使用的 buffer。
  • 格式:free [参数]

参数

说明

-b

Byte 为单位显示内存使用情况

-k

KB 为单位显示内存使用情况

-m

MB 为单位显示内存使用情况

-g

GB 为单位显示内存使用情况

-h

自动化更好的可读性方式显示

-w

将 buffer 和 cache 拆分单独的两个列显示

-s <间隔秒数>

持续观察内存使用状况,比如每隔两秒显示一次 free -s 2

-t

显示内存总和列,比如 free -th

显示结果说明

数值

解释

total

总计物理内存 + Swap 的大小

used

已使用物理内存 + Swap 的大小

free

可用的物理内存 + Swap 的大小

shared

被共享使用的物理内存大小

buff/cache

磁盘的缓冲和缓存大小,buffers 是块设备做的缓冲大小,cached 是给文件做缓存大小

available

可以被程序使用的内存大小

疑虑点:有一个free列,还有一个available列,这二者到底有何区别?

  • free是真正未被使用的物理内存数量。
  • available是应用程序的角度看到的可用内存数量:
    1. Linux 为了提升读写性能,会消耗一部分内存资源缓存磁盘数据,就是buffercache
    2. 没有足够的free内存可用,内核就会从buffercache中回收内存。
  • 大概计算:
    1. available = free + buff/cache
    2. total = used + free + buff/cache

Linux的top命令详解

  • top 命令(全拼 + 局部)
    • 能够实时显示系统中各个进程的资源占用状况,包括进程 ID、内存占用率、CPU 占用率等。
    • 格式是 top [参数],按 1 后显示各个 CPU 明细情况。
[root@iZwz9eguu9udh3t4kruz8 ~]# top
# 任务队列信息,CPU 1 5 15分钟负载
top - 20:24:16 up 22 days,  3:04,  2 users,  load average: 0.19, 0.27, 0.23# 任务进程信息 total 总进程数, running运行着进程数, sleeping睡眠进程数, stopped停止进程数, zombie僵尸进程数
Tasks: 206 total,   1 running, 184 sleeping,  21 stopped,   0 zombie# us用户态占用cpu的百分比, sy内核态占用CPU的百分比, id —空闲CPU百分比
# wa等待IO占用CPU的百分比, hi硬中断(hardware IRQ)占用CPU的百分比, si软中断(software Interrupts)占用CPU百分比
%Cpu0  :  0.3 us,  0.3 sy,  0.0 ni, 99.1 id,  0.0 wa,  0.0 hi,  0.0 si,  0.0 st
%Cpu1  :  0.3 us,  0.0 sy,  0.0 ni, 99.7 id,  0.0 wa,  0.0 hi,  0.0 si,  0.0 st
%Cpu2  :  0.0 us,  0.3 sy,  0.0 ni, 99.7 id,  0.0 wa,  0.0 hi,  0.0 si,  0.0 st
%Cpu3  :  0.3 us,  0.3 sy,  0.0 ni, 99.3 id,  0.0 wa,  0.0 hi,  0.0 si,  0.0 st# 内存状态 total物理内存总量, free空闲内存总量, used使用中的内存总量, buff/cache缓存的内存量
KiB Mem :  3782388 total,   126176 free,  2638680 used,  1017532 buff/cache# swap交换分区信息 total交换区总量, free空闲交换区总量, used使用的交换区总量, avail mem进程可用内存空间
KiB Swap:        0 total,        0 free,        0 used.   845604 avail Mem # 进程的状态信息 PID 进程Id, USER进程所有者, PR进程优先级  动态优先级;NI nice负值表示高优先级,静态优先级一般不变
# VIRT 进程使用的虚拟内存总量 VIRT=SWAP+RES, 申请过的内存没有真正分配的物理内存也会计算在内, 进程的虚拟内存往往比内存大得多
# RES 进程实际使用的、未被换出的物理内存大小, 即不包括Swap和共享内存, 单位kb
# %SHR 共享内存大小, 单位kb# S进程状态, D=不可中断的睡眠状态 R=运行 S=睡眠 T=停止 Z=僵尸进程;%CPU上次更新到现在的CPU时间占用百分比
# %MEM 进程使用的物理内存百分比;TIME+ 进程使用的CPU总时间, 单位1/100秒;COMMAND 进程名称(命令名/命令行)PID USER      PR  NI    VIRT    RES    SHR S  %CPU %MEM     TIME+ COMMAND                                                     4848 root      20   0 4032844 505308  10956 S  10.3 13.4 107:16.76 java                                                        9858 root      20   0 1053996 135216  13384 S   3.0  3.6 398:12.68 YDService                                                   9 root      20   0       0      0      0 S   0.7  0.0  43:19.53 rcu_sched                                                   1241 polkitd   20   0  154240   4732    764 S   0.7  0.1  66:55.08 redis-server                                                7308 root      20   0 1806540  20352   2540 S   0.7  0.5 416:41.24 barad_agent                                                 
23139 polkitd   20   0  133504   8292   1748 S   0.7  0.2   3:30.94 redis-server                                                
25204 root      20   0 1236448   6080   3132 S   0.7  0.2  10:37.04 containerd-shim                                             
25225 polkitd   20   0   55436   3828   1552 S   0.7  0.1  20:28.27 redis-server                                                4488 polkitd   20   0 2504208 370440   2376 S   0.3  9.8 116:03.67 mysqld                                                      5763 root      20   0 1578968  28692   4936 S   0.3  0.8  57:32.83 containerd                                                  
16228 polkitd   20   0 2866608 390852  14304 S   0.3 10.3   5:45.31 mysqld                                                      
32175 root      20   0 1236448   6896   3292 S   0.3  0.2  23:24.07 containerd-shim                                             
32197 polkitd   20   0 2769316 394148   3524 S   0.3 10.4  93:43.22 mysqld                                                      1 root      20   0   43768   3564   2028 S   0.0  0.1  10:38.98 systemd                                                     2 root      20   0       0      0      0 S   0.0  0.0   0:00.72 kthreadd     


文章转载自:

http://2WlNoUYi.cnkrd.cn
http://dvz6RVMr.cnkrd.cn
http://Dm23ZylH.cnkrd.cn
http://tyEoE9kh.cnkrd.cn
http://jUiVDnEp.cnkrd.cn
http://VHcQhYVE.cnkrd.cn
http://vXnz7pKF.cnkrd.cn
http://WR50tM8K.cnkrd.cn
http://jsSFUsPq.cnkrd.cn
http://RjICZRvi.cnkrd.cn
http://EpvCO8zn.cnkrd.cn
http://LyaTbSZR.cnkrd.cn
http://LXDPNRQT.cnkrd.cn
http://N2RhC2rv.cnkrd.cn
http://5bKSxAu4.cnkrd.cn
http://0KoAfwaT.cnkrd.cn
http://tuO6PltM.cnkrd.cn
http://jhoGTvuJ.cnkrd.cn
http://FyNhB8SO.cnkrd.cn
http://yBKoG6c8.cnkrd.cn
http://oLzdh68k.cnkrd.cn
http://ztq80DrI.cnkrd.cn
http://PvdlqhW2.cnkrd.cn
http://ubiOhOQk.cnkrd.cn
http://IclGItyS.cnkrd.cn
http://JILlVCoB.cnkrd.cn
http://BDhy99PA.cnkrd.cn
http://zYIQ16AG.cnkrd.cn
http://V5PldDuK.cnkrd.cn
http://7oJA5MIE.cnkrd.cn
http://www.dtcms.com/a/388176.html

相关文章:

  • 模型压缩与量化实战:将BERT模型缩小4倍并加速推理
  • RS485 与 CAN 通讯:选哪个更合适?
  • 腾讯微保社招笔试
  • centos系统安装mysql8
  • Go语言垃圾回收器深入解析
  • 大模型的领域知识注入的四种路径
  • 寻找高速传输新选择:当传统方案不再满足现代企业需求
  • (CV方向)视频理解前沿:基于TimeSformer的时空注意力模型实战
  • hot100--简单题(3)
  • STM32开发(TIM定时器:通用定时器 - PWM)
  • 从原始数据到高效模型:基础特征工程的系统指南
  • 大数据场景下时序数据库选型指南,Apache IoTDB的领先技术和实践
  • Charles移动端抓包实战指南:从入门到精通HTTPS流量解析
  • 使用 uv 发布 Python 包到 PyPI 教程
  • GESP7级中所有class类的题目
  • Python实现PDF图片OCR识别:从原理到实战的全流程解析
  • React原理一
  • 智能化解决方案的选择:探索领先的倾角传感器和水平监测传感器厂家
  • 芯片制造中光刻工艺里出现的I-line光刻胶是什么?
  • 如何通过 .sln 文件判断项目使用的 Visual Studio 版本
  • Qt QLogValueAxis详解
  • Oracle为数据大表创建索引方案
  • 5T核磁mr效果
  • 【仿真测试】基于FPGA的完整QPSK通信链路实现,含频偏锁定,帧同步,定时点,Viterbi译码,信道,误码统计
  • TCP和HTTP的关系
  • 数据结构从入门到实战————链表
  • 将个人网站迁移成红警风格
  • 【用函数删除数组中特定数字】2022-11-23
  • MySQL序列,模拟Oracle序列MySQL如何备份才能不丢“下一个值”?
  • python发送请求不使用代理