为Ubuntu增加swap空间并调整性能

2023-05-16

版本说明:

Raspberry Pi 3B+

Ubuntu 20.04 server

本文参考翻译自这篇文章。

SWAP文件的设置

      Swap是硬盘存储的一部分,它被预留给操作系统。当RAM中不再有足够的空间来保存正在运行的应用程序数据的时候,硬盘中的Swap空间可以用来临时存储那些无法再在RAM中保存的数据,这可以增加服务器在其工作内存中保存的信息量。

先看看操作系统是不是已经预留了swap空间:

swapon –show

如果没有任何输出,说明没有swap空间。

再用free -h命令看看:

没想到,我的Raspberry Pi 3B+根本没有预留swap空间,这就是为什么系统经常会出现out of memory的原因。

一般来说,等于或是系统内存量的两倍是一个很好的起点。另一个很好的经验法则是,如果您只是将4G以上的交换用作RAM备用(fallback),那么它可能是不必要的。

查Raspberry Pi 3B+的RAM是多少,从free -h(或则cat /proc/meminfo)中看,RAM是1G。所以,按上述原则,设置1G或2G的SWAP比较合适。

建立一个叫swapfile的swap文件,尺寸是1G:

sudo fallocate -l 1G /swapfile

看一下情况:

ls -lh /swapfile

 为这个文件限制特权:

sudo chmod 600 /swapfile

 让swapfile变成swap空间:

sudo mkswap /swapfile

 开启这个swap文件:

sudo swapon /swapfile

然后看一下是不是起作用了:

 重启后上述关于swap的设置会失效,所以需要永久保存所有有关swap的设置。

先备份fstab文件:

sudo cp /etc/fstab /etc/fstab.bak

然后把swap的设置信息放到fstab的后面:

echo '/swapfile none swap sw 0 0' | sudo tee -a /etc/fstab

关于swap的设置完毕。

有关swap文件的两种性能调整参数

swappiness

      swappiness参数是将数据从RAM交换到swap空间的频率。这是一个介于0和100之间的值,代表一个百分比。如果值接近零,除非绝对必要,否则内核不会将数据交换到硬盘。记住,与swap文件的交互是“昂贵的”,因为它们比与RAM的交互花费的时间要长得多,并且会导致性能显著降低。告诉系统不要太依赖swap通常会使系统更快。

     接近100的值将尝试将更多数据放入swap,以保持更多的RAM空间。根据应用程序的内存配置文件或服务器的用途,在某些情况下这可能会更好。

查看当前的swappiness:

cat /proc/sys/vm/swappiness

输出:60

对桌面系统来说60不是个坏的数字,但是对于服务器,应该接近0.

可以用sysctl改变swappiness的值:

sudo sysctl vm.swappiness=10

这是临时设置,如果需要将设置变成永久的,在etc/sysctl.conf中增加这项:

sudo nano /etc/sysctl.conf

在最底下增加:

vm.swappiness=10

vfs_cache_pressure

   此参数可以让系统选择在多大程度上缓存inodedentry信息,而不是其他数据。基本上,这是访问有关文件系统的数据,而访问这些数据通常会出现非常昂贵的查找和非常频繁的请求,所以系统缓存这些数据可以显著提高性能。

cat /proc/sys/vm/vfs_cache_pressure

输出:100

     由于当前的配置,我们的系统从缓存中删除inode信息的速度太快。我们可以设置为更保守的数字,如50:

sudo sysctl vm.vfs_cache_pressure=50

输出:vm.vfs_cache_pressure = 50

以上也是一个临时设置,永久保存的方法是把设置加到/etc/sysctl.conf中,如下:

sudo nano /etc/sysctl.conf

在最下面,输入:

vm.vfs_cache_pressure=50
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

为Ubuntu增加swap空间并调整性能 的相关文章

  • 新手到黑客的最全入门路径图(附全部学习资料下载)!

    点击上方 程序人生 xff0c 选择 置顶公众号 第一时间关注程序猿 xff08 媛 xff09 身边的故事 01 入门介绍
  • 飞控简析-从入门到跑路 第二章PX4的位置控制(2)

    1 control auto 说完control manual xff0c 接下来我们在看看control auto control auto是用来处理自动控制的函数 xff0c 即把航线任务转换为期望位置 函数位于Mc pos contr
  • 嵌入式项目研发到量产的流程

    本篇文章讨论嵌入式产品的设计到量产的一个完成流程 xff0c 以车联平台TBox设计为例 流程简述 1 xff09 需求方提需求 xff0c 项目组对需求进行分析 2 xff09 项目组给出设计草案和产品概念模型 3 xff09 设计产品原
  • 我的三种时间对齐方法

    要对齐一段时间内两组时间密度不一样的数据 xff0c S组是4000个时间节点 xff0c G组是20000多个时间节点 xff0c 这里展示了三种方法 xff1a 1 快速扫描算法 xff0c 设置时间精度为0 005s xff0c n的
  • postman后置脚本编写

    参数关联 xff1a 上一个接口返回token xff0c 如何传到下个接口中 xff1f 则需要写后置脚本来获取 1 打开登录接口 xff0c 在Tests区域编写javasscript脚本解析返回response对象 xff0c 从js
  • vscode代码拉取、提交

  • Docker“Got permission denied while trying to connect to the Docker daemon socket“

    问题 我在进行docker pull bestwu qq操作的时候报了错误 xff1a Got permission denied while trying to connect to the Docker daemon socket at
  • USB接口如何检测到设备的插入

    当插座上没有接设备时 xff0c D 43 和D 被15K的电阻下拉到低电平 xff0c 当有设备接入时 xff0c 例如一个U盘设备插入usb接口 xff0c vbus如果是3 3V xff0c 那么对于D 43 的点平则是一个高电平 x
  • 1.gazebo启动与界面介绍

    gazebo启动与界面介绍 1 启动gazebo ubuntu环境下使用ctrl 43 alt 43 t快捷键打开命令行 xff0c 在命令行中直接输入gazebo即可启动gazebo 2 界面介绍 看图 参考官网介绍
  • 程序媛有话说丨35岁的我是如何成功转型,给职场迷茫的师兄师姐师弟师妹

    点击上方 程序人生 xff0c 选择 置顶公众号 第一时间关注程序猿 xff08 媛 xff09 身边的故事 我 82 年出生在中国的一个二线城市 xff0c 毕业于一个三流大学的计算机专业 父母都是国有企业的一般职工 xff0c 没有什么
  • AI时代的思维方式

    2017年5月23日 xff0c 百度联盟大会在重庆召开 xff0c 李彦宏发表演讲 xff0c 阐释AI 时代的思维方式 xff1a 手机还会长期存在 但移动的机会不多了 From think Mobile to think AI 软硬结
  • dubbo超时重试和异常处理

    dubbo超时重试和异常处理 参考 xff1a https www cnblogs com ASPNET2008 p 7292472 html https www tuicool com articles YfA3Ub https www
  • 语音信号的短时傅里叶分析

    语音信号的短时傅里叶分析 文章目录 语音信号的短时傅里叶分析概述短时傅里叶变换短时傅里叶的取样率时域取样率频域取样率总取样率 语音信号的短时综合滤波器组求和法快速傅里叶变换求和法 语谱图宽带语谱图的典型谱型窄带语谱图的典型谱型窄带语谱图的典
  • 5分钟教你搞定一个超详细超简单的图形化界面(Java图形化界面设计之容器(JFrame))

    第一步 xff1a 创建一个maven项目 第二步 xff1a pom xml文件导入相关依赖 第三步 xff1a 写代码啦 xff0c 写完后直接运行即可 第四步 xff1a 程序运行起来啦 第一步 xff1a 创建一个maven项目 第
  • openMP使用

    openMP使用 项目需要对程序的运行进行加速 xff0c 在不考虑更换硬件的前提下 xff0c 考虑采用多线程对代码进行优化 xff0c 以下记录学习过程 处理器采用大疆秒算2 C xff0c CMakeList配置参考这篇博客 xff1
  • VSCode git工具

    之前都是老老实实用命令行敲命令 xff0c 其实VSCode自带得git工具已经非常方便 命令行提交代码 首先先介绍之前在命令行 ubuntu终端 xff0c windows git bash here 操作 xff1a 工程路径下 xff
  • vscode给docker内部的的ros工程代码打断点

    背景 打断点debug虽然不能直观看到变量在时间轴上的整体变化曲线 xff0c 但是其针对某一帧问题数据 xff0c 暂停后一步步单步执行监视每个变量的变化 xff0c 方便直观的判断每一步逻辑的正确性 xff0c 即使这个变量结构再复杂也
  • js中onclick()获取当前点击对象的属性值

    HTML span class token operator lt span a type span class token operator 61 span span class token single quoted string st
  • layui上传文件loading加载动画

    jquery layui 开始请求打开layui加载动画 所有请求结束后关闭layui加载动画 ajaxSetup 方法为将来的 AJAX 请求设置默认值 ajax请求中有一个beforeSend方法 xff0c 用于在向服务器发送请求前执
  • 微信小程序事件bindtap实现页面跳转

    index wxml通过bindtap 61 34 getUrl 34 设置一个名为getUrl事件 lt view class 61 34 tab con 34 gt lt view class 61 34 newsinfo 34 bin

随机推荐

  • 程序员找工作的个人经验教训以及注意事项

    点击上方 程序人生 xff0c 选择 置顶公众号 第一时间关注程序猿 xff08 媛 xff09 身边的故事 忽然间想到如果要找工作的话 xff0c 需要注意一些什么问题 没毕业的 xff0c 刚刚毕业的 xff0c 刚刚工作的都可以借鉴一
  • JavaScript逻辑运算与或非

    逻辑运算 amp amp 与 或 非 javascript中的逻辑运算两边的操作数 xff0c 可以是任意类型的任意值 默认布尔值 xff1a 当参与逻辑运算或判断语句中时 xff0c 任意类型的任意值都有一个默认的布尔型的值 与运算 xf
  • PHP面试题

    PHP知识 php反转字符串的三种方法 1 把分割字符串到一个数组中 xff0c 然后遍历拼接 xff1a lt php function joinStrrev str if strlen str lt 61 1 return str ne
  • tp6实现商城后台登录功能

    后台登录逻辑 1 没有登录状态 xff0c 访问后台页面都应该跳转到登录页 已经登录状态 xff1a 1 访问登录页面 xff0c 应该跳转到后台首页 解决方案 xff1a 后台登录拦截 xff1a 1 传统common base php控
  • Jenkins环境部署

    简介 Jenkins是一款开源 CI amp CD 软件 xff0c 用于自动化各种任务 xff0c 包括构建 测试和部署软件 Jenkins 支持各种运行方式 xff0c 可通过系统包 Docker 或者通过一个独立的 Java 程序 J
  • Nginx中Return指令使用

    Return指令使用 1 返回状态码 return 404 location test set name 39 user123 39 return 404 name curl i http 192 168 56 10 test 2 返回字符
  • MySQL触发器

    介绍 触发器是与表有关的数据库对象 xff0c 指在 insert update delete 之前或之后 xff0c 触发并执行触发器中定义的SQL语句集合 触发器的这种特性可以协助应用在数据库端确保数据的完整性 日志记录 数据校验等操作
  • 制作composer包提供sdk扩展

    目录 1 初始化包 2 将代码推送到github远程仓库 3 为写好扩展包打上tag标签标记当前代码版本 4 将包发布到包管理平台 初始化包 xff0c 生成 Creates a basic composer json file in cu
  • Go环境搭建与IDE开发工具配置

    安装Go语言编译器 Go语言编译器 61 编译器 61 将源代码编译为可执行程序 61 源代码 61 程序员使用高级语言所书写的代码文件 61 高级语言 61 c c 43 43 go 61 机器语言 61 0和1构成 xff0c 机器能直
  • 计算机中的速率、带宽、时延、利用率解读

    计算机网络的性能一般是指它的几个重要的性能指标 但除了这些重要的性能指标外 xff0c 还有一些非性能特征 xff08 nonperformance characteristics xff09 也对计算机网络的性能有很大的影响 那么 xff
  • 无人机原理

    文章目录 1基本运动2为何无人机螺旋桨多为偶数3机器人的运动控制4加速度计5陀螺仪6姿态角解算欧拉角的平面换算 1基本运动 为了平衡扭矩 xff0c 上图中1 3逆时针转动 xff0c 电机2 4顺时针转动进行反扭矩对消 上升 F1 61
  • 新浪微博PC端模拟登陆

    点击上方 程序人生 xff0c 选择 置顶公众号 第一时间关注程序猿 xff08 媛 xff09 身边的故事 图 xff1a Fantastic Beasts and Where to Find Them 投稿 星星在线 简介 一个从妹子图
  • win10下 docker build 报错 “Failed to fetch xxxxxxxx Temporary failure resolving 'archive.ubuntu.com'”

    错误信息 在docker中搭建禅道的时候执行docker build t zentao 命令后执行到apt get update amp amp apt get install指令的时候报错 xff0c 错误如下 xff1a W Faile
  • docker-ros-gui

    主机环境 系统 Ubuntu 16 04 1 安装docker 1 1 在线安装 物理机 默认使用当前最新版本 1 更新apt包索引 xff1a sudo apt get update 2 安装以下包以使apt可以通过HTTPS使用存储库
  • halcon opencv 图像处理面试指南

    珠海某上市公司算法总监 xff1a 1 相机标定的原理与坐标系之间的转换 xff0c 如何转换 2 激光三角原理 xff0c 如何搭建 3 测量拟合的过程中有哪些算子 xff0c 原理什么 xff0c 接着问5 xff0c 跌代多少次 xf
  • 【3D计算机视觉】从PointNet到PointNet++理论及pytorch代码

    从PointNet到PointNet 43 43 理论及代码详解 1 点云是什么1 1 三维数据的表现形式1 2 为什么使用点云1 3 点云上以往的相关工作 2 PointNet2 1 基于点云的置换不变性2 1 1 由对称函数到Point
  • 在ubuntu上安装mavlink-router

    版本说明 xff1a ubuntu 20 0 04 mavlink router 2 为了安装mavlink router 需要预先安装一些依赖库 xff1a autoconf libtool python future python3 f
  • PX4多机仿真(gazebo)

    版本说明 xff1a 操作系统 宿主机 xff08 或开发机 xff09 xff1a ubuntu server 20 0 04 thinkpad 目标机 xff08 机载计算机 xff09 xff1a ubuntu server 20 0
  • 为PX4建立J-Link Eclipse交叉调试环境

    版本说明 1 自驾仪 xff1a Holybro的Pixhawk 4 2 PX4版本 xff1a 1 12 3 宿主机 xff1a Thinkpad笔记本 43 Ubuntu 20 04 2 LTS 4 Eclipse xff1a 2022
  • 为Ubuntu增加swap空间并调整性能

    版本说明 xff1a Raspberry Pi 3B 43 Ubuntu 20 04 server 本文参考翻译自这篇文章 SWAP文件的设置 Swap是硬盘存储的一部分 xff0c 它被预留给操作系统 当RAM中不再有足够的空间来保存正在