ubuntu交换空间设置

租了一年的2核2G的阿里云服务器,随着安装的软件增多(其实也没装几个)发现开始偶尔出现卡顿。
于是查看了一下,发现swap空间是0。才想起来,搞了之后只管用了,都没做什么配置。
于是乎,先查看下系统情况:

top - 14:37:12 up 22 min,  2 users,  load average: 0.00, 0.01, 0.03
Tasks: 195 total,   1 running, 194 sleeping,   0 stopped,   0 zombie
%Cpu(s):  1.0 us,  0.3 sy,  0.0 ni, 98.7 id,  0.0 wa,  0.0 hi,  0.0 si,  0.0 st
MiB Mem :   1673.0 total,     67.8 free,   1233.7 used,    371.5 buff/cache
MiB Swap:      0.0 total,      0.0 free,      0.0 used.    265.3 avail Mem 

    PID USER      PR  NI    VIRT    RES    SHR S  %CPU  %MEM     TIME+ COMMAND                                                                                                          
   1169 mysql     20   0 1783944 368240   9416 S   0.6  21.5   0:05.31 mysqld                                                                                                           
   1221 root      20   0  129864  11120   7360 S   0.6   0.6   0:10.16 AliYunDunMonito                                                                                                  
    913 gwyy23c1  20   0   11.5g 266200  26108 S   0.3  15.5   0:12.71 node-red                                                                                                         
   1172 root      20   0   95904   9512   8276 S   0.3   0.6   0:05.60 AliYunDun                                                                                                        
   1291 gdm       20   0 3817332 143512  61740 S   0.3   8.4   0:03.10 gnome-shell                                                                                                      
   3457 gwyy23c1  20   0   11064   3920   3308 R   0.3   0.2   0:00.07 top                                                                                                              
      1 root      20   0  166756  11500   7660 S   0.0   0.7   0:01.27 systemd                                                                                                          
      2 root      20   0       0      0      0 S   0.0   0.0   0:00.00 kthreadd                                                                                                         
      3 root       0 -20       0      0      0 I   0.0   0.0   0:00.00 rcu_gp                                                                                                           
      4 root       0 -20       0      0      0 I   0.0   0.0   0:00.00 rcu_par_gp                                                                                                       
      5 root       0 -20       0      0      0 I   0.0   0.0   0:00.00 slub_flushwq                                                                                                     
      6 root       0 -20       0      0      0 I   0.0   0.0   0:00.00 netns                                                                                                            
      8 root       0 -20       0      0      0 I   0.0   0.0   0:00.00 kworker/0:0H-events_highpri                                                                                      
     10 root       0 -20       0      0      0 I   0.0   0.0   0:00.00 mm_percpu_wq                                                                                                     
     11 root      20   0       0      0      0 S   0.0   0.0   0:00.00 rcu_tasks_rude_                                                                                                  
     12 root      20   0       0      0      0 S   0.0   0.0   0:00.00 rcu_tasks_trace                                                                                                  
     13 root      20   0       0      0      0 S   0.0   0.0   0:00.04 ksoftirqd/0                                                                                                      
     14 root      20   0       0      0      0 I   0.0   0.0   0:00.21 rcu_sched                                                                                                        
     15 root      rt   0       0      0      0 S   0.0   0.0   0:00.00 migration/0                                                                                                      
     16 root     -51   0       0      0      0 S   0.0   0.0   0:00.00 idle_inject/0                                                                                                    
     17 root      20   0       0      0      0 I   0.0   0.0   0:00.13 kworker/0:1-events                                                                                               
     18 root      20   0       0      0      0 S   0.0   0.0   0:00.00 cpuhp/0                                                                                                          
     19 root      20   0       0      0      0 S   0.0   0.0   0:00.00 cpuhp/1                                                                                                          
     20 root     -51   0       0      0      0 S   0.0   0.0   0:00.00 idle_inject/1                                                                                                    
     21 root      rt   0       0      0      0 S   0.0   0.0   0:00.05 migration/1                                                                                                      
     22 root      20   0       0      0      0 S   0.0   0.0   0:00.04 ksoftirqd/1                                                                                                      
     24 root       0 -20       0      0      0 I   0.0   0.0   0:00.00 kworker/1:0H-events_highpri                                                                                      
     25 root      20   0       0      0      0 S   0.0   0.0   0:00.00 kdevtmpfs                                                                                                        
     26 root       0 -20       0      0      0 I   0.0   0.0   0:00.00 inet_frag_wq                                                                                                     
     27 root      20   0       0      0      0 S   0.0   0.0   0:00.00 kauditd                                                                                                          
     29 root      20   0       0      0      0 S   0.0   0.0   0:00.00 khungtaskd  

查看发现,cpu使用不多,但内存占用很高。我一直是远程ssh的,没想到还有GNOME桌面也在运行。
先关桌面进程。

sudo systemctl stop gdm

再配置交换文件。

创建文件

sudo fallocate -l 16G /swapfile

权限设置

sudo chmod 600 /swapfile

设置交换文件

sudo mkswap /swapfile

启用交换文件

sudo swapon /swapfile

验证交换文件是否启用

$ free -h
               total        used        free      shared  buff/cache   available
Mem:           1.6Gi       1.1Gi       104Mi        11Mi       467Mi       384Mi
Swap:           15Gi       166Mi        15Gi

或者

$ sudo swapon --show
NAME      TYPE SIZE USED PRIO
/swapfile file  16G   0B   -2

编辑配置文件

编辑/etc/fstab文件

sudo nano /etc/fstab

添加内容

/swapfile none swap sw 0 0

重启系统后,再次检查,没问题,说明配置好了。
再调整下交换空间优先级。
打开配置文件

sudo nano /etc/sysctl.conf

增加内容

vm.swappiness=30
vm.vfs_cache_pressure=50

vm.swappiness
作用:
vm.swappiness 参数控制内核将数据从物理内存移动到交换空间(swap)的倾向。它的值范围是0到100。
该参数决定了内核在内存压力下如何平衡使用物理内存和交换空间。
值的意义:
0:内核会尽量避免使用交换空间,只有在绝对必要时才会使用。这通常用于需要低延迟的应用,如实时系统或数据库服务器。
100:内核会积极地将数据移到交换空间,以保持更多的物理内存空闲。这通常用于希望最大化物理内存可用性的系统。
vm.vfs_cache_pressure
作用:
vm.vfs_cache_pressure 参数控制内核释放缓存页(特别是文件系统缓存)的压力。它的值范围是0到100。
该参数决定了内核在内存不足时如何处理文件系统缓存。
值的意义:
0:内核几乎不会释放缓存页,即使内存压力很大。这可能会导致内存不足的情况。
100:内核会非常积极地释放缓存页,即使内存压力不是很高。这可能会导致频繁的磁盘I/O,降低性能。

posted @ 2024-10-13 15:34  科里布  阅读(32)  评论(0编辑  收藏  举报