☁️☁️🌞 ☁
☁ ✈ ☁ 🚁
🏬🏨🏫🏢🏤🏥🏦🏪
👬🌲 / 🚶 |🚍 \🌳👫👫
🌳/ 🚘 |🏃 \🌴🐈
🌴 / |🚔 \🌲👯👯
🌲/🚖 | 🚘 \🌳👭
Collections
我的工作流
综合总结
- 如何设计一个成功的指令集架构
- 为什么 QEMU 这么复杂
- 为什么 Linux Kernel 这么复杂
- 为什么 Linux 内核中有如此多 fd
- Linux 内核的本质就是英雄联盟
- Linux 内核的本质就是原神
- 为什么要 kernel bypass
- interrupt, execption , softirq 和 nmi 谁可以打断谁
技术细节
signal
fuse
nfs
ext4
aarch64 sysregs
细节:
- aarch64 ESR.ISS
- aarch64 MPAM
- aarch64 ID_AA64PFR0_EL1
- aarch64 PMMIR
- aarch64 AA64MMFR1
- aarch64 LOREGION
zero copy
memory management
网络虚拟化
文件系统
Dune
裸金属二进制翻译器的设计和实现
我的硬件
虚拟化杂谈
- PCIe 基础
- DMA
- 中断
AI
AI 杂谈
AI 作品集
- Linux 语音输入解决方案
- nvim 翻译插件
- nvim rsync 插件
- threejs-demo
淦,打一把英雄联盟不可能这么难
本人从 2018 年开始研究如何在 Linux 上玩 LOL (手动狗头),一下是技术背景调研:
双系统
- seabios 和 UEFI 的启动分区
- grub
Linux 图形栈
- cirrus-vga
- vga
- virtio-gpu
设备直通
Wine
- wine : 如何实现系统调用虚拟化
-
Proton
- 为什么不来玩 Dota 2?
生活技能
数学
ai
- 为什么 Decoder 使用最后一个位置预测下一个 Token
- GEMM Convolution
- 大模型中的 PyTorch 数学大纲
- Attention Is All You Need
- 从 MLA 理论理解 vLLM 的 prefill context 实现
- Seq2Seq Attention
- softmax 的 max trick
- 投机解码:从接受—拒绝采样到并行验证
应用
基础
有趣的问题
Compiler
糟糕 糟糕 OH MY GOD 我的机器宕机了
- dmesg 的基本使用
- drgn
- crash utility
- pstore
学习
Tools
- My Linux Config
- X86 上阅读 Loongarch 内核
- 使用 3A5000 作为我的主力机
- Fedora 使用记录 2026
- tailscale 使用简单记录
- 如何给 nixpkgs 添加一个新的包
- clash meta 基础
Potpourri
杂谈
固件
iommu
- IOMMU 杂谈
- iommu domain 基本概念
- blk-mq-dma
- swiotlb
- dev->dma_ops
- pasid
- dma coherence
- iommu debugfs
- 架构相关
- 高级话题:
rcu
- doc
- RCU 基本介绍
- RCU 基本使用
- rcu_read_lock_bh
- rcu boost
- context_tracking
- extended quiescent state
- harzard pointer
- preempt rcu
- rcu qs
- rcu nocb
- rcu slab
- srcu
- rcu stall
- task rcu
- kthread && softirq
- rcu wq
- qemu rcu
- tree rcu
杂事
volatile
sanitizer
内核同步 API
- mutex
- percpu rwsem
- percpu
- rcuwait
- refcount
- rt_mutex.md
- rwlock
- R/W semaphore
- Semaphores
- seqlock
- spinlock
- swait
- wait
- waitbit
- ww_mutex
userfaultfd
[ ] memory model
- 扉页
- Front Matter
- 《Shared Memory Consistency Models: A Tutorial》中文总结
- 实验
- memory model litmus 测试
- 高级话题
- memory model
- Linux 内核 Litmus Tests 介绍
[ ] atomic
[ ] 同步设计
[ ] 并行,并发,多核,一致性
- Quiescent consistency,Sequential consistency 和 Linearizability
- wait free,lockfree 和 obstruction free 区分
QEMU 杂记
- QEMU 概述
- qemu 基础
- qemu 中关于 page size 问题总结
- qemu 如何做测试的
- qemu 错误处理
- QEMU 中的 trace 机制
- qtest
- qemu 文档
- qemu slirp
- multi-process qemu
- reset
- 如何给 qemu 配置 cdrom
- qemu channel 机制
- qht 移植
- 杂谈中的杂谈
- QEMU 启动代码
- QEMU 初始化过程分析
启动配置
challenger
bios
- QEMU 中的 seabios : 地址空间
- 如何调试 seabios
- QEMU 中的 seabios : fw_cfg
- QEMU 如何加载 Linux kernel image
- qboot
- seabios
- smbios
block
memory
tcg
- 用户态二进制翻译
- TCG
- QEMU 中的 map 和 set
- mttcg
- record / replay
- QEMU softmmu 访存 helper 整理
- QEMU 的 softmmu 设计
- TCGContext : 如何工作的,如何维护的,作用是什么
- QEMU 二进制翻译基础
migration
- QEMU 热迁移基础
- QEMU 热迁移文档
- aarch64 cpufeature
- migration status 转换
- background-snapshot
- io 后端
- qemu migration capability
- QEMU migration parameter
- postcopy
- stop
- savevm
- CPR
- multifd
- xbzrle
- mapped-ram
- colo
- dirty rate
不同类型的 device 分别处理:
其他话题:
- migration 中一共存在那些 thread
- qemu 中 yank 的含义
- qemu 热插拔和热迁移
- 通过 libvirt 热迁移
- 热迁移中 share memory 会被自动 touch
- PCIDevice::net_failover 与热迁移
线程模型
- AioContext
- qemu 中的 atomic 使用
- Big QEMU Lock
- QEMU 中的锁
- qemu rcu
- FDMonOps
- block/graph-lock.c
- qemu lockcounters
- QEMU Event Loop
- qemu 的 thread pool 的作用
- qemu thread io
- qemu bh
- qemu defer 机制
- qemu nested aio_poll
- glib
- coroutine
qom
perfbook 阅读笔记
- AI 自动总结:
- Introduction
- Hardware and its Habits
- Tools of the Trade
- Counting
- Partitioning and Synchronization Design
- Locking
- Data Ownership
- Deferred Processing
- Data Structures
- Validation
- Formal Verification
- Putting It All Together
- Advanced Synchronization
- Advanced Synchronization: Memory Ordering
- Ease of Use
- Conflicting Visions of the Future
- Looking Forward and Back
- Appendix
- perfbook 阅读思考
- perf book
- perfbook 词汇表
Yet another libvirt
Kernel Contribution
- https://github.com/search?q=repo%3Atorvalds%2Flinux+Xueshi&type=commits
Friends
trace
ebpf
- ebpf 基础
- ebpf demo
- bcc
- bpftime
- cilium 初步尝试
- bpf arena
- ebpf bloom filter
- bpftool
- btf
- ebpf CO:RE
- ebpf 内部实现
- bpf iterators
- libbpf
- STRUCT_OPS
- bpf syscall 的基本观察
- bpftrace
ftrace
- eprobe - Event-based Probe Tracing
- fprobe 机制
- ftrace 实现
- ftrace 输出的格式
- latency-collector
- trace-cmd
- hwlat
- osnoise
perf
杂项
- trace 相关的文档
- kallsyms_lookup_name
- kprobe
- libtraceevent
- mce 的工作原理
- 可观测简单调研
- drmemory
- trace
- pcm
- strace 基本使用
- SystemTap
- trace 传统工具
- 问题调查
- tracepoint
- 用户态程序的 trace
- noinstr code
iouring
- iouring 基础
- io_uring 版本迭代
- iouring 实现分析
- net
- 高级特性
- iouring 对于 signal 的改造
- io wq
- 周边
- 综合分析
- async
Linux 安全
shell
热插拔
block layer
vhost
- vhost
- vhost 重连
- vhost 的 feature 协商
- vhost-user Inflight I/O Tracking 详解
- vhost 协议的定义
- vhost iotlb
- vdpa
- vdpa sim 实验
- vduse
- backend
tty
color/hw/pty/readline/vim/virtio-port-demo/fun/- bmc
- console
- doc
- wsl 的 magic
- 实验
- Linux Device Driver : TTY Drivers
- 2. 架构原理 - TTY 核心设计
- getty
- netconsole
- tty
- putty
- qemu
- uptime 展示的 user 数量
- ssh 的操作会过 tty 机制吗?
- sysrq
- termios
- 如何停止另外的 tmux
- Linux TTY 子系统架构概览
- tty 到底是什么
- 为什么在 systemd 中,需要将日志设置为这个东西
- tty0
kvm
aarch64
- ARM KVM 简述
- debugfs
- 大致分析下
- 基本流程
- aarch64
- arm timer 模拟
- aarch64 kvm_stat 观测
- VGIC : Interrupt Translation Service
- 简单的代码分析
- vhe 和 non-vhe
- arm kvm 虚拟机的 exit reason
kvm features
mmu
- L1 中观测到 kvm_set_pfn_dirty
- async pf
- EXIT_REASON_EPT_VIOLATION vs EXIT_REASON_EPT_MISCONFIG
- ept 格式的定义在哪里呢?
- 分析这个
- 为什么 kvm 需要特殊处理 hugepage
- kvm mmu
- Documentation/virt/kvm/x86/mmu.rst
- kvm_vcpu_arch 中的 5 个 MMU 的含义
- kvm mmu notifier
- kvm track mode
- 为什么需要 arch/x86/kvm/mmu/paging_tmpl.h 来处理各种情况
- PDPTR 是什么?
- kvm rmap
- for_each_shadow_entry
- tdp_mmu
- KVM TLB Flush 机制分析
- tlb flush
- tlb flush 的基本原理
nested
svm
- 其中部分内容分析到
- sev
- lab
- cache regs
- cr0
- debugfs
- x86 emulate
- SGX
- event injection
- exit reason
- FRED
- interrupt window
- KVM
- kvm_device_ops
- kvm lock 机制
- 使用 tracepoint 来跟踪 kvm_check_request
- mmio
- msr
- mtrr
- ple window
- qemu 如何支持 kvm 的
- secure
- kvm selftests
- smm
- tracepoint
- Intel VMCS 字段表
- kvm
sysfs
- sysfs
- sysfs block
- sysfs bus
- sysfs cpu
- sysfs dev
- sysfs fs
- sysfs iommu
- sysfs irq
- sysfs memory
- sysfs module
- sysfs net
- sysfs kobject
- sysfs bus
- proc fs
- sysfs sched
- sysfs scsi
整理中
[ ] nvme
[ ] mq
- bio-based 和 request-based 设备的区别
- storage blk plug 机制
- bio request request_queue 三者的关系
- drivers/md/dm-rq.c
- Multi-Queue Block IO Queueing Mechanism (blk-mq)
- Block Layer IO 请求路径详解 - Bypass 机制全梳理
- Linux Device Driver : Block Drivers
- blk-mq-debugfs.c
- mq 核心结构体
- sbitmap
- deadline scheduler
- scheduler
- shared tags
- tag
- 选项 BLK_WBT
- mq 基础
[ ] cgroup
[ ] vmscan lru
[ ] initramfs
[ ] Rust
[ ] 并发编程
- 工具
- 并发编程中违反直觉的例子
- 并发数据结构
- 并发编程基本生存法则
- Lockless
- 特殊并发问题分析
- 事务内存初识
- 为什么并行编程如此困难
- kernel/sched/membarrier.c syscall
[ ] mm
code/damon/pgtable/slub/userfaultfd/- Idle Page Tracking
- kaslr
- Backing Device
- Buddy System
- CMA
- Memory Compaction
- Copy-On-Write
- Memory Failure
- Page Cache
- Folio
- GFP Flags
- Get User Pages
- High Memory
- HMM
- HugeTLB Bug List
- HugeTLB Filesystem
- HugeTLB
- HugeTLB Surplus Bug
- ioremap 和 resource 机制
- Memory Isolation
- khugepaged
- KSM
- Memory Management Locking
- malloc
- 解释 folio->mapping 的含义
- Memblock
- memfd
- Memory Policy
- Memory Pool
- Page Migration
- copy_from_user
- mlock
vm_area_struct::vm_operations_struct结构体的作用- MMU Notifier
- OOM
- page::private
- Page Reporting
- Page Writeback
- Page Fault
- Page Flags
- Page Owner
- Page Poisoning
- Readahead
- Page Refcount
- Reverse Mapping
- shmem
- kernel stack
- Transparent Huge Pages
- Memory Tiering
- Thread-Local Storage
- tmpfs
- Memory Tracepoints
- Virtio-mem (QEMU)
- Virtio-mem
- Virtio-pmem
- vmalloc
- Sparse Vmemmap
- vmflags
- mm shrinker
- VM Pressure
- Multi-Gen LRU
- Page Reclaim
- mm vmscan
- Watermarks
- Workingset
- z3fold / zbud
- Memory Zones
- numa balancing 工作原理
- NUMA
- RSS
- 内核虚拟机地址空间
- Virtio Balloon Debug
- Virtio Balloon Kernel 实现
- Virtio Balloon QEMU 实现
自动文档索引
以下只包含当前 README 手工区还没有引用的发布文档。
aarch64/acpi/ai/algorithm/asm/aarch64/x86_64/- Nasm
benchmark/gpu-microbench/microbench/- 性能基准测试工具
- 内存带宽
- microbench 简单的测试
- 峰值算力怎么算,FLOP 怎么数
blog/bmbt/chatter/chores/collei/concurrent/atomic/kernel/memory-model/san/- 并行编程实践记录
container/cpp/coroutine/cpp-primer/effctive-cpp/exception/init/lambda/misc/module/move/oop/operator/template/trait/types-cast/vtable/- 用 Clang 和 GCC 观察 C++ 的隐式行为与实现
- cpp RAII
- C++ 资源
- version
cpu/boom/rocket-chip/sys/MCCC/PCA/Quantitative/synthesis/- Instruction-Level Parallelism and it’s Exploitation
- Data-Level Parallelism in Vector, SIMD, and GPU Architectures
- Models of Memory Consistency: An Introduction
- Warehouse-Scale Computers to Exploit Request-Level and Data-Level Parallelis
- Instruction Set Principles
- Review of Memory Hierarchy
- Pipelining: Basic and Intermediate Concepts
- Storage System
- Embedded Systems
- Interconnection Networks
- Survey of Instruction Set Architectures
- Historical Perspective and Reference
- Chapter 2
- plans
SLCA/cs252/fpga/- dram
- gem5
- 问题
- 计划就是,首先理解软件层的指令集的含义,然后再去处理怎么写
- verilator
- 超标量处理器设计 : 姚永斌
- chipyard 环境搭建
- Chisel 学习资源汇总
- hotchip
- MIPS R10000 的设计
- 芯片设计相关资料汇总
- Reorder Buffer (ROB)
- Scala 基础语法学习
- 芯片设计中两个关键设备
- CPU ARCH : 进入到 store buffer 意味着已经 commit 了吗?
- 访存子系统
cxl/games/grub/kernel/api/binder/blk/blktrace/dm/ds/fio/mq/raid/scsi/- Linux block layer 用户态工具
- iostat 的每一项的含义是什么
- hdpara
- fio 使用
- iowait
- smartctl
- bcache
- Blockdev 源码分析
- discard / TRIM
- block layer integrity
- 分析下 disk events
- blk layer lock
- nbd
- null blk
- sata
- Zoned block devices
cgroup/cpuinfo/dts/fpu/fs/code/nfs/sunrpc/
virtual/- acl
- autofs 的作用
- bcachefs
- binfmt_elf.c
- btrfs
- buffer.c
- dax
- VFS 文档
- cp vs mv 替换运行中二进制
- fsfreeze
- fsnotify
- inode
- fs/iomap
- iops
- fs 的 lock 设计
- mount
- 关键源码位置
- 基本 io 流程
- relay fs
- 为什么设计一个文件系统是很难的
- writeback
- attr && xattr
- xfs
- fs 基础
- zfs
- zonefs
gcc/inline-asm-tutorial/- gcc 内联汇编
hotos/iommu/iouring/async/
ipmi/irq/lpc/lsfmmbpf/module/ospm/release/sched/code/- https://lwn.net/Articles/639543/
- balance
- 主要参考资料
- context switch
- sched debugfs
- scheduler 内核文档
- EEVDF 把 SCHED_BATCH 给干没了
- exec
- https://github.com/sched-ext/scx
- fork
- CPU freq
- CONFIG_CFS_BANDWIDTH
- hung task 机制
- idle 子系统
- IRQ_TIME_ACCOUNTING
- cpu isolation
- load avg
- martins3 scheduler
- pelt
- pid
- pid 高级话题
- pidfd
- preempt rt
- preempt
- process 的状态 procstat
- wait syscall
- psi
- ptrace
- rt.c 分析
- sched/stop_task.c
- TIF
- 先把玩一下 sched 中各个 trace 点
- ttwu
- uclamp
- CLONE_THREAD 和 CLONE_VM
security/signal/sriov/swap/time/code/kvmclock/- kvmclock ioctl
- khz
- 常用 backtrace
- 这个问题难道不会影响到虚拟机的热迁移吗?
- 大部分 kvmclock3 的地方
- QEMU/KVM 的 kvmclock 热迁移:保存时间值,在目标重新建立映射
- 问题是,为什么同步 host 的 CLOCK_MONOTONIC_RAW 到 guest 中会导致问题
- x86 KVM 时间相关寄存器
- 基本逻辑
- 从 Linux timekeeping 到 KVM clock:沿着一次读时间理解
- kvmclock 基础
- qemu patch 代码
- 利用 gdb 暂停的确存在本质的不同:
- 为什么不去直接使用 tsc 来解决问题
- 不如直接用 tsc
- hypervisor 的工作
- kvmclock windows
lab/namespace/ntp/others/syscall/tsc/vdso/- time keeping 机制中为什么忽视 85ns 的延迟
- 基本问题
- Clock Event Devices
- Overview
- Linux 内核时间子系统文档汇编
- 更新 jiffies_64 的路径
- soft hard mode
- 还是两个数值
- preemempt timer exit
- 时钟中断可以做 interrupt posting 吗?
- arch/x86/kvm/i8254.c
- 太抽象了
- 网卡模块中
- sched_clock
- struct tick_device
- clocksource watchdog
- 感觉,实际上,arm 也是没问题的
- Documentation/timers/
- tick 模式
- QEMU 中的时钟
- tk_read_base
- soft lockup
- CLOCK_MONOTONIC 和 CLOCK_MONOTONIC_RAW 的区别在于
tutorial/usb/vfio/xdc/- 收集经典 backtrace
- rfkill
- AMBA
- nvlink
- psi
- tilelink
- bus
- CFI in kernel
- 中国 Linux 大会记录
- linux 设备驱动
- 对 swap device 错误注入
- 错误注入
- 记录一些 Linux kernel 中好玩的东西
- futex
- hid
- 基本启动流程
- 总结常用的 kernel cmdline
- 内核学习经验 : 进阶版
- livepatch
- dracut 这个警告有意思
- 杂记
- mknod
- namespace
- notifier
- resource
- rlimit
- rng
- sel4
- 内核屎山评选
- QEMU 屎山评选
- sound
- syscall
- sysv ipc
- 命令缩写
- 为什么 Linux Kernel 的代码质量比 QEMU 更高
kr/kvm/emulate/hyperv/kvm-forum/mini-kvm/- KVM 机制演进与源码阅读索引
- pfncache.c
language/linux/fedora/wecom-notify-bridge/
tlpi/0/1/2/3/4/5/6/- 为 tlpi 的可执行文件添加.out 扩展名
- Makefile
- 有趣的
- ansible 记录
- cuda gdb
- Debugger 的理念,原理和使用
- 阅读 musl 学到的一些东西
- omarchy
- 如何给 OpenEuler 提交打包openeul
- ubuntu 使用的问题合集
math/net/dccp/dccp/
demo/geneve/kernel/ipv4/mac80211/sched/- 网络栈的一些源码分析
misc/pxe/rdma/sfc/skbuff/vxlan-demo/- 9p
- bgp
- bonding
- bridge
- cloudflare
- dhcp
- diag
- DNS
- BlueField-3
- 背景介绍
- geneve
- gro
- 公共的 wifi 意味着什么?
- icmp
- igmp
- ipsec 是什么
- ipvlan
- ipvs
- 网络杂谈
- ipvs
- lldp
- LWT(Light Weight Tunnel)是什么?
- macvlan
- mptcp
- backlog
- neighbour
- 网络基本配置
- 网络问题常见排查思路
- Linux kernel network stack lock
- loopback
- mlx5
- 网络的 namespace
- net-phy
- Network Route
- rpc
- net-sendfile
- network timestamping
- Network tools internals
- linux 网络基础查漏补缺
- 这应该就是 kernel network 的会议吧
- netfilter
- netlink
- nettrace
- nic driver
- 网卡名称
- nmcli 基本使用
- network offload
- ovn
- openvswitch
- 网络性能
- 从这里切入的确不错
- mac 会不断的产生这个日志
- qdisc
- quic
- net: raw socket
- rds
- RxRPC
- unix domain 分析
- sctp
- smart-nic
- snmp
- socat
- https://linux.die.net/man/7/socket
- sockmap
- ssh
- stp
- rpc
- switch
- tc 和 tcp congestion control
- tcp ip syn
- A TCP/IP Tutorial 阅读笔记
- tcptrace 如何使用
- tipc
- tls
- tun tap
- linux 的 tunnel 技术
- unix domain 分析
- quic
- netmap
- level-ip
- veth
- virtio-net
- tracking
- GVE
- wid crash 报告
- wireguard
- xdp
- enum netdev_priv_flags
pci/qemu/rust/too-many-linked-lists/- rust 基础
- Rust 中 Move、Copy、Clone 和 Drop 的关系
- rust gdb 基本使用方法
- Rust 学习记录
- rust 的 smart pointers
- 对比 Rust 和 Cpp
shell/systemd/tools/trace/ebpf/code/libbpf-rs-demo/
- libbpf-tools
gpu/tools/- Linux Trace 技术整理报告
- trace 机制实现
- rtla
uefi/virt/virtio/vmware/windows/code/driver/code/kmdf-hello/
- virtio-win 驱动手动构建与安装记录(BUILD NOTES)
- windows 驱动开发
- Windows 蓝屏 dump 分析
- dotnet 简述
- Windows 内存管理
- mingw
- windows 杂谈
- windows 网络
- windows 性能测试工具
- 如何将 windows 放到虚拟机中
xen/
本站所有文章转发 CSDN 将按侵权追究法律责任,其它情况随意。