
Linux
文章平均质量分 68
Linux系统本身相关的技术回忆
小羊苏C
很懒,需要交流请直接在评论区。你的问题可能别人也会遇到。
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
LinuxPTP在汽车时钟同步网络中的实践
这里列举一些在汽车以太网中使用LinuxPTP的注意点。原创 2023-12-25 20:00:00 · 1355 阅读 · 0 评论 -
Reactor 和 Proactor模式,IO复用与epoll、同步IO,异步IO与协程
Reactor 和 Proactor模式,IO复用与epoll、同步IO,异步IO与协程原创 2023-12-25 19:00:00 · 1520 阅读 · 0 评论 -
使用Gitlab构建简单流水线CI/CD
如何使用Gitlab实现CI/CD原创 2023-10-18 19:30:00 · 3513 阅读 · 0 评论 -
论 SoC上的Linux如何拉动外部I/O
记录如何在SOC/Linux中控制IO。原创 2023-08-07 22:00:00 · 530 阅读 · 0 评论 -
Linux时间体系与LinuxPTP
linux 时钟,以及linuxptp原创 2023-07-28 20:30:00 · 1575 阅读 · 0 评论 -
uprobe 实战
简单的使用uprobe 操作过程记录。原创 2023-02-16 18:17:40 · 996 阅读 · 1 评论 -
Perf使用笔记
softevent有default period 采样的时候是采集到一定的数量报一次(不然报太多了 你看stack有一个给你看就够了)可以通过perf record -vv看具体的。例如: perf record -e Lrdxaxhe-load-misses -c 10000 -ag -- sleep 5。perf probe --add 'tcp_sendmsg size' 加probe同时记录size。-> 使用perf可能会提示安装包含symbols的debug包,多以'--dbgsym'结尾。原创 2023-02-08 19:30:47 · 1049 阅读 · 0 评论 -
USE 方法
100%一般是瓶颈,大于70%可能有问题。2 有的系统资源如disk,占用不可被中断或抢占,也可能排长队。并不是,要注意到利用率表示的是平均情况,可能在某时间内出现超高负载,出现饱和排队。思想: 从提问开始寻找答案, 而不是传统的从指标结果向前寻找。E不是0就值得关注,特别是性能不好,E又持续增长的时候。所有可能被占用,或者争抢的东西。无论软件的还是硬件的。基于硬件功能块画出各块之间的连接图,在总线上标注带宽。所有S都是问题,指标有队长或者排队时间。socket core 等。易于发现数据流方面的瓶颈。原创 2023-02-01 19:02:44 · 456 阅读 · 0 评论 -
chrt与nice
在top里面 RT进程都显示为优先级负数。chrt给的优先级数值越大,优先级越高。-n 后面接一个数值,范围在-20~19。19最谦让 -20最占CPU。原创 2023-01-09 15:34:56 · 661 阅读 · 0 评论 -
宋宝华: 关于Linux进程优先级数字混乱的彻底澄清
普通的讲nice的人相对来说比较简单,我们更关注它的nice值,-20~19之间,nice越低,优先级越高,权重越大,在CFS的红黑树左边的机会大。每次从第0bit开始往后面搜索第一个有进程ready的bit,然后调度这个优先级上面的进程执行,所以在内核里面,Linux进程的调度优先级数字会在好几个地方出现:内核,用户,top命令。对于RT的进程而言,TOP的视角里面的。这说明一点,只有最高优先级的RT进程,才在top里面显示为rt。所以,你会发现,从用户的视角来看,数值变大,优先级变高。转载 2022-12-19 16:23:30 · 528 阅读 · 0 评论 -
透过Tracepoint理解内核 - 调度器框架和性能
因为学习工作需要,转载一下便于学习:原文地址:透过Tracepoint理解内核 - 调度器框架和性能 - 知乎 (zhihu.com)静态tracepoint预埋在内核的关键位置, 通过这些预埋的tracepoint, 可以比较容易梳理出相关模块的框架及主要流程. 相比于直接钻到scheduler的实现细节中去, 我们先通过tracepoint及其相关工具去理解实现背后的逻辑, 细节总是不停变化, 而分析方法往往相对固定, 也更容易沉淀下来.转载 2022-12-19 13:20:23 · 1057 阅读 · 0 评论 -
Crosstool-NG制作GNU工具链
如果是纯纯的应用交叉编译可能还好,如果是和target系统内核之类的相关的工具编译,那可能会太麻烦了。需要引用交叉编译工具链,实现环境和编译上位机的隔离。如果就是针对本机进行编译还好,如果是进行交叉编译,可能还需要带各种各样的参数,提前设好各种路径的环境变量。需要注意的是,configure和Make file都是各个库和工具 的作者自己写的,有一定的规范习惯但是并没有标准,所以每个都不一样!(这条路我最终也放弃了,因为板子里的环境实在是太乱,哪怕我有了C库 头文件和GCC,但是还是会缺少各种其他的库)。原创 2022-11-24 15:12:14 · 765 阅读 · 0 评论 -
阅读芯片手册及硬件原理图的方法
【代码】阅读芯片手册及硬件原理图的方法。原创 2022-11-24 15:10:30 · 2278 阅读 · 0 评论 -
Linux 驱动的一些笔记
SDIO 在SD标准的基础上,定义存储卡以外的外设接口,可用于如wifi 蓝牙 GPS等模块。输入数据项,对CAM中所有数据项比较,输出匹配标志和数据地址。用于数据检索和快速匹配。PCIE是点对点串行传输,每个设备都有自己的专用链接,不用向整个总线请求带宽。eMMC,是NAND FLASH和闪存控制芯片及标志接口封装在一起。SD(Secure Digital) Flash卡 与MMC兼容。SDHC(SD High Capacity)大容量卡 32G。电编程熔丝,一次性编程,对芯片和功能进行配置。原创 2022-11-24 15:08:13 · 458 阅读 · 0 评论 -
How do I build and deploy LTTng to an embedded Linux system?
【代码】How do I build and deploy LTTng to an embedded Linux system?转载 2022-10-27 19:34:56 · 329 阅读 · 0 评论 -
可持续性踩坑的交叉编译 gcc ./configure 环境变量 及其他
现在遇到一个奇葩问题,交叉编译的时候,先编译完的库在自己的/.lib这种隐藏文件夹下。没有install到我的目录,后面自己编译别的库依赖自己。pkg-config设置地址PKG_CONFIG_LIBDIR到产出的/lib/pkgconfig的文件夹下面 屏蔽上位机的文件。防止Makefile里面搞事情,搜到上位机的库引用进来。下面找/usr/lib和/usr/include。不会用到上位机根目录下的库和头文件了。我觉得可能是和gcc 的–sysroot一样。host 后面跟的是交叉编译器的前缀。原创 2022-10-26 19:55:33 · 1583 阅读 · 1 评论 -
源码部署LTTng和需要添加的环境变量
README中提到,使用./scrtpt/build-in.sh来在内核menuconfig中添加LTTng的配置选项。建议的是kernel module随着内核编译安装,然后先装那5个依赖库,然后再ust, 最后tools。在部署的过程中,发现交叉编译可能会在CMAKE cache之类的地方添加绝对地址,这样可以在SDK编译和部署文件系统的时候一起编译和部署LTTng的内核模块。这是因为默认的编译库放在了/usr/local/lib下面。在编译LTTng module的时候。需要添加两个环境变量。原创 2022-09-07 12:01:00 · 316 阅读 · 0 评论 -
使用date修改嵌入式子板时间
【代码】使用date修改嵌入式子板时间。原创 2022-09-02 12:21:21 · 196 阅读 · 0 评论 -
Linux 下 POSIX 风格的共享内存
除了System V风格的进程间通讯外,还有一套POSIX的接口和实现。先查一下文档:背后的实现机制,文档里也说了:这套API的操作实际上就是在/dev/shm下帮你新建了一个文件,然后可能帮你检查了一些环境要求。鉴于/tmp和/dev/shm一样,都是系统自动挂载的tmpfs。那我悟到了,以后要共享数据的时候,直接往/tmp里扔就行了。/tmp和/dev/shm的默认大小都是最大内存的一半,这个有接口可以改。超出之后会触发swap之类的机制,可能因人而异。在实践中,使用POSIX 的接口新建共享内存之原创 2022-06-29 13:34:50 · 603 阅读 · 0 评论 -
使用Linux下的“共享内存“实现一些简单功能
部分概念摘录自《UNIX环境高级编程》多个进程共享同一块存储区域。本机制本身不提供读写保护等同步异步机制。需要搭配信号量、锁等其他机制使用。那如果我写个父子进程、代码执行本身是有先后顺序的,那是不是本身就线程安全了,不需要加同步机制了?实现的原理是,将同一个文件映射到多个进程的地址空间。调用的第一个函数通常是shmget,它获得一个共享存储标识符。返回值:若成功,返回共享存储ID;若出错,返回−1对于key 和 flag。有3种称作XSI IPC的IPC:消息队列、信号量以及共享存储器。他们都是发源于Sy原创 2022-06-28 13:11:24 · 405 阅读 · 0 评论 -
使用Linux下的“信号“实现一些简单功能
部分概念摘录自《UNIX环境高级编程》信号是。信号提供了一种处理异步事件的方法。每个信号都有一个名字,都以3个字符SIG开头。实际上,实现将各信号定义在另一个头文件中,但是该头文件又包括在中。Linux 将信号定义在。**不存在编号为 0 的信号。**kill 函数对信号编号 0 有特殊的应用。POSIX.1将此种信号编号值称为空信号。Linux查看支持的信号:硬件、软件、用户、错误、收发到数据、、、等等各种场景都可能产生信号。在某个信号出现时,有三种处理.........原创 2022-06-24 19:42:53 · 274 阅读 · 0 评论 -
关于 /lib/modules/**内核版本号**/ build 和 /source
最近在编译部署内核模块的时候。Makefile报错:找不到。经过一番搜索,发现: 和 。应该是指向编译内核时的源码工程的软连接。当前内核版本的名称可以通过如下指令获取:对于使用比如Ubuntu的发行版。包管理器里可能包含开发用的源码和头文件包。可以尝试安装:或者类似的指令。如果是嵌入式Linux,自己裁剪的内核。可以将Linux Kernel的开发工程整个复制到嵌入式的文件系统中。然后建立软连接将和指向kernel工程目录。注意:只有源码是不够的,我复制了未被编译过的源码包,被报错找不到好像是这些配置内原创 2022-06-22 13:40:12 · 7749 阅读 · 0 评论 -
Linux 中的硬链接和软链接
Linux 链接分两种,一种被称为硬链接(Hard Link),另一种被称为符号链接(Symbolic Link)。默认情况下,ln 命令产生硬链接。硬连接硬连接指通过索引节点来进行连接。在 Linux 的文件系统中,保存在磁盘分区中的文件不管是什么类型都给它分配一个编号,称为索引节点号(Inode Index)。在 Linux 中,多个文件名指向同一索引节点是存在的。比如:A 是 B 的硬链接(A 和 B 都是文件名),则 A 的目录项中的 inode 节点号与 B 的目录项中的 inode 节点号相同,转载 2022-06-21 12:06:14 · 938 阅读 · 0 评论 -
简述configure、pkg-config、pkg_config_path三者的关系
一、什么是configure 源码安装过程中大多会用到configure这个程序,一般的configure都是一个script,执行时可以传入必要参数告知配置项目。 configure程序它会根据传入的配置项目检查程序编译时所依赖的环境以及对程序编译安装进行配置,最终生成编译所需的Makefile文件供程序Make读入使用进而调用相关编译程式(通常调用编译程序都是gcc)来编译最终的二进制程序。而configure脚本在检查相应依赖环境时(例:所依赖软件的版本、相应库版本等),通常会通过pkg-con转载 2022-06-20 20:44:18 · 837 阅读 · 0 评论 -
【NTP】嵌入式Linux联网同步时钟
我在嵌入式Linux开发板上编译库的时候,报出当前系统时间先于文件创建时间的问题。使用ntp来进行联网获取时间。访问:在download页面下载安装:这样就会有这个指令。可以从阿里云ntp服务器获取。...原创 2022-06-20 16:23:14 · 579 阅读 · 0 评论 -
Linux Socket 通信编程
Socket是网络上通信的端点。可以在Socket里面使用TCP或者UDP协议进行数据传输。毕竟 TCP UDP是传输层协议。我们写的应用当然是应用层。我曾经以为 Socket编程、使用UDP编程等等是不同的一套东西。搜了一下发现、实际上应该都是属于socket编程。。。囧欸参数domain用来指定使用的域,这里的域是指TCP/IP 协议的网络互联层协议。网络互联层常见的有IPv4和IPv6协议。通常使用AF_INET表示IPv4协议,使用AF_INET6 表示IPv6 协议。参数 type 指定了数据原创 2022-06-17 14:59:14 · 220 阅读 · 0 评论 -
[LTTng实操]------开发Babeltrace 2插件
使用声明插件和类的宏 于 C文件末尾示例引用原型BT_PLUGIN_SOURCE_COMPONENT_CLASSAlias of with the parameter set to auto, the parameter set to _name, and the _name parameter set to a string version of _name.参数1:本例中输入 input 但是没加字符串双引号,应该是内部进行了转换。参数2:函数名(也可以说是函数指针,入口地址)。按原创 2022-06-16 14:16:21 · 770 阅读 · 2 评论 -
在C++代码中调用系统指令---system()
我试图使用LTTng-ctl库来控制Trace过程。我几乎快要成功了。但是在对event结果提序列化的过程中出现了错误。我缺少给 之类的字段赋值。被断言发现终止程序。我再次认识到了“有些学习门槛”,这句话的分量。而这些学习门槛对一个面临deadline的人来讲很不友好。或许之后有时间我会去爬源码,然后重构。但是对demo来讲,用在测试环境下。那我就祭出了。当然还有人说可以使用。这无所谓。放弃了性能(这是肯定的 会增加fork和线程同步)和稳定性(在没有完全掌握他的API设计的情况,写出来的东西也真不见得稳原创 2022-06-13 16:09:49 · 562 阅读 · 0 评论 -
[LTTng实操]------编写Linux应用程序控制Trace过程
前略。因为编译要依赖LTTng的库,所以写几行makefile 避免重复敲命令行。启动 session daemon这个参考我之前发文章,有很多中方法添加在开机启动里。目前方便起见,直接手敲了。Note that some Linux distributions could manage the LTTng session daemon as a service. In this case, we suggest that you use the service manager to start, r原创 2022-06-12 21:25:19 · 663 阅读 · 0 评论 -
Linux下程序和脚本自动执行和启动方法汇总
先记录一下机制。Linux 发展到现在,自启动方式也出现了很多种机制。这也会让后来的人困惑。为什么在网上找到的资料和我手里实际上看到的不一样。或者照着操作的没有起效。 is being deprecated.rc.local已经在越来越多的发行版中被废弃。这也是很多人在下到处找不到这个文件的原因。甚至自己新建这个文件也没有用处。因为Linux的初始进程已经基本上从 变成了。如果发行版已经将此机制废弃,网上有教程自己添加systemd的service来支持rc.local。我觉得 还是别了吧。。。如果他存在的原创 2022-06-09 17:44:21 · 1168 阅读 · 0 评论 -
[LTTng实操]------设计一套东西监控某周期运行用户程序的执行时间和周期----架构设计
我花几分钟 画了个很简陋的极不规范的架构图。使用的绘图工具是draw.io 网页版。如图可见,架构设计稳定性可拓展性极差。商用可能性基本没有。不过无所谓,毕竟是自己当作demo。用来练手。参加我之前的博文:链接: [LTTng学习之旅]------在用户程序中简单的添加一个trace点我的目的只是简单的提取时间戳。在trace log中,本身每一条log都是带有时间戳的。并且转换为了日历时间。所以需要思考一下有没有必要添加field。另外,如果直接提取时间戳可行的话,可以考虑使用或者来简化我的工作。原创 2022-06-08 14:33:51 · 411 阅读 · 0 评论 -
[LTTng学习之旅]------Trace 数据提取和格式转换---Babeltrace 2 C 应用程序开发
分为两个方面,需要学习研究下面两个方面:babeltrace2CTF “Common Trace Format”研究发现 CTF也是他们自己搞出来的格式。而且是二进制的数据格式。学习意义不大 感觉、、、babeltrace2是LTTng项目独立出来的一套Trace log 文件处理工具。我研究了一下感觉像是要翻车啊。这一套东西感觉人气不旺啊。在网上连问问题的人都很少。更别说有例子可以参考了。唯一找到一篇中文博客还是骂他API设计的烂的。。。如果想要完成任务可能只有靠自己了。babeltrace2 也是很原创 2022-06-07 16:54:18 · 1852 阅读 · 4 评论 -
[LTTng实操]------设计一套东西监控某周期运行用户程序的执行时间和周期--需求分析和方案设计
需求假设我现在有一个进程,是周期运行,比如10ms执行一次。在运行过程中,可能会有系统调用,比如读写一些文件。或者打印一些log到终端。中间可能会被中断打断,也可能被RT进程抢占。我需要实时将每一次运行的时长和开始执行的时间周期通过网络协议发送到远端的设备上,进行监控和显示。如果我做着做着发现我水平还行的话,可能会加入检测进程被谁打断,在等什么资源这样一些帮助分析问题的信息。下面就对需求进行分类和分级了:必须实现的需求【Req1】获取 服务使用者调用服务,到进入服务处理程序的时间。【Req原创 2022-06-01 12:54:54 · 258 阅读 · 0 评论 -
Linux中进程名的限制 为什么最多就只有15个字符
今天在使用Trace工具尝试追踪中间件的调用过程中,发现。。呃呃,追到一群以前缀为名命名的进程。。瞬间感觉很无语,还以为是自己操作不当。查了一下,发现task struct进程名 buffer其实就是16个字节。那么15字节加截止NULL。妥了。 (可能可以通过配置内核来修改。)原来菜的是供应商。没事名字起那么长纯粹不知道想表达什么。话说回来 一般来讲 进程名称就是可执行文件的名称。有人说名称是int main(int argc, char* argv[])里面的第一个 argv。。搬运一下stackf原创 2022-05-31 20:37:41 · 1065 阅读 · 0 评论 -
pkg-config 查找库和用于编译
今天在看LTTng 文档的时候看到这个指令。gcc -o notif-app notif-app.c $(pkg-config --cflags --libs lttng-ctl)查了一下 pkg-config是一个linux下的命令,用于获得某一个库/模块的所有编译相关的信息。pkg-config --cflags --libs lttng-ctl执行结果:-I/usr/local/include -L/usr/local/lib -llttng-ctl那以后编译程序连接很多安装的库和接口的原创 2022-05-30 22:52:23 · 501 阅读 · 0 评论 -
[LTTng学习之旅]------Trace控制--进阶
文章目录在记录event的时候添加上下文信息在记录event的时候添加上下文信息可以添加的信息举例:The process ID, thread ID, process name, and process priority of the thread from which LTTng emits the event.The hostname of the system on which LTTng emits the event.The Linux kernel and user call sta原创 2022-05-30 22:14:44 · 786 阅读 · 0 评论 -
人类群星网站收集计划--Michael Kerrisk
Michael Kerrisk - man7.orghttps://man7.org/index.html他们整了个man project。这里可以查到很全的手册。需要找手册可以去这找。。。另外他也写了本很牛的书,据说跟 APUE可以媲美 ,甚至比他还厚500页。。。Linux man pages onlineThe links from this page display HTML renderings of the man pages from the Linuxman-pages.原创 2022-05-30 11:45:13 · 173 阅读 · 0 评论 -
[LTTng学习之旅]------Trace控制--初阶
文章目录Start a session daemon管理 recording session列出可用观测点管理 recording event rulestatus of a recording sessionStart and stop a recording sessionClear a recording session建立新的channelStart a session daemon在使用lttng命令行工具之前,需要先有一个session daemon。每一个user,都可以有一个自己的se原创 2022-05-29 20:26:06 · 745 阅读 · 0 评论 -
[LTTng学习之旅]------在用户程序中简单的添加一个trace点
编写 trace provider在头文件中定义tracepoint event.#undef LTTNG_UST_TRACEPOINT_PROVIDER#define LTTNG_UST_TRACEPOINT_PROVIDER provider_my#undef LTTNG_UST_TRACEPOINT_INCLUDE#define LTTNG_UST_TRACEPOINT_INCLUDE "./my_lttng_usr.h"#if !defined(_MY_LTTNG_USR_H) ||原创 2022-05-26 13:54:35 · 805 阅读 · 5 评论 -
[LTTng学习之旅]------Components of LTTng 解构
LTTng是想干大事的,是想玩生态的。可惜十几年了 还是没有被Linux主线合并况且现在eBPF已成燎原之势文章目录Tracing control command-line interfaceTracing control libraryUser space tracing libraryControl and trace data paths between LTTng components.The LTTng project integrates:LTTng-toolsLibrari原创 2022-05-19 14:39:17 · 597 阅读 · 0 评论