最新 | 最热门 | 最高评价

+0  追踪CPU跑满

Tag: 工作故事 | 操作系统 | hugepages | perf | sysrq-trigger
RobinDong 发于 2014年04月24日 17:54 | 点击: 2092 | 展开摘要
最近测试一个应用遇到问题:一旦压力略涨,应用的CPU就顶满。由于是多线程应用,直接就把系统的CPU耗完了。

本来想用gdb來调试的,结果gdb不给力,就在attach那里卡死,半天不动。后来想到了用perf来调试,果然找到了一处性能热点。修复热点以后,CPU顶满的问题缓解了一些,不太容易出现了,但是,多跑一会儿,还是会有。而且现在出现CPU顶满时,不仅gdb不返回,连perf record -a -g都无法用Ctrl+c来停止了,仔细top命令看了一下,原来系统的sys是1

查看全文: http://www.udpwork.com/item/12173.html

+0  小记备份遭遇

Tag: 工作故事 | du | tar
RobinDong 发于 2014年04月16日 14:18 | 点击: 2116 | 展开摘要
今天备份机器上的一个目录,用“du -sh .”看这个目录只占用了1.5G空间。但是,我一用tar打包,就半天停不下来,tar包都涨到十几G了还没有打包完。奇怪,哪多出来这么多东西。

查了半天,后来发现目录里有个101G的大文件,而du -sh 对这个大文件的返回结果却是”1.1M“,喔,原来这是个空洞文件,tar却只能老老实实的读数据,所以出来的tar包巨大无比。看来,备份目录前光"du -sh .“是不够的,至少还得类似"find . -size +100M"全部检查一

查看全文: http://www.udpwork.com/item/12132.html

+0  debuginfo的rpm包

Tag: 工作故事 | debug_package | rpm
RobinDong 发于 2014年03月24日 11:20 | 点击: 2709 | 展开摘要
之前rpmbuild -ba xxx.spec能自动打出binary包和对应的debuginfo包,但是我不想分成两个包,希望binary包里就是带调试符号的,在网上找了一堆,最简单的办法就是在spec文件里(头部)加一句

%global debug_package %{nil}

那些说在~/.rpmmacros里加东西的办法似乎都不好使。

但是,几天后,我在另一台机器上又遇到了相反的问题:rpmbuild -ba xxx.spec默认就不打debuginfo包。估计是

查看全文: http://www.udpwork.com/item/12011.html

+0  神器valgrind

Tag: 工作故事
RobinDong 发于 2014年02月13日 17:07 | 点击: 2529 | 展开摘要
其实早在2006年我就用过valgrind,但当时valgrind不能观测daemon的内存泄漏问题,所以后来渐渐用得少了。

今天又遇到一个内存泄漏问题,程序颇大,手工调试不太现实了,所以又想到了valgrind,毕竟在这7年间,valgrind又强大了不少。查了一下,它已经可以检测daemon进程了,方法在 这里 对应的官方文档在 这里 其中"monitor leak_check full reachable any"相当于设置gdb的breakpoint。

不过,我要

查看全文: http://www.udpwork.com/item/11698.html

+0  小问题汇总

Tag: 工作故事
RobinDong 发于 2014年02月13日 12:40 | 点击: 2116 | 展开摘要
最近遇到一些开发部署等方面的几个小问题,留个笔记。

第一个 编程问题

#include
#include
#include

int main(int argc, char *argv[])
{
int ret;

pthread_mutex_t mt;
ret = pthread_mutex_init(&mt, NULL);
if (ret != 0) {
printf("failed to init (ret: %d)\n", ret);
got

查看全文: http://www.udpwork.com/item/11696.html

+0  nginx关闭上传文件的缓存

Tag: 工作故事 | nginx | tengine
RobinDong 发于 2013年12月12日 15:02 | 点击: 4183 | 展开摘要
nginx-1.5.7做前端,一个c语言写的deamon用fastcgi做后端。同时上传多个大文件的时候,报了"Internal Error“,查看发现是/usr/目录满了。仔细一查,是因为我把nginx装到了/usr/local/nginx下面,结果,nginx默认会把上传文件缓存到 /usr/local/nginx/client_body_temp/ ,结果爆了。

于是,漫长的google之旅开始了。查了很多文章,有人说加一个"fastcgi_buffering off

查看全文: http://www.udpwork.com/item/11316.html

+0  用guilt发patch小技巧

Tag: 工作故事 | guilt
RobinDong 发于 2013年11月29日 17:46 | 点击: 2052 | 展开摘要
我之前本地的补丁都是用guilt管理的,修改好了以后,git format-patch -n生成patch,写上标题什么的,然后发出去。

一直都是这样,直到最近,手头有十几个patch,发了好几版,每次都要把标题从旧path上拷过来,改改内容或者版本号什么的,很麻烦。

后来同事泰来告诉我一个方法,可以这样:

1. 对每个guilt补丁运行 guilt head -e 然后会跳出编辑器,把该补丁的head写上,比如

iosched: add new type of io

查看全文: http://www.udpwork.com/item/11265.html

+0  集群里机器hang住 备忘1

Tag: 工作故事 | delalloc | ext4 | mpt2sas
RobinDong 发于 2013年08月01日 16:35 | 点击: 2535 | 展开摘要
今天和刘毅同学一起研究了一下集群里机器hang住的现象。

所谓“hang住”,就是磁盘抽风(当然,也可能是sas/raid卡抽风),对发给它的io都不返回,造成许多访问它的进程都进入“D”状态,应用停止工作,等在read/write等系统调用上,严重的甚至终端命令都无法返回。

几个主要的场景都出现了ext4的报错:

EXT4-fs (sdx): delayed block allocation failed for inode 98838775 at logical o

查看全文: http://www.udpwork.com/item/10325.html

+0  Virtualbox 跨host和guest拷贝粘贴

Tag: 工作故事 | clipboard | virtualbox
RobinDong 发于 2013年06月25日 17:33 | 点击: 2021 | 展开摘要
机器重装以后也重装了virtualbox,也装了扩展插件,但就是无法在虚拟机和宿主机之间使用剪贴板拷贝东西,非常不方便。如果只是需要发送个网址什么的,就只好在虚拟机里抄写一遍;要是赶上一大片日志或者内核panic信息,就只好通过共享文件,太影响工作效率了。

尝试了几次重装“Guset Addition”,没有作用,最后干脆把虚拟机里的windows也重装了,居然还是不行。奇怪了,以前怎么就可以?

今天终于找到了原因,原来,virtualbox从4.1.22开始,就把“跨h

查看全文: http://www.udpwork.com/item/10088.html

+0  ARM服务器上装Oracle JVM

Tag: 工作故事 | arm server | java | jvm
RobinDong 发于 2013年03月29日 13:20 | 点击: 2819 | 展开摘要
最近测试arm服务器(装的是ubuntu 12.10)发现一个问题,就是对比测试atom和arm时,跑c语言程序大家性能差不多,跑java程序却相差很远

这是我抄的Montecarlo算法

https://github.com/RobinDong/arm_server/tree/master/MonteCarlo

c和java两种实现,其中c实现在arm上跑需要13秒,在atom上跑需要10秒,相差不多;

但是,如果跑java,arm需要1分40秒,atom只需要12

查看全文: http://www.udpwork.com/item/10050.html

+0  Oracle ASM与flashcache不兼容问题

Tag: 工作故事 | flashcache | oracle
RobinDong 发于 2013年03月20日 21:26 | 点击: 1858 | 展开摘要
先强调,本文所说的flashcache是指facebook的那款开源软件,不是指“快速设备”。

同事先是反映flashcache创建的设备被fdisk和parted等工具分区后,在/dev/目录下没有出现新设备(通常,对/dev/sdb设备分区后,会出现/dev/sdb1,/dev/sdb2等子设备)

查了一下资料,multi-device系列的设备(包括flashcache和linux下的软raid)都不支持原始的分区方式,只能用lvm创建logic volume来代替

查看全文: http://www.udpwork.com/item/10051.html
|<<<1>>>| 一共1页, 11条记录