2014中国内核开发者大会资料整理

*主要学习了大会一提涉及的一些陌生或似是而非的概念和技术。

*标红的内容是我觉得给力的东西。

*大会官网:www.ckernel.org

一、帮助内核开发的一些工具

这个话题(Improving Linux Development with better tools )是去年大会,由Andi kleen(long term linux kernel contributor)分享的。跟我做的课题比较相关,就看了ppt(下载地址:http://www.ckernel.org/media/ppt/1-andi-intel.pdf), 简单做了总结。

Andi kleen的主页:http://www.halobates.de/。

一篇综述内核测试和调试的文章:http://www.gzidc.com/article/detail.php?aid=3868。

5篇关于内核测试和调试的连载文章,写的详细专业:http://linux.cn/article-3593-1-rel.html

1. 静态代码检测工具

   这里有个静态代码检测工具列表,当然大都针对用户态程序。http://en.wikipedia.org/wiki/List_of_tools_for_static_code_analysis#C.2FC.2B.2B。

1) Sparse

Linus 发起的,随内核发行;

用于内核代码检测,如检测大端和小端模式是否混用。

参考资料:内核源码documentation/sparse.txt.

参考维基:http://en.wikipedia.org/wiki/Sparse

如何使用:http://wireless.kernel.org/en/developers/Documentation/using-sparse

2) Smatch

Static analysis for C;

Most of checks are for linux kernel;

官网:http://smatch.sourceforge.net/

3) Coccinelle

第一次了解到这类工具,较有新意。

目的:检测内核演进对客户端代码的影响(内核接口的变化);

官网:http://coccinelle.lip6.fr/

4) Clang static analyzer

目的:LLVM(Low Level Virtual Machine)的子项目,静态代码检测工具

支持C,C++,object-c等。

官网:http://clang-analyzer.llvm.org/

5) Checkpatch

检测代码是否符合linux coding-style的脚本程序;

源码目录:scripts/checkpatch;

6) Stanse

静态检测工具,for c99

最近一次更新时间是2011.4,所以。。。

2. 静态代码检测工具的挑战

效率问题:慢

准确性:有误差(False positives)

 

3. 如何修复bug (Study bug fixes)

  补丁有可能也有bug,数据:

“At least 14.8% 24.4% of the sampled bug fixes are incorrect. Moreover, 43% of the incorrect fixes resulted in severe bugs that caused crash, hang, data corruption or security problems.”

   一篇研究该问题的论文:How do fixes become bugs, 链接 http://opera.ucsd.edu/paper/fse11.pdf

4. 大量需要从用户空间向内核空间移植的工具

内核检测工具如kmemcheck特别慢,相比用户态工具性能和功能出色的工具较多, 需要往内核移植,如:

Addresssanitizer: https://code.google.com/p/address-sanitizer/wiki/AddressSanitizerAlgorithm

Threadsanitizer: https://code.google.com/p/data-race-test/wiki/ThreadSanitizer

Valgrind: http://valgrind.org/

UBSan

 

5. 检测工作的挑战

工具集成问题:how to run all these tools on every new patch?

解决办法:为了解决集成测试问题,发起LTP(linux test project)项目。

介绍参考:http://blog.csdn.net/liyongming1982/article/details/13994891

官网:http://linux-test-project.github.io/#

6. 调试工具

   Kgdb

   Wiki:https://kgdb.wiki.kernel.org/index.php/Main_Page

   两台真机调试参考:http://www.xfocus.net/articles/200509/820.html

   Vmware虚拟机调试参考:http://www.eetop.cn/blog/html/21/766721-25573.html

   Ftrace

该工具我做了实验,主要体验了其函数流程图跟踪功能(function graph tracer),挺不错的。这个方便调试和分析。

参考资料:http://www.ibm.com/developerworks/cn/linux/l-cn-ftrace/

 

二、Btrfs文件系统

   Btrfs文件系统被作为下一代文件系统开发,三大目标是容错、修复和基于管理,目前主要feature开发阶段已经完成,但是性能和稳定性还挺差,没有广泛应用开来。

Wiki:  http://zh.wikipedia.org/zh-cn/Btrfs

ext3,ext4,xfs和btrfs文件系统性能对比:

http://www.cnblogs.com/tommyli/p/3201047.html

 

三、 SRIOV & Power

SR-IOV 技术是一种基于硬件的虚拟化解决方案,可提高性能和可伸缩性。SR-IOV 标准允许在虚拟机之间高效共享 PCIe(Peripheral Component Interconnect Express,快速外设组件互连)设备,并且它是在硬件中实现的,可以获得能够与本机性能媲美的 I/O 性能。SR-IOV 规范定义了新的标准,根据该标准,创建的新设备可允许将虚拟机直接连接到 I/O 设备。

Power可以指IBM的power cpu, power服务器,power system解决方案等。

详细介绍资料:http://www.redbooks.ibm.com/abstracts/redp5065.html?Open

 

四、Fastsocket: A Scalable Kernel TCP Socket

这是新浪在做的一个开源项目。

Github:https://github.com/fastos/fastsocket

 

五、Android kernels

首先,大家都应了解Android的架构,然后理解android和linux内核的关系。

Android架构:http://mobile.51cto.com/android-235496.htm

android和linux内核的关系:http://stackoverflow.com/questions/16435581/android-relationship-with-linux

 

六、 Buddy系统中 CMA 的实现和对其问题的改进

Buddy系统(伙伴算法),参考资料:http://blog.csdn.net/li_xiang1102/article/details/6889530

CMA(Contiguous Memory Allocator ),即连续内存分配器。

参考资料:http://www.linuxidc.com/Linux/2012-03/55779.htm

 

七、KVM, qemu, Xen, hypervisor概念的区分

一篇叫《虚拟化与云计算中KVM,Xen,Qemu的区别和联系》,链接:

http://yansu.org/2013/03/20/different-bewteen-kvm-xen-qemu.html

Hypervisor,中文意思是管理程序, 它是一个泛化概念,不与具体虚拟化程序对号入座,泛指处于硬件层与虚拟机之间的资源管理程序。

KVM(Kernel-based Virtual Machine)是集成到Linux内核的Hypervisor,是一个内核模块。

Qemu是一个跨平台、高速的模拟处理器软件,是用户态程序。

Xen是第一类运行再裸机上的虚拟化管理程序(Hypervisor)。

 

八、处理器、内存热插拔

Linux 下的 CPU 和 内存热插拔:http://blog.clanzx.net/2013/11/25/hotplug-cpu-mem.html

 

九、NFV

NFV(Network Functions Virtualization),即网络功能虚拟化。下面资料介绍了什么是NFV:

https://www.sdncentral.com/whats-network-functions-virtualization-nfv/

转载于:https://my.oschina.net/u/2475751/blog/527615

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值