【服务器】Ubuntu虚拟内存设置
引子
最近服务器内存老是爆掉,64G的内存对于四五个人同时使用还是有点勉强,上网查询了一下虚拟内存的教程,本博客记录一下方法。
swap内存设置
假设你想将swap文件放在/mnt/data/mem目录下,以下是详细的步骤:
创建并启用Swap文件
创建目录(如果目录不存在):
sudo mkdir -p /mnt/data/mem
创建一个64GB的swap文件:
sudo fallocate -l 64G /mnt/data/mem/swapfile
t=64
64+0 records in
64+0 records out
68719476736 bytes (69 GB, 64 GiB) copied, 262.527 s, 262 MB/s
如果
fallocate命令不可用,可以使用dd命令:sudo dd if=/dev/zero of=/mnt/data/mem/swapfile bs=1G count=64
设置正确的权限:
sudo chmod 600 /mnt/data/mem/swapfile
Setting up swapspace version 1, size = 64 GiB (68719472640 bytes)
no label, UUID=c3dec71e-d8ef-4aa7-9501-7694112fc4c4
将文件格式化为swap空间:
sudo mkswap /mnt/data/mem/swapfile
启用swap文件:
sudo swapon /mnt/data/mem/swapfile
验证swap是否启用:
sudo swapon --show
NAME TYPE SIZE USED PRIO
/swapfile file 2G 2G -2
/mnt/data/mem/swapfile file 64G 0B -3
或者:
free -h
持久化Swap文件
为了在系统重启后仍然保留这个swap文件,需要将其添加到/etc/fstab文件中:
备份
/etc/fstab文件:sudo cp /etc/fstab /etc/fstab.bak
编辑
/etc/fstab文件:sudo nano /etc/fstab
在文件末尾添加以下内容:
/mnt/data/mem/swapfile none swap sw 0 0
保存并退出编辑器。
调整Swappiness值(可选)
Swappiness参数控制系统交换的频率,范围是0到100。值越高,系统越频繁地使用swap。默认值通常是60,可以根据需求调整:
检查当前swappiness值:
cat /proc/sys/vm/swappiness
设置新的swappiness值(例如,设置为10):
sudo sysctl vm.swappiness=10
使该设置在重启后仍然有效:
sudo nano /etc/sysctl.conf
在文件末尾添加:
vm.swappiness=10
保存并退出编辑器。
完成以上步骤后,你的Ubuntu系统应该已经成功配置了位于/mnt/data/mem目录下的64GB的虚拟内存。

swappiness推荐
在配置系统的swappiness参数时,主要取决于你对系统性能的需求以及具体的使用场景。Swappiness参数控制了Linux内核如何使用交换空间(swap)的频率。它的值范围是从0到100:
- 值为0时,内核将尽量避免使用交换空间。
- 值为100时,内核将非常频繁地使用交换空间。
推荐的Swappiness设置
对于你的系统配置(64GB物理内存和64GB交换空间),以下是一些推荐:
桌面系统或开发环境:
如果你主要用于桌面应用或开发环境,通常希望尽量减少交换空间的使用以保持系统响应速度。推荐将swappiness设置为较低的值,例如:sudo sysctl vm.swappiness=10
服务器或内存紧张的环境:
如果你的系统运行在服务器环境中,或者经常需要处理大量数据并且内存使用接近最大值,适当增加swappiness值可以帮助系统更好地管理内存。推荐值可以设置在30到60之间:sudo sysctl vm.swappiness=30
混合用途:
如果你的系统有多种用途(如同时运行桌面应用和服务器任务),可以选择一个中间值,例如:sudo sysctl vm.swappiness=20
调整和持久化Swappiness值
临时调整
swappiness值:sudo sysctl vm.swappiness=20
使
swappiness值在重启后仍然有效:
编辑/etc/sysctl.conf文件:sudo nano /etc/sysctl.conf
在文件末尾添加:
vm.swappiness=20
保存并退出编辑器。
验证Swappiness值
你可以通过以下命令验证当前的swappiness值:
cat /proc/sys/vm/swappiness
监控和调整
请注意,最佳的swappiness设置可能需要一些实验和监控。你可以在实际使用中观察系统的性能和内存使用情况,并根据需要进行调整。
总结:
- 桌面系统或开发环境:推荐
swappiness=10 - 服务器或内存紧张的环境:推荐
swappiness=30到60 - 混合用途:推荐
swappiness=20
通过以上方法,你可以找到一个平衡点,使你的系统在性能和内存管理之间达到最佳状态。
虚拟内存移回物理内存
要将虚拟内存(swap)中的内容移回到物理内存中,你可以通过以下步骤来实现。这通常涉及到禁用并重新启用交换空间,这样系统会将交换空间中的内容移回到物理内存中。
步骤:
降低
swappiness值(可选但推荐):
这可以减少系统将内存页面移到交换空间的频率。sudo sysctl vm.swappiness=10
禁用交换空间:
禁用交换空间会强制系统将交换空间中的内容移回到物理内存中。sudo swapoff -a
重新启用交换空间:
重新启用交换空间,以便在需要时系统可以再次使用它。sudo swapon -a
验证交换空间是否已清空:
你可以使用以下命令查看交换空间的使用情况。free -h
或者:
swapon --show
示例命令
以下是上述步骤的完整命令集:
# 降低swappiness值
sudo sysctl vm.swappiness=10
# 禁用交换空间
sudo swapoff -a
# 重新启用交换空间
sudo swapon -a
# 验证交换空间是否已清空
free -h
持久化swappiness值(可选)
如果你希望永久降低swappiness值,可以编辑/etc/sysctl.conf文件:
sudo nano /etc/sysctl.conf
在文件末尾添加:
vm.swappiness=10
保存并退出编辑器。
注意事项
- 确保你有足够的物理内存来容纳从交换空间中移回的内容。
- 在执行这些操作之前,确保没有关键任务正在运行,因为禁用和重新启用交换空间可能会短暂影响系统性能。
通过以上步骤,你应该能够将虚拟内存中的内容移回到物理内存中,从而提高系统性能。
虚拟内存大小更改
如果你想将虚拟内存(swap)调整为16GB,可以通过以下步骤来实现。这包括删除现有的swap文件(如果存在),创建一个新的16GB的swap文件,并启用它。
步骤:
禁用当前的交换空间:
sudo swapoff -a
删除现有的swap文件(假设你的swap文件位于
/mnt/data/mem/swapfile):sudo rm /mnt/data/mem/swapfile
创建一个新的16GB的swap文件:
sudo fallocate -l 16G /mnt/data/mem/swapfile
如果
fallocate命令不可用,可以使用dd命令:sudo dd if=/dev/zero of=/mnt/data/mem/swapfile bs=1G count=16
设置正确的权限:
sudo chmod 600 /mnt/data/mem/swapfile
将文件格式化为swap空间:
sudo mkswap /mnt/data/mem/swapfile
启用新的swap文件:
sudo swapon /mnt/data/mem/swapfile
验证新的swap是否启用:
sudo swapon --show
或者:
free -h
持久化新的Swap文件
为了在系统重启后仍然保留这个新的swap文件,需要确保它在/etc/fstab文件中正确配置:
编辑
/etc/fstab文件:sudo nano /etc/fstab
在文件中查找并删除旧的swap文件配置,并添加以下内容:
/mnt/data/mem/swapfile none swap sw 0 0
保存并退出编辑器。
示例命令
以下是上述步骤的完整命令集:
# 禁用当前的交换空间
sudo swapoff -a
# 删除现有的swap文件
sudo rm /mnt/data/mem/swapfile
# 创建一个新的16GB的swap文件
sudo fallocate -l 16G /mnt/data/mem/swapfile
# 设置正确的权限
sudo chmod 600 /mnt/data/mem/swapfile
# 将文件格式化为swap空间
sudo mkswap /mnt/data/mem/swapfile
# 启用新的swap文件
sudo swapon /mnt/data/mem/swapfile
# 验证新的swap是否启用
sudo swapon --show
# 或者
free -h
# 编辑/etc/fstab文件,持久化新的swap文件
sudo nano /etc/fstab
# 在文件中添加以下内容:
# /mnt/data/mem/swapfile none swap sw 0 0
# 保存并退出编辑器
通过以上步骤,你应该能够成功地将虚拟内存调整为16GB。
【服务器】Ubuntu虚拟内存设置的更多相关文章
- ubuntu下设置DNS服务器
当网卡通过DHCP获取IP地址时,DHCP会根据DHCP服务器配置,自动给系统分配DNS服务器地址,此时执行 ping www.baidu.com 动作,会将百度的域名在本地转换成ip地址,然后走路由 ...
- ubuntu下设置数据库字符集
就linux环境下出现的数据库乱码的问题,以ubuntu为例进行的总结 ubuntu环境设置的字符集utf8,windows默认字符集是GBK,Ubuntu的默认字符集为utf-8,这使 得在用tel ...
- Ubuntu中设置静态IP和DNS
在Ubuntu中设置静态IP共两步:1>设置IP:2>设置DNS1>设置IP 编辑 /etc/network/interface文件: sudo vi /etc/n ...
- Ubuntu中设置静态IP和DNS(转载)
原文地址:http://blog.sina.com.cn/s/blog_669421480102v3bb.html VMware 中使用网络,对虚拟机设置静态IP:在Ubuntu中设置静态IP共两步: ...
- 阿里云服务器ubuntu 配置
由于阿里云的导入自定义 ubuntu 镜像需要开通 OSS 快照是收费的(看着感觉不贵,但是也很麻烦),而且自己已配置好的镜像想导入需要转换格式,还存在不能使用的情况,所以麻烦点直接在阿里云原来的ub ...
- [转载]ubuntu防火墙设置
原文地址:ubuntu防火墙设置作者:風飏 自打2.4版本以后的Linux内核中, 提供了一个非常优秀的防火墙工具.这个工具可以对出入服务的网络数据进行分割.过滤.转发等等细微的控制,进而实现诸 ...
- Ubuntu命令设置ip网关dns
本文系转载,介绍Ubuntu如何设置IP和网络来连接网络 如果是在虚拟机中使用Ubuntu,那么设置之前请先参照我的上一遍文章虚拟机Net方式设置连接外网中的网络设置部分,先设置好主机的网络,然后配置 ...
- Ubuntu下设置VNCServer
Ubuntu下设置VNCServer Virtual Network Computing(VNC)是进行远程桌面控制的一个软件.客户端的键盘输入和鼠标操作通过网络传输到远程服务器,控制服务器的操作.服 ...
- Linux服务器安全登录设置记录
在日常运维工作中,对加固服务器的安全设置是一个机器重要的环境.比较推荐的做法是:1)严格限制ssh登陆(参考:Linux系统下的ssh使用(依据个人经验总结)): 修改ssh默认监听端口 ...
- ubuntu server设置时区和更新时间
ubuntu server设置时区和更新时间 今天测试时,发现时间不对,查了一下时区: data -R 结果时区是:+0000 我需要的是东八区,这儿显示不是,所以需要设置一个时区 一.运行 ...
随机推荐
- Android Media Framework - 开篇
前言 Android Media是一块非常庞大的内容,上到APP的书写,中到播放器的实现.封装格式的了解,下到编解码组件的封装.VPU API的了解,每块内容的学习都需要我们下很大的功夫.此外,我们还 ...
- AI实用技巧 | 5分钟将coze集成到微信群机器人
细心的小伙伴已经注意到,国内的Coze平台已经开放了API,这一发现让他们感到兴奋不已.因此,他们迫切地想要掌握这一机会,将API应用到实际中,让Coze成为他们的得力助手.这样一来,他们就可以避免每 ...
- OC的引用计数
一.引用计数 引用计数是Objetive-C语言的内存管理机制,用于管理OC对象(通常指包含isa指针的结构体)的内存. 一个对象的引用计数为大于0的计数,表示这个对象被持有,不能被释放,当引用计数为 ...
- SMOGN算法Python实现:解决回归分析中的数据不平衡
本文介绍基于Python语言中的smogn包,读取.csv格式的Excel表格文件,实现SMOGN算法,对机器学习.深度学习回归中,训练数据集不平衡的情况加以解决的具体方法. 在不平衡回归问题 ...
- uniapp 页面跳转传值和接收
前端面试题库地址:https://www.yuque.com/sxd_panda/sdluga 1.首先介绍最原始的跳转方法,类似于html中的a标签,不过在uniapp中需要将a标签换成 <n ...
- CF Round 881 (Div. 3)
CF Round 881 (Div. 3) Div. 3 果然简单,虽然但是,我还是有 1 道题没有想出来. A.Sasha and Array Coloring 排序双指针向内即可. https:/ ...
- DBEAVER 23.0.2 调整SQL编辑器字体大小 ver:20240112
DBEAVER 23.0.2 调整SQL编辑器字体大小 ver:20240112 版本是:23.0.2. 菜单-窗口-首选项.用户界面-外观-颜色和字体.展开 DBeaver Font."M ...
- 警告: BASE64Decoder是内部专用 API, 可能会在未来发行版中删除
警告: BASE64Decoder是内部专用 API, 可能会在未来发行版中删除 import org.apache.commons.codec.binary.Base64; public class ...
- CentOS8 安装ansible
# 安装epel扩展源 yum install https://dl.fedoraproject.org/pub/epel/epel-release-latest-8.noarch.rpm -y # ...
- Python中r+,w+,a+的区别
相信有很多人对他们的区别不清楚,网上对他们的讨论又过于复杂. 其实利用光标位置来区分它们就会变得非常地简单. r+读写模式 打开文件之后光标位置位于0的位置 根据光标位置读写 w+写读模式 会清空文件 ...