- 论坛徽章:
- 0
|
回复 13# Godbach
我以我这2年来的实际工作经验,举几个学习内核来服务上层业务应用的例子吧,没办法一次贴完,可能比较断断续续,各位见谅:
1 公司自主研发的搜索引擎,有很多针对大文件(100G以上)的随机读; 并且现网很多局点都跑在ext3的老系统上,也没法劝说客户升级操作系统。
后来研究发现,ext3的间接块机制使的大文件的随机读速度相对较慢(ext4不存在这个问题),而这个可以在某些特定条件下通过某种预加载机制克服掉。
虽然不具备通用性,但是在某些情况下可以应急。
2 项目中有内存过高,无法释放的问题。研究过Linux的内存管理后,发现可以通过madvsie + MADV_DONTNEED方式将进程占用的内存强行释放
但依然保留其虚拟地址空间。 其实tcmalloc及新版的glibc都可以这么干,但以前真心不知道还可以这么玩。于是知道原理后就坚定了方向,并且大胆采用之。
3 通过proc文件系统的代码,基本上搞明白了里面统计的信息到底是什么意思,这个很有帮助。像mongo使用mmap的具体情况,大量socket下到底占用多少内存?
这些以前不明白的问题都可以得到解答。
4 在对vfs,通用块层,还有IO调度器深入学习之后,找到了一种方法,可以模拟程序的IO行为,这样就可以在不修改程序代码,甚至不需要准备数据的情况下进行IO优化。
还有种种种,但都是很零碎
|
评分
-
查看全部评分
|