Android AOSP Ubuntu源码编译电脑卡顿问题定位解决

文章目录

  • 问题概述
  • 分析问题
  • 解决问题
    • 查看交换分区
    • 创建交换分区
    • 删除交换分区
    • 调整交换分区的活跃度

问题概述

开发SystemUI时,使用内存为16G的主机,Ubuntu 20.04的系统编译SystemUI的源码,编译的过程中发现电脑卡顿,鼠标不能移动。必须重启电脑才可以使用,如果继续编译代码,还是会出现卡顿的问题,严重影响开发效率。

分析问题

发现这个问题的时候,我的第一想法是内存不足,因为我的主机电脑的内存是比较老的,内存只有16G,所以我就准备开始采购内存条。转念一想,不对呀,前几天还能正常编译代码呢,突然不行了只有两个原因,内存条坏了,这点不可能,因为不编译代码,就没有问题,第二个原因,就是大量的CPU被占用了。后面在我的FrameWork同事的提示下发现了问题的真正原因。发现问题的方法也很简单,在编译源码的时候,另外开一个窗口,使用top命令,查看当前的CPU状况,和内存的使用状况。如下图所示:
在这里插入图片描述>上图是编译代码正常时候的情况,如果不正常的情况是,图中的红框内没有交换分区的内存,然后CPU会一直飙升到特别高,我的当时飙升到了1400%多,还出现虚拟内存不足的情况。导致这一问题的原因就是交换分区没有设置。交换分区可以在系统运行内存不足时将一部分未使用的内存文件转存在此分区以减轻动态内存的压力。所以解决这一问题的方法就是设置调整交换分区。

解决问题

问题发现后,我们开始准备配置我们的交换分区:

查看交换分区

首先我们需要先检查下是否启用了交换分区

$ sudo swapon --show   #未启用SWAP分区的话,执行此命令将不会有任何输出

在这里插入图片描述

创建交换分区

如果已经设置成功了就会出现上图中的信息,没有设置的话什么也不输出。
如果没有设置交换分区,则运行下面的命令创建交换分区

 sudo fallocate -l 32G /swapfile      #创建大小依据实际物理内存大小自行调整

需要特别注意的是,这里分配的交换分区的内存不宜太大,建议创建的文件大小为实际物理内存的 2-3 倍,比如我的物理内存是16G,我的这里就设置成32G

创建完成后给swapfile添加权限

$ sudo chmod 600 /swapfile

给完权限后,我们执行下面的命令标注交换分区

sudo mkswap /swapfile

如果已经执行过命令,则会输出下面的信息。
在这里插入图片描述创建完交换分区后,就可以激活分区了

sudo swapon /swapfile

如果已经激活过,运行命令会提示下面的信息
在这里插入图片描述

可以使用下面的命令查看交换分区是否工作:

sudo swapon --show
sudo free -h

命令执行结果如下所示
在这里插入图片描述为了防止交换分区莫名丢失,推荐将创建的交换分区设置为永久分区,将 交换分区路径写入到/etc/fstab文件中

/swapfile swap swap defaults 0 0

删除交换分区

删除交换分区首先需要使用下面的命令停用交换分区:

sudo swapoff -v /swapfile

然后在/etc/fstab文件中删除交换分区的路径。接着使用下面的命令删除交换分区文件

sudo rm /swapfile

调整交换分区的活跃度

我们可以使用下面的命令查看当前系统设置的 Swappiness 值

cat /proc/sys/vm/swappiness

在这里插入图片描述可以使用下面的命令临时调整这个活跃值,这个活跃值可以设置在0-100,根据环境需求自行调整

sudo sysctl vm.swappiness=60   

我们也可以设置永久性的 活跃值,方法就是编辑/etc/sysctl.conf文件,在文件末尾添加下面的内容:

vm.swappiness=60

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/10281.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Docker学习笔记(一)安装Docker、镜像操作、容器操作、数据卷操作

文章目录 1 Docker介绍1.1 Docker的优势1.1.1 应用部署的环境问题1.1.2 Docker解决依赖兼容问题1.1.3 Docker解决操作系统环境差异1.1.4 小结 1.2 Docker和虚拟机的区别1.3 Docker架构1.3.1 镜像和容器1.3.2 DockerHub1.3.3 Docker架构 1.4 安装Docker1.4.1 卸载旧版本Docker&a…

【qt】纯代码界面设计

界面设计目录 一.界面设计的三种方式1.使用界面设计器2.纯代码界面设计3.混合界面设计 二.纯代码进行界面设计1.代码界面设计的总思路2.创建项目3.设计草图4.添加组件指针5.初始化组件指针6.添加组件到窗口①水平布局②垂直布局③细节点 7.定义槽函数8.初始化信号槽9.实现槽函数…

盛邦安全荣获北京市海淀区上地街道财源建设工作表彰

近日,盛邦安全受邀出席上地街道2024年第一季度财源建设工作联席会暨上地人工智能产业报告发布大会并收到上地街道颁发的感谢信,这是对公司技术创新、管理提升、营收增长,持续为上地地区财源建设做出突出贡献的鼓励。 盛邦安全副总裁、董事会秘…

ApiHug Official Website

🤗 ApiHug {Postman|Swagger|Api...} 快↑ 准√ 省↓ GitHub - apihug/apihug.com: All abou the Apihug apihug.com: 有爱,有温度,有质量,有信任ApiHug - API design Copilot - IntelliJ IDEs Plugin | MarketplaceApiHug-H…

TCP的延时应答和捎带应答详解

一、延时应答 延时应答是指TCP接收方在接收到数据包后,并不立即发送确认(ACK)消息,而是等待一段时间,以期望在该时间段内收到更多的数据包,从而实现合并多个ACK消息为一个,减少网络中的确认消息…

全民拼购:被低估的商机,惊人的业绩潜力

今日,我要与大家探讨的是一种似乎被遗忘,但实则蕴含巨大商机的模式与策略。尽管它在外界看来或许并不起眼,但我的一位客户却凭借这一策略,实现了令人瞩目的业绩——日销售额逼近五千万,日订单量更是高达惊人的300万单。…

[C++基础编程]----预处理指令简介、typedef关键字和#define预处理指令之间的区别

目录 引言 正文 01-预处理指令简介 02-typedef关键字简介 03-#define预处理指令简介 04-#define预处理指令和typedef关键字的区别 (1)原理不同 (2)功能不同 &#xf…

TEA: Temporal Excitation and Aggregation for Action Recognition 论文阅读

TEA: Temporal Excitation and Aggregation for Action Recognition 论文阅读 Abstract1. Introduction2. Related Works3. Our Method3.1. Motion Excitation (ME) Module3.1.1 Discussion with SENet 3.2. MultipleTemporal Aggregation(MTA) Module3.3. Integration with Re…

QT如何增删安装的组件

打开 uninstall QT 往下会看到让你选择 add or remove component。 接下去就可以修改组件了

Python快速入门-零基础也能掌握的编程技巧,基础方法和API整理

目录 前言 数据结构 数字 数学运算 随机数 字符串 列表 元组 字典 面向对象 JSON 文件操作 扩展 制作一个简易时钟 前言 环境什么就不在赘述,可以参考其他文章,也可以在线运行 CSDN在线运行地址:InsCode - 让你的灵感立刻落地…

Amesim基础篇-热仿真常用模型库-Thermal Hydraulic /Resistance

有言在先 流体库、管路库在热管理中是必备模块,如动力电池液冷循环系统均需要Thermal Hydraulic /Resistance库的元件建模。 1 流体物性设置 AMEsim中内嵌了大部分液冷的热物性,直接在流体子模型上选择即可。常规使用的是50%乙二醇水溶液,如…

水表智能抄表系统是什么?

水表智能抄表系统是一种现代化水资源保护专用工具,它利用先进的物联网、云计算和大数据剖析,完成了智能抄表、实时监控系统、数据分析等作用,大大提高了水务管理的效率和精确性。 1.功能特点 1.1远程控制自动抄表 传统水表抄水表方法采用人…

sentinel-dashborard下发流控规则未生效排查解决

Sentinel简介 Sentinel是阿里巴巴开源的一个流量控制组件,它以流量为切入点,从流量控制、熔断降级、系统负载保护等多个维度来保护服务的稳定性。Sentinel的核心思想是:通过动态设置的规则,对进入系统的流量进行控制,…

C#知识|将选中的账号信息展示到控制台(小示例)

哈喽,你好啊,我是雷工! 上篇学习了控件事件的统一关联, 本篇通过实例练习继续学习事件统一处理中Tag数据获取、对象的封装及泛型集合List的综合运用。 01 实现功能 在上篇的基础上实现,点击选中喜欢的账号&#xff0…

如何将Hyper-V转VMware?反之亦可

为何要在Hyper-V和VMware之间进行转换呢? 尽管VMware和Microsoft Hyper-V都是当前流行的一类虚拟机监控程序,但它们并不相互兼容。VMware产品使用VMDK格式创建虚拟磁盘,而Hyper-V则使用VHD或VHDX格式创建虚拟磁盘。 有时您可能需要进行这种转…

Edge视频增强功能

edge://flags/#edge-video-super-resolution 搜索Video查找 Microsoft Video Super Resolution 设置为Enabled

凸优化理论学习一|最优化及凸集的基本概念

文章目录 一、优化问题(一)数学优化(二)凸优化 二、凸集(一)一些标准凸集(二)保留凸性的运算(三)正常锥和广义不等式(四)分离和支撑超…

计数问题C++

题目&#xff1a; 思路&#xff1a; 1~n之间进行循环遍历&#xff0c;如果i不等于0继续循环&#xff0c;然后求出i的个位数与十位数&#xff0c;如果个位数为要查找的特定数字&#xff0c;计时器就1. 代码&#xff1a; #include<iostream> using namespace std; int n,x…

短视频收益分成一览表​​​​​​​​​​​​​​​​,视频号怎么做有收益的

今日为大家揭秘一个热门视频号的操作技巧。很多人都已经操作这类账号&#xff0c;并从中获益。视频号目前是市场上非常热门的平台之一&#xff0c;流量之大令人惊叹&#xff0c;先不提那些私域营销的巨大优势&#xff0c;仅从创作分成计划角度来看&#xff0c;已有许多人每天能…

react18【系列实用教程】useEffect —— 副作用操作 (2024最新版)

什么是副作用操作&#xff1f; useEffect 用于编写由渲染本身引起的对接组件外部的操作&#xff08;官方称呼为&#xff1a;副作用操作&#xff09; 以下情况会触发页面渲染 初次加载页面&#xff08;组的挂载&#xff09;响应式变量发生变化&#xff0c;触发页面根据新值重新…