如何将VIM配置成适用C语言的IDE

博客都快长了半年的草,整个换工作的过程也基本确定下来了,在前公司里做内核开发,还有souce insight可用来看代码,自己也就懒得折腾,到新公司后,source insight没得用了,只好把vim拿来配置,记录如下,一般情况下的IDE长什么样子都是类似,最好界面如source insight这般,可以解决类似问题。 左边有类似的函...

Linux下使用原生迅雷下载文件

迅雷本来只有windows版本,对应的linux版本一直都是在wine下实现的,在ubuntu下我是采用crossover实现的,具体如何进行wine迅雷参考链接。但是迅雷终于在路由大潮里面开发了linux软件,生产了xware固件进行路由下载,恰好出了x86_glibc版本,如此,这个固件就能在ubuntu上运行,这个固件只是一个后台程序,依靠网络界面...

Cgroup源码分析1:基本概念与框架

cgroup是LXC的内核实现机制,LXC即是Linux Containers,是一种轻量级的虚拟化方案,它利用cgroup机制在内核代码上实现了进程分组控制和组进程的资源隔离,由于是充分利用了内核现有机制,不像KVM等虚拟机那样实现指令解释等复杂操作,LXC利用效率高,部署速度快,在资源控制隔离等场景应用上更高效。下面主要了解一下LXC...

Linux内核CPU负载均衡机制

还是神奇的进程调度问题引发的,参看Linux进程组调度机制分析,组调度机制是看清楚了,发现在重启过程中,很多内核调用栈阻塞在了double_rq_lock函数上,而double_rq_lock则是load_balance触发的,怀疑当时的核间调度出现了问题,在某个负责场景下产生了多核互锁,后面看了一下CPU负载平衡下的代码实现,写一下总结。 ...

Linux进程组调度机制分析

又碰到一个神奇的进程调度问题,在系统重启过程中,发现系统挂住了,过了30s后才重新复位,真正系统复位的原因是硬件看门狗重启的系统,而非原来正常的reboot流程。硬件狗记录的复位时间,将不喂狗的时间向前推30s分析串口记录日志,当时的日志就打印了一句话:“sched: RT throttling activated”。 从linux-3.0.101-0.7...

KVM源代码分析3:CPU虚拟化

在虚拟机的创建与运行章节里面笼统的介绍了KVM在qemu中的创建和运行,基本的qemu代码流程已经梳理清楚,后续主要写一些硬件虚拟化的原理和代码流程,主要写原理和qemu控制KVM运行的的ioctl接口,后续对内核代码的梳理也从这些接口下手。 QEMU:git://git.qemu.org/qemu.git v2.4.0 KVM:https://git.kernel.org/pu...

KVM源代码分析2:虚拟机的创建与运行

前段时间挖了一个坑,KVM源代码分析1:基本工作原理,准备写一下kvm的代码机制,结果一直没时间填土,现在还一下旧账,争取能温故而知新。 基本原理里面提到kvm虚拟化由用户态程序Qemu和内核态驱动kvm配合完成,qemu负责HOST用户态层面进程管理,IO处理等,KVM负责把qemu的部分指令在硬件上直接实现,从虚拟机的创建和运...

从size-512内存泄露看slab分配

又一次开始土法炼钢了,测试部发现很多环境panic了,从黑匣子看到的信息是OOM了,虽然kill掉了占用比最大的进程,但是监控进程发现后reboot了单板。然后把meminfo收集到的信息,对比发现,slab增长的非常快,发现task_struct占用了很多,通过硬件中断和jprobe挂钩子发现是一个驱动访问所有进程的atomic_t usage,调用get...

journal block device代码分析

进入此门的肯定都对journal block device有一定了解,需要对ext3文件系统有了解,多余的就不赘述。 为什么要设计JBD? 普通数据是存在硬盘上的,文件系统也是作为普通数据存在硬盘上,类似如果碰到突然断电的情况,硬盘就可能损坏,硬件损坏,还是要硬件设计保证,软件设计(JBD)就是解决软件错误,断电可能会导致...

5W2H:技术活动逻辑方法

为什么要写这个文章呢?自己翻看了一下之前写过的文章,最近的时候还有可能记起写作的思路,很早的文章,写的原由都忘光了,而且翻看起来,感觉思路上很散乱,很像高中写散文,形散神也散,闲着就想整理一下写作思路,搞个模板出来,翻到了之前在公司受培训过的5W2H方法,对于写技术文章的思路培养有一定益处,更适用于...