- 博客(112)
- 资源 (17)
- 收藏
- 关注
原创 fuse用户态文件系统安装
1 下载FUSEGitHub地址:https://github.com/libfuse/libfuse在FUSE的GitHub页面上下载最新Release版本libfuse 3.8.0 https://github.com/libfuse/libfuse/archive/fuse-3.8.0.tar.gz2 编译安装FUSE2.1 编译准备工作推荐使用Meson和ninja来编译安装FUSE。sudo apt install ninja-buildsudo apt install meson
2020-08-30 00:27:12 2622
原创 bcc工具之funclatency
bcc的这个工具 funclatency主要是为了测量 函数调用的延时的funclatency(8)NAME funclatency - Time functions and print latency as a histogram.OPTIONS pattern Function name or search pattern. Supports "*" wildcards. See EXAMPLES. You can also use -r for reg‐
2020-08-23 20:18:31 724
原创 bcc工具之syscount
在排查linux性能问题的时候我们有时候会发现 整体 CPU使用率 很高,但是绝大多是是在sys 上的,usr上的CPU时间很少,这种就需要看看是内核空间在干什么了,是系统在 系统调用太耗时还是其他原因倒是的sys使用率上升。如果查看 系统调用时间 和 系统调用次数呢bcc为 我们提供了这个工具 syscountsh@ubuntu:/usr/sbin$ sudo syscount-bpfcc Tracing syscalls, printing top 10... Ctrl+C to quit.
2020-08-23 19:59:07 774
原创 bcc工具之execsnoop
我们知道linux中 创建进程的开销,或者说代价是比较大的。原因主要是 进程之间 地址空间不共享,资源也不共享,都需要copy一份(不考虑写时复制机制)而线程之间 共享地址空间,线程间调度的时候地址空间是一样的 tlb cache往往不会大量失效(tlb miss 的代价还是比较大的)在排查一些系统问题时,往往 top 看到的CPU使用率已经到 100%了,但是看 各个进程的 cpu使用率相加 只有30% 这种远低于 100%,这是因为 系统快速创建的进程往往没有被显示出来,top更新频率是 1次/
2020-08-23 19:29:44 1201
原创 perf 工具 安装
安装通过编译安装1. 源码在 kernel/tools/perf/ 目录下2. make install 即可3. perf top 验证一下通过编译安装 vm工具1. 源码在 kernel/tools/vm/ 目录下2. make install 即可3. slabtop 验证即可
2020-08-23 18:19:33 2228
原创 ubuntu 更换内核
想debug一下内核,用/boot 目录下的 vmlinuz 解压到 vmlinux 却一直失败,只好自己动手编译一下内核过程1. 首先下载内核代码2. 将 .config copy过来3. make menuconfig4. make -j85. sudo make modules_install6. sudo make install7. sudo update-initramfs -c -k 5.3.108. sudo update-grub9. sudo vi /etc/defa
2020-08-23 03:26:17 372
原创 kernel做了哪些尝试去 避免内存碎片化
内存碎片化linux内存管理 以page为 单位进行管理,在系统长时间运行之后,造成有大量离散不连续的页面存在,这就是内存碎片化。linux为减少内存碎片化做的努力1. 使用了 buddy 伙伴系统来管理物理内存2. 给每个页面定义了 MOVALBE属性,在内存碎片化压力比较大的时候可以 做内存规整 MOVABLE 内存页面可以移动, RECLAIMABLE 内存页面可以直接进行回收3. 内存迁移 一开始是为了 NUMA 系统中 task 可以完全迁移到 另一个 NUMA 节点中去
2020-08-16 18:44:52 173
原创 记录一次面试
怎么观察系统中 内存回收行为a. 通过 /proc/zoneinfo 文件,可以看到 free、high、low、min pages 关系free > high 时候 一般不开启 kswapd 回收线程high > free > low 时,开启 kswapd 回收线程low > free > min时,alloc_pages 会 直接 进行directly 内存回收b. vmstat 工具在 开启 swap 分区情况下 可以 看到 si so 速率c. 系统还.
2020-08-16 17:46:30 185
原创 kernel crash 问题
分类导致kernel panic 的软件问题。我自己总结大概分为以下几类1. 空指针问题2. soft lockup、hard lockup参考
2020-08-16 16:56:57 1130
原创 crash 工具分析kernel panic
系统产生vmcore 文件分析操作系统crash或hang的原因,需要用到vmcore 和 vmlinux 文件。Linux系统用来捕捉kernel dump的产生 vmcore 工具是kdump。vmlinux 文件是 编译过程中产生的。kdump的原理是启动一个特殊的dump-capture kernel把已经crash的 系统内存里的数据保存到文件里,为什么需要一个特殊的dump-capture kernel呢?因为原来的kernel已经出问题 panic or hung了,无法正常work了。
2020-08-16 15:45:04 627
原创 mm: alloc_pages
前言alloc_pages 是 linux kernel 上 最重要的 内存分配函数了,其实现机制也比较复杂函数原型是#define alloc_pages(gfp_mask, order) \ alloc_pages_node(numa_node_id(), gfp_mask, order)代码流程在 2.6.12 版本中在 2.6.20 版本中在 2.6.20 版本中...
2020-05-25 00:49:10 310
原创 /proc 与 进程相关
本文平台是 x86虚拟云服务器主要分析 /proc/[pid]/下的 节点信息sh@tencent_cloud:/proc/1 $ sudo ls -altotal 0dr-xr-xr-x 9 root root 0 Mar 28 00:38 .dr-xr-xr-x 195 root root 0 Mar 28 00:38 ..dr-xr-xr-x 2 root root 0 ...
2020-04-12 13:03:36 1000
原创 /proc和内存管理 相关的内容
本文平台是 x86虚拟云服务器主要分析以下几个文件节点信息sh@tencent_cloud:/ $ ls /proc/ |grep infobuddyinfo #伙伴系统信息cpuinfo #cpu硬件相关信息meminfo #内存总览信息pagetypeinfo #伙伴系统信息,比buddyinfo更加详细slabinfo #slab分配器当...
2020-04-11 15:34:51 862
原创 qemu+gdb+kernel
gdb-multiarch -tui vmlinuxset architecture aarch64set architecture armtarget remote:1234
2020-03-29 12:22:43 214
原创 linux 系统系统监控命令
工具1.top2.vmstat3.slabtop4./proc/meminfo5./proc/slabinfo6.pmap7.free标题Kernel 提供的方法
2020-03-14 19:30:42 153
原创 libc 常用头文件和函数总结
字符处理 ctype.h 地区化 local.h 数学函数 math.h 信号处理 signal.h 输入输出 stdio.h 实用工具程序 stdlib.h字符串处理 string.hstring.h本分类的函数用于对字符串进行合并、比较等操作字符串拷贝 块拷贝(目的和源存储区不可重叠) memcpy 块拷贝(目的和源存储区可重叠) memmove 串拷贝 strcpy ...
2020-02-18 21:50:51 2299
原创 ANSI C标准库和POSIX库--转载
ANSI CPOSIX库(标准C库除外)ANSI C headersassert.hstddef.hstdbool.hstdint.hstdarg.hstdio.hstdlib.hstring.htime.hmath.herrno.hctype.hwctype.hwchar.huchar.hANSI C<assert.h> Contain...
2020-01-18 23:52:56 357
原创 S5PV210之uboot的start_armboot
前言start_armboot我们一般认为是uboot的第二阶段,这个结算代码执行都是在ddr中的相关数据结构#define DECLARE_GLOBAL_DATA_PTR register volatile gd_t *gd asm ("r8")这个宏用来定义gd_t类型的gd指针,后面的asm (“r8”)代表指定arm里的r8寄存器存储。gd_t里面存储着很多全局变量供整个...
2019-01-11 16:54:45 233
原创 S5PV210之uboot的start.S
前言start.S解析首先是头文件包含#include &lt;config.h&gt;#include &lt;version.h&gt;#if defined(CONFIG_ENABLE_MMU)#include &lt;asm/proc/domain.h&gt;#endif#include &lt;regs.h&gt;#ifnd
2019-01-11 11:14:41 336 2
转载 GNU工具链
Mips GNU工具链简介1 . 总括 本文分三部分来介绍mips的工具链,首先工具链的总括,其次是每个工具链的简介,最后是各工具链的实际应用举例。 我们的项目使用的工具链就如图1所示, 声明,本文所述的内容实乃GNU工具链的九牛之一毛, 日后会陆续更新。 图1工具链简介 下边就以列表的方式,对每一个工具链的...
2019-01-10 20:09:15 985
转载 Uboot命令U_BOOT_CMD分析
其中U_BOOT_CMD命令格式如下:U_BOOT_CMD(name,maxargs,repeatable,command,“usage”,“help”) 各个参数的意义如下: name:命令名,非字符串,但在U_BOOT_CMD中用“#”符号转化为字符串 maxargs:命令的最大参数个数 repeatable:是否自动重复(按Enter键是否会重复执行) comm...
2019-01-09 08:48:52 8917 3
原创 摄影笔记之曝光组合
概述曝光组合指的是在拍摄时,组合设定光圈和快门的值,达到合适的曝光效果。在环境光、感光度一定时,有多种光圈、快门组合来实现同一影调,但是效果不一样,反映了摄影师的创作意图。三种模式一般相机都有强大的手动曝光功能,即AV 、TV 、M,尼康是 A 、 S 、M佳能尼康曝光模式AVA光圈优先TVS快门优先MM手动在此之前就得出影调...
2019-01-04 08:58:53 717
原创 摄影笔记之曝光量
曝光量控制曝光量曝光量感光器在曝光时间内接收到光的多少。曝光量 = 感光元件接收光的速度 * 曝光时间= 环境光的强度 * 光圈大小 * 曝光时间曝光时间就是快门开启的时间,如下图曝光量 = 环境光 * 光圈 * 快门环境光:在不借助反光板和闪光灯的情况下,我们几乎无法改变环境光。光圈:就是光圈大小,光圈越大,曝光量越大快门:就是曝光时间,挡光板收起的时间。快门越大,...
2019-01-02 23:01:01 947
原创 摄影笔记之影调
影调影调的概念影调就是一张照片的明暗程度。高调:明亮的照片,使人感到愉快低调:阴暗的照片,使人感到悲伤中间调:不明不暗的照片作用:影调通过作品的明暗表现给读者以相应得到直接感受来表达摄影师的创作意图。那些本来就高调的景物应该用高调来表现,本来就低调的景物应该使用低调来表现。高调的物体:雪,白衣服等浅色物体低调的物体:黑土地,午夜的天空等深色物体但是大部分摄影师在实际工作中还是使...
2019-01-02 20:11:29 528
原创 freertos之scheduler浅析
前言其实是接上一篇task这篇文章的,上一篇写的有点多。代码分析调度器开启、关闭一般在调度器没有开启之前需要创建一个start_task来创建一系列任务task,然后就是调用vTaskStartScheduler来启动调度器。下面分析具体代码void vTaskStartScheduler( void ){BaseType_t xReturn; /* 创建idle task,使其...
2018-12-29 12:47:40 1091
原创 freertos之task浅析
前言rtos调度的基本单位是task(任务),其重要性不言而喻,一般都会包括任务的创建,删除,阻塞,挂起,回复等等操作。当然,freertos也不例外。一般一个task包含三个基础部分TCB结构、stack结构、任务代码。下面就从这几方面来讲一讲task有关的数据结构...
2018-12-17 00:19:28 6895
原创 HI3518E的sensor驱动
前言sensor主要是采集图像,将光信号转化为电信号的传感器,主要由镜头、sensor、ADC等部件构成。sensor驱动介绍sensor接口主要有并口、LVDS、MIPI接口这三种sensor接口。并口就是一根clk,n根(8/10/12)data线,来传输数据;一般还会带个IIC接口,来读写寄存器和传输控制信号,AR0130、OV9712就是这样的并口接口LVDS是由1组差分clk...
2018-12-16 17:37:57 1866 2
原创 HI3518E的ORTP相关代码浅析
前言之前已经用网盘中的sample_comm_venc.c,编译生成了可以实现功能的代码了,里面添加了一些跟ORTP传输相关的代码,都是用宏的方式添加的,如果想录制保存视频,直接关闭宏就可以。代码分析其实过程跟原来还是一样的,采集图像那一套都是不变的,变得就是原来是将三路码流保存到硬盘里,现在是将h.264码流通过网络根据RTP协议发送出去。在sample_comm_venc.c中添加如下...
2018-12-12 15:09:10 462 1
原创 HI3518E实现ORTP网络传输
前言本文主要是利用RTP协议实现视频服务器,利用网络进行视频数据传输,在windows上VLC软件作为客户端,可以实时预览视频。实际操作ORTP简介ORTP是一个支持RTP以及RFC3550协议的库,有如下的特性:使用C语言编写,可以工作于windows, Linux, 以及 Unix平台实现了RFC3550协议,提供简单易用的API。支持多种配置,RFC3551为默认的配置。支持...
2018-12-11 19:22:40 918
原创 /proc文件浅析
前言/proc是一种虚拟文件系统,也叫进程数据文件系统,其信息不是存储在块设备中的,只有在读取/proc目录下文件的时候才会去动态生成。/proc文件系统可以获得很多进程信息,在调试kernel的过程中很有用。/proc内容/proc文件系统的容量依系统而不同(硬件配置、体系结构)。主要包含以下几大类:系统进程的特征数据内存管理文件系统设备驱动程序系统总线电源管理终端系统...
2018-12-10 20:03:40 2366
原创 freertos之timer浅析
背景freertos的定时器与我所见得到其他RTOS不一样,我知道的ucosii是在每次tick++的时候会检查定时器链表,smc_rtos也是这样做的,rtt没看过源码不清楚,而freertos是将定时器实现为一个prvTimerTask。代码分析freertos是将定时器实现为一个prvTimerTask,一般如果定时n个tick,就会将prvTimerTask阻塞n个tick,但是同时...
2018-12-07 03:27:49 12686
原创 freertos之heap浅析
前言这几天看源码,先看了queue,task东西有点多,还是先以少到多,慢慢来。在freertos中,官方实现了5种方法来分配对内存,没有直接使用malloc 和 free函数,因为线程不安全,换句话说就是在malloc的时候可能被抢占。下面来介绍五个文件实现的堆内存分配和释放的方法。heap1.cheap1.c这是最简单的实现。它不允许在分配内存之后释放内存。尽管这样。heap_1.c适...
2018-11-21 20:58:40 3644
原创 freertos之queue浅析
前言queue队列是freertos实现计数型信号量、互斥型信号量的基础,在freertos中最重要的结构除了TCB 、List,就是Queue了。queue.c浅析
2018-11-20 18:26:59 5970 1
ebpf.zip -- linux 性能巅峰之作
2020-05-17
BC28对接onenet平台的手册
2018-11-06
~/.vimrc配置
2018-09-03
TCP/IP详解卷2
2017-09-24
windows 下python opencv3安装包
2017-09-24
python + opencv 人脸识别代码(可以跨平台运行,linux windows均可以)
2017-09-24
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人