随笔分类 -  Linux系统

GDB-2——GDB调试多线程
摘要:一、简介 前一博文实际上已经介绍了多线程的调试方法,这节专门进行一下总结。 二、调试多线程 1. 使用 gdb 将程序跑起来,然后按 Ctrl + C 将程序中断下来,使用 info threads 命令查看当前进程有多少线程。 2. 使用 thread <线程编号> 可以切换到对应的线程,然后使用 阅读全文

posted @ 2022-11-08 11:46 Hello-World3 阅读(4166) 评论(0) 推荐(1)

GDB-1——GDB初探
摘要:一、GDB简介 在 Linux 编程中,通常使用 gdb 来调试 C/C++ 应用程序。若想调试内核可以使用GTAG(不方便,需要硬件上飞线)或使用Qemu,清华大学相关网址上有介绍Qemu是怎么配置的。 二、给被调试程序加调试信息 1. gcc 编译程序时加上 -g 编译选项以便能晰地看到调试的每 阅读全文

posted @ 2022-11-08 11:42 Hello-World3 阅读(799) 评论(0) 推荐(1)

timerslack 与 sleep()/usleep()
摘要:一、简介 1. timerslack 是 Linux 系统为了降低系统功耗,避免 timer 时间参差不齐,过于的频繁的唤醒 cpu,而设置的一种对齐策略。内核中将相近的定时器到期时间汇聚在一起,这会导致到期时间比定时时间晚一些(但不会提前)。 2. 会被timer slack到期时间影响的函数集有 阅读全文

posted @ 2022-10-19 22:34 Hello-World3 阅读(1202) 评论(0) 推荐(0)

tracer ftrace笔记(10)—— trace内容分析
摘要:基于Linux-5.10 一、trace打印格式 1. 在把 raw trace 数据格式化成用户可读的形式时,trace数据分成两部分:一部分是 common 信息,一部分是用户自定义的 trace 信息,这两部分分开格式化。 common信息: 这部分有系统根据当前是 “Normal forma 阅读全文

posted @ 2022-10-11 16:57 Hello-World3 阅读(1137) 评论(0) 推荐(0)

tracer ftrace笔记(9)—— TRACE_EVENT 初始化
摘要:基于Linux-5.10 一、内核启动时遍历 trace_event_call 初始化流程 1. TRACE_EVENT()多次展开定义了各种实现函数以后,最终把本 event 的所有的函数和数据存放在一个类型为 struct trace_event_call 的顶层变量中,并且会把指针存放到 se 阅读全文

posted @ 2022-10-11 16:22 Hello-World3 阅读(667) 评论(0) 推荐(0)

kptr_restrict 内核文件简介
摘要:一、简介 系统为了保护内核符号地址不被泄露, 而用的一种保护手段, 从而使除 root 用户外的普通用户不能直接查看符号地址。原因在于内核文件 kallsyms.c 中的显示符号地址命令中做了如下限制: seq_printf(m, "%pK %c %s\n", (void *)iter->value 阅读全文

posted @ 2022-07-11 21:28 Hello-World3 阅读(1723) 评论(0) 推荐(0)

Documentation/power/freezing-of-tasks.rst 翻译
摘要:来自:kernel-5.10 冻结任务 (C) 2007 Rafael J. Wysocki <rjw@sisk.pl>,GPL 一、什么是任务冻结? 任务的冻结是一种机制,在休眠或系统范围的挂起(在某些体系结构上)期间,用户空间进程和某些内核线程可以通过该机制进行控制。 二、 它是如何工作的? 为 阅读全文

posted @ 2022-01-08 22:14 Hello-World3 阅读(295) 评论(0) 推荐(0)

VFS虚拟文件系统
摘要:一、VFS简介 Linux 采用 Virtual Filesystem(VFS)的概念,通过内核在物理存储介质上的文件系统和用户之间建立起一个虚拟文件系统的软件抽象层,使得 Linux 能够支持目前绝大多数的文件系统,不论它是 windows、unix 还是其他一些系统的文件系统,都可以挂载在 Li 阅读全文

posted @ 2021-12-08 11:24 Hello-World3 阅读(1428) 评论(0) 推荐(0)

给Linux内核提交代码
摘要:参考: 给Linux内核提交代码: https://wushifublog.com/2020/01/29/%E7%BB%99Linux%E5%86%85%E6%A0%B8%E6%8F%90%E4%BA%A4%E4%BB%A3%E7%A0%81/ 阅读全文

posted @ 2021-12-08 10:37 Hello-World3 阅读(206) 评论(0) 推荐(0)

tracer ftrace笔记(3)——宏展开和hook和注册——lengency
摘要:一、ftrace的宏 1. struct tracepoint 结构 使用 struct tracepoint 变量来描述一个 trace point。 //include/linux/tracepoint-defs.h struct tracepoint { const char *name; / 阅读全文

posted @ 2021-11-07 23:15 Hello-World3 阅读(3757) 评论(0) 推荐(0)

prctl系统调用设置进程名
摘要:1. prctl 系统调用函数 $ man 2 prctl //prctl - operations on a process //#include <sys/prctl.h> int prctl(int option, unsigned long arg2, unsigned long arg3, 阅读全文

posted @ 2021-11-03 22:58 Hello-World3 阅读(1365) 评论(0) 推荐(0)

Cgroup内核文档翻译(8)——/dev/cpuctl/*
摘要:# ls /dev/cpuctl/* /dev/cpuctl/cgroup.clone_children /dev/cpuctl/cgroup.sane_behavior /dev/cpuctl/notify_on_release /dev/cpuctl/tasks /dev/cpuctl/cgro 阅读全文

posted @ 2021-03-01 16:50 Hello-World3 阅读(538) 评论(0) 推荐(0)

Cgroup内核文档翻译(8)——Documentation/cgroup-v1/pids.txt
摘要:Process Number Controller 抽象 进程号控制器用于允许cgroup层次结构在达到一定限制后停止任何新任务被 fork() 或 clone() 。 由于在不达到任何kmemcg限制的情况下达到任务限制很简单,因此PID是基本资源。 因此,必须通过限制cgroup中任务数量的资源 阅读全文

posted @ 2021-01-19 00:48 Hello-World3 阅读(414) 评论(0) 推荐(0)

Cgroup内核文档翻译(6)——Documentation/cgroup-v1/devices.txt
摘要:设备白名单控制器(Device Whitelist Controller) 1.说明: 实现一个cgroup来跟踪并强制执行对设备文件的打开和mknod限制。 设备cgroup将设备访问白名单与每个cgroup相关联。 白名单条目具有4个字段。 'type' 是 a (all), c (char), 阅读全文

posted @ 2021-01-10 23:43 Hello-World3 阅读(603) 评论(0) 推荐(0)

Cgroup内核文档翻译(4)——Documentation/cgroup-v1/cpuacct.txt
摘要:CPU记帐控制器(CPU Accounting Controller) CPU记帐控制器用于使用cgroup对任务进行分组,并计算这些任务组的CPU使用率。CPU记帐控制器支持多层次结构组。 记帐组会累积其所有子组的CPU使用率以及直接存在于该组中的任务。可以通过首先挂载cgroup文件系统来创建记 阅读全文

posted @ 2021-01-08 00:46 Hello-World3 阅读(382) 评论(0) 推荐(0)

Cgroup内核文档翻译(3)——Documentation/cgroup-v1/cgroups.txt
摘要:CGROUPS 由Paul Menage <menage@google.com>根据Documentation/cgroup-v1/cpusets.txt提供 来自cpusets.txt的原始版权声明:部分版权所有(C)2004 BULL SA。部分版权所有(c)2004-2006 Silicon 阅读全文

posted @ 2021-01-04 01:24 Hello-World3 阅读(1333) 评论(0) 推荐(0)

Cgroup内核文档翻译(2)——Documentation/cgroup-v1/blkio-controller.txt
摘要:Block IO Controller 总览 cgroup子系统 "blkio" 实现了块io控制器。 在存储层次结构中的叶节点以及中间节点处似乎都需要各种类型的IO控制策略(如比例BW,最大BW)。 计划是将相同的基于cgroup的管理界面用于blkio控制器,并根据用户选项在后台切换IO策略。 阅读全文

posted @ 2021-01-03 17:46 Hello-World3 阅读(1099) 评论(0) 推荐(0)

Cgroup内核文档翻译(1)——Documentation/cgroup-v1/00-INDEX
摘要:00-INDEX - 这个文件blkio-controller.txt -块IO控制器的说明,实现和使用细节。cgroups.txt -控制组的定义,实现细节,示例和API。cpuacct.txt -CPU记帐控制器; 为任务组的任务记录CPU的使用率。cpusets.txt -对cpusets功能 阅读全文

posted @ 2021-01-03 17:36 Hello-World3 阅读(288) 评论(0) 推荐(0)

tracer ftrace笔记(1)——介绍与使用
摘要:1.Ftrace简介 Ftrace 的设计目标简单,本质上是一种静态代码插装技术,不需要支持某种编程接口让用户自定义 trace 行为。静态代码插装技术更加可靠,不会因为用户的不当使用而导致内核崩溃。 ftrace 的作用是帮助开发人员了解 Linux 内核的运行时行为,以便进行故障调试或性能分析。 阅读全文

posted @ 2020-11-15 20:38 Hello-World3 阅读(2249) 评论(0) 推荐(0)

Cgroup学习笔记1—初探
摘要:一、cgroup学习 1.什么是Cgroup Cgroups 是 control groups 的缩写,是 Linux 内核提供的一种可以限制、记录、隔离进程组(process groups)所使用的物理资源(如:cpu,memory,IO 等等)的机制。最初由 google 的工程师提出,后来被整 阅读全文

posted @ 2020-10-06 22:36 Hello-World3 阅读(2240) 评论(0) 推荐(0)

导航