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

随笔分类 -  Linux相关学习总结

Linux下新增和使用系统调用
摘要:关键词:__SYSCALL()、SYSCALL_DEFINEx()、syscall()等等。 1. 为什么使用syscall 内核和用户空间数据交换有很多种方式:sysfs、proc、信号等等。 但是syscall效率要高于这些方式,使用起来也更加简单。 缺点是可移植性差,对于新增的系统调用,需要内 阅读全文

posted @ 2019-07-07 00:00 ArnoldLu 阅读(1288) 评论(0) 推荐(0) 编辑

简单理解Busybox下halt/poweroff/reboot实现及区别
摘要:关键词:halt/poweroff/reboot、reboot()、SIGUSR1/SIGTERM/SIGUSR2等。 1. busybox下的halt/poweroff/reboot实现 通过applets.h下的halt/poweroff/reboot可知,实现都在halt_main()中。 下 阅读全文

posted @ 2019-07-02 00:00 ArnoldLu 阅读(3473) 评论(0) 推荐(1) 编辑

Linux方案级ROM/RAM优化记录
摘要:关键词:readelf、bloat-o-meter、graph-size、totalram_pages、reserved、meminfo、PSS、procrank、maps等等。 根据项目的需求,进行ROM/RAM的低成本裁剪。 在进行优化之前,(1)首要任务是对待优化的方案进行量化,从ROM来看有 阅读全文

posted @ 2019-06-16 00:00 ArnoldLu 阅读(2588) 评论(0) 推荐(0) 编辑

ramdisk配置、解压、创建rootfs、启动简单分析
摘要:关键词:ramdisk、rdint、.init.ramfs、__initramfs_start、__initramfs_size、rootfs、ramfs、populate_rootfs()、gzip、actions[]、free_initmem()、run_init_process()等等。 本着 阅读全文

posted @ 2019-06-10 00:00 ArnoldLu 阅读(11807) 评论(1) 推荐(3) 编辑

busybox启动流程简单解析:从init到shell login
摘要:关键词:kernel_init()、init、inittab、wait/waitpid、fork/vfork、setsid()、execvp/execlp、dup2等等。 由于遇到一系列定制,从init开始加载不同服务,对服务异常等需要特殊处理。 如何在恰当的时机加载恰当的服务?如何对不同异常进行特 阅读全文

posted @ 2019-05-18 00:00 ArnoldLu 阅读(12438) 评论(0) 推荐(0) 编辑

/proc/<pid>/maps简要分析
摘要:定位内存泄漏基本上是从宏观到微观,进而定位到代码位置。 从/proc/meminfo可以看到整个系统内存消耗情况,使用top可以看到每个进程的VIRT(虚拟内存)和RES(实际占用内存),基本上就可以将泄漏内存定位到进程范围。 之前也大概了解过/proc/self/maps,基于里面信息能大概判断泄 阅读全文

posted @ 2019-04-30 00:00 ArnoldLu 阅读(30268) 评论(0) 推荐(10) 编辑

Linux和Uboot下eMMC boot分区读写
摘要:关键词:eMMC boot、PARTITION_CONFIG、force_ro等。 1. eMMC的分区 大部分eMMC都有类似如下的分区,其中BOOT、RPMB和UDA一般是默认存在的,gpp分区需要手动创建。 BOOT主要是为了支持从eMMC启动系统而设计的;RPMB即Replay Protec 阅读全文

posted @ 2019-04-24 14:03 ArnoldLu 阅读(27519) 评论(0) 推荐(1) 编辑

Busybox的syslogd认识与使用
摘要:关键词:rcS、start-stop-daemon、syslogd、syslog()、klogd、klogctl()、syslog.conf、/dev/log、facility/level等等。 syslog用来记录应用程序或者硬件设备的日志;通过syslogd这个进程记录系统有关事件记录,也可以记 阅读全文

posted @ 2019-04-03 17:06 ArnoldLu 阅读(13948) 评论(0) 推荐(2) 编辑

使用sz/rz基于串口传输文件
摘要:关键词:lrzsz、minicom、ZMODEM、MD5sum等。 在环境受限的嵌入式系统上,往往只有串口可以使用。 此时如果需要传输文件,需要借助rz/sz工具,可以使用的传输协议有ZMODEM、YMODEM、XMODEM,一般首选的是ZMODEM。 这里记录minicom下使用rz/sz进行文件 阅读全文

posted @ 2019-03-15 15:48 ArnoldLu 阅读(5755) 评论(0) 推荐(1) 编辑

Linux内核和用户空间通信之netlink
摘要:1. netlink Netlink套接字是用以实现用户进程与内核进程通信的一种特殊的进程间通信(IPC) ,也是网络应用程序与内核通信的最常用的接口。 Netlink 是一种特殊的 socket,它是 Linux 所特有的,类似于 BSD 中的AF_ROUTE 但又远比它的功能强大,目前在Linu 阅读全文

posted @ 2019-02-10 00:00 ArnoldLu 阅读(11581) 评论(1) 推荐(5) 编辑

一款DMA性能优化记录:异步传输和指定实时信号做async IO
摘要:关键词:DMA、sync、async、SIGIO、F_SETSIG。 DMA本身用于减轻CPU负担,进行CPU off-load搬运工作。 在DMA驱动内部实现有同步和异步模式,异步模式使用dma_async_issue_pending(),然后在callback()中发送SIGIO信号,用户空间收 阅读全文

posted @ 2019-01-29 22:24 ArnoldLu 阅读(4154) 评论(1) 推荐(1) 编辑

Linux下时钟框架实践---一款芯片的时钟树配置
摘要:关键词:时钟、PLL、Mux、Divider、Gate、clk_summary等。 时钟和电源是各种设备的基础设施,整个时钟框架可以抽象为几种基本的元器件:负责提供晶振 Linux内核提供了良好的CCF(Common Clock Framework),框架的两端一个是provider,一个是cons 阅读全文

posted @ 2019-01-29 22:15 ArnoldLu 阅读(7686) 评论(0) 推荐(2) 编辑

使用Kernel NetEm和tc模拟复杂网络环境
摘要:关键词:netem(Network Emulator)、tc(Traffic Control)。 大部分局域网环境良好,但是产品实际网络环境可能千差万别,为了对产品进行各种情况测试就需要模拟网络环境。 Linux内核network模块提供了NetworkEmulator功能,结合iproute2的t 阅读全文

posted @ 2019-01-17 11:08 ArnoldLu 阅读(2520) 评论(0) 推荐(0) 编辑

AT24 I2C EEPROM解析及测试
摘要:关键词:AT24、I2C、nvmem、EEPROM。 1. AT24C介绍 AT24C是一款采用I2C通信的EEPROM,相关驱动涉及到I2C和nvmem。 I2C是读写数据的通道,nvmem将AT24C注册为nvmem设备。 2.源码分析 2.1 DTS at24是挂在i2c总线下的设备,硬件接到 阅读全文

posted @ 2018-11-27 10:13 ArnoldLu 阅读(5028) 评论(0) 推荐(0) 编辑

Linux CPU占用率监控工具小结
摘要:关键词:top、perf、sar、ksar、mpstat、uptime、vmstat、pidstat、time、cpustat、munin、htop、glances、atop、nmon、pcp-gui、collectl。 1. top top是最常用的查看系统资源使用情况的工具,包括CPU、内存等等 阅读全文

posted @ 2018-08-13 17:16 ArnoldLu 阅读(78289) 评论(1) 推荐(4) 编辑

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

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

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 阅读(14821) 评论(0) 推荐(4) 编辑

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 阅读(17906) 评论(1) 推荐(1) 编辑

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

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

《嵌入式Linux内存使用与性能优化》笔记
摘要:这本书有两个关切点:系统内存(用户层)和性能优化。 这本书和Brendan Gregg的《Systems Performance》相比,无论是技术层次还是更高的理论都有较大差距。但是这不影响,快速花点时间简单过一遍。 然后在对《Systems Performance》进行详细的学习。 由于Ubunt 阅读全文

posted @ 2017-11-20 15:18 ArnoldLu 阅读(10412) 评论(1) 推荐(0) 编辑

导航