冰块的博客

日拱一卒 不期而至

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),页面回收等, 这些异步的事件处理对于维护系统正常运行...

riscv PMP内存保护机制

riscv pmp momery mechanism

PMA 简介 PMA,即Physical Memory Attributes,物理内存属性 完整的系统物理内存映射包含各种地址空间范围: 常规内存区域 MMIO区域 空洞 每个内存区域有自己的访问属性,可能是如下特性的某个集合 支持/不支持 读取、写入或者执行 支持/不支持 子字或者子块访问 支持/不支持 原子操作操作 支持/不支持 缓存一致性 具有...

iommu概述

kernel iommu

本文翻译自 An Introduction to IOMMU Infrastructure in the Linux Kernel 概述 The Input-Output Memory Management Unit (IOMMU) 是内存控制器中的一个硬件组件,用于将设备虚拟地址(也可以称为I/O地址或设备地址)转换为物理地址。 这种硬件辅助的I/O地址转换显著提高了虚拟环境中的系...

riscv mmu 介绍

riscv mmu instroduction

MMU负责将虚拟地址转换为物理地址, 实现虚拟内存的管理。 在SUPERVISOR模式下,所有虚拟内存地址都经历单级地址转换过程,以将其转换为相应的物理地址; 当存在HYPERVISOR时,虚拟地址可以经历两级地址转换过程: 在第一阶段中,客户虚拟地址(GVA)被转换为客户物理地址(GPA), 在第二阶段中,GPA被转换为监管者物理地址。这两个阶段也被称为VS阶段和G阶段的转换。 五级...

riscv plic中断控制器

riscv plic

简介 PLIC(platform-level interrupt controller),平台级中断控制器。 PLIC将各种设备中断复用到Hart上下文的外部中断线上,具有硬件支持的中断优先级。 PLIC支持最多1023个中断(0号中断保留) 和15872个上下文,但实际中断和上下文的数量取决于PLIC的实现。 PLIC规范中声称支持15872个上下文,这个数字是基于对多个中断目标和...