自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

内核工匠

内核工匠秉承开源精神,分享Linux内核相关黑科技、技术文章、技术资讯和精选教程,文章首发在微信公众号“内核工匠”(Linux-Tech),欢迎大家关注,共同交流探讨

  • 博客(232)
  • 收藏
  • 关注

原创 virtio虚拟化框架概述

一.虚拟化背景virtio由Rusty Russell 开发,原是为支持lguest虚拟化解决方案,目前已成为linux标准的I/O虚拟化框架.本文重点分享virtio框架及学习心得,错漏之处望大家指正.先简单介绍下有关虚拟化的背景及基本术语. 虚拟化是云计算的基础架构,通过软件接口化及标准化设计,在计算机硬件上创建一个抽象层,支持将单物理机的硬件元素(处理器、内存、存储等)分成多个虚...

2024-07-19 17:47:12 936

原创 Binder驱动中的流程详解

1.前言 作为安卓系统中重要的IPC通信机制,Binder通信使得组件之间的通信更加的高效和灵活。但在实现上,Binder通信横跨了整个Android系统架构,从应用层到frameworks,再到native,最后到底层kernel,这使得Binder流程会变得相对复杂。为了更好的理清Binder的流程,讲清楚它到底是如何通信的,本文将结合源码,完整的梳理一遍整个通信过程中的几个重要...

2024-07-12 18:05:48 599

原创 ANR问题产生原理和分析思路总结

ANR问题是我们在开发中经常会遇到的问题。这种问题的发生往往是低概率并且难以复现,一旦发生就会给用户带来极差的体验。本文通过对ANR问题发生的原理、分析思路和案例的介绍,为分析ANR问题提供借鉴,帮助大家更好的理解和处理ANR问题。ANR问题即使应用响应超时问题,它根据发生的原因不同,主要分为KeyDispatchTimeout、BroadcastTimeout、ContentProviderTi...

2024-07-05 17:32:41 1131

原创 一文读懂QUIC 协议:更快、更稳、更高效的网络通信

你是否也有这样的困扰:打开APP巨耗时、刷剧一直在缓冲、追热搜打不开页面、信号稍微差点就直接加载失败……如果有一个协议能让你的上网速度,在不需要任何修改的情况下就能提升20%,特别是网络差的环境下能够提升30%以上;如果有一个协议可以让你在WiFi和蜂窝数据切换时,网络完全不断开、直播不卡顿、视频不缓冲;你愿意去了解一下它吗?它就是QUIC协议。本文将从QUIC的背景、原理、实践部署等方面来详细介...

2024-06-28 17:31:11 1400

原创 深入代码细节看f2fs在磁盘上的组织方式

一、前言之前《抛开代码细节看文件系统组织方式》一文中,主要从UFS上数据入手,通过对比大小不同的两个文件系统,以及一些常见的文件操作,对F2FS在磁盘上分布有了基础的了解。本篇文章就深入到代码细节,深入分析一下F2FS各个区域中保存内容的细节。二、superblock相关结构体2.1 Superblock相关结构体定义 2.2 superblock相关结构体注释说明2.2.1 struct ...

2024-06-14 17:30:40 829

原创 抛开代码细节看f2fs文件系统组织方式

一、前言“文件系统是操作系统用于明确存储设备(常见的是磁盘,也有基于NAND Flash的固态硬盘)或分区上的文件的方法和数据结构;即在存储设备上组织文件的方法。操作系统中负责管理和存储文件信息的软件机构称为文件管理系统,简称文件系统。文件系统由三部分组成:文件系统的接口,对对象操纵和管理的软件集合,对象及属性。从系统角度来看,文件系统是对文件存储设备的空间进行组织和分配,负责文件存储并对存入的...

2024-06-07 17:30:11 1202

原创 内核调度客制化利器:SCHED_EXT

一、前言今年年初,宋宝华老师发表了一篇对2023年内核技术总结的文章《熠熠生辉 | 2023 年 Linux 内核十大技术革新功能》。有兴趣的伙伴可以点击蓝色字体链接回顾。文章提及的10个技术中,与CPU任务调度器核心相关的内容,一共有两个,分别是可扩展调度类以及EEVDF调度算法。EEVDF调度算法的大名,相信大家并不陌生,它对统治内核任务调度多年的CFS调度策略发起了变革。CFS调度策略自Li...

2024-05-31 17:31:05 1182

原创 全方位剖析内核抢占机制

在当今数字时代,手机已成为人们日常生活中不可或缺,多任务处理和实时响应对于用户体验越来越重要,抢占(preemption)机制在提升系统性能和用户体验方面发挥了至关重要的作用。内核抢占机制使得系统能够有效地管理多任务处理,确保系统对用户操作的快速响应,并在资源紧张的情况下仍能保持稳定和流畅的运行。本篇文档旨在详细探讨Linux内核中的抢占机制,涵盖其基本概念、实现细节、性能影响以及相关的调试方法。...

2024-05-24 17:30:20 611

原创 Linux V4L2子系统与视频编解码设备介绍

1.V4L2简介1.1 什么是V4L2V4L,其全称是Video4Linux(即Video for Linux),是Linux内核中关于视频设备的驱动框架,涉及开关视频设备,以及从该类设备采集并处理相关的音、视频信息。V4L从Linux2.1版本的内核中开始出现。现在Linux内核中用的是V4L2,即Video4Linux2(即Video for Linux Two),其是修改V4L相关...

2024-04-26 17:30:35 1433 3

转载 Linux Large Folios大页在社区和产品的现状和未来

在 Linux 内核中,一个 folio 可以只包含 1 个 page,也可以包含多个 page。当一个 folio 包含多个 page 的时候,我们称它为一个 large folio,在中文社区,我们一般称呼其为大页。采用 large folio 可潜在带来诸多好处,比如:1. TLB miss 减小,比如许多硬件都支持 PMD 映射,可以直接把 2MB 做成一个 large folio,只占用...

2024-04-19 17:30:22 498

原创 Android中基于DWARF的stack unwind实现原理

一、简介在软件开发中,unwind stack(栈回溯 或 调用栈展开)是调试和异常处理中至关重要的一环,通过理解其实现原理,可以更好地理解程序的执行流程,更有效地进行调试和错误排查。本文主要介绍 AArch64 架构下的两种最典型的栈回溯实现方式:1.基于 frame pointer (FP) 的栈回溯2.基于 ELF DWARF .eh_frame/.debug_frame 的 stack u...

2024-04-12 17:31:49 1018

原创 Intern模型调研和Xtuner实战(下)

Intern模型调研和Xtuner实战(上)细节3:如何从dataset格式转变到Dataloder?上面已经获得了huggingface格式的dataset,原则来说,使用 Trainer 时,你可以将 datasets 库中的 Dataset 对象直接作为数据集参数传递给 Trainer。Trainer 类在内部会自动处理数据加载和迭代的细节,包括将 Dataset 转换为 DataLoade...

2024-03-29 17:30:58 1121

转载 OPPO x 西交大“智慧AI终端,安全服务未来”——泛终端安全技术论坛预告

“智慧AI终端,安全服务未来”泛终端安全技术论坛直播时间:2024年3月29日 8:50-17:00↓↓↓扫码观看直播↓↓↓直播日程直播安排01 泛终端安全技术论坛介绍由OPPO广东移动通信有限公司主办,IEEE工业电子协会、西安交通大学、安珀实验室和OPPO产学研事务部联合承办的2024 IEEE-OPPO 暨 第四届泛终端安全技术论坛定于2024年03月29日在西安交通大学创新港校区举行,旨在...

2024-03-28 14:19:10 231

原创 Intern模型调研和Xtuner实战(上)

基础资料书生浦语整个系列做得非常棒,从数据(书生万卷)、训练(xtuner)、部署(LMDeploy)、评测(OpenCompass)、应用(Lagent),为用户提供了一整套完整的开源开放生态系统。IntermLM是由上海人工智能实验室与商汤科技共同开发的大语言模型。从模型微调到部署,官方提供了详尽的文档,我结合官方提供的tutorial,在此分享我的经验。InternLM: A Multili...

2024-03-22 17:31:01 1189

原创 IO调度器详解

一、调度器演进1.1 什么是IO调度器? 传统的磁盘因为有磁头,磁头移动有开销。最早的调度器会对访问磁盘的IO做基于磁盘访问位置的排序和合并, 让磁头以最少的移动来完成最大的IO量, 以提升系统IO带宽。现在的SSD, 物理上已没有磁头的概念, 访问的位置也是LBA(Logical block address), 器件内部负责找到LBA到物理位置的映射关系。排序就没有太大...

2024-03-08 17:31:40 1308

原创 基于devfreq framework的GPU调频

AI时代已经来临,在日益增长的算力需求下,GPU已经成为AI世界不可或缺的工具,而移动端高渲染高帧应用也对移动端GPU提出越来越高的要求,本文将以高通的adreno gpu为例对GPU的调频进行介绍。在介绍之前,建议先阅读本文章《Linux devfreq framework剖析》,了解devfreq framework子系统中devfreq device的作用和governor的统一实现格式。G...

2024-03-01 17:31:11 1112

原创 Perfetto数据流架构故障分析:带你研究 trace 为何丢失

在系统工程师的日常工作中,最苦恼的事情之一就是分析问题所依赖的可观测性数据出现了错误。“这该死的玩意儿又出错了!” 在面对新工具出现的新问题时,工程师们在愤懑之余免不了怀念旧时的荣光:那时的调试工具设计精巧,API 简明易用,如老伙计般地可靠。然而随着新系统、新编程语言和新编程框架的不断发展,可观测性工具也在不断地推陈出新,"good old days" 早已一去不复返了。可观测性领域的技术虽并未...

2024-02-23 17:30:51 1476

原创 深入理解Linux内核共享内存机制- shmem&tmpfs

搞过Linux人都知道,Linux的世界中,进程的虚拟地址空间有两部分组成:内核空间和用户空间,内核空间各个进程直接共享,而用户空间彼此隔离,大家井水不犯河水。但是并不是老死不相往来,我们有时候需要进程直接共享一些数据,于是乎,Linux就有了共享内存的机制。我们在使用Linux时,匿名页和文件页这两种类型的页面经常在我们耳边回荡,我们或多或少都知道,文件页会关联文件系统中的文件,而匿名页不关联任...

2024-02-02 17:31:43 1611

原创 Android分区挂载原理介绍(下)

上章内容请点击链接:Android分区挂载原理介绍(上)三、分区挂载流程介绍 3.1 分区挂载顺序总览挂载顺序实际内容所在物理分区挂载点名称是否为logical分区Avb校验avb校验信息保存位置挂载阶段fstab生效位置1metadata/metadata否否N/Ainit first stagevendor_boot(ramdisk)2super/system是是vbmeta_syste...

2024-01-26 17:00:12 3237 1

原创 Android分区挂载原理介绍(上)

一、 device-mapper基本原理介绍1.1 dm工作原理1.2 dm实现动态卷(逻辑分区)功能介绍(dm-linear)1.3 dm 实现完整性校验功能介绍(dm-verity)1.4 元数据加密(default-key)1.5 dm实现快照功能介绍(snapshot,snapshot-origin,dm-snapsho...

2024-01-19 17:30:17 4287 1

原创 指纹驱动初始化引发的思考

缩略语清单:写在前边 本文将从Android上指纹驱动初始化为切入点,然后详细分析从开机到初始化整个过程的详细流程,最终将Linux platform device和DTS流程和关系梳理清楚,并类比到其他设计驱动设备。 fp_probe这个函数每次在系统初始化后都会自动执行,主要完成指纹设备相关结构体的初始化,注册其他模块的通知链等。随后在fp_open中,会去解析配置的D...

2024-01-12 17:30:50 1099

原创 Linux内核并发与同步机制解读(arm64)下

上章内容请点击Linux内核并发与同步机制解读(arm64)上概述从浅到深,逐步分析各种同步机制的功能。5.读写信号量-rw_semaphore5.1原理介绍rw_semaphore的乐观自旋、handoff机制与mutex的对应机制代码实现略微不同,但是这些机制的思想是完全一样的,因此本章不再赘述乐观自旋、handoff的基本原理,如有需要,请阅读mutex章节。下面仍然通过问答的形...

2024-01-05 17:31:39 1213

转载 OPPO亮相2024中国信通院ICT+深度观察报告会上海分会场,《移动应用可信技术研究白皮书》发布!...

文章来源:中国信通院华东分院12月28日,2024中国信通院ICT+深度观察报告会上海分会场暨“虹桥之源”大模型驱动数字经济新生态峰会在上海长宁圆满举办,首次深度聚焦大模型,以“智能涌现,创新生态”为主题,汇聚“产学研用”顶尖智慧,共同探索大模型的前沿技术创新和落地应用实践,为行业发展提供新思路、新方法、新路径。OPPO持续聚焦移动应用的安全可信技术研究,今年重磅发布《移动应用可信技术研究白皮书》...

2023-12-29 18:30:21 159

原创 Linux内核并发与同步机制解读(arm64)上

关键词 原子操作、自旋锁、信号量、mutex、读写锁、percpu-rwsem概述 从浅到深,逐步分析各种同步机制的功能。1、原子操作 解决“读-修改-回写”的完整性,一般用于静态全局变量的保护,静态全局变量的操作过程.例如,我们写一行代码把变量a加1,编译器把代码编译成3条汇编指令。(1)把变量a从内存加载到寄存器。(2)把寄存器的值加1。(3)把寄存器的值写回内存。由于是三条指令,无法...

2023-12-29 18:30:21 1190

原创 干货 | 刷机流程介绍

1、背景介绍嵌入式开发者交流中经常听到升级、烧录、刷机等词汇。升级一般特指产品售出后,通过产品自身的升级功能更新ROM系统软件。烧录的概念出现的最早,早期的PROM(一次性可编程ROM)的编程中,主要通过电压熔断器件内部的电路进行编程,所以形象地称之为烧录,后来逐渐沿用到现在的Flash、eMMC和UFS等ROM芯片。刷机是手机行业的术语,是指通过一定的方法更改或替换手机中原本存在的操作系统,通俗...

2023-12-22 17:31:14 1531

原创 crash实战:手把手教你使用crash分析内核dump

Kdump是Linux的一种内核崩溃捕获机制,Linux内核遇到致命错误崩溃时会触发Kdump机制将崩溃时的现场保存下来,以便后续分析和故障排查。目前市面上有很多分析Kdump的工具,例如trace32, crash tool,本文介绍crash tool在手机领域的应用,并重点介绍一些实用的技巧。然而,本文的重点并不是介绍crash tool的工作原理和基础命令,也不是为了介绍Kdump转储的原...

2023-12-15 17:30:30 3840

原创 深度好文 | Android高性能音频解析

1.引言1.1目的和对象该文档用于Android音频流畅性,聚焦优化音频卡顿、杂音问题。适用于Android音频开发人员查看。1.2背景游戏、k歌、直播等一些使用场景,音频对时延有较高的要求,保障低延迟,就需要更小的buffer,降低整个链路数据传递时延,但是抗性能抖动能力就会下降。如果音频线程CPU调度延迟,生产数据不及时,系统就会错过buffer周期,产生补0噪声。一方面,Android音频系...

2023-12-08 17:31:14 2376

原创 深入计算机系统看性能优化

一.引言“性能优化”,从计算机诞生之初就一直伴随着计算机技术的发展,直到现在。将来也必定不会消失。这是因为每个人都会追求性价比,花最少的钱,办最多的事。生活中也一样,就比如说泡茶,但凡有点常识的人都不会先洗茶杯,再去烧水,而是先去烧水,在等水开的过程中,去做洗茶杯等工作。这也是一种优化。本篇尝试带大家从计算机系统的角度,简单介绍一下几种性能优化的原理和方法,抛砖引玉,供大家参考。二.访问寄存器代替...

2023-12-01 17:28:13 1176

原创 多图文教你看懂单个图层的绘制流程

背景在Android系统中,图形绘制模块主要分为HWUI以及RenderEngine,我们所能在手机上看到的所有像素都有着这些模块或多或少的参与。而一个最简易的安卓渲染流程如图二所示,应用操作的所有view操作都转换为RenderNode的DisplayList;Displaylist存储着所有的绘制命令以及级联关系。图一图二1.HWUI Skia介绍HWUI、Skia的发展历程主要在Androi...

2023-11-27 11:30:33 1523

原创 关于Ultra HDR Image的那些事

一、什么是Ultra HDR Image2023年10月初,google正式发布了Android 14。该版本中引入了一个新的功能Ultra HDR Image,被誉为”图像技术的未来”。之前Android版本各手机厂商或许有自己的HDR图片技术,本文这里重点分析下Android14上google的实现方案。让我们先来看一组图片。上图中左边的图片为SDR(标准动态范围),右边的图片为HDR(高动态...

2023-11-17 17:30:32 1720

原创 2023 CLSF大会精彩回顾,近50位行业开发者齐聚OPPO畅谈技术

2023年10月26-27日,2023 CLSF(China Linux Storage, Memory Management & File System Workshop)大会成功举行,本次活动由OPPO承办,活动邀请了SUSE,OPPO, Intel , AMD, 蚂蚁,华为,vivo, 字节跳动,腾讯,阿里云,麒麟软件,红帽,北京大学,中国科学院软件研究所等单位的 Linux Ker...

2023-11-14 11:32:40 380 2

原创 超详细!Linux内核内存规整详解

1.前言伙伴系统作为内核最基础的物理页内存分配器,具有高效、实现逻辑简介等优点,其原理页也尽可能降低内存外部碎片产生,但依然无法杜绝碎片问题。外部碎片带来的最大影响就是内存足够,但是却无法满足内存分配需求,如下图所示:内存外部碎片导致实际占用物理页不多,但是已无法申请>=4个页连续内存,理想当中我们希望内存没有外部碎片,如下图所示:内核并未为此目标设计新的内存分配算法(伙伴系统足够简单和高效...

2023-11-10 17:30:49 820

原创 从量到质:中国如何在开源领域实现跃迁

近日,中国Linux内核开发者的年度盛会——第18届中国 Linux 内核开发者大会(CLK 2023)在深圳圆满落幕。本次大会吸引了近500名来自全国各地的开发者,他们或怀揣对开源文化的热爱,或携带对技术突破的期待,汇聚于此,共同探讨Linux内核的最新发展趋势和技术深度。在开源软件日益成为技术创新与数字经济的重要驱动力的今天,中国的开源社区正处于快速上升期。国内外的技术巨头和众多创新企业纷纷投...

2023-11-10 17:30:49 425 1

原创 Android logd日志简介及典型案例分析

在程序开发过程中,日志打印属于最普遍的操作,是代码调试和验证过程必不可少的手段。在Android开发过程中,我们经常通过Log\Slog等方式写入日志,然后通过对应的logcat命令读取相应的日志信息。具体日志如何写入或者读出,系统代码如何调用,可能也没有深入研究过。本文就通过具体的流程、框架设计、源码分析等讨论下Android日志的读写过程,以及介绍往往遇到日志丢失的场景及典型案例分析。1、日志...

2023-11-03 17:32:34 2086

转载 OPPO在CLK大会上公布可编程内核技术,引领安卓流畅体验升级

10月28日,在第18届“中国Linux内核开发者大会”(以下简称CLK)上,OPPO平台软件开发中心GM、软件系统优化技术专家许珉嘉分享了ColorOS下基于用户体验改善的Linux内核优化方案,并公布了可编程内核技术方向,极大程度提升流畅性细节体验,从底层解决安卓卡顿问题。内存优化和内核调度多端发力,为ColorOS流畅性和稳定性保驾护航CLK是中国Linux内核领域颇影响力的峰会之一,至...

2023-11-02 08:30:53 235

转载 线上线下参与人数均创新高 | 第 18 届 CLK 大会圆满落幕,精彩回放已上线

2023 年 10 月 28 日,第 18 届中国 Linux 内核开发者大会(简称 CLK 2023)于深圳成功举办,近 500名开发者从全国各地抵达现场聆听讲座,交流探讨,共享技术盛宴。大会还通过 CSDN、阅码场、思否、InfoQ、腾源会、字节跳动 SYS Tech、openEuler、开源江湖、蔻享等媒体及社区渠道进行了同步直播,直播间累计观看人数超过 18 万。文末放上了大家最关心的直...

2023-11-01 09:50:23 709

原创 ARM NEON在矩阵&向量计算中的加速

一、概述NEON是ARM上使用的一种SIMD(Single Instruction Multiple Data – 单指令多数据)指令集。可实现64位/128位的并行计算。简单理解就是一个计算指令,可以指定4个Float和4个Float并行计算(也可以是其他数据类型,但是必须包含在64位/128位内),得到4个Float结果。而不是一次只能一个Float和一个Float的计算。比如在RGB颜色转灰...

2023-10-27 17:32:51 1261

转载 线上直播预约开启!第十八届CLK大会欢迎大家参与!

10 月 28 日上午 9:00第十八届中国 Linux 内核开发者大会将在深圳皇庭V酒店多功能会议厅隆重举行线上直播预约现已开启未能现场参与的伙伴们欢迎大家线上参与线上直播预约及观看通道PART 1 上午专场主论坛 9:00~11:50扫码或通过链接访问:https://live.csdn.net/room/csdnnews/roru5arMPART 2 下午专场分会场1:内存管理 13:30...

2023-10-24 18:36:06 519

原创 手机主流存储器件的分析与发展

一、前言存储器件作为系统中存储数据的物理单元,承担着非常重要的责任,它的运行状态时刻影响着整个系统的运行效率,存储容量和数据安全。所以整个产业针对存储器件的寿命,稳定性,容量,性能以及价格等方面进行着长期持续的探索与改进,进而衍生出了多种多样的存储器件应用于不同阶段和不同场景需求的系统。而手机系统场景尤其复杂,对存储性能(包括IO的带宽,延迟和稳定性)的要求更加严苛。那么应对如此高要求的手机系统,...

2023-10-20 17:32:18 1457 1

转载 大咖云集,智慧碰撞|第 18 届 CLK 大会完整议程揭晓(内附报名通道)

自 2006 年以来,在国内 Linux 技术爱好者和行业公司的鼎力支持下,中国 Linux 内核开发者大会已走过 17个年头,是中国 Linux 内核领域最具影响力的峰会之一。今年的中国内核开发者大会依然秉承历届理念,以“自由、协作、创新”为理念,以推动和普及开源技术为使命。旨在促进国内 Linux 内核开发爱好者的相互学习与交流,促进共同成长。10 月 28 日,第十八届中国 Linux 内核...

2023-10-19 18:23:56 484

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除