本文为Oracle x86_64免费的1C1G Ubuntu Server 24.04 Minimal环境,在oracle 的镜像里,Swap是默认禁用的。

只能 启用Swap,1G的物理内存,可以添加个2G的swap。
启用swap
首先创建一个做为swap的空文件,并指定大小
sudo fallocate -l 2G /swap
要做为swap使用,必须为0600权限。因此修改文件权限,并转为swap格式文件。
sudo chmod 600 /swapsudo mkswap /swap
然后启用swap
sudo swapon /swap
这时候再用free -h查看,就可以看到已经启用的swap了。但只是临时启用,重启之后就会失效。需要把配置写入/etc/fstab中,才可以在系统重启后自动挂载。
将以下配置写入fstab中:
/swap swap swap defaults 0 0
如果想停用swap。可以使用以下命令停用,再注释fstab中的配置行。
sudo swapoff /swap
vm.Swappiness
Swappiness 是 Linux 内核的一个属性,用于定义系统使用 SWAP 空间的频率。默认值为 60,可以通过以下命令查看和调整:
cat /proc/sys/vm/swappiness
sudo sysctl vm.swappiness=40
当vm.swappiness的值设置得较低时,比如10,这意味着内核会尽量使用物理内存,而不是swap空间。如果设置得较高,如默认值60,系统会更积极地使用swap空间。在物理内存使用超过一定比例(如40%=100-60)时,系统就会开始将数据交换到swap分区。
对于不同类型的服务器,如Oracle或MySQL,可能需要根据实际运行的应用程序类型来调整这个值,以优化性能。
永久修改: 要永久修改vm.swappiness值,需要编辑/etc/sysctl.conf文件,并添加以下行:
vm.swappiness=40
然后,重新加载配置文件使更改生效:sysctl -p
系统资源查看:vmstat
$ vmstat -S M # 以M为单位显示
procs -----------memory---------- ---swap-- -----io---- -system-- -------cpu-------
r b swpd free buff cache si so bi bo in cs us sy id wa st gu
0 0 17 70 58 582 0 0 8 14 60 0 0 0 100 0 0 0
| procs | memory | swap |
|---|---|---|
| r: 运行队列中的进程数量 b: 等待 I/O 的进程数量 | swpd: 使用的虚拟内存大小(KB) free: 空闲的物理内存大小(KB) buff: 用作缓冲区的内存大小(KB) cache: 用作缓存的内存大小(KB) | si: 每秒从磁盘读入交换区的内存大小(KB/s) so: 每秒写入磁盘的交换区内存大小(KB/s) |
| io | system | cpu |
|---|---|---|
| bi: 每秒从块设备接收的块数(blocks/s) bo: 每秒发送到块设备的块数(blocks/s) | in: 每秒中断数(包括时钟中断) cs: 每秒上下文切换次数 | us: 用户进程占用 CPU 时间百分比 sy: 系统进程占用 CPU 时间百分比 id: 空闲 CPU 时间百分比 wa: 等待 I/O 的 CPU 时间百分比 st: 被虚拟机偷取的时间百分比 |
vmstat 和 top 命令有什么区别?
- top 提供进程级别的详细信息
- vmstat 提供系统整体资源使用情况的概览
si/so 值很高说明什么?
- 表示系统频繁使用交换分区,可能是物理内存不足,建议增加内存或优化应用程序内存使用。
发表回复