0%

本文简要介绍一下mpstat命令的使用,并补充一些CPU中断知识。

阅读全文 »

Linux tracing系统中有3层:front-end, tracing-framework(本文叫tracer)和event-source; 本文聚焦于perf,它属于tracer,类似的还有ftrace, eBPF等。

阅读全文 »

Linux tracing系统中有3层:front-end, tracing-framework(本文叫tracer)和event-source; 本文聚焦于ftrace,它属于tracer,类似的还有perf, eBPF等。

阅读全文 »

Linux tracing中有3层:front-end, tracer(即tracing framework)和event-source. Tracepoint属于event-source,是一种kernel static tracing事件源。本文介绍tracepoint的实现以及使用方式,特别是如何被ftrace使用。

阅读全文 »

详细梳理Basic Paxos算法,试图找出从Paxos到Raft的演进过程。

阅读全文 »

Version代表LevelDB数据库的一个固化状态;VersionEdit代表对Version的修改或编辑操作;VersionSet维护一系列Version。

阅读全文 »

LevelDB中Table是一个比较复杂的结构。Block负责有序kv-pair的存储、查询及迭代;Table利用Block构造上一层的结构,包含Data Block, Index Block, Filter Block等,并管理这些Block之间的关系。本篇记录这些琐碎细节。

阅读全文 »

Linux中用户态程序总是preemptible的,内核使用clock tick中断用户态程序切换到别的线程,不用等待用户态程序主动放弃CPU。但在Kernel Preemption被引入之前,一个线程进入内核态,不放弃CPU也不返回用户态就能一直占用CPU。直到linux 2.6才引入Kernel Preemption。本文的主要目的是介绍Linux的三种Kernel Preemption模式。但介绍Voluntary Preemption的时候,也需要把might_sleep搞清楚。

阅读全文 »