the issue of netlink hang

我以为我以后用不到 netlink 了呢,今天又踩坑了。 公司的基础架构监控进程的一个线程通过 netlink 去获取内核数据,阻塞 IO 不返回,导致数据丢点。 1234567891011121314151617goroutine 18735 [syscall, 42 minutes]:syscall.Syscall6(0x2d, 0x15, 0xc4206be000, 0x1000, 0...

Posted on 

cfs bandwidth control

之前线上 229 kernel 在使用 cgroup cpu 子系统导致 crash,后又有在 3.10.0-514.26.2.el7 kernel 又出现 crash,让我对这个特性额外的关注了一下。 在分析 cfs bandwidth control 特性之前需要先知道 fair group scheduling 是什么,引用 zhihu[^zhihu]的一个回答。 普通进程的组调度...

Posted on 

cfs per entity load track

0x00 what and why之前公司遇到了一个系统 load avg 异常,一路追杀的过程中学习了 CFS 并发现了 cfs per entity load track 特性,凑巧的是 lwn [^lwn]的文章被阿里内核日报围绕着原来系统有什么问题,如何解决的,达到了什么成果的方法阐述了一遍: 文章首先回顾了一下任务调度器和为什么有了 CPU 利用率还需要衡量“load”。后面的...

Posted on 

a panic of watchdog hard lockup

这个周一早上来工作被告知上周有 4 台物理 crash 了,需要诊断修复, 表象: 123456789101112131415161718192021222324252627282930313233343536373839404142434445 #0 [ffff88103fbc59f0] machine_kexec at ffffffff81059beb #1 [ffff88103fbc5...

Posted on 

a question which about load_avg

写这个这个 post 的原因我们之前的线上主机 (3.10.0-229.el7) 的 load 非常非常诡异高达4294967293.49, 4294967293.43, 4294967259.67,众所周知 Linux 下影响 load 的两个重要指标是running queue 的大小,和 不可中断睡眠。 然后看了一下 ps 没有 D 状态的进程,那么也就是说系统 rq 非常非常大,vm...

Posted on 

linux MM performance test

之前学习内存管理的换页算法与 workload 类型之间关系,其中的性能测试使用了vm-scalability项目,项目的 maintainer 非常耐心解答我关于项目使用的问题。 看项目的名字非常容易理解这个项目是为了解决测试内存管理子系统的拓展性问题的,之前我只是关注了换页算法 LRU 实现: 1234567-rwxr-xr-x case-lru-file-mmap-read 366 l...

Posted on 

linux page replacement

Posted on 

the data struct of slab

slab 分配器是 kernel 主要用来解决内存内碎片问题,还有其它的优势比如加速分配和引入老化机制,最初的设计应该是借鉴了 Solaris 2.4。linux 内部的 slab 最初的实现非常精巧且非常非常久远。 用户态观察 (准确的讲这个文件输出的内容是在 sulb.c 里面实现的,不算是传统意义上的 slab) 123456789cat /proc/slabinfoslabinfo ...

Posted on 

the virtual address of process

之前读 ULKe3 并没有配合最近版本的源码一起食用,导致理解不够深刻。后来又读了一遍 Linux kernel development,感觉虽然成文内容有点老,但是结构非常清晰,但是细节少。于是凭借着对 Linux kernel development 的理解又拿去 ULK 和 kernel 3.10 读了一遍,整理如下。 kernel task_struct 中 struct mm_st...

Posted on 

the organization of linux physical memory

梳理一下 Linux 物理内存的组织,有了这个铺垫可以快速什么页框回收,KSM(kernel samepage merging),cgroup mm 是在内存那个层面玩的,能玩出什么花样,还能玩出什么花样。 现代的 Linux 都是支持 NUMA,它和普通的 SMP 机器区别在于同一个 cpu 访问不同的地址的时间开销可能不一样,所以叫不一致。 12345678910111213141516...

Posted on 
12