如果有空闲RAM,如何清空交换?

简介: 当我打开一个RAM密集型应用程序(VirtualBox设置为2GB RAM)时,通常会使用一些交换空间,具体取决于我当时打开的其他内容。但是,当我退出最后一个应用程序时,2GB的RAM被释放,但仍然使用相同的交换空间。例如,就在关闭VirtualBox大约两个小时后,我有1.6GB的可用内存,仍然有770MB的交换空间。

当我打开一个RAM密集型应用程序(VirtualBox设置为2GB RAM)时,通常会使用一些交换空间,具体取决于我当时打开的其他内容。


但是,当我退出最后一个应用程序时,2GB的RAM被释放,但仍然使用相同的交换空间。


例如,就在关闭VirtualBox大约两个小时后,我有1.6GB的可用内存,仍然有770MB的交换空间。


如何告诉Ubuntu停止使用该交换并恢复使用RAM?


2JWJFKA_)6G$Y0FRWRTD$2J.png

仅仅因为分配了交换,并不意味着它被“使用”。虽然系统监视器和顶部等程序会显示一些交换空间被分配(在您的示例中为770MB),但这并不意味着系统正在主动交换/转出。


要查明是否有任何内容正在交换,您可以使用该vmstat命令。让它运行几秒钟以稳定并观察si(swapin)和so(swapout )列。如果什么也没发生,那就没有理由担心。

这是运行的输出vmstat 1,在那里你可以看到我的机器根本没有交换。

NK2(HIPS2CX6@X~1H1[S0FQ.png

Ubuntu底层的Linux内核会根据需要自动将这些页面从磁盘“交换”到RAM中,所以一般来说我会说让它自然发生。


但是,如果你真的觉得你需要强制它,(我可以看到你想知道系统将在稍后响应的情况)你可以暂时禁用并重新启用交换

sudo swapoff -a
sudo swapon -a

或者作为单行

swapoff -a; swapon -a

)Z0SN0F~3J8PZJH~W%OQ@TT.png


您还可以将默认值设置为“swappiness”值,这样交换开始时就不会变得如此之大。当建议值为10时,为什么出货默认设置为60。来自Ubuntu SwapFAQ:


Ubuntu中的默认设置是swappiness = 60。减少swappiness的默认值可能会提高典型Ubuntu桌面安装的整体性能。建议使用swappiness = 10的值,但可以随意进行实验。


通过将此值更改为10或甚至0,您可以为具有慢速驱动器的旧系统添加显着且可感知的速度提升。将此值设置为0不会为Linux内核3.4及更低版本关闭掉掉,但是如果要将其保持在最低设置*,则需要使用3.5+。


我认为没有理由不将其设置为0,因为任何击中磁盘的东西都比RAM慢。我有8个虚拟内核,一个快速SSD和8 GB内存,我的交换设置为0.到目前为止,我有3台虚拟机正在运行,我的内存使用量为7.1 GB,我使用的交换仅为576KB 952MB,所有系统都运行顺畅!


来自Ubuntu SwapFAQ:


swappiness参数控制内核将进程从物理内存移出到交换磁盘上的趋势。因为磁盘比RAM慢得多,所以如果进程过于积极地移出内存,这可能会导致系统和应用程序的响应时间变慢。


swappiness的值可以介于0到100之间

swappiness = 0告诉内核尽可能长时间地避免将进程交换出物理内存

swappiness = 100告诉内核积极地将进程交换出物理内存并将它们移动到交换缓存

以下是检查swappiness,清空交换以及将swappiness更改为0的基本说明:

要检查swappiness值:

cat /proc/sys/vm/swappiness


暂时将交换设置为0(如SpamapS所示):

这将清空您的交换并将所有交换转移回内存。首先通过查看gnome-system-monitor的资源选项卡确保您有足够的可用内存,您的可用内存应该大于您使用的交换。此过程可能需要一段时间,请使用gnome-system-monitor来监视和验证进度。

sudo swapoff --all

要将新值设置为0:

sudo sysctl vm.swappiness=0

重新打开交换:

sudo swapon --all

要将swappiness永久设置为0:

sudoedit /etc/sysctl.conf

添加行 vm.swappiness = 0

sudo shutdown -r now #re restart系统

*使用内核版本3.5+设置swappiness为0确实完全关闭它,如果你想要最低的swappiness算法,建议设置为1。来源:https://www.percona.com/blog/2014/04/28/oom-relation-vm-swappiness0-new-kernel/

CSTP%CGNVMDJ]X6]37@~[NE.png

我发现清空交换对于磁盘速度慢且RAM有限的系统有很大帮助。当然,正如已经提到的,执行此操作的方法是运行sudo swapoff -a; sudo swapon -a。这里的问题是,如果没有足够的RAM,这样做会导致各种各样的问题。

我写了一个我称之为toggle_swap, 过去几年对我有用的脚本。在实际禁用交换之前,它会检查足够的可用RAM。如下:

#!/bin/bash
free_data="$(free)"
mem_data="$(echo "$free_data" | grep 'Mem:')"
free_mem="$(echo "$mem_data" | awk '{print $4}')"
buffers="$(echo "$mem_data" | awk '{print $6}')"
cache="$(echo "$mem_data" | awk '{print $7}')"
total_free=$((free_mem + buffers + cache))
used_swap="$(echo "$free_data" | grep 'Swap:' | awk '{print $3}')"
echo -e "Free memory:\t$total_free kB ($((total_free / 1024)) MB)\nUsed swap:\t$used_swap kB ($((used_swap / 1024)) MB)"
if [[ $used_swap -eq 0 ]]; then
    echo "Congratulations! No swap is in use."
elif [[ $used_swap -lt $total_free ]]; then
    echo "Freeing swap..."
    sudo swapoff -a
    sudo swapon -a
else
    echo "Not enough free memory. Exiting."
    exit 1
fi

在使用swappiness几天后,我得出的结论是应该让内核自己的管理设备。它知道它在做什么,它经过优化,可以为您提供最佳体验。

除非你有充分的理由想要恢复该磁盘,否则我会留下它。

https://help.ubuntu.com/commu...

相关文章
|
13天前
|
存储 弹性计算 人工智能
【2025云栖精华内容】 打造持续领先,全球覆盖的澎湃算力底座——通用计算产品发布与行业实践专场回顾
2025年9月24日,阿里云弹性计算团队多位产品、技术专家及服务器团队技术专家共同在【2025云栖大会】现场带来了《通用计算产品发布与行业实践》的专场论坛,本论坛聚焦弹性计算多款通用算力产品发布。同时,ECS云服务器安全能力、资源售卖模式、计算AI助手等用户体验关键环节也宣布升级,让用云更简单、更智能。海尔三翼鸟云服务负责人刘建锋先生作为特邀嘉宾,莅临现场分享了关于阿里云ECS g9i推动AIoT平台的场景落地实践。
【2025云栖精华内容】 打造持续领先,全球覆盖的澎湃算力底座——通用计算产品发布与行业实践专场回顾
|
5天前
|
云安全 人工智能 安全
Dify平台集成阿里云AI安全护栏,构建AI Runtime安全防线
阿里云 AI 安全护栏加入Dify平台,打造可信赖的 AI
|
12天前
|
人工智能 自然语言处理 自动驾驶
关于举办首届全国大学生“启真问智”人工智能模型&智能体大赛决赛的通知
关于举办首届全国大学生“启真问智”人工智能模型&智能体大赛决赛的通知
|
8天前
|
人工智能 运维 Java
Spring AI Alibaba Admin 开源!以数据为中心的 Agent 开发平台
Spring AI Alibaba Admin 正式发布!一站式实现 Prompt 管理、动态热更新、评测集构建、自动化评估与全链路可观测,助力企业高效构建可信赖的 AI Agent 应用。开源共建,现已上线!
761 23
|
7天前
|
人工智能 Java Nacos
基于 Spring AI Alibaba + Nacos 的分布式 Multi-Agent 构建指南
本文将针对 Spring AI Alibaba + Nacos 的分布式多智能体构建方案展开介绍,同时结合 Demo 说明快速开发方法与实际效果。
494 37
|
7天前
|
机器学习/深度学习 人工智能 搜索推荐
万字长文深度解析最新Deep Research技术:前沿架构、核心技术与未来展望
近期发生了什么自 2025 年 2 月 OpenAI 正式发布Deep Research以来,深度研究/深度搜索(Deep Research / Deep Search)正在成为信息检索与知识工作的全新范式:系统以多步推理驱动大规模联网检索、跨源证据。
475 41
|
1天前
|
文字识别 监控 物联网
这是我写的实施一地两检的跨境高铁站旅客资料预报系统的系统架构
本文设计了一套基于IAPIS理念的高铁跨境旅客预报与边检联动系统,覆盖青青草原内地与喜羊羊特别行政区间“一地两检”场景。系统在旅客购票后即采集证件、生物特征及行程信息,通过Advance Passenger Info Checker等模块,向出发地和目的地移民管理机构实时推送数据,实现出入境许可预审。支持线上/线下购票、检票、退票全流程管控,结合面部识别、行为追踪技术监控旅客状态,防止滞留或非法通行。列车发车前进行最终核验,确保所有跨境旅客获边检许可。若旅行被中途取消,系统自动改签、退票并通知各方,保障安全与效率。(239字)