LXR | KVM | PM | Time | Interrupt | Systems Performance | Bootup Optimization

上一页 1 ··· 5 6 7 8 9 10 11 12 下一页

2018年5月29日

Linux中断管理 (3)workqueue工作队列

摘要: 目录: 《Linux中断管理》 《Linux中断管理 (1)Linux中断管理机制》 《Linux中断管理 (2)软中断和tasklet》 《Linux中断管理 (3)workqueue工作队列》 关键词: 工作队列的原理是把work(需要推迟执行的函数)交由一个内核线程来执行,它总是在进程上下文中 阅读全文

posted @ 2018-05-29 23:50 ArnoldLu 阅读(16036) 评论(1) 推荐(2)

2018年5月20日

Linux进程管理 (9)实时调度类分析,以及FIFO和RR对比实验

摘要: 关键词:rt_sched_class、SCHED_FIFO、SCHED_RR、sched_setscheduler()、sched_setaffinity()、RR_TIMESLICE。 本文主要关注实时进程,及FIFO和RR调度策略的区别。 主要分析rt_sched_class各函数;然后通过可视 阅读全文

posted @ 2018-05-20 09:19 ArnoldLu 阅读(12563) 评论(0) 推荐(3)

2018年5月14日

ftrace利器之trace-cmd和kernelshark

摘要: 关键词:ftrace、trace-cmd、kernelshark。 trace-cmd是设置读取ftrace的命令行工具,kernelshark既可以记录数据,也可以图形化分析结果。 trace-cmd和kernelshark源码都由kernel.org维护在trace-cmd.git。 kerne 阅读全文

posted @ 2018-05-14 20:04 ArnoldLu 阅读(15971) 评论(0) 推荐(4)

Linux中断管理 (2)软中断和tasklet

摘要: 目录: 《Linux中断管理》 《Linux中断管理 (1)Linux中断管理机制》 《Linux中断管理 (2)软中断和tasklet》 《Linux中断管理 (3)workqueue工作队列》 关键词:TASKLET_SOFTIRQ、HI_SOFTIRQ、softirq_action、ksoft 阅读全文

posted @ 2018-05-14 00:41 ArnoldLu 阅读(6875) 评论(0) 推荐(1)

2018年5月6日

Linux中断管理 (1)Linux中断管理机制

摘要: 目录: 《Linux中断管理》 《Linux中断管理 (1)Linux中断管理机制》 《Linux中断管理 (2)软中断和tasklet》 《Linux中断管理 (3)workqueue工作队列》 关键词:GIC、IAR、EOI、SGI/PPI/SPI、中断映射、中断异常向量、中断上下文、内核中断线 阅读全文

posted @ 2018-05-06 23:00 ArnoldLu 阅读(31738) 评论(1) 推荐(3)

Linux中断管理

摘要: CPU和外设之间的交互,或CPU通过轮询机制查询,或外设通过中断机制主动上报。 对大部分外设中断比轮询效率高,但比如网卡驱动采取轮询比中断效率高。 这里重点关注ARM+Linux组合下中断管理,从底层硬件GIC+CPU,到Linux内核通用部分处理,再到GIC驱动以及中断注册,最后是中断下半部软终端 阅读全文

posted @ 2018-05-06 22:00 ArnoldLu 阅读(6230) 评论(1) 推荐(1)

2018年4月25日

Linux内核访问用户空间文件:get_fs()/set_fs()的使用

摘要: 测试环境:Ubuntu 14.04+Kernel 4.4.0-31 关键词:KERNEL_DS、USER_DS、get_fs()、set_fs()、addr_limit、access_ok。 参考代码:https://elixir.bootlin.com/linux/v4.4/source 内核空间 阅读全文

posted @ 2018-04-25 09:14 ArnoldLu 阅读(19520) 评论(1) 推荐(1)

2018年4月17日

Linux进程管理 (1)进程的诞生

摘要: 专题:Linux进程管理专题 目录: Linux进程管理 (1)进程的诞生 Linux进程管理 (2)CFS调度器 Linux进程管理 (3)SMP负载均衡 Linux进程管理 (4)HMP调度器 Linux进程管理 (5)NUMA调度器 Linux进程管理 (6)EAS绿色节能调度器 Linux进 阅读全文

posted @ 2018-04-17 22:34 ArnoldLu 阅读(5487) 评论(0) 推荐(1)

Linux进程管理专题

摘要: Linux进程管理 (1)进程的诞生介绍了如何表示进程?进程的生命周期、进程的创建等等? Linux支持多种调度器(deadline/realtime/cfs/idle),其中CFS调度器最常见。Linux进程管理 (2)CFS调度器介绍了优先级、权重、虚拟运行时间、CFS调度器类;CFS进程创建以 阅读全文

posted @ 2018-04-17 20:14 ArnoldLu 阅读(3059) 评论(0) 推荐(0)

Linux内存管理 (23)一个内存Oops解析

摘要: 专题:Linux内存管理专题 关键词:DataAbort、fsr、pte、backtrace、stack。 在内存相关实际应用中,内存异常访问是一种常见的问题。 本文结合异常T32栈回溯、Oops打印以及代码,分析打印log,加深对Oops的理解,有助于快速定位问题解决问题。 1. 不同类型异常处理 阅读全文

posted @ 2018-04-17 20:01 ArnoldLu 阅读(9162) 评论(0) 推荐(1)

2018年3月20日

Linux内存管理 (21)OOM

摘要: 专题:Linux内存管理专题 关键词:OOM、oom_adj、oom_score、badness。 Linux内核为了提高内存的使用效率采用过度分配内存(over-commit memory)的办法,造成物理内存过度紧张进而触发OOM机制来杀死一些进程回收内存。 该机制会监控那些占用内存过大,尤其是 阅读全文

posted @ 2018-03-20 19:54 ArnoldLu 阅读(11960) 评论(0) 推荐(1)

Linux内存管理 (22)内存检测技术(slub_debug/kmemleak/kasan)

摘要: 专题:Linux内存管理专题 关键词:slub_debug、kmemleak、kasan、oob、Redzone、Padding。 Linux常见的内存访问错误有: 越界访问(out of bounds) 访问已经释放的内存(use after free) 重复释放 内存泄露(memory leak 阅读全文

posted @ 2018-03-20 19:54 ArnoldLu 阅读(25315) 评论(1) 推荐(1)

2018年2月13日

Linux内存管理 (20)最新更新和展望

摘要: 专题:Linux内存管理专题 关键词:OOM、swap、HMM、LRU。 本系列没有提到的内容由THP(Transparent Huge Page)、memory cgroup、slub、CMA、zram、swap、zswap、memory hotplug等。 下面列举从Linux 4.0到Linu 阅读全文

posted @ 2018-02-13 22:23 ArnoldLu 阅读(2330) 评论(0) 推荐(0)

2018年2月12日

Linux内存管理 (19)总结内存管理数据结构和API

摘要: 专题:Linux内存管理专题 关键词:mm、vaddr、VMA、page、pfn、pte、paddr、pg_data、zone、mem_map[]。 1. 内存管理数据结构的关系图 在大部分Linux系统中,内存设备的初始化一般是在BIOS或bootloader中,然后把DDR的大小传递给Linux 阅读全文

posted @ 2018-02-12 20:34 ArnoldLu 阅读(5082) 评论(0) 推荐(0)

2018年2月10日

Linux内存管理 (17)KSM

摘要: 专题:Linux内存管理专题 关键词:KSM、匿名页面、COW、madvise 、MERGEABLE、UNMERGEABLE。 KSM是Kernel Samepage Merging的意思,用于合并内容相同的页面。 在虚拟化环境中,同一台主机上存在许多相同OS和应用程序,很多页面内容可能是完全相同的 阅读全文

posted @ 2018-02-10 22:43 ArnoldLu 阅读(6299) 评论(0) 推荐(0)

Linux内存管理 (16)内存规整

摘要: 专题:Linux内存管理专题 关键词:内存规整、页面迁移、pageblock、MIGRATE_TYPES。 内存碎片的产生:伙伴系统以页为单位进行管理,经过大量申请释放,造成大量离散且不连续的页面。这时就产生了很多碎片。 内存规整也即内存碎片整理,内存碎片也是以页面为单位的。实现基础是内存页面按照可 阅读全文

posted @ 2018-02-10 14:16 ArnoldLu 阅读(9294) 评论(0) 推荐(0)

Linux内存管理 (15)页面迁移

摘要: 专题:Linux内存管理专题 关键词:RMAP、页面迁移。 相关章节:反向映射RMAP、内存规整。 页面迁移的初衷是为NUMA系统提供一种将进程迁移到任意内存节点的能力,后来内存规整和内存热插拔场景都使用了此功能。 页面迁移将就页面内容,迁移到新的页面。 需要分配新页面,将旧页面内容拷贝到新页面;然 阅读全文

posted @ 2018-02-10 10:42 ArnoldLu 阅读(6523) 评论(0) 推荐(0)

2018年2月5日

Linux内存管理 (14)匿名页面生命周期

摘要: 专题:Linux内存管理专题 关键词:匿名页面、换入、换出。 如果要将匿名页面的生命周期进行划分,大概就是诞生、使用、换出、换入和销毁。 内核中使用匿名页面的地方有很多,产生缺页中断之后匿名页面就诞生了; 用户进程访问虚拟地址即可访问到匿名页面内容; 在内存紧张的时候,需要回收一些页面来释放内存,匿 阅读全文

posted @ 2018-02-05 19:10 ArnoldLu 阅读(5150) 评论(0) 推荐(1)

Linux内存管理 (13)回收页面

摘要: 专题:Linux内存管理专题 关键词:LRU、活跃/不活跃-文件缓存/匿名页面、Refault Distance。 页面回收、或者回收页面也即page reclaim,依赖于LRU链表对页面进行分类:不活跃匿名页面、活跃匿名页面、不活跃文件缓存页面、活跃文件缓存页面和不可回收页面。 内存紧张时优先换 阅读全文

posted @ 2018-02-05 19:09 ArnoldLu 阅读(8929) 评论(0) 推荐(1)

Linux内存管理 (12)反向映射RMAP

摘要: 专题:Linux内存管理专题 关键词:RMAP、VMA、AV、AVC。 所谓反向映射是相对于从虚拟地址到物理地址的映射,反向映射是从物理页面到虚拟地址空间VMA的反向映射。 RMAP能否实现的基础是通过struct anon_vma、struct anon_vma_chain和sturct vm_a 阅读全文

posted @ 2018-02-05 19:07 ArnoldLu 阅读(9146) 评论(1) 推荐(0)

2018年2月3日

Linux内存管理 (11)page引用计数

摘要: 专题:Linux内存管理专题 关键词:struct page、_count、_mapcount、PG_locked/PG_referenced/PG_active/PG_dirty等。 Linux的内存管理是以页展开的,struct page非常重要,同时其维护成本也非常高。 这里主要介绍struc 阅读全文

posted @ 2018-02-03 17:01 ArnoldLu 阅读(11095) 评论(1) 推荐(0)

2018年1月31日

Linux内存管理 (10)缺页中断处理

摘要: 专题:Linux内存管理专题 关键词:数据异常、缺页中断、匿名页面、文件映射页面、写时复制页面、swap页面。 malloc()和mmap()等内存分配函数,在分配时只是建立了进程虚拟地址空间,并没有分配虚拟内存对应的物理内存。 当进程访问这些没有建立映射关系的虚拟内存时,处理器自动触发一个缺页异常 阅读全文

posted @ 2018-01-31 23:01 ArnoldLu 阅读(19284) 评论(0) 推荐(0)

2018年1月27日

Linux内存管理 (9)mmap

摘要: 专题:Linux内存管理专题 关键词:文件映射、匿名映射、私有映射、共享映射 mmap/munmap是常用的一个系统调用,使用场景是:分配内存、读写大文件、连接动态库文件、多进程间共享内存。 更详细解读参考《Linux内存管理 (9)mmap(补充)》。 1. mmap/munmap介绍 mmap/ 阅读全文

posted @ 2018-01-27 21:59 ArnoldLu 阅读(8188) 评论(0) 推荐(0)

Linux内存管理 (8)malloc

摘要: 专题:Linux内存管理专题 关键词:malloc、brk、VMA、VM_LOCK、normal page、special page。 每章问答: malloc()函数是C函数库封装的一个核心函数,对应的系统调用是brk()。 1. brk实现 要了解brk的实现首先需要知道进程用户空间的划分,以及 阅读全文

posted @ 2018-01-27 21:57 ArnoldLu 阅读(6583) 评论(0) 推荐(1)

Linux内存管理 (7)VMA操作

摘要: 专题:Linux内存管理专题 关键词:VMA、vm_area_struct、查找/插入/合并VMA、红黑树。 用户进程可以拥有3GB大小的空间,远大于物理内存,那么这些用户进程的虚拟地址空间是如何管理的呢? malloc()或mmap()操作都会要求在虚拟地址空间中分配内存块,但这些内存在物理上往往 阅读全文

posted @ 2018-01-27 21:56 ArnoldLu 阅读(8340) 评论(0) 推荐(0)

2018年1月21日

Linux内存管理 (6)vmalloc

摘要: 专题:Linux内存管理专题 关键词:vmalloc、页对齐、虚拟地址连续、物理不连续 至此,已经介绍了集中内核中内存分配函数,在开始简单做个对比总结Linux中常用内存分配函数的异同点,然后重点介绍了vmalloc相关的hole查找,页面分配等等。 vmalloc的核心是在vmalloc区域中找到 阅读全文

posted @ 2018-01-21 22:19 ArnoldLu 阅读(17040) 评论(0) 推荐(3)

2018年1月9日

Linux内存管理 (5)slab分配器

摘要: 专题:Linux内存管理专题 关键词:slab/slub/slob、slab描述符、kmalloc、本地/共享对象缓冲池、slabs_partial/slabs_full/slabs_free、avail/limit/batchcount。 从Linux内存管理框架图可以知道:slab/slub/s 阅读全文

posted @ 2018-01-09 22:57 ArnoldLu 阅读(9561) 评论(1) 推荐(0)

Linux内存管理 (4)分配物理页面

摘要: 专题:Linux内存管理专题 关键词:分配掩码、伙伴系统、水位(watermark)、空闲伙伴块合并。 我们知道Linux内存管理是以页为单位进行的,对内存的管理是通过伙伴系统进行。 从Linux内存管理框架图可知,页面分配器是其他林林总总内存操作的基础。 这也是为什么在介绍了《Linux内存管理 阅读全文

posted @ 2018-01-09 22:55 ArnoldLu 阅读(7183) 评论(0) 推荐(0)

2017年12月30日

Linux内存管理 (3)内核内存的布局图

摘要: 专题:Linux内存管理专题 关键词:内核内存布局图、lowmem线性映射区、kernel image、ZONE_NORMAL、ZONE_HIGHMEM、swapper_pg_dir、fixmap、vector、pkmap。 内核内存布局图对于理解内存管理至关重要,有了布局图对于理解内存管理初始化, 阅读全文

posted @ 2017-12-30 22:44 ArnoldLu 阅读(21061) 评论(2) 推荐(0)

Linux内存管理 (2)页表的映射过程

摘要: 专题:Linux内存管理专题 关键词:swapper_pd_dir、ARM PGD/PTE、Linux PGD/PTE、pgd_offset_k。 Linux下的页表映射分为两种,一是Linux自身的页表映射,另一种是ARM32 MMU硬件的映射。 1. ARM32页表映射 由于ARM32和Linu 阅读全文

posted @ 2017-12-30 22:41 ArnoldLu 阅读(21765) 评论(1) 推荐(0)

Linux内存管理 (1)物理内存初始化

摘要: 专题:Linux内存管理专题 关键词:用户内核空间划分、Node/Zone/Page、memblock、PGD/PUD/PMD/PTE、lowmem/highmem、ZONE_DMA/ZONE_NORMAL/ZONE_HIGHMEM、Watermark、MIGRATE_TYPES。 物理内存初始化是 阅读全文

posted @ 2017-12-30 22:40 ArnoldLu 阅读(19893) 评论(0) 推荐(3)

Linux ftrace框架介绍及运用

摘要: 目录: 1. ftrace背景 2. 框架介绍 3. 主要代码分析 4. ftrace的配置和使用 5. ftrace相关工具 在日常工作中,经常会需要对内核进行Debug、或者进行优化工作。一些简单的问题,可以通过dmesg/printk查看,优化借助一些工具进行。 但是当问题逻辑复杂,优化面宽泛 阅读全文

posted @ 2017-12-30 22:39 ArnoldLu 阅读(31734) 评论(0) 推荐(1)

2017年12月17日

Linux内存管理专题

摘要: Linux的内存管理涉及到的内容非常庞杂,而且与内核的方方面面耦合在一起,想要理解透彻非常困难。 在开始学习之前进行了一些准备工作《如何展开Linux Memory Management学习?》, 1. 参考资料 遂决定以如下资料作为参考,进行Linux内存管理的研究: 《奔跑吧 Linux内核》: 阅读全文

posted @ 2017-12-17 23:12 ArnoldLu 阅读(24761) 评论(2) 推荐(8)

2017年12月8日

Linux下启动时间优化专题

摘要: 1. 过往优化总结 陆陆续续在Linux进行启动时间优化,之前有两份文档,分别从内核和用户空间两个方向进行了优化。 《Android/Linux boot time分析优化》和《Busybox下Bootchart的使用》。 简单总结如下: Kernel:基于dmesg,分析initcall_debu 阅读全文

posted @ 2017-12-08 22:08 ArnoldLu 阅读(6204) 评论(1) 推荐(1)

2017年12月7日

如何展开Linux Memory Management学习?

摘要: Linux的进程和内存是两座大山,没有翻过这两座大山对于内核的理解始终是不完整的。 关于Linux内存管理,在开始之前做些准备工作。 首先bing到了Quora的《How can one really learn Linux Kernel Memory Management?》,这也是大部分初学者, 阅读全文

posted @ 2017-12-07 19:31 ArnoldLu 阅读(7553) 评论(0) 推荐(0)

《Systems Performance》阅读笔记及收获

摘要: 本文共三部分: 笔记之前的废话是和书结缘的过程; Systems Performance笔记是正文,记录了读书笔记以及一些实践; 一些优化记录将之前做的一些优化归纳起来,同时也能反思做的如何,加入跟Gregg的思路做会是什么样子? 1. 笔记之前的废话 读这本书之前,说实话是被几张图片给震惊。 把这 阅读全文

posted @ 2017-12-07 19:30 ArnoldLu 阅读(4541) 评论(0) 推荐(1)

2017年11月30日

Linux时间子系统之四:Timer在用户和内核空间流程

摘要: 用户空间应用中创建一个Timer(alarm/setitimer/POSIX Timer等等),然后程序继续执行; 内核进入创建/设置Timer系统调用,开始计时,在超时后通过何种方式通知用户空间; 用户空间又是如何执行回调函数的。 下面就着重这个流程,梳理一下Timer周期中用户空间和内核空间涉及 阅读全文

posted @ 2017-11-30 16:22 ArnoldLu 阅读(5134) 评论(0) 推荐(0)

2017年11月27日

NB-IoT协议及其PSM

摘要: 物联网技术发展趋势是LPWAN,其中尤其以NB-IoT和eMTC最为代表。NB-IoT和eMTC各有优劣,使用场景互有不同。 低功耗可以说是物联网技术的核心,本着关注低功耗的方向,适当了解NB IoT在整个LTE中的位置,NB-IoT的协议,重点关注NB-IoT低功耗部分。 1.NB-IoT背景 N 阅读全文

posted @ 2017-11-27 18:52 ArnoldLu 阅读(31874) 评论(0) 推荐(1)

2017年11月23日

阅读ARM Memory(L1/L2/MMU)笔记

摘要: 《ARM Architecture Reference Manual ARMv8-A》里面有Memory层级框架图,从中可以看出L1、L2、DRAM、Disk、MMU之间的关系,以及他们在整个存储系统中扮演的角色。 涉及到的相关文档有: 《ARM Architecture Reference Man 阅读全文

posted @ 2017-11-23 10:41 ArnoldLu 阅读(18635) 评论(0) 推荐(2)

2017年11月20日

阅读GIC-500 Technical Reference Manual笔记

摘要: GIC-500是ARM GICv3的一个实现,它只支持ARMv8核和实现了GIC Stream协议的GIC CPU Interface,比如Cortex-A53。 关于GIC有四份相关文档:《Cortex-A53 TRM》介绍了GIC CPU Interface;《ARMv8-A Architect 阅读全文

posted @ 2017-11-20 17:30 ArnoldLu 阅读(6475) 评论(0) 推荐(0)

上一页 1 ··· 5 6 7 8 9 10 11 12 下一页

导航