十一
2010年10月1日 阅读(237)
又是十一了,不过是工作后的第一个十一了,与往常一样,节日对我来说往往没有多少特别的含义。
趁这个时间,看下google的几篇论文,翻译一下,然后看下python的几本书,再找个时间加个班好了。
说来,google的论文,去年就已经看过,可是现在想来却忘记了许多,可能当时看的也不甚仔细。
银河里的星星
#include <iostream>
#include <fstream>
#include <string>
#include <cstring>
using namespace std;
int main (int argc, char *argv[])
{
char logItemBuffer[129];
int lineLen = 128;
memset(logItemBuffer,’#’,lineLen);
logItemBuffer[129] = ‘\0’;
//write meta info
string logMetaInfo = "LOG_META_TAG:ItemTypeNum:JobName:TaskName:InstanceID:StartTime—:";
strncpy(logItemBuffer,logMetaInfo.c_str(),logMetaInfo.size());
fstream fout("test.txt",ios::in|ios::out);
if ( !fout.is_open() ) {
return 0;
} read more
以前操作ssh都是调用的外部命令,虽然简单,但是布署太麻烦。
比较了几个python操作ssh的库,paramiko这个库比较符合我的要求,小巧,功能专门针对ssh协议一族(ssh2, sftp等),
下载地址 http://www.lag.net/paramiko/
这个库依赖于 pycrypto 密码库
pycrypto 下载地址 http://www.dlitz.net/software/pycrypto/ 只有源码下载,python2.5用vc7.1编译,python2.6用vc9编译,支持x64位平台。
两个简单例子
#一个获取 ssh key文件并保存的函数
#host ssh服务器ip或域名
#username 用户名
#passwd 密码
#savefilename 要保存的key文件路径
def getkeypub(host, username, passwd, savefilename):
ssh_con = paramiko.SSHClient()
ssh_con.set_missing_host_key_policy(paramiko.AutoAddPolicy())
try:
ssh_con.connect(hostname = host, username = username,
password = passwd)
except paramiko.AuthenticationException:
print ‘auth failed’
return 1
except socket.error:
print ‘unable reach server’
return 2
ssh_con.save_host_keys(savefilename)
ssh_con.close()
return 0
#利用sftp获取文件
#host ssh服务器ip或域名
#username 用户名
#passwd 密码
#keyfile key文件路径
#remotefile 要获取的ssh服务器上的文件路径
#localfile 保存到本地的路径
def sftpgetfile(host, username, passwd, keyfile, remotefile, localfile):
ssh_con = paramiko.SSHClient()
ssh_con.load_host_keys(keyfile)
print ‘point1’
try:
ssh_con.connect(hostname = host, username = username,
password = passwd)
print ‘point2’
except paramiko.AuthenticationException:
print ‘auth failed’
return 1
except socket.error:
print ‘unable reach server’
return 2
sftp = ssh_con.open_sftp()
sftp.get(remotefile, localfile)
ssh_con.close()
return 0 read more
参考:
http://twiki.ihep.ac.cn/twiki/bin/view/GangliaMonitoring/GangliaInstall
http://blog.52ak.cn/article.asp?id=4
http://hi.baidu.com/chenghui2050/blog/item/e6377e9519e72f017bf480b3.html
第一步:下载所需套件
1)ganglia-3.1.0.tar.gz
http://sourceforge.net/project/showfiles.php?group_id=43021&package_id=35280&release_id=616721
2)confuse-2.6
http://bzero.se/confuse/
3)expat-2.0.1.tar.gz
http://sourceforge.net/project/showfiles.php?group_id=10127
4)apr-1.3.2.tar.bz2与apr-util-1.3.2.tar.bz2
http://apr.apache.org/download.cgi
5)rrdtool-1.2.27.tar.gz
ftp://ftp.pucpr.br/rrdtool/rrdtool-1.2.27.tar.gz read more
有的时候,或许流浪已经成为一种习惯,正如有的时候,或许痴情也只是一种习惯。不同的只是,人们把后者称为一种美德,而视前者为乖僻。
我父亲是一个狂热的美德爱好者,为了让他允许我保留乖僻的流浪习惯,我只好让他相信我的习惯其实是痴情的美德。我的父亲,人们叫他大侠郭靖。 read more
今晚与本科的同学吃饭,吃完后各自分别,却感到一种久违的伤感,我想很快就该离开了吧,于是想,该记下这流年。
不知不觉回西安已经整整一个月了。还记得一个月前,18号匆匆买了回西安的车票,之后在火车上整整一个通宵,手拿着空白的ppt,心想着即将的答辩,现在想想仿佛已经很遥远。离开了两年,然后又回到呆了五年的城市,或许因为答辩,却没有忆起过往的许多。仿佛那一切不过是一瞬的接触,然后路过,最后期待着多年以后还会擦肩而过。 read more
发信人: phylips (星星||一年磨十剑), 信区: Algorithm
标 题: 我的读书历程-暨bmy往事追忆
发信站: 兵马俑BBS (Mon May 24 18:16:28 2010), 本站(bbs.xjtu.edu.cn)
我的读书历程
如果自我反省一番,可以说我是一个颇喜欢读书和思考的人。虽然在二十几年的生命里,大半的时间花在了睡觉上,剩下的又大半花在了课堂下,最后就只剩下那一点点可支配的时间。小学的时候,已颇喜欢书,当时每次去书店就有一种强烈的买书的冲动。在五年级的时候,碰到了一个老师,总是让我们写字,抄各种各样的诗词作文或者句子。至今还记得曾经的一个周末,整整一天都在抄字,后来那天写了9600字,当时对所抄的东西颇为认真,总是一字一句的写下来,直到现在我仍无法估计当时所做的这些工作对我后来的成长起到了怎样的作用。我想至少从那时起已经培养起一种长时间的专注的能力。 read more
zzfrom:http://bbs.chinaunix.net/thread-218853-1-1.html
我在 CU 的日子並不長,有幸在 shell 版上與大家結緣。
除了跟眾前輩學習到不少技巧之外,也常看到不少朋友的問題。
然而,在眾多問題中,我發現許多瓶頸都源於 shell 的基礎而已。
每次要解說,卻總有千言萬語不知從何起之感… read more
GFS是一个可扩展的分布式文件系统,用于大型的、分布式的、对大量数据进行访问的应用。它运行于廉价的普通硬件上,但可以提供容错功能。它可以给大量的用户提供总体性能较高的服务。
出处:http://labs.google.com/papers/gfs.html read more
Google’s BigTable 原理 (翻译)
题记:google 的成功除了一个个出色的创意外,还因为有 Jeff Dean 这样的软件架构天才。
—— 编者
官方的 Google Reader blog 中有对BigTable 的解释。这是Google 内部开发的一个用来处理大数据量的系统。这种系统适合处理半结构化的数据比如 RSS 数据源。 以下发言 是 Andrew Hitchcock 在 2005 年10月18号 基于: Google 的工程师 Jeff Dean 在华盛顿大学的一次谈话 (Creative Commons License). read more
http://bigweb.group.javaeye.com/group/topic/5749
Google是与众不同的。它的独特不仅仅表现于革新的思维和充满创意的应用 (比如那个大堂里的地球模型),更在于其有别常规的IT策略……
加利福尼亚州山景城(Mountain View)Google公司(Google,下称Google)总部有一个43号大楼,该建筑的中央大屏幕上显示着一个与Google地球(Google Earth)相仿的世界地图,一个转动的地球上不停地闪动着五颜六色的光点,恍如罗马宫廷的千万烛灯,每一次闪动标志着地球的这个角落一名Google用 户发起了一次新的搜索。
这同时意味着Google又一次满足了人们对未知信息的好奇与渴望。
Google是与众不同的。它的独特不仅仅表现于革新的思维和充满创意的应用 (比如那个大堂里的地球模型),更在于其有别常规的IT策略。从人们的常理来看,简单的硬件商品和免费软件是无法构建出一个帝国的,但是Google做到 了。在性能调整后,Google把它们变成一个无可比拟的分布式计算平台,该平台能够支持大规模的搜索和不断涌现的新兴应用。我们原本认为这些应用都是个 人消费级别的,但是Google改变了这一切。现在商业世界也在使用它们,这就令这家搜索公司显得那么与众不同。
GoogleWeb 服务背后的IT架构对无数使用搜索引擎的用户来说也许并不是非常重要,但它是Google几百位致力于把全球信息组织起来,实现“随处可达,随时可用”目 标的工程师们的最核心工作。这就需要一个在覆盖范围和野心上都与Google的商业愿景完全相符的IT蓝图作为支撑。
Google 的经理们一直对公司的IT策略话题保持沉默,他们厌恶谈及特定的厂商或者产品,当被问到他们的服务器和数据中心时,他们总是闭口不谈。但与几位 Google的IT领导一起呆了一天后,我们最终得以揭示该公司的IT是如何运作的,那可不仅仅是一个运行在无数服务器集群上的、表面看来非常简单的搜索 引擎。在其简单的外表下,蕴涵着许多内部研发软件、定制硬件、人工智能,以及对性能的执着追求和打破常规的人力管理模式。
IT理念方面,Google对同行有一条建议:尽量避免那些人人都在使用的系统和软件,以自己的方式做事会更有独特的竞争优势。
“企业文化决定了你的做事方式。”道格拉斯"美林(Douglas Merrill),这位Google工程副总裁和事实上的首席信息官(CIO) 指出,“到了我们这样的发展阶段,企业观念和文化非常与众不同,这也反过来鞭策我们必须要采用与众不同的方式来运行那些他人看来很常规的系统。”
Google 最大的IT优势在于它能建造出既富于性价比(并非廉价)又能承受极高负载的高性能系统。因此IT顾问史蒂芬"阿诺德(Stephen Arnold)指出,Google与竞争对手,如亚马逊网站(Amazon)、电子港湾公司(eBay)、微软公司(Microsoft,下称微软)和雅 虎公司 (Yahoo,下称雅虎)等公司相比,具有更大的成本优势。Google程序员的效率比其他Web公司同行们高出50%~100%,原因是Google已 经开发出了一整套专用于支持大规模并行系统编程的定制软件库。据他估算,其他竞争公司可能要花上四倍的时间才能获得同等的效果。
打造服务器
Google 究竟是怎样做到这点的呢?其中一个手段,美林认为,“是因为我们自己动手打造硬件。”Google并不制造计算机系统,但它根据自己的参数定制硬件,然后 像MTV的节目“靓车打造”(Pimp My Ride)那样自己安装和调整硬件系统。开源程序经理克里斯"迪博纳(Chris DiBona)评论道:“我们很善于购买商业服务器,并且改造他们为我们所用,最后把性能压榨和发挥到极致,以致有时候他们热得像要融化了似的。”
这种亲手打造的方式,来源于Google从车库诞生时与生俱来的节俭风格,更与Google那超大型的系统规模息息相关,良好的习惯一直延续至 今。据说 Google在65个数据中心拥有20万~45万台服务器—这个数目会有偏差(取决于你如何定义服务器和由谁来做这项统计)。但是,不变的是持续上升的趋 势。
Google不会去讨论这些资产,因为它认为保密也是一种竞争优势。事实上,Google之所以喜欢开源软件也是因为它的私密性。“如果我们购 买了软件许可或代码许可,人们只要对号入座,就可以猜出Google的IT基础架构。”迪博纳分析说, “使用开源软件,就使我们多了一条把握自己命运的途径。”
Google喜欢规模化的服务器运行方式。当有成百上千台机器时,定制服务器的优势也会成倍增加,效果也会更趋明显。Google正在俄勒冈州 哥伦比亚河边的达勒斯市建造一个占地30亩的数据中心,在那儿它可以获得运算和降温需要的低价水力电力能源(参见边栏《Google数据中心自有一套》)。
Google以“单元”(Cell)的形式组织这些运行 Linux操作系统的服务器,迪博纳把这种形式比喻成互联网服务的“磁盘驱动器”(但别和一直谣传的Google存储服务Gdrive混淆了,“并没有 Gdrive这回事。”一位Google女发言人明确表示。),公司的软件程序都驻扎在这些并不昂贵的电脑机箱里,由程序员决定它们的冗余工作量。这种由 很多单元组成的文件系统代替了商业存储设备;迪博纳表示Google这些单元设备更易于建造和维护,他还暗示他们能处理更大规模的数据。
Google 不会漏过对任何技术细节的关注。多年来,公司的工程师就在研究微处理器的内部工作机制,随着Google规模的持续壮大,必然会用到特别定制和调节过的芯 片。知名工程师路易斯"巴罗索(Luiz Barroso)去年在一篇发表在工业杂志上的论文中证实,近年来Google的主要负荷都由单核设计的系统承担着。但许多服务器端的应用,如 Google搜索索引服务,所需的并行计算在单核芯片的指令级别上执行得并不好。
曾在数据设备公司(Digital Equipment)和康柏公司(Compaq)当过芯片设计师的巴罗索认为,随着AMD公司、英特尔公司(Intel)、太阳计算机系统公司(Sun) 开始制造多核芯片,必将会出现越来越多芯片级别的并行计算。
Google 也曾考虑过自己制造计算机芯片,但从业界潮流来看,这个冒险的举动似乎不是很必要。“微处理器的设计非常复杂而且成本昂贵,”运营高级副总裁乌尔斯"霍尔 茨勒(Urs Holzle)表示。Google宁愿与芯片制造商合作,让他们去理解自己的应用并设计适合的芯片。这是一种客户建议式的设计,其关注点在于总体吞吐量、 效能,以及耗电比,而不是看单线程的峰值性能。霍尔茨勒表示,“这也是最近多核CPU的设计潮流与未来方向。”
裁缝般地定制软件
为了能尽量压榨硬件性能,Google开发了相当数量的定制软件。创新产品主要包括用于简化处理和创建大规模数据集的编程模型 MapReduce;用于存储和管理大规模数据的系统BigTable;分析分布式运算环境中大规模数据集的解释编程语言Sawzall;用于数据密集型 应用的分布式文件系统的 “Google文件系统”(Google File System);还有为处理分布式系统队列分组和任务调度的“Google工作队列”(Google Workqueue)。
正是从Sawzall这些工具里体现出Google对计算效率的执著关注。并不是每家公司都能从底层去解决效率问题,但是对Google来说, 为常规关系型数据库无法容纳的大规模数据集专门设计一种编程语言是完全合理的。即使其他编程工具可以解决问题,Google的工程师们仍然会为了追求效率 而另外开发一套定制方案。Google工程师认为,Sawzall能与C++中的MapReduce相媲美,而且它更容易编写一些。
Google 对效率的关注使它不可能对标准Linux内核感到满意;Google会根据自己的需要运行修改过的内核版本。通过调整Linux的底层性能,Google 工程师们在提高了整体系统可靠性的基础上,还一并解决了数据损坏和数据瓶颈等一系列棘手问题。对内核的修改也使Google的计算机集群系统因为通信效率 的提高而运行得更快。
当然,Google偶尔也会出现系统故障,情况一旦发生,无数的用户就会受到影响了。三年前一次持续30分钟的系统故障使20%的搜索流量受到影响。
Google 开发了自己的网站服务器却没有使用开源的Apache服务器,尽管它在网站服务器的市场占有率超过60%。迪博纳认为,Google的网站服务器可以运行 在更多数量的主机上,对Google站点上内容庞大又彼此互相依赖的应用程序来说,这种服务器的负载均衡能力远比Apache的能力更高。同时,在用标准 公共网关接口(CGI)访问数据库动态网页方面,Google服务器的编程难度要比 Apache更高,但是最终运行速度却更快。“如果我们能够压榨出10%~20%的性能,我们就可以节省出更多系统资源、电量和人力了。”迪博纳在总结中 指出。
Google还设计了自己的客户关系管理(CRM)系统用于支持自己基于竞价和点击的互联网广告收费业务。但对是否需要设计自己的工具,Google的态度也不是一成不变的。比如在财会软件上,它就使用了甲骨文公司(Oracle)的Financials软件。
美林拿着一只叉子举例说明现成的产品也可以带来价值。但在有些场合现成的软件产品就不一定适用了。“我们的文化在各个层面对我们的运作都有深远影响,”他表示,“所以我们不想让购买所得的工具改变我们的工作方式和文化层面。” read more
root@gpu-node1 cuda_test]# ./a.out
FATAL: Error inserting nvidia (/lib/modules/2.6.18-164.el5PAE/kernel/drivers/video/nvidia.ko): Invalid module format
查看/var/log/ nvidia-installer.log,可以看到如下信息:
nvidia: disagrees about version of symbol struct_module.
[root@gpu-node1 install]# dmesg|grep gcc
Linux version 2.6.18-164.el5PAE (mockbuild@builder16.centos.org) (gcc version 4.1.2 20080704 (Red Hat 4.1.2-46)) #1 SMP Thu Sep 3 04:10:44 EDT 2009
[root@gpu-node1 install]# gcc –version
gcc (GCC) 4.1.2 20080704 (Red Hat 4.1.2-46)
Copyright (C) 2006 Free Software Foundation, I read more
安装文件为:
cudatoolkit_3.0_linux_32_fedora10.run
devdriver_3.0_linux_32_195.36.15.run
cuda安装前需要安装kernel、kernel-headers和kernel-devel kernel-source,
yum install kernel kernel-headers kernel-devel
如果还找不到,则手动找到内核源代码目录,通常在/usr/src下面,使用–kernel-source-path指明 read more
cat /proc/cpuinfo
cat /proc/meminfo
ethtool -i eth0
df -h
lsb_release -a
getconf LONG_BIT
uname -a
zzfrom:http://hi.baidu.com/ganss/blog/item/656b095432b65f56574e0074.html
除了最简单的运行gcc/g++ filename(这样只能运行最简单的小程序)外,GCC都需要用各种选项来实现其强大的功能。
下面是GCC的一些常用选项描述:
生成特定格式的文件:
-E 只激活预处理,但不生成文件,需要把它重定向到一个输出文件里面。例子:
gcc -E hello.c > pianoapan.txt
gcc -E hello.c | more
-C 在预处理的时候,不删除注释信息,一般和-E使用,有时候用这个分析程序很方便。
-S 只激活预处理和编译,就是指把文件编译成为汇编代码。
例子: gcc -S hello.c
-c 只激活预处理,编译,和汇编,也就是他只把程序做成obj文件
例子: gcc -c hello.c
-o 指定目标文件名称,例子:
gcc -o hello hello.c read more
使用ps3,调用blas函数时,考察函数花费时间,发现还不如不使用使用spe的blas优化实现,即cellsdk的blas实现花费的时间要比netlib的那个blas实现时间还多.
编译过程分别如下:
使用cellsdk的blas库实现:
mpicc data_plot.c -I/opt/cell/sdk/usr/include/ -Wall -L . /home/duanple/hete_show/hete_lib/src/hetelib.a -lblas -lspe2 -lm -lnuma
env BLAS_NUMSPES=5 BLAS_HUGE_FILE=/home/duanple/huge/blas_lib.bin numactl –cpunodebind=0 –membind=0 ./a.out
使用netlib的实现:
make plot
mpicc data_plot.c -I/opt/cell/sdk/usr/include/ -Wall -L . /home/duanple/hete_show/hete_lib/src/hetelib.a /home/duanple/CBLAS/lib/LINUX/cblas_LINUX.a /home/duanple/BLAS/blas_LINUX.a
./a.out read more
cell上的编译命令:
/usr/bin/ppu32-gcc -o blas_dblat1 blas_dblat1.o -Wl,-rpath /usr/lib -L/opt/cell/sdk/usr/lib -R/opt/cell/sdk/usr/lib -m32 -Wl,-m,elf32ppc /usr/lib/libblas.so -lspe2 -lm -lnuma
注意malloc和free内存使用的头文件及函数
#include <malloc_align.h>
#include <free_align.h> read more