修改网卡缓冲以提高吞吐量

在单机并发上万的时候,发现 sendto 函数比较容易出现返回错误 EAGAIN,对应的错误消息为 Resource temporarily unavailable,这种情况下认为是应用层写入过快,导致网卡缓冲满了 使用这个命令来查看缓冲区现有大小 # ethtool -g eth1 Ring parameters for eth1: Pre-set maximums: RX: 4096 RX Mini: 0 RX Jumb……

阅读全文

手工编译 apache 的一些琐碎

压测的时候用到 apache ab,但是 ab 本身支持的并发最大 1000,过了报错,修改源码 support/ab.c 把这行注释掉 apr_err("apr_socket_recv", status); 但是编译的时候各种依赖,手工解决好烦,首先出来 undefined reference to apr 系列的函数,查到这里,http://hi.baidu.com/yang171892…,说了 col……

阅读全文

分支预测以及 gcc 的 __builtin_expect

在阅读代码的时候,发现有类似这种写法: bvl = bvec_alloc(gfp_mask, nr_iovecs, &idx); if (unlikely(!bvl)) { mempool_free(bio, bio_pool); bio = NULL; goto out; } 注意到第二行,if 的判断中,加入了一个 unlikely,这个东西是一个 CPU 指令的优化,用于分支预判,关于分支预判,可以看这个 s……

阅读全文

gcc 编译时动态静态库的问题

一般来说,动态静态库的问题,可以参考这个文章,http://blog.csdn.net/ast_224/a… gcc生成静态库和动态库 一、库文件简介 简单地说,库(Library)就是一组已经写好了的函数和变量、经过编译代码,是为了能够提高开发效率和运行效率而设计的。库分为静态库(Static Library)和共享库(Shared library)两类。静态……

阅读全文

Linux 下删除乱码文件名的文件

使用 rz 往服务器上传文件的时候,出错了,遗留下来的文件名是乱码,这个问题,使用 rz -be 可以解决,可以顺利上传文件,但是在删除残留文件的时候发现悲剧了,查了一下看到这里,http://www.jb51.net/LINUXjishu… linux下删除乱码文件名, 不废话: 1. ls -i 列出文件的节点ID, 如: 123456789 2. find ./ -inum ……

阅读全文

pthread_self 和 gettid 的性能区别

打日志的时候,我们希望把线程 id 打印出来,线程 id 有两个方法可以获取,gettid 和 pthread_self,前者是一个 Linux 的系统调用,后者是一个可移植的库函数,可移植性倒还好,因为也不怎么考虑跨平台,另外一个区别,就是他们的返回值不一样,这个可以看到这里,http://stackoverflow.com/quest…,有一个讨论,摘……

阅读全文