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 

bash common sense issues

今天遇到一个经验上的一个陷阱,蛮有意思的。小伙伴问我为什么 sudo 前后的 pip 位置不一样? 12345678[guohao@localhost ~]$ sudo type pippip is /bin/pip[guohao@localhost ~]$ type pippip is /usr/bin/pip[guohao@localhost ~]$ echo $PATH/usr/loc...

Posted on 

remote internship in flintos

以为自上次离开北京就不会在来北京的工作的,但是事实上北京的工作机会比其他城市多太多。 0x00 再访京城准备入职这次来北京不同于上一次的心境,可能是经历多了一点。 熟悉项目本身花了一周工作日,这时候不得不感叹优秀的项目管理可以帮新人入手节约大量时间,不过因为客观条件限制很多时间在等待编译,这个期间主要看文档和钢之炼金术师,还有和老板聊天。 working-with-flintos 当时...

Posted on 

how to custom kernel on fedora

因为工作需要需要折腾一下,所以在这里备忘一下如何在 fedora 26 上测试 upstream 的代码。 12sudo dnf install fedpkg fedora-packager rpmdevtools ncurses-devel pesign elfutils-libelf-devel git clone git://git.kernel.org/pub/scm/linux/k...

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