Facebook HipHop on ubuntu 12.04安装笔记

December 22nd, 2012 no comment

最近看n多报道说facebook的HipHop的VM性能已经超过的编译版的,所以特意尝试了下Facebook的HipHop,现在把安装笔记记录一下。

NUMA微架构

September 8th, 2011 no comment
numa-architecture

现在开始补日志,逐步的扫清以前写了一半的和“欠账未还的”。半年之前开的头,今天先把NUMA说完。 PC硬件结构近5年的最大变化是多核CPU在PC上的普及,多核最常用的SMP微架构:

简述软件包管理系统

July 5th, 2011 no comment

四月份写的一篇blog,就差个结尾,今天补上。 软件包管理是个很大的话题,希望我能说清楚这事。

使用文件系统snapshot做数据库归档备份

May 12th, 2011 no comment
lvm

昨天下午的技术讨论会上说到了数据库的按时间点的进行实时备份和归档,当时的讨论都是基于日志如何来做。 这个问题需要做到以下几点: 因备份而引起的中断数据库服务的时间尽可能短; 能够迅速的让数据库使用备份的数据rollback; 归档的备份数据能在专门的备份机统一保存,方便本机失效后的处理; 如果可能,归档备份的数据能做到增量备份,以节省备份机的磁盘空间,同时方便快速传输。 从数据库本身解决这个问题,可能受困于已有的数据库设计和代码,不非常容易。换个思路,可以基于fs的snapshot来做。 在*nix系统下功能最强的snapshot首推zfs,本身支持文件系统快照,支持增量备份,并内置了zfs send工具能直接把备份快照、或增量备份快照发送到另外一台物理机器上(也必须是zfs)。但必须使用FreeBSD 8以上或者是 OpenSolaris。但是由于公司的机器都是GNU/Linux的,退而求其次选择LVM。 在家里的E8200 + Debian 6.0.0 i386系统上做了测试,首先是使用lvm创建分区,创建了一个名为main的60GB大小的Volume Group,同时在里面建立了一个名为main0的10GB的Logical Volume挂载“/”,并格式化为ext3。 拷入6GB的数据文件,然后创建snapshot: # lvcreate -s -L 7G -n snap-`date +%Y%m%d%H` /dev/main/main0 这一步消耗时间只有0.5s左右,而且测试了拷入20GB的数据文件,snapshot时间基本无变化,详细看截图: 然后在/dev/main/下新加入了snap-`date +%Y%m%d%H` LVM逻辑卷,可以挂载此snapshot分区: # mount /dev/main/snap-`date +%Y%m%d%H` ~/backup 随后就可以tar成gzip包,然后rsync集中保存了。 删除snapshot: # umount -f ~/backup# lvremove /dev/main/snap-`date +%Y%m%d%H` 对于数据库的操作来说,拿MySQL举例: # mysql –uroot –p -h localhost mysql> flush […]

sshd防止“防火墙断开空闲TCP链接”的设置

February 22nd, 2011 no comment

最近发现公司的的内网ssh登陆上服务器后不操作一段时间就会断线,同时如果一直在操作或有屏幕输出(类似tail -f /var/log/apache2/access.log),那么ssh就不会断线。 猜测是公司的防火墙有“断开空闲TCP链接”的策略,在/etc/ssh/sshd_config 内加入: ClientAliveInterval = 15 ClientAliveCountMax = 100 ClientAliveInterval的含义是每过15s,sshd会向ssh client发出一个询问是否在线的请求,正常的ssh client都会予以回应;同时ClientAliveCountMax设定了这种询问的最大失败值,在本例中如果sshd向client发出了100次讯问均没有得到回应,那么sshd会主动断开此ssh链接。

删除Python easy_install安装软件

January 12th, 2011 1 comment

python的easy_install是很方便的安装体系,可是一般来说setup.py没有deinstall的选项,那么如何删除已经安装的egg呢? easy_install -mxN Genshi 然后下面类似的提示: install_dir /usr/local/lib/python2.6/dist-packages/ Processing Genshi-0.6-py2.6.egg Removing Genshi 0.6 from easy-install.pth file Installed /usr/local/lib/python2.6/dist-packages/Genshi-0.6-py2.6.egg Because this distribution was installed –multi-version, before you can import modules from this package in an application, you will need to ‘import pkg_resources’ and then use a ‘require()’ call similar to one of these examples, in order to […]

Git server安装笔记

December 18th, 2010 1 comment

因为Mercurial缺乏对100MB+的binary文件支持,所以今天又把Git装上测试一下,环境是在一台Ubuntu 10.04 amd64 server edition机器上,通过http访问Git。

用Linux Kernel源代码绘制的企鹅

August 20th, 2010 1 comment
1443401926160094

刚看到一张由专业的海报设计公司Postertext设计的Linux海报,它由Kernel 2.6.34.1版本的源代码“绘制”而成,取自以下部分:sched.c、sched_clock.c、sched_cpupri.c、sched_cpupri.h、sched_debug.c、sched_fair.c。 Postertext是一家海报设计公司,专业从事将文学名著作品以文字形式制作成海报。日前Postertext完成一件新的作品,那就是用Linux Kernel源代码完成的Linux企鹅海报。

解决evince中文乱码

July 6th, 2010 no comment

evince打开中文pdf的时候经常是乱码,今天实在忍不了了,google了一翻,其实解决方案很简单: sudo apt-get install poppler-data

GNU/Linux笔记本CPU频率调整

July 5th, 2010 no comment

笔记本电脑的CPU频率可以使用cpufrequtils来调整。

建立Debian APT mirror

June 30th, 2010 2 comments

最近在公司内网给开发组内的兄弟建Xen虚拟机,guest装的都是debian lenny,所以就在内网做了一个apt mirror,笔记如下。

*nix软件包管理系统常用命令

June 4th, 2010 no comment

FreeBSD ports,Gentoo Portage,Debian dpkg,Mac OS X MacPorts常用命令汇编 FreeBSD Ports Packages Gentoo Portage Debian dpkg Mac OS X macports 安装 Ports: make install Packages: pkg_add pkgname emerge pkgname apt-get install pkgname port install pkgname 卸载 pkg_delete pkgname emerge –remove pkgname dpkg -r pkgname;apt-get remove pkgname port uninstall pkgname 列出系统所有包 pkg_info equery list dpkg -l port list […]

获得MySQL/PostgreSQL的内存占用比例的脚本

May 24th, 2010 1 comment

获得MySQL/PostgreSQL在GNU/Linux和FreeBSD下的内存占用比例:

GNU/Linux 安装IPSec VPN

May 6th, 2010 3 comments

在前面的一篇日志中详细说明了如何建立基于pptpd的VPN,由于pptpd脆弱的安全性和较低的性能,本文介绍一下IPSec VPN的架设。

GNU/Linux使用LVS在多核、多CPU下网卡中断分配调优

May 4th, 2010 1 comment

最近一个哥们在做LVS做load balance测试时发现在并发达到1w以后网卡中断只占用了一个CPU,最终导致此CPU的100%,性能再无法提升。 逐步尝试以下方法: 修改内核参数irqbalance。印象中此参数能把网卡中断平分到多个CPU上。但是查询最新文档发现此参数在最新的内核中已经不存在; 使用设备中断的smp_affinity: 首先先从/proc/interrupts里查到网卡的中断号,eth0或者bg0所在行的第一列; 修改/proc/irq/<中断编号>/ 下修改 smp_affinity 文件内容。这个文件是一个位掩码,01意味着只有第一个CPU能处理中断,0F意味着四个CPU都会参与处理中断。 但是经过测试发现此方法能把网卡中断绑定到指定的CPU上,但是不能在多个CPU间平均分配。 使用user space态下的irqbalance daemon,未得到反馈,估计无效; 使用Intel高端网卡82575,见文档详细说明: Assigning Interrupts to Processor Cores using an Intel(R) 82575/82576 or 82598/82599 Ethernet Controller September http://download.intel.com/design/network/applnots/319935.pdf Improving Network Performance in Multi-Core Systems http://www.intel.com/network/connectivity/products/whitepapers/318483.pdf

epoll kqueue IOCP异步I/O模型

March 10th, 2010 2 comments
io-blocking-sync

非阻塞异步(non-blocking asynchronous)是开发高性能应用程序的基础,下文详细描述了常用的这些异步模型。

GNU/Linux使用pptpd建立VPN网络

February 22nd, 2010 1 comment

刚刚做好,留档保存。

Debian Secure APT简介

November 2nd, 2009 1 comment

简单说一下Debian APT体系中为了保证deb包的完整性和可信,建立的一套secure apt体系。

GNU/Linux下更好的使用Thinkpad的键盘灯

August 11th, 2009 no comment

让广大“黑友”的thinklight更好的发挥作用。 Thinkpad屏幕顶部的键盘灯是个很有创意的设计,这个和小红点一起构成了Thinkpad的重要特色功能。 比如收到邮件后,thinklight闪烁;pidgin收到消息后,thinklight闪烁提醒。

解决pgpool2.2.2在PostgreSQL8.4.0下无法使用问题

August 8th, 2009 no comment

PostgreSQL从8.3.x升级到8.4.0后,pgpool-II的最新版2.2.2无法编译通过,报以下错误: sed ‘s,MODULE_PATHNAME,$libdir/pgpool-recovery,g’ pgpool-recovery.sql.in >pgpool-recovery.sql cc -O2 -fno-strict-aliasing -pipe -O3 -funroll-loops -Wall -Wmissing-prototypes -Wpointer-arith -Wdeclaration-after-statement -Wendif-labels -fno-strict-aliasing -fwrapv -fPIC -DPIC -I. -I/usr/local/include/postgresql/server -I/usr/local/include/postgresql/internal -I/usr/local/include -c -o pgpool-recovery.o pgpool-recovery.c pgpool-recovery.c: In function `pgpool_recovery’: pgpool-recovery.c:47: error: `textout’ undeclared (first use in this function) pgpool-recovery.c:47: error: (Each undeclared identifier is reported only once pgpool-recovery.c:47: error: for each function […]