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

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

2018年7月7日

Linux并发与同步专题 (1)原子操作和内存屏障

摘要: 关键词:。 《Linux并发与同步专题 (1)原子操作和内存屏障》 《Linux并发与同步专题 (2)spinlock》 《Linux并发与同步专题 (3) 信号量》 《Linux并发与同步专题 (4) Mutex互斥量》 《Linux并发与同步专题 (5) 读写锁》 《Linux并发与同步专题 ( 阅读全文

posted @ 2018-07-07 13:00 ArnoldLu 阅读(4035) 评论(0) 推荐(0)

Linux并发与同步专题

摘要: 并发访问:多个内核路径同时访问和操作数据,就有可能发生相互覆盖共享数据的情况,造成被访问数据的不一致。 临界区:访问和操作共享数据的代码段。 并发源:访问临界区的执行线程或代码路径。 在内核中产生并发访问的主要有如下4种: 中断和异常:中断发生后,中断处理程序和被中断的进程之间有可能产生并发访问。中 阅读全文

posted @ 2018-07-07 12:00 ArnoldLu 阅读(923) 评论(0) 推荐(0)

2018年7月1日

功耗案例分析:周期性底电流抬高问题分析和解决

摘要: 最近遇到一个间歇性底电流抬高的问题,没有其他提示。 刚开始发现有周期性问题,准备分析中断以及timer,看看能否找到线索。 结果timer数据量太大,timer多,timer超时记录更多;中断也看的云里雾里的。 然后想了一下去看看调度的规律是否能找到问题的根源。 下面就是记录分析的过程。 1. 底电 阅读全文

posted @ 2018-07-01 22:00 ArnoldLu 阅读(1159) 评论(0) 推荐(0)

2018年6月23日

Ubuntu使用小技巧

摘要: 1. Ubuntu下自由截图 Ubuntu下使用PrintScreen按键可以截取整个屏幕,但是很多时候并不需要那么多内容,还需要对图片进行编辑。 这时候就需要截图时,有矩形选择,更符合要求。 进入System Settings...->Keyboard->Shortcuts,然后选择Custom 阅读全文

posted @ 2018-06-23 22:26 ArnoldLu 阅读(763) 评论(0) 推荐(0)

2018年6月12日

Linux进程管理 (2)CFS调度器

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

posted @ 2018-06-12 21:00 ArnoldLu 阅读(6854) 评论(0) 推荐(1)

2018年5月30日

Linux IO性能分析blktrace/blk跟踪器

摘要: 关键词:blktrace、blk tracer、blkparse、block traceevents、BIO。 本章只做一个记录,关于优化Block层IO性能方法工具。 对Block层没有详细分析,对工作的使用和结果分析也没有展开。 如果有合适的机会补充。 1. blktrace介绍 如下图可知整个 阅读全文

posted @ 2018-05-30 08:51 ArnoldLu 阅读(18700) 评论(0) 推荐(0)

2018年5月29日

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

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

posted @ 2018-05-29 23:50 ArnoldLu 阅读(16097) 评论(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 阅读(12656) 评论(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 阅读(16058) 评论(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 阅读(6914) 评论(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 阅读(31796) 评论(1) 推荐(3)

Linux中断管理

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

posted @ 2018-05-06 22:00 ArnoldLu 阅读(6256) 评论(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 阅读(19593) 评论(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 阅读(5532) 评论(0) 推荐(1)

Linux进程管理专题

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

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

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

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

posted @ 2018-04-17 20:01 ArnoldLu 阅读(9193) 评论(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 阅读(12012) 评论(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 阅读(25402) 评论(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 阅读(2343) 评论(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 阅读(5097) 评论(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 阅读(6315) 评论(0) 推荐(0)

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

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

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

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

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

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

2018年2月5日

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

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

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

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

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

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

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 阅读(9223) 评论(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 阅读(11132) 评论(1) 推荐(0)

2018年1月31日

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

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

posted @ 2018-01-31 23:01 ArnoldLu 阅读(19306) 评论(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 阅读(8219) 评论(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 阅读(6595) 评论(0) 推荐(1)

Linux内存管理 (7)VMA操作

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

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

2018年1月21日

Linux内存管理 (6)vmalloc

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

posted @ 2018-01-21 22:19 ArnoldLu 阅读(17079) 评论(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 阅读(9591) 评论(1) 推荐(0)

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

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

posted @ 2018-01-09 22:55 ArnoldLu 阅读(7190) 评论(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 阅读(21103) 评论(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 阅读(21800) 评论(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 阅读(19925) 评论(0) 推荐(3)

Linux ftrace框架介绍及运用

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

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

2017年12月17日

Linux内存管理专题

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

posted @ 2017-12-17 23:12 ArnoldLu 阅读(24831) 评论(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 阅读(6219) 评论(1) 推荐(1)

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

导航