在同一进程环境中使用多个线程可以共享所有的进程资源, 而且可以优化程序流程, 使很多工作异步进行;
线程单独拥有的资源有: 线程id, 堆栈, 信号屏蔽字, 一组寄存器的值, errno变量, 调度优先级和策略等;
线程共同拥有的资源有: 进程的所有资源包括程序代码, 全局变量, 堆栈空间, 文件描述符等;
POSIX.1-2001标准中规定的线程接口称为POSIX thread, 或pthreads. 编译时要加-lpthread.
目前的linux内核是以轻量级进程(lightweight process, LWP)的方式实现多线程的.
内核里每个LWP对应用户空间的一个线程, LWP拥有自己的task_struct, 也是一个进程调度单位;
LWP与普通进程的区别是多个LWP共享某些资源, 如: 地址空间, 打开的文件等;
Solaris的线程库就不是一个LWP对应一个用户空间线程, 而是用户空间分时复用数量有限的LWP.
多线程中局部静态变量初始化陷阱:http://www.rxyj.org/html/2010/0424/279529.php
多处理器环境和线程同步的高级话题:http://baiy.cn/doc/cpp/advanced_topic_about_multicore_and_threading.htm
如何解决静态变量的线程安全问题:http://www.programfan.com/club/showtxt.asp?id=294156
http://www.cppblog.com/lymons/archive/2010/08/01/120638.aspx
8 Mar 2004 7:00 AM
在块作用域中的静态变量的规则 (与之相对的是全局作用域的静态变量) 是, 程序第一次执行到他的声明的时候进行初始化.
察看下面的竞争条件:
int ComputeSomething() { static int cachedResult = ComputeSomethingSlowly(); return cachedResult; }
转载请注明:http://duanple.blog.163.com/blog/static/709717672010916103257933/ 作者 phylips@bmy
7.性能评价
我们建立了一个N个tablet服务器的Bigtable集群来测量Bigtable伴随着N的变化的性能和可扩展性。Tablet服务器配置成由含有1G内存 400G IDE硬盘的1786个机器组成的GFS cell写入。N个客户端为这些测试生成工作负载。(我们使用与tablet服务器相同数目的客户端来保证客户端不会成为瓶颈)。每个机器有一个双核Opteron 2GHz 芯片,供运行的进程使用的足够的物理内存,一个gigabit 以太网链路。机器通过一个两级树状交换机网络连接,根节点总体带宽接近100-200Gbps。所有机器具有相同的主机配置,因此任意两个机器间的往返时间小于1ms。
(October 2007) http://users.softlab.ntua.gr/~ttsiod/yield.html
Computing permutations
What is a permutation? Reading from my local copy of Wikipedia:
Permutation is the rearrangement of objects or symbols into distinguishable sequences. Each unique ordering is called a permutation. For example, with the numerals one to six, each possible ordering consists of a complete list of the numerals, without repetitions. There are 720 total permutations of these numerals, one of which is: "4, 5, 6, 1, 2, 3".
http://www.red-dove.com/python_logging.html python logging模块文档与源码 http://gashero.yeax.com/?p=16 部分中文翻译
http://www.advsofteng.com/download.html chart director 绘图-chartdir
http://docs.python.org/library/profile.html python profile
http://docs.python.org/library/unittest.html python unittest
转载请注明:http://duanple.blog.163.com/blog/static/709717672010961173782/
作者 phylips@bmy
摘要
Bigtable是设计用来管理那些可能达到很大大小(比如可能是存储在数千台服务器上的数PB的数据)的结构化数据的分布式存储系统。Google的很多项目都将数据存储在Bigtable中,比如网页索引,google 地球,google金融。这些应用对Bigtable提出了很多不同的要求,无论是数据大小(从单纯的URL到包含图片附件的网页)还是延时需求。尽管存在这些各种不同的需求,Bigtable成功地为google的所有这些产品提供了一个灵活的,高性能的解决方案。在这篇论文中,我们将描述Bigtable所提供的允许客户端动态控制数据分布和格式的简单数据模型,此外还会描述Bigtable的设计和实现。
转载请注明:http://duanple.blog.163.com/blog/static/70971767201092673696/ 作者 phylips@bmy
5.性能
在本节中我们将通过运行在大集群的机器上的两个计算来测量MapReduce的性能。一个计算在大概1TB的数据中搜索给定模式的文本。另一个计算对接近1T的数据进行排序。
转载请注明:http://duanple.blog.163.com/blog/static/709717672010923203501/
作者 phylips@bmy
摘要:
MapReduce是一个编程模型以及用来处理和生成大数据集的一个相关实现。用户通过描述一个map函数,处理一组key/value对进而生成一组key/value对的中间结果,然后描述一个reduce函数,将具有相同key的中间结果进行归并。正如论文所表明的,很多现实世界中的任务都可以用这个模型来表达。
转载请注明:http://duanple.blog.163.com/blog/static/7097176720109151534289/ 作者 phylips@bmy
6.测量
在这一节,我们用一些小规模的测试来展示GFS架构和实现固有的一些瓶颈,有一些数字来源于google的实际集群。
6.1小规模测试
我们在一个由一个master,两个master备份,16个chunkserver,16个client组成的GFS集群上进行了性能测量。这个配置是为了方便测试,实际中的集群通常会有数百个chunkserver,数百个client。
转载请注明:http://duanple.blog.163.com/blog/static/7097176720109151211526/ 作者 phylips@bmy
3.系统交互
我们是以尽量最小化master在所有操作中的参与度来设计系统的。在这个背景下,我们现在描述下client,master以及chunkserver如何交互来实现数据变更,记录append以及快照的。
转载请注明:http://duanple.blog.163.com/blog/static/7097176720109145829346/
作者 phylips@bmy
摘要
我们设计实现了google文件系统,一个面向大规模分布式数据密集性应用的可扩展分布式文件系统。它运行在廉价的商品化硬件上提供容错功能,为大量的客户端提供高的整体性能。
转载请注明:http://duanple.blog.163.com/blog/static/70971767201091102339246/ 作者 phylips@bmy
为了能够支持可扩展的并行化,google的网络搜索应用让不同的查询由不同的处理器处理,同时通过划分全局索引,使得单个查询可以利用多个处理器处理。针对所要处理的工作负载类型,google的集群架构由15000个普通pc机和容错软件组成。这种架构达到了很高的性能,同时由于采用了普通pc机,也节省了采用昂贵的高端服务器的大部分花费。
又是十一了,不过是工作后的第一个十一了,与往常一样,节日对我来说往往没有多少特别的含义。
趁这个时间,看下google的几篇论文,翻译一下,然后看下python的几本书,再找个时间加个班好了。
说来,google的论文,去年就已经看过,可是现在想来却忘记了许多,可能当时看的也不甚仔细。