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

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

2020年8月22日

Symbol Versioning for GCC:一种对动态库符号进行版本控制的技术

摘要: 关键词:--version-script、Symbol Versioning等等。 gcc提供了Symbol Versioning,通过对Symbol进行版本化,可以达到symbol级别的兼容性检查。 1. 概要介绍 Symbol Versinoning只适用于动态库,首先对需要Versioning 阅读全文

posted @ 2020-08-22 00:00 ArnoldLu 阅读(3628) 评论(0) 推荐(1)

2020年7月30日

GitLab CI/CD实践记录

摘要: 1. GitLab Runner 参考:《Configuring GitLab Runners》 In GitLab CI/CD, Runners run the code defined in .gitlab-ci.yml. A GitLab Runner is a lightweight, hi 阅读全文

posted @ 2020-07-30 18:14 ArnoldLu 阅读(3537) 评论(0) 推荐(0)

一个malloc()->mmap()->memset()性能问题解决过程

摘要: 关键词:perf、malloc()、mmap()、memset()等。 一个嵌入式项目中启动4个线程,每个线程进行浮点数转换。 在启动后发现,这几个线程每个占用率都在15%左右,并且总的CPU耗时user远小于sys。 1. 现象分析 首先通过top简单查看,各个线程消耗的CPU情况;总的CPU消耗 阅读全文

posted @ 2020-07-30 10:24 ArnoldLu 阅读(2474) 评论(0) 推荐(1)

2020年6月13日

笔记:BPF Performance Tools Chapter 1. Introduction

摘要: 关键词:bpf、ebpf、bcc、bpftrace、kprobe、uprobe、tracepoint、usdt等等。 本章主要介绍基本概念以及相关资源之间关系 BPF和eBPF的演变以及用途 基本概念Tracing/Snooping/Samping/Profiling/Observability以及 阅读全文

posted @ 2020-06-13 00:00 ArnoldLu 阅读(1624) 评论(0) 推荐(0)

2020年6月8日

OverlayFS初识以及使用

摘要: 关键词:OverlayFS、Whiteout等等。 测试环境:Linux al-B250-HD3 4.15.0-99-generic #100~16.04.1-Ubuntu SMP Wed Apr 22 23:56:30 UTC 2020 x86_64 x86_64 x86_64 GNU/Linux 阅读全文

posted @ 2020-06-08 14:53 ArnoldLu 阅读(20349) 评论(0) 推荐(1)

2020年5月16日

小工具chmod设置权限解读

摘要: 1. busybox中chmod chmod用于改变文件模式。 1.1 chmod模式解读 int FAST_FUNC bb_parse_mode(const char *s, unsigned current_mode) { static const mode_t who_mask[] = { S 阅读全文

posted @ 2020-05-16 00:00 ArnoldLu 阅读(1133) 评论(0) 推荐(0)

2020年4月30日

《Linux/UNIX系统编程手册》第49章 内存映射

摘要: 关键词:mmap()、munmap()、msync()、SIGSEGV、SIGBUS、MAP_NORESERVE、MAP_FIXED、mremap()、remap_file_pages()等等。 1. 概述 mmap()系统调用在调用进程的虚拟地址空间中创建一个新内存映射。映射分为两种: 文件映射: 阅读全文

posted @ 2020-04-30 00:00 ArnoldLu 阅读(1101) 评论(0) 推荐(0)

2020年3月22日

《Linux/UNIX系统编程手册》第7章 内存分配

摘要: 关键词:program break、brk()、sbrk()、malloc()、free()、cmalloc()、realloc()、alloca()、mallopt()、mallinfo()。 1. 在堆上分配内存 所谓堆是一段长度可变的连续虚拟内存,始于进程的未初始化数据段末尾,随着内存的分配和 阅读全文

posted @ 2020-03-22 00:00 ArnoldLu 阅读(1299) 评论(0) 推荐(0)

2020年3月15日

《Linux/UNIX系统编程手册》第52章 POSIX消息队列

摘要: 关键词:O_CREAT/O_EXCL、O_NONBLOCK、mq_maxmsg、mq_msgsize、SIGEV_SIGNAL、SIGEV_THREAD等等。 POSIX消息队列允许进程之间以消息的形式交换数据。POSIX消息队列和System V消息队列相似之处在于数据的交换单位都是整个消息。 差 阅读全文

posted @ 2020-03-15 00:00 ArnoldLu 阅读(2260) 评论(0) 推荐(0)

Stopped (tty output)异常分析和解决

摘要: 关键词:SIGTTOU、tty、nohup等。 设计了一个进程,这个可以通过popen()启动其他进程。并且此进程处于后台运行。 在调用比如top的过程中出现Stopped (tty output)异常。 1. 简单分析 从接收到的异常字符,可以判断出应该是收到信号SIGTTOU导致了进程停止。 t 阅读全文

posted @ 2020-03-15 00:00 ArnoldLu 阅读(8514) 评论(1) 推荐(0)

2020年2月6日

《Linux/UNIX系统编程手册》第37章 DAEMON

摘要: 关键词:daemon、fork、setsid、umask、chdir、syslog等等。 本章主要包括两个方面:daemon进程特征以及如何创建一个daemon进程;如何使用syslog工具记录消息。 1. 创建daemon以及注意点 1.1 daemon进程特征 生命周期很长,在系统启动时候被创建 阅读全文

posted @ 2020-02-06 00:00 ArnoldLu 阅读(590) 评论(0) 推荐(0)

2020年2月2日

GCC编译选项Sanitier问题定位记录

摘要: 关键词:Address sanitizer、Use after free、Heap buffer overflow、Stack buffer overflow、Memory leak等等。 操作系统:Ubuntu 16.04;g++ (Ubuntu 4.8.5-4ubuntu2) 4.8.5;cla 阅读全文

posted @ 2020-02-02 00:00 ArnoldLu 阅读(6354) 评论(0) 推荐(2)

2020年1月12日

/proc/<pid>/status简要分析

摘要: 关键词:status、virtual memory、signal、capability、context switch等等。 每个进程/线程都有自己私有状态,在/proc/<pid>status中体现。 了解status中每项的含义,有助于问题定位时发现问题。 下面结合status在内中函数proc_ 阅读全文

posted @ 2020-01-12 00:00 ArnoldLu 阅读(14404) 评论(0) 推荐(1)

2020年1月9日

ulimit功能以及如何在内核中生效

摘要: 关键词:ulimit、getrlimit、setrlimit、RLIMIT_CPU、RLIMIT_CORE等等。 内核资源限制通过ulimit进行读取和设置;ulimit进行资源设置之后,简单分析内核中是如何对系统行为进行限制的。 1. 了解ulimit(busybox) 以busybox中的uli 阅读全文

posted @ 2020-01-09 00:00 ArnoldLu 阅读(4146) 评论(0) 推荐(0)

2020年1月7日

一个std::thread()线程创建失败问题分析过程

摘要: 关键词:std::thread()、pthread_create()、mmap()、ENOMEM、EAGAIN、TASK_UNMAPPED_BASE、TASK_SIZE等等。 本文描述一个进程出现Resource temporarily unavailable,然后逐步定位到std::thread( 阅读全文

posted @ 2020-01-07 00:00 ArnoldLu 阅读(7211) 评论(0) 推荐(0)

2019年12月31日

应用异常定位:通过记录maps更加准确定位问题点

摘要: 关键词:coredump、maps、objdump、gdb等等。 最近遇到一个应用异常问题定位(Floating point exception/SIGFPE),说明是一个算术运算异常。 这种问题通常也比较简单:通过ulimit -c打开coredump;SIGFPE会触发coredump;然后gd 阅读全文

posted @ 2019-12-31 00:00 ArnoldLu 阅读(1548) 评论(0) 推荐(0)

2019年12月28日

一个100%CPU占用率,但是线程名混乱和top不准问题定位过程

摘要: 关键词:task_newtask、task_rename、process tree、top等。 有一个场景CPU占用率100%,同时进程下创建了一大堆线程,很多线程同样的名称。 而且存在一个情况,top查看所有进程占用率要远小于100%。 这里有两个问题,一是线程同名问题,由于程序设计之初没有考虑线 阅读全文

posted @ 2019-12-28 00:00 ArnoldLu 阅读(2836) 评论(0) 推荐(0)

2019年12月15日

一个线程内存泄漏问题定位过程

摘要: 关键词:meminfo、slabinfo、top、pthread_join、thread stack等等。 记录一个关于线程内存泄漏问题的定位过程,以及过程中的收获。 1. 初步定位 是否存在内存泄漏:想到内存泄漏,首先查看/proc/meminfo,通过/proc/meminfo可以看出总体内存在 阅读全文

posted @ 2019-12-15 00:00 ArnoldLu 阅读(4976) 评论(0) 推荐(0)

2019年11月30日

Linux安装包生成工具:checkinstall、makeself

摘要: 关键词:checkinstall、dpkg、deb/rpm、makeself等等。 checkinstall记录make install安装的文件,生成相应的(Slackware/RPM/Debian)安装包;安装后加入系统包数据库中,方便从系统中移除以及发布。 checkinstall从源码编译, 阅读全文

posted @ 2019-11-30 00:00 ArnoldLu 阅读(4356) 评论(0) 推荐(0)

2019年10月15日

一个EMFILE问题定位:lsof、ulimit的应用,以及简单分析

摘要: 关键词:errno、EMFILE、ulimit、lsof等等。 背景是在对程序进行压力测试,运行了一段时间之后出现一个复位操作失败。 这个复位操作通过打开一个设备,进行读写操作,已达到控制GPIO输入输出的目的。 1. 初步分析原因 经过初步分析发觉fopen()返回NULL指针,说明fopen() 阅读全文

posted @ 2019-10-15 00:00 ArnoldLu 阅读(1123) 评论(0) 推荐(0)

2019年10月7日

gcc栈溢出保护机制:stack-protector

摘要: 关键词:stack-protector、stack-protector-strong、stack-protector-all等等。 1. gcc栈保护机制stack-protector简介 gcc提供了栈保护机制stack-protector。关于stack-protector包含三个选项,分别是s 阅读全文

posted @ 2019-10-07 00:00 ArnoldLu 阅读(26207) 评论(0) 推荐(1)

2019年10月3日

fstab是什么?被谁用?怎么写?

摘要: 关键词:fstab、mount -a、fsck等等。 1. fstab是干什么的? fstab是file system table的意思,即文件系统表。 它在开机的时候告诉系统挂载哪些分区、挂载点是什么、以什么格式挂载、挂载的选项等等。 然后系统在开机的时候就根据fstab内容,执行挂载操作。在挂载 阅读全文

posted @ 2019-10-03 00:00 ArnoldLu 阅读(11574) 评论(0) 推荐(0)

2019年9月28日

一个驱动导致的内存泄漏问题的分析过程(meminfo->pmap->slabtop->alloc_calls)

摘要: 关键词:sqllite、meminfo、slabinfo、alloc_calls、nand、SUnreclaim等等。 下面记录一个由于驱动导致的内存泄漏问题分析过程。 首先介绍问题背景,在一款嵌入式设备上,新使用sqllite库进行数据库操作,在操作数据(大量读写操作)一段时间之后,发生OOM现象 阅读全文

posted @ 2019-09-28 00:00 ArnoldLu 阅读(7832) 评论(0) 推荐(3)

2019年9月22日

Ubuntu下doxygen+graphviz使用概录

摘要: 关键词:doxygen、Doxyfile、doxywizard、dot、graphviz等等。 使用doxygen从源码注释生成帮助文档或者SDK,输出格式有多种比如htmp、Latex等等。 如果想可视化头文件关系、函数调用关系,可以生成dot格式的布局方式;然后使用graphviz的dot工具生 阅读全文

posted @ 2019-09-22 00:00 ArnoldLu 阅读(5020) 评论(0) 推荐(1)

2019年9月15日

记录Ubuntu下使用docker使用

摘要: 关键词:docker、Dockerfile等等。 这里主要记录Ubuntu下docker使用细节。 首先是如何安装,然后如何创建docker镜像、搭建docker服务器、运行使用docker。 1. docker安装 sudo apt install docker-ce 2. 创建docker镜像 阅读全文

posted @ 2019-09-15 00:00 ArnoldLu 阅读(1230) 评论(0) 推荐(0)

2019年9月8日

hidraw设备简要分析

摘要: 关键词:hid、hidraw、usbhid、hidp等等。 下面首先介绍hidraw设备主要用途,然后简要分析hidraw设备驱动(但是不涉及到相关USB/Bluwtooth驱动),最后分析用户空间接口并实例。 1. hidraw介绍 在内核Documentation/hid/hidraw.txt中 阅读全文

posted @ 2019-09-08 00:00 ArnoldLu 阅读(9992) 评论(0) 推荐(0)

2019年9月7日

一个版本烧录过程中记录:fdisk、mkfs.ext4、make_ext4fs、img2simg、simg2img

摘要: 关键词:dd、fdisk、mkfs.ext4、make_ext4fs、img2simg、simg2img等等。 一个典型的嵌入式系统是由uboot+kernel+rootfs组成的,其中uboot和kernel都是二进制,rootfs存在文件系统。 二进制在烧录的时候比较简单,将二进制数据写入存储设 阅读全文

posted @ 2019-09-07 00:00 ArnoldLu 阅读(5755) 评论(0) 推荐(0)

2019年8月4日

bootrom/spl/uboot/linux逐级加载是如何实现的?

摘要: 关键词:bootrom、spl、uboot、linux、mksheader、sb_header、mkimage、image_header_t等等。 首先看一个典型的bootrom->spl->uboot->linux流程log,主要分为4个部分,中间有3个衔接点。 # Hello DeepEye - 阅读全文

posted @ 2019-08-04 00:00 ArnoldLu 阅读(7760) 评论(1) 推荐(1)

2019年7月28日

Linux uevent分析、用户接收uevent以及mdev分析

摘要: 关键词:uevent、netlink、ADD/REMOVE/CHANGE、uevent_helper、hotplug、usermode helper、mdev、mdev.conf等等。 本文从三方面了解uevent相关内容:内核中uevent如何传送、用户空间如何处理uevent、如何通过mdev实 阅读全文

posted @ 2019-07-28 00:00 ArnoldLu 阅读(14118) 评论(1) 推荐(1)

2019年7月27日

sched_yield()和nanosleep()对进程调度的影响

摘要: 关键词:sched_yield()、nanosleep()等等。 sched_yield()主动放弃CPU执行权,nanosleep()是睡眠一段时间后再唤醒。 1. sched_yield()实现 sched_yield()会主动放弃当前CPU给其他进程使用;但是如果当前CPU上无其他进程等待执行 阅读全文

posted @ 2019-07-27 00:00 ArnoldLu 阅读(6664) 评论(1) 推荐(0)

2019年7月21日

Linux Thermal Framework分析及实施

摘要: 关键词:Zone、Cooling、Governor、Step Wise、Fair Share、trip等等。 Linux Thermal的目的是控制系统运行过程中采样点温度,避免温度过高造成器件损坏,确保芯片长期稳定工作。 整个Thermal框架可以分为四部分: Thermal Driver负责将获 阅读全文

posted @ 2019-07-21 00:00 ArnoldLu 阅读(6734) 评论(1) 推荐(4)

2019年7月14日

向busybox中添加自己的applet

摘要: 关键词:buysbox、applet等。 busybox常用于嵌入式环境,集成中断Linux命令和工具。这些工具简单高效。 下面从如下方面了解: 这些命令是一个软链接到busybox,那么是如何从软连接到busybox再到执行相应的功能的? 如何添加自己的applet命令,进而扩展busybox? 阅读全文

posted @ 2019-07-14 00:00 ArnoldLu 阅读(2457) 评论(0) 推荐(1)

2019年7月12日

coredump配置、产生、分析以及分析示例

摘要: 关键词:coredump、core_pattern、coredump_filter等等。 应用程序在运行过程中由于各种异常或者bug导致退出,在满足一定条件下产生一个core文件。 通常core文件包含了程序运行时内存、寄存器状态、堆栈指针、内存管理信息以及函数调用堆栈信息。 core就是程序当前工 阅读全文

posted @ 2019-07-12 00:00 ArnoldLu 阅读(55325) 评论(1) 推荐(9)

2019年7月11日

《Linux/UNIX系统编程手册》第56章 SOCKET:介绍

摘要: 关键词: socket是一种IPC方法,它允许位于同一主机或使用网络连接起来的不同主机上的程序之间交换数据。 关于Socket及后续章节介绍Socket的用法: 《Linux/UNIX系统编程手册》第56章 SOCKET:介绍 :本章将对socket API进行一个全面地介绍:socket()/bi 阅读全文

posted @ 2019-07-11 00:00 ArnoldLu 阅读(1875) 评论(0) 推荐(0)

2019年7月7日

Linux下新增和使用系统调用

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

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

2019年7月4日

多个git合并,并保留log历史记录

摘要: 面临的需求是:将多个git仓库作为一个单独目录,整合到一个新的git仓库中;并且保留历史记录。 1. 新建一个summary仓库 新建一个summary仓库,用于整合一系列git仓库。 2. 将其它git仓库merge到summary中 至此就将memory仓库的内容merge到了summary仓库 阅读全文

posted @ 2019-07-04 00:00 ArnoldLu 阅读(6170) 评论(0) 推荐(1)

2019年7月2日

简单理解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 阅读(4074) 评论(0) 推荐(1)

2019年6月16日

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

2019年6月10日

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 阅读(13145) 评论(1) 推荐(3)

2019年5月27日

通过JTAG对比内核启动后text/rodata段内容

摘要: 关键词:vmlinux、strip、dump、_text、__end_rodata等等。 在日常的调试中,可能会在某些情况下踩到内核重要的数据,比如代码段或者rodata之类。 这种情况下,需要确认这些数据是否异常。 所谓的异常就是从DDR中读出的数据能否和vmlinux对上。 1. 准备vmlin 阅读全文

posted @ 2019-05-27 00:00 ArnoldLu 阅读(965) 评论(0) 推荐(0)

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

导航