Ftrace简介 Ftrace是Linux进行代码级实践分析最有效的工具之一,比如我们进行一个系统调用,出来的时间过长,我们想知道时间花哪里去了,利用Ftrace就可以追踪到一级级的时间分布。...#include linux/module.h> #include linux/kernel.h> #include linux/init.h> #include linux/version.h...> #include linux/proc_fs.h> #include linux/seq_file.h> #include linux/delay.h> #include linux/uaccess.h.../bin/bash debugfs=/sys/kernel/debug echo nop > $debugfs/tracing/current_tracer echo 0 > $debugfs/tracing.../tracing_on echo $$ > $debugfs/tracing/set_ftrace_pid echo function_graph > $debugfs/tracing/current_tracer
下载安装nerdctl wget https://github.com/containerd/nerdctl/releases/download/v1.7.0/nerdctl-1.7.0-linux-amd64....tar.gz tar -zxvf nerdctl-1.7.0-linux-amd64.tar.gz cp nerdctl /usr/local/bin/ # nerdctl version 3....手工挂载 debugfs mount -t debugfs debugfs /sys/kernel/debug 6.
Ftrace简介 Ftrace是Linux进行代码级实践分析最有效的工具之一,比如我们进行一个系统调用,出来的时间过长,我们想知道时间花哪里去了,利用Ftrace就可以追踪到一级级的时间分布。...Framework 利用 debugfs 系统在 /debugfs 下建立 tracing 目录,并提供了一系列的控制文件。 Ftrace案例 写一个proc模块,包含一个proc的读和写的入口。.../bin/bash debugfs=/sys/kernel/debug echo nop > $debugfs/tracing/current_tracer echo 0 > $debugfs/tracing.../tracing_on echo $$ > $debugfs/tracing/set_ftrace_pid echo function_graph > $debugfs/tracing/current_tracer...#replace test_proc_show by your function name echo test_proc_show > $debugfs/tracing/set_graph_function
调整LCD背光亮度: mount -t debugfs none /sys/kernel/debug; cd /sys/kernel/debug/dispdbg; echo lcd0 > name; echo...echo getbl > command; echo lcd0 > name; echo 1 > start; cat info 参考: 全志显示量产问题快速排查指南.pdf 参考: D1_Tina_Linux_Display..._开发指南.pdf AIC800 有两个LCD,如果液晶接在LCD1上面,那这么调背光(255最亮): mount -t debugfs none /sys/kernel/debug; cd /sys/...dispdbg; echo lcd1 > name; echo setbl > command; echo 255 > param; echo 1 > start 切换HDMI到屏幕0: mount -t debugfs...echo disp0 > name; echo switch1 > command; echo 2 11 > param; echo 1 > start; 切换HDMI到屏幕1: mount -t debugfs
/petalinux-sdimage.wic:2/media/ debugfs 1.44.1 (24-Mar-2018) 1905 40755 (2) 0 0 4096.../petalinux-sdimage.wic:2/media/ debugfs 1.44.1 (24-Mar-2018) 1905 40755 (2) 0 0 4096...hankf@XSZGS4:linux$ wic ls ..../petalinux-sdimage.wic:2/media/ debugfs 1.44.1 (24-Mar-2018) 1905 40755 (2) 0 0 4096.../petalinux-sdimage.wic:2/media/ debugfs 1.44.1 (24-Mar-2018) 1905 40755 (2) 0 0 4096
文件创建的时间(存在大事务的情况下,大事务还在写上一个binlog文件,新的事务已经在写新创建的binlog文件了) 使用mysqlbinlog 可以读取binlog文件中的event,知道文件的创建时间 在Linux...对使用过的文件,这些基本不太可能 2、使用debugfs 获取binlog文件存放根文件目录 grep 'datas' /etc/fstab /dev/mapper/CentOS-datas /datas...ext4 defaults 1 2 得到binlog文件inode号 ls -i mysql-bin.016127 135529232 mysql-bin.016127 得到文件创建时间 debugfs...-R 'stat ' /dev/mapper/centos-datas debugfs 1.42.9 (28-Dec-2013) Inode: 135529232 Type: regular...-R 'stat ' /dev/mapper/centos-root debugfs 1.42.9 (28-Dec-2013) /dev/mapper/centos-root: Bad
Linux是作为一个多用户、多任务的操作系统,文件一旦被删除是难以恢复的。尽管删除命令只是在文件节点中作删除标记,并不真正清除文件内容,但是其他用户和一些有写盘动作的进程会很快覆盖这些数据。...可以使用debugfs工具,这是linux系统自带工具,debugfs恢复Ext3的文件系统中被rm、rm -f 掉的文件。...debugfs 1.41.12 (17-May-2010) debugfs: open /dev/sda3 debugfs: ls -d /root/test 8654023 (12) .... (4072) test.file debugfs: logdump -i 8654024 FS block 1006 logged at sequence 404351,...执行完命令后,显示了一屏信息,需要注意的是下面Blocks这一行后面的值(如上信息,需要记住Blocks这一行后面的数字102348) 输入quit,退出debugfs debugfs: quit [
绑定到 Loop 设备(让 Linux 认为它是一个磁盘) losetup /dev/loop0 /root/temp/virtual_disk.img ls -l /dev/loop0 brw-rw...如何查看当前的日志模式 5 1 通过dmesg命令查看Linux系统的内核日志 dmesg | grep "mounted filesystem" EXT4-fs (vda1): mounted...,需要挂载它 sudo mount -t debugfs none /sys/kernel/debug ## debugfs 是 Linux 内核提供的一个专用文件系统,动态创建、无需重新编译内核...验证 ls /sys/kernel/debug/ mount | grep debugfs debugfs on /sys/kernel/debug type debugfs (rw,relatime...Linux kernel Block I/O Layer 三、IO性能优化采用手段 小总 内容太多,需要分多篇来完成
这里我们可以借助debugfs工具来实现: root@7d30fe24da7e:/# /sbin/debugfs -w /dev/guest_hd debugfs 1.45.5 (07-Jan-2020...-w /dev/guest_hd debugfs 1.45.5 (07-Jan-2020) debugfs: cd usr/bin debugfs: write flag.txt flag.txt...-w /dev/guest_hd debugfs 1.45.5 (07-Jan-2020) debugfs: cd usr/bin debugfs: dump flag.txt flag.txt...5.3.0-rc3,而我们测试环境宿主机的内核版本为4.15.0-117-generic: root# uname -a Linux matrix 4.15.0-117-generic #118-Ubuntu...SMP Fri Sep 4 20:02:41 UTC 2020 x86_64 x86_64 x86_64 GNU/Linux 这说明我们的环境搭建成功。
能耗模型的架构图 能耗模型的实现 在linux 中提供了能耗模型的框架。大概分为三部分。 § 最下面的是cpu-hw的实现。...void) { /* Create /sys/kernel/debug/energy_model directory */ rootdir =debugfs_create_dir...sizeof(name), "ps:%lu",ps->frequency); /* Create per-ps directory */ d = debugfs_create_dir...(name, pd); debugfs_create_ulong("frequency", 0444, d,&ps->frequency);...debugfs_create_ulong("power", 0444, d,&ps->power); debugfs_create_ulong("cost", 0444,
Linux内核内存泄漏怎么搞? 1、Kmemleak介绍 在Linux内核开发中,Kmemleak是一种用于检测内核中内存泄漏的工具。...CONFIG_STACKTRACE:记录进程的堆栈信息 2.2 用户空间配置 我们要想使用Kmemleak,需要挂在debugfs,来查看泄露的情况。...进入文件系统后,进行挂载: mount -t debugfs nodev /sys/kernel/debug/ # 挂在debugfs 设置扫描时间: echo scan=10 > /sys/kernel...kmemleak #dump某个地址的内存块信息,比如上面的echo dump=0xffffffc008efd200 > /sys/kernel/debug/kmemleak即可查看详细信息 2.3 通过Linux...启动参数控制开关 Kmemleak的默认开关状态可以通过CONFIG_DEBUG_KMEMLEAK_DEFAULT_OFF 配置来控制,当然也可以通过向Linux内核启动参数中加入kmemleak=off
Linux内核调试技术——kprobe使用与实现(一) 在上一篇文章中介绍了内核加载的方式使用kprobe的方法,现在介绍一下使用debugfs接口使用kprobe的方法。...debugfs下(确切地说,应该是ftrace)提供了一套注册、使能、注销kprobe的接口,可以很方便地操作kprobe。...需要将debugfs文件系统挂在到/sys/kernel/debug/目录下: # mount -t debugfs nodev /sys/kernel/debug/ 此时/sys/kernel/debug
原地蓄势 在Linux中,每个task_struct(对应一个进程,或轻量级进程——线程),会有一个plug的list。什么叫plug呢?...详细的区别不是本文的重点,建议阅读《刘正元:Linux 通用块层之DeadLine IO调度器》从了解deadline的实现开始。.../bin/bash debugfs=/sys/kernel/debug echo nop > $debugfs/tracing/current_tracer echo 0 > $debugfs/tracing.../tracing_on echo `pidof read` > $debugfs/tracing/set_ftrace_pid echo function_graph > $debugfs/tracing.../current_tracer echo vfs_read > $debugfs/tracing/set_graph_function echo 1 > $debugfs/tracing/tracing_on
关于Linux内核月报 Linux阅码场 Linux阅码场内核月报栏目,是汇总当月Linux内核社区最重要的一线开发动态,方便读者们更容易跟踪Linux内核的最前沿发展动向。...本期月报(总第2期)主要贡献人员: 陈玮、张健、廖威雄 (月报的完善和专业,离不开大牛们的持续贡献,欢迎更多大牛加入月报贡献团队) 第一期链接: Linux阅码场 - Linux内核月报(2020年...https://github.com/luxis1999/linux-vsva.git: vsva-linux-5.6-rc6 对应的QEMU补丁系列可以在以下链接找到。...这个补丁为 debugfs 提供了一个额外的保护措施,通过模块参数debugfs来限制 debugfs 的功能。...例如: debugfs=on:所有功能正常使用 debugfs=no-mount:不允许挂载,但debugfs的API可以正常使用 debugfs=off:不允许挂载,且模块注册文件或者目录都会直接返回
本篇介绍 本篇记录下本地搭建QEMU环境,运行linux 仿真环境,这样就可以运行自己编译或修改的内核了。 步骤介绍 安装qemu qemu就是linux 仿真环境,可以直接从官网下载源码进行编译。.../configure --target-list=arm-softmmu,i386-softmmu,x86_64-softmmu,aarch64-linux-user,arm-linux-user,i386...defaults 0 0 tmpfs /tmp tmpfs defaults 0 0 sysfs /sys sysfs defaults 0 0 tmpfs /dev tmpfs defaults 0 0 debugfs.../d debugfs defaults 0 0 创建rcS脚本,让进程启动后自动挂载设备: cd out/_install/etc/init.d vim rcS 写入如下内容: /bin/mount...编译内核 下载linux源码,然后编译,也是arm64: 进去linux 代码根目录: mkdir out # 默认配置 make ARCH=arm64 CROSS_COMPILE=aarch64-linux-gnu
(dwc, root) dwc3_debugfs_create_endpoint_dir // 循环创建输入端点调试文件 debugfs_create_dir...// 创建文件 dwc3_core_init主要的工作是初始化USB控制器硬件,主要流程如下: (1)获取USB控制器IP的版本,便于后续进行不同的配置,USB控制器不同IP版本之间有差别,将Linux...core_init dwc3_readl(dwc->regs, DWC3_GSNPSID) // 获取Global SNPS ID Register中的内容 /* Write Linux...figure out which kernel version a bug was found. */ dwc3_writel(dwc->regs, DWC3_GUID, LINUX_VERSION_CODE...) dwc3_writel(dwc->regs, DWC3_GUID, LINUX_VERSION_CODE) dwc3_soft_reset // 软件复位USB控制器
Linux系统下,block size几乎可以认为等于fragment size。...-R "stat "或# dumpe2fs| grep -i journal可以获取到journal size: # debugfs -R "stat " /dev/loop2 debugfs...inline data Linux v3.8之后,ext4添加了一项feature:inline data。...mount --bind导致的重复计数 直接操作存储设备建立hard link导致的hard link计数异常 debugfs command # debugfs -w -R "link …" ext4...一个使用案例如下: $ insmod diagnose.ko $ echo "vda1" > /proc/ali-linux/diagnose/fs/dump_orphan $ cat /proc/ali-linux
下面给出一种为知道的重现方法: 假设文件系统是/dev/sda2,则可以进行如下操作: debugfs -w /dev/sda2 这时候会进入到debugfs的命令行中,假设坏掉的文件是/dev/sda2...一般的,对linux系统来说,文件的引用计数为0表示文件被删除了。这个时候它占用的inode节点要被回收,被它所在目录要去除改文件的目录项。(不清楚文件存储方法的请自行查阅)。...然后,通过debugfs的修改,我们发现,目录还是有这个文件的目录项,但是由于文件的引用计数是0,文件系统认为改文件已经被删除了,那么就意味着根据目录项的该文件的记录是找不到该文件的,即这个目录项是一个野指针
check_kernel() { uname -r | awk -F. '{ if ($1<5 || ($1==5 && $2<3)) exit 1 }' } mount | grep debugfs...|| sudo mount -t debugfs none /sys/kernel/debug 2.2 典型安装路径 graph TD A[获取可执行文件] --> B{环境类型}...--output-stack --filter-func 'kube_proxy*' \ + --filter-interface eth0 3.2 性能分析模式 # 性能采样命令(需Linux.../pwru --filter-port 80" 七、总结 pwru 是一个强大的 Linux 网络调试工具,利用 eBPF 技术提供对内核网络包处理的深入洞察。
Swap 是 Linux 下的交换分区,类似 Windows 的虚拟内存,当物理内存不足时,系统可把一些内存中不常用到的程序放入 Swap,解决物理内存不足的情况。...dev/vda1 / ext3 noatime,acl,user_xattr 1 1 proc /proc proc defaults 0 0 sysfs /sys sysfs noauto 0 0 debugfs.../sys/kernel/debug debugfs noauto 0 0 devpts /dev/pts devpts mode=0620,gid=5 0 0 /swapfile swap swap