[返回] [最新] [最热门] [最高评价]

Cubieboard试用手记

前一阵子买了一块Cubieboard,就是类似RaspberryPi的ARM板子,之所以选Cubieboard而不是RaspberryPi是因为Cubie的配置更高——1Ghz的ARM核(全志A10),1G的DDR内存,4G的NAND,还带一个SATA口(做为一个靠廉价存储混饭吃的loser,我热爱SATA口)。

板子拿到手,跟照片一模一样,Tom Cubie(Cubieboard的设计者)同学
...

DongHao 2012-12-02 14:48 | 查看: 18187

flashcache原理

介绍flashcache的文章很多,我就不废话了。使用上,有余峰老哥的文章;原理上,有ningoo同学的flashcache系列。但是ningoo同学漏掉了device mapper和flashcache的动态原理,只讲了静态的数据结构。我就钻个空子补充一下。

一般来说,我们对磁盘的read和write最后都会走到kernel里的submit_bio函数,也就是把io请求变成一个个的bio(bi
...

DongHao 2012-10-22 11:50 | 查看: 10114

ext4磁盘碎片查看

子团兄最近在测试ext4的bigalloc特性,cluster为256K,放入了16个大文件,每个文件25GB。反馈我说碎片很多,我觉得很奇怪便问是怎么看出来碎片多的,他说是用fsck看的:

#fsck.ext4 -f -y /dev/sdi1
e4fsck 1.42 (29-Nov-2011)
Pass 1: Checking inodes, blocks, and sizes
Pass 2:
...

RobinDong 2013-09-13 15:33 | 查看: 6763

压测Cubieboard

想测一测Cubieboard最多能支撑多少tcp长链接(当然,是比较空闲的链接)。

我的cubieboard上安装的是linaro(其实就是linux),首先得调节单个进程打开的句柄数(修改/etc/security/limit.conf),然后还要修改sysctl里tcp_mem等网络参数(具体配置可以参考这里 1, 2) 然写了一套简单的TCP链接客户端和服务端的代码。Server
...

DongHao 2013-01-28 10:40 | 查看: 6698

Overlayfs 简介

在公司做了一个overlayfs的简介。overlayfs本身的实现比较简单,这主要是由于VFS的高度灵活性,所以重点介绍还是放在VFS上。大家姑妄看之。

overlayfs 的源代码在mszeredi的kernel git tree上:

http://git.kernel.org/?p=linux/kernel/git/mszeredi/vfs.git;a=shortlog;h=refs/h
...

DongHao 2012-06-02 21:33 | 查看: 6519

rpm spec文件里的%postun

写了一个用于rpm打包装包的spec文件,大概如下:

%post
insmod hello.ko

%postun
rmmod hello.ko

%post段​​​​​里是在rpm安装完成后执行​​​​​​​​​​&
...

DongHao 2011-01-20 13:23 | 查看: 5088

cp报错"Text file busy"

有同事问到我:使用cp命令时,如果发现要被覆盖的文件(二进制可执行文件)正在运行,cp会报错,cp命令是怎么知道该文件正在执行的?

我第一个想到的是:可能ioctl可以检查文件。可惜我猜错了,看了一下cp的源码,原来如果一个文件正在运行,另一个进程再open以获得写权限的话,这个open本身就会失败,返回-1,errno为ETXTBSY。
那么cp -f 为什么又可以?因为cp -f会先把目标文
...

DongHao 2011-05-12 17:32 | 查看: 4872

rhel6再次发现jbd2的bug

从上次修复jbd2的bug后到现在,已经四个月了,突然昨天DB的机器又出现了panic,用netoops抓到的信息如下:

居然又栽在jbd2上了,panic的位置和上次一样是

J_ASSERT(journal->j_running_transaction != NULL);

考虑到是运行很长时间的DB机器才出现这个问题,疑点还是落到tid上,由文卿同学找到了现象最符合的upstream的补丁
...

RobinDong 2013-07-17 17:38 | 查看: 4683

linux默认kernel.pid_max值

今早石祤同学发现了一个问题:同样的两台服务器,相同的OS版本、内核版本、CPU型号、CPU核数,只是厂家不同,但是机器启动后sysctl里的kernel.pid_max值,一台是128k,一台是32k。看了一下/etc/sysctl.conf,两台都没在配置文件里做更改,应该是内核自己选定的默认值。那内核到底是怎样选定这个默认值的呢?为何两个厂家的服务器默认值就不同?怎么让它们一致?

看了一下内
...

RobinDong 2014-01-02 15:20 | 查看: 4564

[kernel] linux在多核处理器上的负载均衡原理

【转载请注明出处:http://donghao.org/uii/ 】
【原理】
现在互联网公司使用的都是多CPU(多核)的服务器了,Linux操作系统会自动把任务分配到不同的处理器上,并尽可能的保持负载均衡。那Linux内核是怎么做到让各个CPU的压力均匀的呢?
做一个负载均衡机制,重点在于:
1. 何时检查并调整负载情况?
2. 如何调整负载?
先看第一个问题。
如果让我这样的庸俗程序
...

DongHao 2010-07-20 11:08 | 查看: 4436

ext2/ext3/ext4简介(PPT)

今天下午我的讲座,名字是《Why we need ext4》,其实主要是我上半年学到东西的一个小结

why we need ext4View more presentations from donghao.
...

DongHao 2011-06-28 17:20 | 查看: 4409

怎样用上ext4 bigalloc

有位叫“summer77”的同学发邮件询问我如何使用ext4的bigalloc特性,主要是不方便直接把内核从2.6.28升到3.2去,跨度太大。但是我给他的回信用gmail死活发不出去(summer77同学,是不是你的邮箱有问题呀),我只能在这里做答了。

bigalloc是在3.2版以后的linux kernel才有的,因为公司要用,所以我们backport到了淘宝kernel上——淘宝kern
...

DongHao 2012-10-19 13:22 | 查看: 4043

...更多...