[problem help] 内存用了不到一半,Swap使用率就超过了50%这正常吗,为啥会这样?
Tofloor
poster avatar
qmicrosoftcom
deepin
2024-10-17 12:01
Author

如题
image.png

Reply Favorite View the author
All Replies
1 / 2
To page
马小松
deepin
2024-10-17 12:19
#1

感觉不太正常,是不是swappiness值改了,默认应该是60。

可以用下面的命令查看:

cat /proc/sys/vm/swappiness

当内存使用到一定阈值时,为了释放内存,内核会换出非文件数据到swap或者写回已打开文件。前者需要消耗交换空间。

swappiness值越高,内核更偏向换出非文件数据到swap。

图片.png

Reply View the author
Tonny
deepin
2024-10-17 12:23
#2
It has been deleted!
安洛
deepin
2024-10-17 12:34
#3

这也是有可能发生的。一种常见的情况是之前刚刚运行了一个大程序把内存占满了,现在关闭了这个大程序,就会出现内存空出一块而swap也有占用的情况。另外像是睡眠状态的虚拟机这种“冷”数据也有可能会被存入swap。
反正内存的空闲空间也会被用来缓存经常打开的文件,不用担心内存利用率浪费的问题。

Reply View the author
qmicrosoftcom
deepin
2024-10-17 12:43
#4
马小松

感觉不太正常,是不是swappiness值改了,默认应该是60。

可以用下面的命令查看:

cat /proc/sys/vm/swappiness

当内存使用到一定阈值时,为了释放内存,内核会换出非文件数据到swap或者写回已打开文件。前者需要消耗交换空间。

swappiness值越高,内核更偏向换出非文件数据到swap。

图片.png

cat /proc/sys/vm/swappinesswappiness
60

Reply View the author
qmicrosoftcom
deepin
2024-10-17 12:44
#5
Tonny It has been deleted!

无意义,本来没有,但是电脑用几天就卡,用几天就卡,我寻思是不是没交换分区的事,就弄了一个看看还卡不,结果照样卡。

Reply View the author
马小松
deepin
2024-10-17 13:20
#6
qmicrosoftcom

cat /proc/sys/vm/swappinesswappiness
60

那我感觉可能是deepin的调度有问题吧,debian12没这种问题,一般得等内存快吃满才动swap。

Reply View the author
昨夜的星辰
deepin
2024-10-17 14:45
#7

1.1 Linux的swap原理
1、 控制swap使用的系统参数:swappiness

Swappiness:表示使用物理内存限度
Swappiness为0(100%-0=100%)表示物理内存使用到100%的时候使用swap空间
Swappiness为60(100%-60%=40%)表示物理内存使用到40%的时候使用swap空间

如果swappiness设置太大(内存的速度会比磁盘快很多),这样子会加大系统io,同时造的成大量页的换进换出,严重影响系统的性能,所以我们在操作系统层面,要尽可能使用内存,对该参数进行调整。

2、 Linux默认swappiness

cat /proc/sys/vm/swappiness

60

默认为60,也就是说当物理内存使用到40%的时候开始使用swap。

2 解决
2.1 调整swappiness参数
2.1.1 临时调整

sysctl vm.swappiness=10

vm.swappiness = 10

2.1.2 永久调整

sudo nano /etc/sysctl.conf

vm.swappiness=10

Reply View the author
qmicrosoftcom
deepin
2024-10-17 15:21
#8
昨夜的星辰

1.1 Linux的swap原理
1、 控制swap使用的系统参数:swappiness

Swappiness:表示使用物理内存限度
Swappiness为0(100%-0=100%)表示物理内存使用到100%的时候使用swap空间
Swappiness为60(100%-60%=40%)表示物理内存使用到40%的时候使用swap空间

如果swappiness设置太大(内存的速度会比磁盘快很多),这样子会加大系统io,同时造的成大量页的换进换出,严重影响系统的性能,所以我们在操作系统层面,要尽可能使用内存,对该参数进行调整。

2、 Linux默认swappiness

cat /proc/sys/vm/swappiness

60

默认为60,也就是说当物理内存使用到40%的时候开始使用swap。

2 解决
2.1 调整swappiness参数
2.1.1 临时调整

sysctl vm.swappiness=10

vm.swappiness = 10

2.1.2 永久调整

sudo nano /etc/sysctl.conf

vm.swappiness=10

刚手动改了下 echo 10 > /proc/sys/vm/swappiness

Reply View the author
192******21
deepin
2024-10-17 15:26
#9

我就没给分交换分区。直接一个根分区和EFI分区。运行内存4g。目前不影响用。

Reply View the author
流浪的加菲
deepin
2024-10-17 15:31
#10

专业的知识又增加了,不过物理内存占用40%了就用交换分区是不是阈值太低了,据说硬盘当内存用坏的块呢😂

Reply View the author
昨夜的星辰
deepin
2024-10-17 15:45
#11

sudo nano /etc/sysctl.conf
vm.swappiness=30

我改成30了

Reply View the author
qmicrosoftcom
deepin
2024-10-17 16:16
#12
流浪的加菲

专业的知识又增加了,不过物理内存占用40%了就用交换分区是不是阈值太低了,据说硬盘当内存用坏的块呢😂

谁知道呢,是不是为了兼容小内存,比方1GB内存的40%是400MB这样。

Reply View the author
创天帝
deepin
2024-10-17 16:16
#13

我的运行内存16G,从不设置swap分区

即使为了装要求swap的软件,我也只是临时swapon /swapfile ,并且我的swappiness 值也都是0

Reply View the author
柠萌~
deepin
2024-10-17 20:38
#14

还能改?

Reply View the author
安洛
deepin
2024-10-17 21:21
#15
昨夜的星辰

1.1 Linux的swap原理
1、 控制swap使用的系统参数:swappiness

Swappiness:表示使用物理内存限度
Swappiness为0(100%-0=100%)表示物理内存使用到100%的时候使用swap空间
Swappiness为60(100%-60%=40%)表示物理内存使用到40%的时候使用swap空间

如果swappiness设置太大(内存的速度会比磁盘快很多),这样子会加大系统io,同时造的成大量页的换进换出,严重影响系统的性能,所以我们在操作系统层面,要尽可能使用内存,对该参数进行调整。

2、 Linux默认swappiness

cat /proc/sys/vm/swappiness

60

默认为60,也就是说当物理内存使用到40%的时候开始使用swap。

2 解决
2.1 调整swappiness参数
2.1.1 临时调整

sysctl vm.swappiness=10

vm.swappiness = 10

2.1.2 永久调整

sudo nano /etc/sysctl.conf

vm.swappiness=10

swappiness并不用来控制物理内存的阈值,在一楼的截图里面已经说得很明白了。swappiness控制的是当内存满时,系统将内存写回文件还是swap。当swappiness较大时,内存内容被保存到swap;swappiness较小时,内存内容被尽可能地写回文件。

Reply View the author
Oli
deepin
2024-10-18 00:51
#16

学到了

Reply View the author
hinata
deepin
2024-10-18 01:58
#17

又学到了

Reply View the author
remyxo
deepin
2024-10-18 08:31
#18

我一般是改为10,这个也是很多文章当中的最佳实践

Reply View the author
昨夜的星辰
deepin
2024-10-18 08:42
#19
安洛

swappiness并不用来控制物理内存的阈值,在一楼的截图里面已经说得很明白了。swappiness控制的是当内存满时,系统将内存写回文件还是swap。当swappiness较大时,内存内容被保存到swap;swappiness较小时,内存内容被尽可能地写回文件。

有一个疑问,写回文件是指的写到哪里?既然是能写回到文件里的数据,为什么还要待在内存里,是需要频繁使用的缓存数据?搞不懂😂

Reply View the author
和平老三
deepin
2024-10-18 09:40
#20

[linux swap 内存交换分区详细介绍]

https://bbs.openkylin.top/t/topic/171719

建议看看此帖,可能会颠覆你对swappiness的一些认识

Reply View the author
1 / 2
To page