冰块的博客

日拱一卒 不期而至

原子实现

不同架构原子实现

简介 在多核执行环境,原子操作指令对于内存共享内存的并发访问保护至关重要。 也是实现其它高级并发元语的基础。比如semaphore/mutex/spinlock/rwlock等。 高级并发元语锁竞争的公平性,由软件来保证。 Complex Instruction Set Computer(CISC) 复杂指令集架构会提供读-修改-写的指令,保证读写同一块内存时的原子性。 一个显著的例子就是...

完全公平调度

CFS

概念 进程优先级 内核态角度 内核使用[0~139] 这140个数字表示140种优先级 0 ~ 99 实时进程优先级 100 ~ 139 普通进程优先级 用户态角度 nice值是从用户态角度看待普通进程的优先级的一种表示方式,介于[-20 ~ 19] nice + 120 = [100 ~ 139] ,这样可以和内核普通进程的优先级一一对应起来 值越小,优先级越高。 普通进...

Kprobes

内核探针

简介 引入内核版本号v2.6.9 可以将探针插入正在运行的内核,达到调试、跟踪、性能评估,错误注入等目的 在内核绝大多数的位置动态地插入探针而不会给系统带来破坏 工作原理是修改程序二进制文本,利用断点指令替换探测点处的指令 在探测点设置断点,指定一个handler,当断点位置被触发时可以调用指定的handler 探测点其实就是一个内核登记在册的指令地址,内核会跟踪维护所有插入的探测点 在R...

CPU Topology

cpu 拓扑

把系统CPU拓扑搞清楚了,有助于理解 调度域 shed domain 和 负载均衡 load balance FSB Front Side Bus 前端总线 计算机的速度实际上取决于许多因素。这不仅仅是有多少内存或者处理器的速度; 还有一些其他方面,其中之一就是主板的前端总线的速度,就是FSB的速度 由于它通过芯片组连接处理器到存储器和其他外设,它充当主要连接路径,因此也被称为“系统总线...

Virtualization Overview

虚拟化概述

虚拟化架构 虚拟化架构可分为可虚拟化架构和不可虚拟化架构 判断一个架构是否可虚拟化,其核心就在于该架构对敏感指令的支持上。 系统虚拟化又称平台虚拟化。 Intel VT-x 和 敏感指令 Intel VT ,Intel Virtualization Technology,intel虚拟化技术的通用名称 包含VT-x x86处理器,VT-i 安腾处理,以及VT-d 支持I/O虚拟化 (di...

Per-Entity Load Tracking

调度实体负载跟踪

简介 根据调度实体统计的历史负载数据 计算当前系统瞬时负载 v3.8之前的负载统计方式是基于队列的 per cfs-rq, 实际上并不清楚负载究竟来自哪个任务 pelt处理方式,跟踪记录每一个调度实体的负载,运行队列 cfs-rq 负载来源于队列中所有成员的负载总和 好处 跟踪的粒度更小,更精确,调度器可以清晰的掌握每一个任务对系统的负载贡献度 没有增加调度开销,并没有记录保存...

Linux x86 ORC 栈回溯

The Linux x86 ORC Stack Unwinder

本文翻译自 Code Blueprint - The Linux x86 ORC Stack Unwinder 没有人希望他们的Linux机器崩溃。 修复系统错误要求开发人员了解崩溃时计算机瞬时状态信息。 调试时比较关键的线索之一是由内核的堆栈展开器(stack unwinder)生成的函数接口列表。 但是内核的堆栈展开并非始终都是100%可靠的。 Josh Poimboeuf发布...

实时补丁框架

A rough patch for live patching

本文翻译自 A rough patch for live patching 即将推出的4.0内核的一个重要特性是实时修补-可以将补丁应用到正在运行的内核并解决问题,而又不会中断系统的运行。 然而,事实是,为4.0合并的实时补丁支持仅仅是故事的开始; 要在内核中完全支持此功能,还需要做很多工作。 现在看来,这项工作可能比相关的开发人员所希望的花费更长的时间。 确实,一位杰出的开发人员...

wpa/wpa2 四步握手过程

wireless dictionary brutal hacking

缩略词 PTK  Pairwise Transient Key MIC  Message Integrity Check PRF  Pseudo Random Function AA  Authenticator’s MAC Addresses SA  Supplicant’s MAC Addresses Nonce  Number used once KCK ...

内核浮点支持

arm64 arch specific

内核浮点支持 4.4.65 arm64 lxr 概要说明 按运行时空间划分 用户态 内核态 : 系统调用 软中断 硬中断 无论是用户态还是内核态时进行浮点运算,理论上以下场合,浮点寄存器状态(FPSIMD state)都应该保存下来,后续再次执行的时候可以恢复回来 用户态进程或者内核线程切换 被中断/软中断打断 信号处理 内核的实现 为了降...