冰块的博客

日拱一卒 不期而至

async serial port recv data delayed

异步串口收包延迟问题

背景 路由器产品反馈应用程序epoll_wait等着读串口驱动数据出现30ms左右延迟。 业务场景 转报机–(串口码流)–> 路由器 –(UDP/TCP/XXX)–> 路由器 –(串口码流)-> 远端转报机 其实串口驱动收到的码流数据可以在内核态直接从网口转出去,没必要经tty交由上层再打个转。 询问产品,反馈说是历史设计原因,搞得有点复杂,因交付时间原因当下改不动。...

kvm protect guest memory

kvm保护虚拟机内存

简介 per-page memory attributes已经合入主线内核,但是最新qemu还没有利用起来。 heki这个项目没有合入主线内核,但是用到了per-page memory attributes。 刚好可以用来熟悉、了解和调试虚拟化内存页保护。 heki Hypervisor-Enforced Kernel Integrity 基于kvm强化内核完整性 heki 利用 per...

pagecache data corrupted

pagecache页面数据被写坏

简介 产品反馈虚拟机环境,内存配置为8G,升级版本时提示数据校验不过,然后升级失败。 4G内存配置无该问题。host是鲲鹏服务器,kunpeng-920处理器。 同样的虚拟机配置使用其它ubuntu或者centos的系统镜像,虚拟机都没有出现该问题。 定位过程 尝试在虚机设备上升级失败后计算版本文件的MD5值,每次都会变化。 drop_cache之后计算版本文件md5值是正确的,后续计...

spinlock lockup suspected on cpu

一次喂cpld狗触发的死锁

简介 产品反馈系统配置ptp时打印死锁异常,并且每次锁的持有者都不相同。其中一次异常栈如下 这里的锁是cpu 0 的 rq->lock 队列锁。 [ 2269.552599] BUG: spinlock lockup suspected on CPU#1, swapper/1/0 [ 2269.624511] lock: 0xffffffe0fff28500, .magic: dea...

slub calculate order

创建kmem cache时计算page order

简介 slub kmem cache创建过程中需要根据object_size计算分配的page的阶数order。 分配的阶数对性能和其他系统组件会有重要影响。 PAGE_ALLOC_COSTLY_ORDER 是内存分配场合的一个概念, 如果申请的内存 order > PAGE_ALLOC_COSTLY_ORDER时就认为本次分配是昂贵的, order <= PAGE_ALL...

synchronous abort

内存硬件错误触发的系统异常

简介 在arm64架构设备上,遇到过内存硬件问题导致的系统异常,非内核代码问题。 据boot同事说和启动阶段配置内存涉及到内存时序的一个参数有关。 查阅arm cpu手册,根据异常错误码EC区分。 EC, bits [31:26] Exception Class. Indicates the reason for the exception that this register ...

perf introduction

perf原理与应用

简介 与Ftrace相反,Perf的监控范围主要限于单个进程。 因此Perf更适合分析特定程序的行为,比如代码的缓存友好性,或者每个函数中花费的时间。 Perf工具本身是构建在内核的perf_events子系统之上,该子系统实际上实现了跟踪、分析和采样功能。 Perf还可以利用Ftrace的架构来连接到跟踪点,类似于Ftrace和LTTng进行跟踪。 Perf_events内部使用一个...

arm64 FIQ

arm64架构FIQ中断

FIQ简介 FIQ中断的设计旨在提供比普通中断更高的优先级。 在AArch64架构中,中断级别是由中断控制器来管理的。 FIQ通常具有较高的中断级别,以确保它们在系统中的其他中断之前被快速处理。 较高的优先级意味着可以打断普通中断,在系统发生异常发生时深入到异常现场。 系统陷入内核态运行时如果出现关中断死循环的场景,或者关中断后处理时间过长,都可以利用FIQ中断捕捉问题上下文。 当发生F...

sched domain & group

调度域和调度组

简介 Linux内核引入调度域(sched domain)和调度组(sched group)的目的是优化任务调度,以更好地适应多核和多处理器系统的复杂性。 这两个概念提供了一种层次结构,允许操作系统更有效地管理和调度任务,以提高系统的整体性能和响应性。 cpu 拓扑 分三个级别 Package (PKG) Multi-Core Cache (MC) Simultaneou...

CPU Isolation

CPU隔离

简介 cpu隔离是个很有用的特性。目的是最小化指定cpu上的内核活动,这些内核活动可能导致延迟,降低性能。 有些高带宽网络应用或者实时系统,对延迟和性能有特殊要求,必须独占cpu,不能受到任何其它系统活动的干扰。 比如DPDK超高的网络带宽不允许发生丢包或者抖动。 系统活动比如,中断、timer、内核线程(比如workqueues),页面回收等, 这些异步的事件处理对于维护系统正常运行...