OS技术解密
码龄14年
关注
提问 私信
  • 博客:310,634
    社区:93
    310,727
    总访问量
  • 186
    原创
  • 16,835
    排名
  • 2,737
    粉丝
  • 156
    铁粉
  • 学习成就

个人简介:阿里巴巴

IP属地以运营商信息为准,境内显示到省(区、市),境外显示到国家(地区)
IP 属地:浙江省
  • 加入CSDN时间: 2010-09-13
博客简介:

GetnextWindow的专栏

博客描述:
大爱开源
查看详细资料
  • 原力等级
    成就
    当前等级
    5
    当前总分
    1,041
    当月
    5
个人成就
  • 获得261次点赞
  • 内容获得17次评论
  • 获得563次收藏
  • 代码片获得271次分享
创作历程
  • 20篇
    2024年
  • 44篇
    2023年
  • 13篇
    2022年
  • 19篇
    2015年
  • 97篇
    2014年
成就勋章
TA的专栏
  • 内核调度子系统
    7篇
  • 内存子系统
    38篇
  • 文件系统与存储
    19篇
  • linux内核初探
    16篇
  • 程序员基本素养
    4篇
  • 虚拟化技术
    1篇
  • 菜鸟看spring源码和设计原理
  • 面试算法
    26篇
  • linux操作系统
    14篇
  • nginx
  • STL
    1篇
  • TCP/IP
  • Unix网络编程
    5篇
  • 汇编语言
    19篇
  • linux内核初探
    34篇
  • Learn Makefile
    2篇
  • Android开发
    8篇
  • Android系统源代码分析
    16篇
  • Spring源码分析
兴趣领域 设置
  • 嵌入式
    嵌入式硬件iot
  • 操作系统
    linux
创作活动更多

如何做好一份技术文档?

无论你是技术大神还是初涉此领域的新手,都欢迎分享你的宝贵经验、独到见解与创新方法,为技术传播之路点亮明灯!

342人参与 去创作
  • 最近
  • 文章
  • 代码仓
  • 资源
  • 问答
  • 帖子
  • 视频
  • 课程
  • 关注/订阅/互动
  • 收藏
搜TA的内容
搜索 取消

Linux memcg lru lock提升锁性能

继续检查,这个页是否在swapcache中,如果在,返回这个页地址加虚拟地址地址在页中的偏移,如果不在,获得一个内存页, 到swap设备上读取内容填到这个页,此处产生IO, 为Major page fault. 接下了就上把这个页加到swapcache,加入 LRU, 加入page table, 关联到所属的memcg, 并且添加反向映射,然后用户就可以正常使用了。解决的根本是改变页加入lru list和memcg的次序:如下所示,先关联memcg, 然后在加入lru list.get lru_lock;
原创
发布博客 2024.09.16 ·
1379 阅读 ·
19 点赞 ·
0 评论 ·
20 收藏

Linux per memcg lru lock

原来, 内核在引入 per memcg lru lists 后,并没有使用 per memcg lru lock, 还在使用旧的全局 lru lock 来管理全部 memcg lru lists。其实这些补丁和 Hugh Dickins 的补丁毫无关联, 并且在和 Johannes 的持续讨论中,解决方案的核心:page->memcg 的线性化已经进化了几个版本了, 从 relock 到 lock_page_memcg,再到 TestClearPageLRU,和 Google 的补丁是路线上的不同。
原创
发布博客 2024.09.16 ·
1017 阅读 ·
14 点赞 ·
0 评论 ·
17 收藏

Linux匿名映射

在切入逆向映射的历史之前,我们还是简单看看一些基础的概念,这主要包括两个方面:一个是逆向映射的定义,另外一个是引入逆向映射的原因。1、什么是逆向映射(reverse mapping)?在聊逆向映射之前,我们先聊聊正向映射好了,当你明白了正向映射,逆向映射的概念也就易如反掌了。所谓正向映射,就是在已知虚拟地址和物理地址(或者page number、page struct)的情况下,为地址映射建立起完整的页表的过程。例如,进程分配了一段VMA之后,并无对应的page frame(即没有分配物理地址),直
转载
发布博客 2024.09.15 ·
350 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

终于讲清楚了,Linux Cgroup机制以及其树形结构怎么创建的

了解Linux Cgroup机制的都清楚,cgroup机制最终是通过树形结构表示的,既然是树形结构,我们必须搞清楚这个树形结构是怎么创建起来的,以及在内核源码中是怎么表达这种树形结构的,我们是否非常清楚怎么遍历整个树,本文将基于Linux5.15源码分析cgroup树形结构的创建过程。假设我们有如下层级结构:app就是test1和test2的父节点,test1和test2是兄弟节点,我们按照这个例子具体展开分析。
原创
发布博客 2024.09.15 ·
871 阅读 ·
22 点赞 ·
0 评论 ·
10 收藏

[Linux Kernel Block Layer第一篇] block layer架构设计

随着SSD快速存储设备的发展,内核社区越发发现,存储的性能瓶颈从硬件存储设备转移到了内核block layer,主要因为当时的内核block layer是single hw queue的架构,导致cpu锁竞争问题严重,本文先提纲挈领的介绍内核block layer的架构演进,然后根据最新的架构研究内核源码的实现细节,直击内核block layer本质原理。
原创
发布博客 2024.09.08 ·
603 阅读 ·
5 点赞 ·
0 评论 ·
10 收藏

Linux block_device gendisk和hd_struct到底是个啥关系

根据块设备号dev,从blockdev_superblock拿到inode节点,为什么这里能拿到块设备文件(/dev/block/zram0)的inode,就是因为bdev_add时候将inode对象加入到blockdev_superblock的inode hash表中了,这里就能拿到。blkdev_get_by_dev函数返回了一个block_device,这个block_device跟前面zram块驱动blk_alloc_disk 生成的block_device有啥关系?
原创
发布博客 2024.09.07 ·
848 阅读 ·
31 点赞 ·
0 评论 ·
9 收藏

2024年Linux内核社区关于large folio和mthp的关键进展

所以唯一可行方案是THP recovery,也就是在被split的1GBTHP基础上,保留未被重新分配的页,并将已被重新分配的页的数据复制到额外的4KB页,然后将原有的1GB物理区域“物归原主”成THP。由于 mTHP 的 size 大于 4KiB 的 small folios,理论上,它更容易出现 false sharing 的情况,频繁迁移会导致内存跨 NUMA Node 来回 ping-pong,因此,在算法上,mTHP 暂时借用了 PMD-mapped 的 2-stage filter 机制。
原创
发布博客 2024.09.01 ·
1529 阅读 ·
14 点赞 ·
0 评论 ·
20 收藏

Linux TLB和cache

Linux TLB和cache。
原创
发布博客 2024.08.31 ·
1145 阅读 ·
13 点赞 ·
0 评论 ·
16 收藏

linux每个memory cgroup的lru链表是什么创建的 - 5.15内核

对Linux memory子系统有基本了解的都知道,linux内核通过LRU管理物理内存,不知道是否有思考过如下问题:LRU是全局一套,还是说每个memory cgroup拥有单独的一套LRU链表?直接揭晓答案:每个memory cgroup都会单独的LRU链表。
原创
发布博客 2024.08.29 ·
725 阅读 ·
4 点赞 ·
0 评论 ·
10 收藏

linux swap slot机制

其基本的思想是:swap slot cache从swap area中批量申请一些slots,之后内核在swap out操作申请slot时,直接从swap slot cache中获取,内核进行swap in释放slot时,也直接归还到swap slot cache中,这样比每次都向swap area逐个申请和释放要更加快速。判断的具体门限是以"SWAP_SLOTS_CACHE_SIZE"大小的倍数计,低于2倍时(相当于low watermark)就关闭swap slot cache。
原创
发布博客 2024.08.23 ·
389 阅读 ·
5 点赞 ·
0 评论 ·
7 收藏

zram机制 - zram_bvec_write为什么要调用zram_free_page

或者swap_writepage找一个空闲的slot,但是之前这个slot调用zram_slot_free_notify时,由于zram_slot_trylock失败,也没有在zram_slot_free_notify中调用zram_free_page,所以在本次写zram时,释放。有条件释放swapcache,看下面代码, 条件之一是mem_cgroup_swap_full(),也就是判定swap是否已经使用了50%,如果超过了50%,就要调用folio_free_swap进一步释放;
原创
发布博客 2024.08.22 ·
430 阅读 ·
4 点赞 ·
0 评论 ·
9 收藏

linux memory cgroup的memory.move_charge_at_immigrate含义

最开始某个进程是在cgroup A中,后面要迁移到cgroup B中,那么进程的内存计数是否要完全迁入B中,就是通过memory.move_charge_at_immigrate控制,如果目标cgroup也就是B设置了1到该字段中,那么进程的内存记账也要从cgroup A中去掉(uncharge from A),同时计算到B中(charge to B)。
原创
发布博客 2024.08.20 ·
316 阅读 ·
3 点赞 ·
0 评论 ·
0 收藏

源码视角看memory cgroup目录下创建目录以及读写节点发生了什么

【代码】源码视角看memory cgoup目录下创建目录以及读写节点发生了什么。
原创
发布博客 2024.08.17 ·
128 阅读 ·
2 点赞 ·
0 评论 ·
0 收藏

linux cgroup设计与实现机制

cgroup的全称为,中文翻译为控制组。内存CPUI/O和网络等。如下图所示,使用cgroup来限制进程组对内存的使用:在上图中,我们创建了 2 个cgroup(每个 cgroup 有 4 个进程),并且限制它们各自最多只能使用 2GB 的内存。如果使用超过 2GB 的内存,那么将会触发错误。cgroup通过把进程划分成控制组(一个控制组包含一个或多个进程),并且可以对控制组进行资源使用的控制,也就是说cgroup作用对象是控制组。cgroup提供了将进程组织成控制组的能力,然后通过使用。
转载
发布博客 2024.08.16 ·
102 阅读 ·
0 点赞 ·
0 评论 ·
1 收藏

关注GenieOS微博官方号,OS技术学起来

Sina Visitor Systemhttps://weibo.com/u/6559724328
原创
发布博客 2024.07.31 ·
228 阅读 ·
1 点赞 ·
0 评论 ·
0 收藏

linux 公平调度关键点记录

这里计算了curr任务的运行时间,二now是直接从当前cpu的cfs_rq记录的所有任务的物理运行时间,如果update_curr调用时候有curr之外的任务运行那就不正确了,可以看到对于-20和15两个进程的情况下,其虚拟运行时间是基本相同的,这正式cfs公平调度的核心,所谓的公平是指在虚拟机运行时间的层面是完全公平的。怎么计算出来-20和15两个任务的实际运行时间和虚拟运行时间呢?-20任务的realruntime = 88761/(88761+36) x 10ms = 9.996ms。
原创
发布博客 2024.07.20 ·
361 阅读 ·
5 点赞 ·
0 评论 ·
8 收藏

Linux Swap机制关键点分析

参考文章:Linux Swap 从 userspace 到 kernel详解_kernel swap-CSDN博客Linux Swap 与 Zram 详解 - 泰晓科技一文聊透 Linux 缺页异常的处理—— 图解 Page Faults(下) - 简书
原创
发布博客 2024.06.30 ·
489 阅读 ·
5 点赞 ·
0 评论 ·
7 收藏

zram压缩机制看swapon系统调用

上面代码read_mapping_page是能够读取内容的关键是mapping对象,因为mapping->aops有readpage函数,但是这里mapping和mapping->aops是什么时候设置的?上面命令调用了linux的swapon系统调用启动zram0交换分区;mkswap命令向块设备文件/dev/block/zram0写入了swap_header信息。那么swapon_all命令执行了哪里的代码呢?但是这是什么代码路径设置进去的呢?
原创
发布博客 2024.06.29 ·
512 阅读 ·
4 点赞 ·
0 评论 ·
2 收藏

Linux pi futex锁优先级继承实现原理

【代码】Linux pi futex锁优先级继承实现原理。
原创
发布博客 2024.06.02 ·
196 阅读 ·
2 点赞 ·
0 评论 ·
1 收藏

Android13屏幕旋转的基本逻辑

2.设置user_rotation和GSensor哪个优先级更高,比如user_rotation = 0期待竖屏,但是打开屏幕旋转且处于横屏时,应该是横屏还是竖屏。现在我们知道,屏幕方向旋转是通过加速度传感器或者重力传感器来获取,但Sensor上报的原始数据还得通过一系列计算得到最终的旋转角度,这部分逻辑在。答案:设置用户期望的屏幕转向,0代表:Surface.ROTATION_0竖屏;3.systemui中的“自动旋转”按钮影响的是哪个数据和系统的值。答案:此时GSensor优先级更高,横屏显示,
原创
发布博客 2024.05.12 ·
1467 阅读 ·
4 点赞 ·
1 评论 ·
17 收藏
加载更多