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.hqwc.cn/news/690184.html

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

相关文章

vue2 八大组件通信,父子通信,跨层级通信,事件总线,vuex等

文章目录 什么是组件通信?父子通信流程propsProps 定义Props 作用特点数组写法对象写法(props校验)简写只验证数据类型:完整写法,完整的验证: props父向子传值用props父传子在子组件中修改props $emit子向父…

scrapy的入门

今天我们先学习一下scrapy的入门,Scrapy是一个快速的高层次的网页爬取和网页抓取框架,用于爬取网站并从页面中提取结构化的数据。 1. scrapy的概念和流程 1.1 scrapy的概念 我们先来了解一下scrapy的概念,什么是scrapy: Scrapy是一个Python编写的开源网络爬虫框架…

【VTKExamples::Rendering】第四期 相机插值(CameraInterpolate)

很高兴在雪易的CSDN遇见你 VTK技术爱好者 QQ:870202403 公众号:VTK忠粉 前言 本文分享VTK样例CameraInterpolate,希望对各位小伙伴有所帮助! 感谢各位小伙伴的点赞+关注,小易会继续努力分享,一起进步! 你的点赞就是我的动力(^U^)ノ~YO 1. CameraInterpol…

开源基金会AtomGit教程

大家伙,我是雄雄,欢迎关注微信公众号:雄雄的小课堂。 注册 点击链接进入官网,先注册,然后登录:https://atomgit.com/ 编辑个人资料,修改一下自己的信息,用户名后面提交代码的时候要…

程序环境和预处理、编译链接过程、编译的几个阶段、运行环境、预定义符号等的介绍

文章目录 前言一、程序的翻译环境和执行环境二、编译链接过程三、编译的几个阶段四、运行环境五、预定义符号总结 前言 程序环境和预处理、编译链接过程、编译的几个阶段、运行环境、预定义符号的介绍。 一、程序的翻译环境和执行环境 在 ANSI C 的任何一种实现中&#xff0c…

Flutter-加载中动画

效果 考察内容 AnimationControllerTweenAnimatedBuilderTransformMatrix4 实现 ///源码&#xff1a;https://github.com/yixiaolunhui/flutter_xy class LoadingView extends StatefulWidget {const LoadingView({Key? key}) : super(key: key);overrideState<LoadingV…

新都区新都街道沱江社区:共建“微花园”,愿景变实景!

“你看嘛&#xff0c;本来是一个很好的锻炼身体的地方&#xff0c;现在看起来乱糟糟的&#xff0c;大家都很少去运动。”这是一位来自沱江社区自建区居民的心声。 灰扑扑的运动角 杂草丛生闲置空地 …… 本应该是提升居民幸福感的“小角落” 却变成了遭人冷落的“灰色空间…

maven找不到依赖,in offline mode

问题描述&#xff1a; [ERROR] Plugin org.jetbrains.kotlin:kotlin-maven-plugin:1.2.71 or one of its dependencies could not be resolved: Failed to read artifact descriptor for org.jetbrains.kotlin:kotlin-maven-plugin:jar:1.2.71: Cannot access aliyunmaven (ht…

mac第三方软件怎么删除 MacBook卸载第三方应用程序 mac第三方恶意软件删除不了怎么办呢

Mac是一款优秀的个人电脑&#xff0c;它拥有流畅的操作系统、强大的性能和丰富的应用程序。但是&#xff0c;随着使用时间的增加&#xff0c;你可能会发现你的Mac上安装了一些不需要或者不喜欢的第三方软件&#xff0c;这些软件可能会占用你的空间、影响你的速度或者带来安全风…

图片识别公式神器推荐_mathpix

你是否遇到在某个资料上看到一个很复杂的公式&#xff0c;但有懒得再 word 或者其他文件上打出来。 比如这个&#xff1a; 如果直接截图的话&#xff0c;只能说非常丑陋。 推荐一个网站 mathpix&#xff0c;点击 try for free&#xff0c;注册登录。 Mathpix: AI-powered doc…

机器学习入门到放弃2:朴素贝叶斯

1. 算法介绍 1.1 算法定义 朴素贝叶斯分类&#xff08;NBC&#xff09;是以贝叶斯定理为基础并且假设特征条件之间相互独立的方法&#xff0c;先通过已给定的训练集&#xff0c;以特征词之间独立作为前提假设&#xff0c;学习从输入到输出的联合概率分布&#xff0c;再基于学习…

ApiHug Official Website

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