Archive

Author Archive

Linux下异步IO(libaio)的使用以及性能

March 21st, 2011 19 comments

Linux下异步IO是比较新的内核里面才有的,异步io的好处可以参考这里.
但是文章中aio_*系列的调用是glibc提供的,是glibc用线程+阻塞调用来模拟的,性能很差,千万千万不要用。

我们今天要说的是真正的原生的异步IO接口. 由于这几个系统调用glibc没有提供相应的封装,所以libaio来救急了:
Read more…

Systemtap辅助设置tcp_init_cwnd,免对操作系统打Patch

March 21st, 2011 12 comments

前段时间google的工程师提出对tcp的拥塞窗口的初始值进行增大可以显著的提高http的性能,这个主要是针对tcp的slow start的优化.
具体参考这里, 这里. 谢谢叔度同学从美国带回第一手信息!

由于低版本的linux内核的问题,这个参数的正确设置需要对os打patch,这个过程对线上机器来讲非常麻烦。 底下我用systemtap给出了个解决方案,免除这个麻烦. 我们在RHEL 5U4上作这个试验:
Read more…

开源混合存储方案(Flashcache)

March 20th, 2011 2 comments
Categories: Linux, 工具介绍, 调优 Tags:

推介xz高压缩率算法

March 17th, 2011 8 comments

这几天看到Linux内核2.6.38发布的release说明里面提到:

The version .38 kernel comes with a library for decompressing XZ, a format developed from LZMA and known for its high levels of compression. This library is the basis not only for SquashFS, which now also offers XZ, but also for code that allows the kernel to unpack any parts of itself and of the initial ram disks (initrds) that were compressed with XZ.

觉得比较好奇, Linux下有那么多的压缩算法, 为什么要用这个, 它有什么过人之处? 今天深入了解了下xz, 顺便作了简单的benchmark体验了下.
Read more…

Linux 2.6.38 User-space interface for Crypto API

March 16th, 2011 1 comment

Linux内核里面自带非常多的加密模块,这是模块经过调优性能非常高, 而且现在又很多硬件本身支持加密功能,比如intel的CPU支持AES加密指令,那些内核的那帮人知道更好如何利用这些硬件更快的完成加密功能的, 他们写的这些硬件的驱动在drivers/crypto目录里. 所以如果我们能在用户空间的应用程序中用到这些加密库有二个好处: 1. 无须再造轮子. 2. 性能高.

幸运的是2.6.38的内核给我们带来了这些功能. 这些功能是通过socket方式暴露的,思路非常独特优雅,同时由于支持gather write, scatter read, 无须拷贝数据,性能应该非常高.
Read more…

fastsearch快速字符串查找算法

March 15th, 2011 Comments off

最近在做一个项目需要涉及到快速的字符串匹配,每秒几十万次的那种。之前我用过linux内核的的textsearch库的KMP,BM,FSM的算法觉得还不错,这几个算法用于Linux网络模块的关键词过滤系统,支持非线性的字符查找,但是对性能还是不够印象深刻。于是我想起了python的fastsearch. Python这样的脚本语言字符查找用的非常的密集,所以这个算法是非常的高效的,可以说这个算法很大程度影响着python的性能。我们来看下 作者的网站 怎么说的:
Read more…

smartctl获取raid卡下intel ssd寿命

March 14th, 2011 3 comments

我们在线上用了大量的Intel ssd盘,总所周知的是ssd盘是有寿命的,在实际的使用中能够监控ssd盘是非常有帮助的。

我们通常是在raid卡下用intel ssd盘做10level的阵列,通常的工具很难读出它的寿命信息等。 经过intel和社区的努力,对intel ssd的寿命读取代码集成到了smartctl中去了, 这下我们方便了。

先交代下我们的环境:

硬件和操作系统:
System | Huawei Technologies Co., Ltd.; Tecal RH2285; vV100R001 (Main Server Chassis)
Release | Red Hat Enterprise Linux Server release 5.4 (Tikanga)
Kernel | 2.6.18-164.el5
Architecture | CPU = 64-bit, OS = 64-bit

raid卡控制器:
# RAID Controller ############################################
Controller | LSI Logic MegaRAID SAS
Model | MegaRAID SAS PCI Express(TM) ROMB, PCIE interface, 8 ports
Cache | 256MB Memory, BBU
BBU | 96% Charged, Temperature 23C, isSOHGood=

VirtualDev Size RAID Level Disks SpnDpth Stripe Status Cache
========== ========= ========== ===== ======= ====== ======= =========
0 0 (:-1-0) 0 Depth-1 WB, no RA
1 0 (:-5-3) 0 Depth-1 WB, no RA

PhysiclDev Type State Errors Vendor Model Size
========== ==== ======= ====== ======= ============ ===========
Hard Disk SAS Online, 0/0/0 SEAGATE ST3300657SS 279.396
Hard Disk SAS Online, 0/0/0 SEAGATE ST3300657SS 279.396
Solid Stat SATA Online, 0/901/0 CVPO007400S4160AGN INTEL 149.049
Solid Stat SATA Online, 0/900/0 CVPO010400AR160AGN INTEL 149.049
Solid Stat SATA Online, 0/900/0 CVPO007000T3160AGN INTEL 149.049
Solid Stat SATA Online, 0/900/0 CVPO009002DN160AGN INTEL 149.049
Solid Stat SATA Online, 0/900/0 CVPO0104017E160AGN INTEL 149.049
Solid Stat SATA Online, 0/899/0 CVPO010200KS160AGN INTEL 149.049

我们再来演示下如何使用:
Read more…