- 博客(58)
- 问答 (1)
- 收藏
- 关注
原创 QNX trace_log 分析
📚 学习路径规划🎯 第一阶段:基础认知Trace系统基础事件数据结构时间分析资源使用分析进程/线程分析消息传递分析调度分析中断分析延迟分析 (Latency Analysis)Bash。
2025-09-12 01:01:25
459
原创 devb-ufs-qualcomm 进程
devb-ufs-qualcomm 进程🔤 命名规则分析QNX 的进程命名遵循特定的规则,让我们逐部分分解这个名称:📱 devb - Device Block 前缀含义来源QNX 设备驱动命名约定QNX 中不同类型的设备驱动有固定的前缀:前缀 全称 用途 示例devb- Device Block 块设备驱动 devb-eide, devb-ahcidevc- Device Character 字符设备驱动 devc-ser8250, devc-pty。
2025-09-11 03:42:47
460
原创 QNX TraceLog 事件分析
QNX TraceLog 事件分析这两个连续的事件展示了 QNX 文件系统资源管理器处理消息回复的完整过程。📋 事件详细分析第一个事件:MsgReplyv Enter进程: fsys_resmgr (PID 11) - 文件系统资源管理器时间: 643.974ms事件: MsgReplyv Enter (进入向量化消息回复)rcvid: 0x9002a (接收ID)status: 0x400 (状态码 = 1024)第二个事件:Reply。
2025-09-11 02:26:09
380
原创 QNX TraceLog 线程状态详解
消费者: Ready → Running → Condvar(等待数据) → Running → Ready。客户端: Ready → Running → Send → Reply → Running → Ready。线程2: Ready → Running → Mutex(等待锁) → Running → Ready。服务器: Ready → Running → Receive → Running → Ready。// 线程结束后变为Dead,直到pthread_join()回收资源。
2025-09-11 01:25:06
525
原创 try_to_wake_up 上面时候会被执行
这个函数是内核调度器的一部分,用于唤醒处于睡眠状态的进程或线程,使其进入就绪状态,以便被调度执行。接下来,我需要列举出所有可能调用这个函数的场景,包括用户空间和内核空间的触发条件。此外,用户可能想知道这些触发条件在内核中的具体实现路径,比如哪些函数会最终调用。还需要考虑内核版本的影响,不同版本的内核可能在实现细节上有所不同,但主要触发条件应该是相似的。接下来,我需要为每个场景提供具体的例子和代码路径,说明在什么情况下会触发。最后,总结这些触发场景,帮助用户全面理解。的调用情况,以便分析具体的唤醒原因。
2025-02-21 13:07:27
857
原创 sched_waking和sched_wakeup
首先,我需要回忆Linux内核中任务唤醒的流程。当唤醒一个任务时,内核会经历几个步骤,包括检查任务状态、将任务加入运行队列等。sched_waking和sched_wakeup分别对应这个过程的不同阶段。对于sched_waking,它发生在唤醒过程的早期阶段。具体来说,当调用try_to_wake_up()函数时,内核首先会做一些准备工作,比如检查任务是否可以被唤醒(状态是否为TASK_INTERRUPTIBLE或TASK_UNINTERRUPTIBLE),然后触发sched_waking事件。
2025-02-21 13:02:41
783
原创 perf list PMU 缓存事件
事件标识 事件解释 PMU事件路径 l1d_cache L1数据缓存的访问次数,L1缓存是CPU内部最快的缓存,位于距离CPU核心非常近的位置。 armv8_pmuv3/l1d_cache/ l1d_cache_lmiss_rd 表示从L1数据缓存读取数据时发生缓存未命中的次数。 armv8_pmuv3/l1d_cache_lmiss_rd/ l1d_cache_refill 当L1数据缓存发生未命中并且需要从低一级的缓存或内存中填充数据时所发生的事件次
2024-12-04 15:48:28
823
原创 perf 跟踪cache命中率
最后一级缓存(通常是L3缓存)加载失误的次数是1,807,088,174,占所有LL-cache访问的49.43%。:数据转换旁路缓冲(dTLB)加载失误的次数720,945,078,占所有dTLB缓存访问的1.68%。:一级指令缓存加载失误的次数是2,225,533,791,占所有一级指令缓存访问的7.11%。:一级数据缓存加载失误的次数是1,103,876,046,它占所有一级数据缓存访问的2.66%。:一级数据缓存加载操作的总次数是41,484,519,325。同样,我们可以对比指令缓存命中情况。
2024-11-28 14:54:44
1043
原创 ubuntu启动慢,如何看启动耗时分布
使用这些工具,您可以了解Ubuntu启动慢的原因,并针对特定的服务进行优化或调整。请注意,禁用或优化某些服务可能会影响系统的功能性或稳定性,所以在做出改变之前,请确保了解服务的功能和重要性。这个命令会显示一个由服务组成的链,这些服务相互依赖并直接影响到系统的启动时间。在Ubuntu系统中,如果您想检查启动过程中每个过程的耗时分布,可以使用。这将按照启动耗时从长到短列出所有服务,并显示它们各自启动所需要的时间。: 如果您想了解各个服务启动所需的时间,可以使用。ubuntu启动慢,如何看启动耗时分布。
2024-10-31 11:52:36
947
原创 正则表达式
(\d+),: 最后,匹配一个空格,然后是左尖括号<,再是一个捕获组(\d+)匹配一个或多个数字,后面紧跟着逗号,。[(\d+)]: 再一次匹配左方括号,后面的(\d+)是另一个捕获组,匹配一个或多个数字(0-9)。(\d+.\d+)是一个捕获组,用于匹配形如123.456的数字,其中.匹配点号字符。): 是一个捕获组,圆括号()用于捕获匹配的文本。<(\d+.\d+)%>: 匹配一个尖括号内的百分比数值。<(\d+.\d+)%> <(\d+)," 解释。紧随其后,表示匹配前面的字符零次或多次。
2024-10-24 17:42:10
408
原创 磁盘io测试工具fio
这段输出详细展示了fio工具在指定参数下的随机写性能测试结果,涵盖了IO速率、延迟、CPU使用率、IO深度等统计数据,帮助用户了解其存储设备在执行随机写操作时的性能表现。
2024-09-26 11:47:38
3642
1
原创 中断,异常,系统调用
1. 内中断(异常、例外、陷入):特点:信号源于CPU内部、与当前执行的指令有关种类:陷阱、陷入(trap):有意而为之的异常,如系统调用故障(fault):由错误条件引起的,有可能被故障处理程序修复,如缺页终止(abort):由不可恢复的致命操作导致的结果,如整数除02. 外中断(狭义的中断):特点:信号源于CPU外部、与当前执行的指令无关种类:I/O中断请求、人工干预。
2024-09-24 14:17:15
1641
原创 strace
strace是一个多功能的工具,不仅对开发者和系统管理员在调试和优化程序时非常有用,也适用于安全分析和性能监控。在各种场合中使用strace可以帮助深入理解程序与操作系统之间的交互,为程序的改进和修复提供宝贵的信息。
2024-09-05 22:08:27
602
原创 直接io的优点和缺点,以及使用场景介绍
直接 I/O 是一种强大的 I/O 操作方式,适用于特定的应用场景,能够提高数据一致性并减少内存使用。然而,它也具有更复杂的对齐和管理要求,可能在某些情况下不如缓冲 I/O 稳定。因此,在选择是否使用直接 I/O 时,应根据具体应用场景和需求进行权衡。如果您还有其他问题或者需要更具体的介绍,请随时告诉我!
2024-09-05 14:25:10
723
原创 linux 内核 fs,block, io_uring 三者之间的关系
*文件系统(fs)**是上层,负责文件和数据的组织与管理。**块设备(block)**是下层的物理存储抽象,负责存储媒体的读写。io_uring是一种高效的 I/O 提交机制,能够在用户空间与内核空间之间协调有效的 I/O 操作,提高了传统文件系统对块设备的访问效率。通过这种分层架构,Linux 提供了灵活且强大的存储管理能力,能够高效处理不同类型的 I/O 需求。
2024-09-04 21:47:33
655
原创 linux进程调度(3)Linux 实时调度器(RT scheduler) 95%带宽限制测试
参考链接:https://blog.csdn.net/JiMoKuangXiangQu/article/details/141569481。
2024-09-04 00:42:30
478
原创 eBPF(一)samples/bpf 交叉编译
报错2:缺少libelf.h, 这一步踩了两个坑,1)以为是目标编译依赖libelf,交叉编译了libelf库,还是一样报错,2)调试makefile,发现到这一步时,CC从aarch64-linux-gnu-gcc 变成了宿主机gcc,以为makefile有问题,折腾了许久弄明白,过程中依赖一些宿主机工具,比如bpftool工具,用于从vmlinux中提取btf生成vmlinux.h, CC会切换。2)继续编译,再次报错,缺少LLVM,安装新版本llvm-12,默认会安装llvm-6编译有问题不细究。
2024-08-29 03:26:07
1383
原创 linux进程调度(2) kernel/sched 文件介绍
调度子系统在 Linux 内核中占据了至关重要的地位,负责管理各种 CPU 资源的分配、进程的执行顺序,以及满足不同应用和用户的需求。目录下的文件实现了调度的各个方面,涵盖了从公平调度、实时调度到 CPU 频率和负载管理等多种技术,确保 Linux 系统的高效性和响应性。
2024-08-21 01:52:42
1096
原创 模型训练(3)PyTorch安装
ResNet-18 ,可以方便地加载、使用和修改这个模型,用于训练视频目标检测模型。文件(在 Windows 上是。
2024-08-16 01:01:57
294
原创 模型训练(2)PyTorch 体系结构
主要用于计算机视觉任务,提供常用的图像数据集(如 MNIST、CIFAR-10)、预训练的模型(如 ResNet、VGG)以及数据预处理和增强的功能。等模块则是 PyTorch 的扩展,针对特定领域提供强大的功能。它提供了实现音频数据集的加载、音频转换(如傅立叶变换、梅尔频率倒谱系数等)、常用音频模型(如声纹辨识、语音识别)的工具。: 是 PyTorch 的核心库,负责提供基本的张量(Tensor)计算、线性代数运算、优化器、自动求导等基本功能。是 PyTorch 的核心,负责底层的计算和操作。
2024-08-16 00:27:18
303
原创 模型训练(1) PyTorch深度学习框架
PyTorch 是由 Facebook 的人工智能研究实验室(FAIR)开发的深度学习框架,它于 2016 年发布,有着活跃的社区和大量的用户基础。PyTorch 主要用于深度学习和机器学习的研究和开发工作。PyTorch 是一个灵活且强大的深度学习框架,适用于从研究到生产环境的各种应用。无论是构建新模型、进行实验还是在现有框架上进行微调,PyTorch 都提供了必要的工具和支持,使用户能够高效地进行深度学习的实现和应用。如果您有兴趣深入学习 PyTorch,官方网站和社区资源提供了丰富的信息供您使用。
2024-08-16 00:11:25
990
原创 模型性能优化TVM介绍
TVM 是一个开源的机器学习编译器堆栈,旨在使得能够对深度学习模型进行优化,以便它们能够在各种硬件平台上高效地运行。它由华盛顿大学的 SAMPL (Systems, Accelerated Machine Learning, and Programming Languages) 实验室领导开发,并且得到了多家公司和社区贡献者的支持。
2024-08-15 13:40:34
1268
原创 模型可视化工具Netron介绍
Netron 是一个开源工具,用来可视化和检查深度学习模型的结构。这个工具支持多种机器学习框架生成的模型文件,包括 TensorFlow, Keras, PyTorch, ONNX, CoreML 等等。它的主要作用是帮助研究人员、开发者以及数据科学家更好地理解模型的内部工作原理,以及进行调试和优化。:Netron 可以在 Windows, MacOS, Linux 以及浏览器中运行。:打开模型文件不需要配置环境或安装对应框架。:提供了图形化界面,可以清晰显示网络层次结构和连接。
2024-08-15 13:33:56
2167
原创 Kernel function 核函数示例与解释
通过以上解释,我们可以了解到这个核函数是用来在GPU上并行计算两个浮点数组A和B对应元素相加的结果,并将其存储在数组C中。通过线程,线程块和网格的组合,核函数能够针对大规模数据实现高效的并行处理。
2024-08-09 11:42:49
480
原创 nvcc 编译的cu程序,怎么调试
调试 CUDA 程序有多种方法和工具。从 CUDA 提供的到 GDB,再到高级的性能分析工具如 Nsight,您可以根据需要选择适合自己的工具。合理地利用这些工具可以帮助您更有效地找到和解决问题。
2024-08-09 01:08:16
781
原创 怎么理解cuda stream优先级,如果一个低优先级的stream 的核函数已经开始运行,高优先级的stream 核函数能抢占吗
抢占: 低优先级流正在执行的核函数无法被高优先级流抢占。如果低优先级流已经开始执行,其完成后高优先级流才能开始执行。设计原则: 使用优先级流的好处在于,可以优化任务调度和实现依赖管理,而不是直接进行核函数的抢占。高优先级的流无法影响到正在运行的低优先级流的核函数,直到该核函数完成。因此在设计 CUDA 应用时,需要权衡流的优先级、任务的执行时间以及运行效率。
2024-08-08 23:28:34
763
原创 nsys profile 参数详解
选择哪个度量集取决于你想要收集的数据类型和你的性能分析需求。每个项目和每个性能调优任务可能都需要不同的度量集,因此最好根据特定情况来确定。在某些情况下,可能还需要结合多次分析及不同度量集的结果来得到最全面的性能画像。
2024-08-08 14:36:14
4299
原创 nsight 使用(1) nsys profile --cudabacktrace=
是一个选项参数,可能用于 NVIDIA 的性能分析工具 Nsight Systems。这个工具允许开发者对 CUDA 应用程序进行性能分析,从而帮助优化代码和找出性能瓶颈。选项参数允许用户指定在调用 CUDA API 时是否收集回溯(backtrace)信息。这是一个高级功能,可以帮助确定导致性能问题的具体位置,但它会引入显著的运行时开销,因此需要谨慎使用。
2024-08-08 11:01:58
1190
编译链接 gcc g++
2022-06-07
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅