quick install ShadowsocksR + tcp_bbr

昨天凌晨到今天早上上班前梯子挂了,这里重新搭建一个。 DO 上入了一个$5/M 的 Ubuntu 17.04 x32,下面就是刷脚本的事情。 安装 shadowsocksR,需要注意的事情就是不要选客户端不支持的 obfs,一开始选错了可以在/etc/shadowsocks.json 中修改,保持和客户端兼容。重启在/etc/init.d/shadowsocks restart 1...

Posted on 

Linux kernel tcp overview

一直想找机会梳理一下 kernel 的网络子系统,不如现在开始动手做,在梳理 kernel 前,先回顾一下操作系统提供的网络编程 API。 0x00 用户如何使用想了解一下 Linux 下的 tcp 个人认为 socket API 是肯定要介绍的,自 bsd 4.2 引入到如今已经 30 多年了,核心 api 是非常稳定见如下表格 C/S API 服务器端: socke...

Posted on 

to explore c va arg

之前写 go 语言时候发现 go 语言支持可变长参数,且写法与 c 语言类似,就好奇了 c 语言是如何实现可变长参数的。这里参考了[^this]。 C 语言可变参数通过三个宏(va_start、va_end、va_arg)和一个类型(va_list)实现的, void va_start(va_list ap, paramN);参数:ap: 可变参数列表地址paramN: 确定的参数功能:初...

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 

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 
1234568