A. linux服务器要怎么查看内存
1. free命令
命令格式:free -m
用途:用于检查有关系统RAM的使用情况(查看系统的可用和已用内存)。
可用内存计算公式:
可用内存=free +buffers +cached, 实际操作即:215 +11+57 =253MB。
2. vmstat 指令
命令格式:vmstat -s(参数)
用途:用于查看系统的内存存储信息,是一个报告虚拟内存统计信息的小工具,vmstat 命令报告包括:进程、内存、分页、阻塞IO、中断、磁盘、CPU。
3. /proc/meminfo 指令
命令格式:cat/proc/meminfo
用途:用于从/proc文件系统中提取与内存相关的信息。这些文件包含有系统和内核的内部信息。
SwapFree中的交换内存。
PS:你还可以使用命令less /proc/meminfo 直接读取该文件。通过使用less 命令,可以在长长的输出中向上和向下滚动,找到你需要的内容哦~
4. top 指令
命令格式:top
用途:用于打印系统中的CPU和内存使用情况。
PS:如果你想让top 显示更友好的内存信息,使用命令top -o %MEM,这会使top 按进程所用内存对所有进程进行排序。
5. htop 指令
命令格式:htop
用途:详细分析CPU和内存使用情况。
PS:如果你终端没安装htop,先通过指令来安装。
命令格式:sudo apt-get update
接着输入以下指令
命令格式:sudo apt install htop
等一切安装结束之后。请输入以下指令即可。
B. Linux内存文件系统tmpfs(/dev/shm)详细介绍
一、/dev/shm理论
默认的Linux发行版中的内核配置都会开启tmpfs,映射到了/dev/下的shm目录。可以通过df
命令查看结果.
/dev/shm/是linux下一个非常有用的目录,因为这个目录不在硬盘上,而是在内存里。因此在linux下,就不需要大费周折去建ramdisk,直接使用/dev/shm/就可达到很好的优化效果。默认系统就会加载/dev/shm
,它就是所谓的tmpfs,有人说跟ramdisk(虚拟磁盘),但不一样。象虚拟磁盘一样,tmpfs
可以使用您的
RAM,但它也可以使用您的交换分区来存储。而且传统的虚拟磁盘是个块设备,并需要一个
mkfs
之类的命令才能真正地使用它,tmpfs
是一个文件系统,而不是块设备;您只是安装它,它就可以使用了。
tmpfs有以下优势:
1。动态文件系统的大小,/dev
/shm/需要注意的一个是容量问题,在linux下,它默认最大为内存的一半大小,使用df
-h命令可以看到。但它并不会真正的占用这块内存,如果/dev/shm/下没有任何文件,它占用的内存实际上就是0字节;如果它最大为1G,里头放有
100M文件,那剩余的900M仍然可为其它应用程序所使用,但它所占用的100M内存,是绝不会被系统回收重新划分的
2。tmpfs
的另一个主要的好处是它闪电般的速度。因为典型的
tmpfs
文件系统会完全驻留在
RAM
中,读写几乎可以是瞬间的。
3。tmpfs
数据在重新启动之后不会保留,因为虚拟内存本质上就是易失的。所以有必要做一些脚本做诸如加载,绑定的操作。
二、修改/dev/shm大小
默认的最大一半内存大小在某些场合可能不够用,并且默认的inode数量很低一般都要调高些,这时可以用mount命令来管理它。
#mount
-o
size=1500M
-o
nr_inodes=1000000
-o
noatime,nodiratime
-o
remount
/dev/shm
在2G的机器上,将最大容量调到1.5G,并且inode数量调到1000000,这意味着大致可存入最多一百万个小文件。
如果需要永久修改/dev/shm的值,需要修改/etc/fstab
代码如下:
tmpfs
/dev/shm
tmpfs
defaults,size=1.5G
0
0
mount
-o
remount
/dev/shm
三、/dev/shm应用
首先在/dev/shm建个tmp文件夹,然后与实际/tmp绑定
代码如下:
#mkdir
/dev/shm/tmp
#chmod
1777
/dev/shm/tmp
#mount
–bind
/dev/shm/tmp
/tmp(–bind
)
在使用mount
–bind
olderdir
newerdir命令来挂载一个目录到另一个目录后,newerdir的权限和所有者等所有信息会发生变化。挂载后的目录继承了被挂载目录的所有属性,除了名称。
C. 如何限制Linux内存的使用
swap是一块磁盘空间或者一个本地文件
/proc/sys/vm/swappiness 可以设置服务器使用 swap 的积极程度。取值范围为0-100,值越大,越积极使用swap,更倾向于回收匿名页;值越小,越消极使用swap,更倾向于回收文件页。
即使swap设置为0,当剩余内存+文件页小于页高阈值( pages_high )的时候,也会发生swap
Linux有专门的内核线程 kswapd0 定期回收内存,为了衡量内存的使用情况, kswapd0 定义了三个内存阈值:页最小阈值 pages_min 、页低阈值 pages_low 和页高阈值 pages_high ,剩余内存使用 pages_free 表示。
kswapd0 定期扫描内存的使用情况,并根据剩余内存和这三个阈值的关系进行内存回收操作。
pages_free < pages_min :进程可用内存耗尽,只有内核才可以分配内存
pages_min < pages_free < pages_low :内存压力较大, kswapd0 会执行内存回收,直到剩余内存大于高阈值为止
pages_low < pages_free < pages_high :内存有一定压力,但还可以满足新内存请求
pages_free > pages_high :剩余内存较多,没有内存压力。
这些阈值可以通过内核选项来 proc/sys/vm/min_free_kbytes 间接设置。 min_free_kbytes 设置了页最小阈值( pages_min )。 pages_low=pages_min*5/4 , pages_high=pages_min*3/2
/etc/security/limits.conf
通过这个配置文件可以对每个登录的会话进行限制,这种限制不是全局的,也不是永久的,只在会话期间起作用。
通常,对单个用户的限制优先级高于对用户组的限制
可以使用以下方式限制内存使用
语法
<domain> <type> <item> <value>
详见 limits.conf(5) - Linux man page
/proc/sys/vm/overcommit_memory 控制内核使用虚拟内存的模式,可以设置为以下值
D. linux查看内存使用情况
linux查看内存使用情况的方法是,1,proc。meminfo,查看 RAM 使用情况最简单的方法是通过 ,procmeminfo。这个动态更新的虚拟文件实际上是许多其他内存相关工具 free ,ps ,top的组合显示。
2,atop。atop 命令是一个终端环境的监控命令。它显示的是各种系统资源,CPU, memory, network, IOkernel的综合,并且在高负载的情况下进行了彩色标注。
3,free。free 命令是一个快速查看内存使用情况的方法,它是对 ,proc,meminfo 收集到的信息的一个概述。
4,GNOME System Monitor。GNOME System Monitor 是一个显示最近一段时间内的 CPU内存交换区及网络的使用情况的视图工具。它还提供了一种查看 CPU 及内存使用情况的方法。
5,htop。htop 命令显示了每个进程的内存实时使用率。它提供了所有进程的常驻内存大小,程序总内存大小,共享库大小等的报告,列表可以水平及垂直滚动。6,KDE System Monitor功能同 4 中介绍的 GENOME 版本。
E. linux 怎么知道虚拟内存文件的目录在哪里
Linux下的内存交换文件是在 swap 分区,它不是单独的文件(不是Windows那样)。而是一个单独的swap类型的分区。
要查看swap分区在哪个硬盘上,可以用 fdisk -l 查看硬盘的详细情况。比如以下是我一个80G硬盘的分区:
#fdisk-l
Disk/dev/sda:80.0GB,80000000000bytes
255heads,63sectors/track,9726cylinders,total156250000sectors
Units=sectorsof1*512=512bytes
Sectorsize(logical/physical):512bytes/512bytes
I/Osize(minimum/optimal):512bytes/512bytes
Diskidentifier:0x0008530a
/dev/sda1*20481541734397708569683Linux
/dev/
/dev//Solaris
这里最后一行,就是内存交换分区。
如果要看交换分区使用情况,可以用 top 命令查看:
top-14:08:21up13days,3:13,2users,loadaverage:0.00,0.01,0.05
Tasks:114total,2running,112sleeping,0stopped,0zombie
%Cpu(s):0.0us,0.0sy,0.0ni,100.0id,0.0wa,0.0hi,0.0si,0.0st
KiBMem:2038432total,1722016used,316416free,211252buffers
KiBSwap:1036284total,2308used,1033976free.1035788cachedMem
其中的 Swap 就是使用情况。
F. 如何在linux上重建初始化内存盘镜像文件
在CentOS 5.X / RHEL 5.X中,可以用mkinitrd命令来创建初始化内存盘文件,举例如下:
# mkinitrd -f -v /boot/initrd-$(uname -r).img $(uname -r)
如果你想要给特定的内核版本创建初始化内存盘,你就用所需的内核名替换掉 uname -r。
在CentOS 6.X / RHEL 6.X中,则用dracut命令来创建初始化内存盘文件,举例如下:
# dracut -f
以上命令能给当前的系统版本创建初始化内存盘,给特定的内核版本重建初始化内存盘文件则使用以下命令:
# dracut -f initramfs-2.x.xx-xx.el6.x86_64.img 2.x.xx-xx.el6.x86_64
请参考《Linux就该这么学》入门书籍。